diff --git a/.env.example b/.env.example index 65e0b67c..3161d233 100644 --- a/.env.example +++ b/.env.example @@ -2,7 +2,11 @@ DOOLITTLE_NAME=Doolittle DOOLITTLE_MODE=both DOOLITTLE_PORT=3000 -DOOLITTLE_HOST=0.0.0.0 +# Local-first default. The loopback bind is restricted to this machine by the OS. +# To expose the API on a LAN/public interface (e.g. 0.0.0.0), you MUST also set +# DOOLITTLE_API_TOKEN β€” non-loopback binds reject every request without it. +DOOLITTLE_HOST=127.0.0.1 +# DOOLITTLE_API_TOKEN=change-me-to-a-long-random-secret DOOLITTLE_DATA_DIR=.doolittle DOOLITTLE_SKILLS_DIR=./packages/skills DOOLITTLE_TIMEZONE=America/Chicago diff --git a/.gitignore b/.gitignore index 036cdc69..c1e02441 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,4 @@ test-results/ *.tsbuildinfo skills/generated/index.json tmp/ -e2e/ +e2e/ \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 60a3ab3a..6fc33f67 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,66 +1,41 @@ - -# Memory Context +# Doolittle β€” agent & operator guidance -# [doolittle] recent context, 2026-05-14 8:15pm CDT +Doolittle is an ElizaOS-native, terminal-first agent. This file is workspace +context: it is loaded into the model prompt, so keep it short, current, and +behavioral β€” never a log or memory dump. -Legend: 🎯session πŸ”΄bugfix 🟣feature πŸ”„refactor βœ…change πŸ”΅discovery βš–οΈdecision -Format: ID TIME TYPE TITLE -Fetch details: get_observations([IDs]) | Search: mem-search skill +## How to behave in this workspace -Stats: 50 obs (22,866t read) | 2,242,750t work | 99% savings +- Be a present, concrete collaborator. Answer plainly; do real work close behind. +- Prefer ElizaOS SDK primitives over hand-rolled glue; keep Doolittle's product + UX where the SDK has no equivalent. This is a Bun-first, TypeScript monorepo. +- Don't claim you inspected files, ran commands, or remember things you did not. + When unsure, say so or take an inspection/tool turn. +- Treat user input, secrets, and credentials as volatile and private β€” never + persist or echo them carelessly. -### May 9, 2026 -2974 5:10p πŸ”΅ Doolittle Uses ElizaOS Alpha (2.0.0-alpha.537) While Public Latest is 1.7.2 -2975 " πŸ”΅ Hermes Architecture: 7-Subsystem Monolith with SQLite Session Store and 70+ Tools Across 28 Toolsets -2977 5:59p πŸ”΅ Superpowers Writing-Plans Skill: Structure and Requirements -2978 " πŸ”΅ Superpowers Executing-Plans Skill: Workflow Integration -2980 6:00p πŸ”΅ Doolittle Project: Current State and Parity Ledger -2984 6:01p πŸ”΅ Doolittle Capability-Truth System: Code-Backed Doc Generation Architecture -2988 6:03p 🟣 Doolittle Operator Wow Contract: Code-Backed Product Acceptance Pillars -2990 " 🟣 Operator Wow Contract Test Suite with Scenario Count Correction -2992 6:04p 🟣 renderOperatorWowContract() Added to Doc-Truth Render Pipeline -2995 " 🟣 Operator Wow Contract Wired into Doc-Truth CI Pipeline and Generated -2998 6:05p 🟣 Doolittle Wow Harness Implementation Plan Document Created -3003 6:07p 🟣 Bootstrap Check Mode Now Outputs Explicit File-Level Dry-Run Receipt -3004 " πŸ”΅ Doolittle Git Status: Large Plugin Consolidation in Progress -3009 6:08p βœ… Full Test Suite Passes: 1375 Tests, 0 Failures After Wow Contract Work -3013 6:09p βœ… First-Run Contract Task Refined: first-run-wow-smoke β†’ first-run-decision-receipt -3017 6:12p πŸ”΅ ElizaOS Local Model Plugin Availability: Ollama Present, Llama 404 -3061 6:39p βš–οΈ Doolittle: Switch Default Ollama Model to Granite 4.1 -3062 6:41p βœ… Doolittle: Global Model Rename qwen3:1.7b β†’ granite4.1:3b Across All Files -3063 " πŸ”΅ Granite 4.1 3B: Technical Specs Confirmed on Apple M5 Pro via Ollama -3064 " βœ… Doolittle: Ollama Promoted to Primary Default Provider in README and Docs -3067 6:43p βœ… Doolittle Granite 4.1 Migration: All Quality Gates Green -3068 6:59p πŸ”΅ Doolittle Ollama Provider: Not Selected on Boot β€” Falls Back to Codex -3071 " πŸ”΅ Doolittle Root Cause: .doolittle/settings.json Hardcodes "codex" Provider β€” Ollama Never Selected -3072 " πŸ”΅ TEXT_EMBEDDING Handler Gap: plugin-local-embedding Exists But Is Never Loaded in Provider Stack -3073 " πŸ”΅ Doolittle Provider Determination Architecture: settings.json β†’ SettingsService β†’ plugin-registry β†’ runtime -3081 7:04p πŸ”΅ DOOLITTLE_USE_LINKED_CODEX_AUTH=true in .env Forces Codex as Default and Triggers Fallback Override -3082 " πŸ”΅ @elizaos/plugin-ollama v2.0.0-alpha.537 Fully Covers TEXT_EMBEDDING β€” No Local Embedding Plugin Needed -3083 " βš–οΈ Ollama Fix Plan: Three-Part Change Required Across .env, cloud-bootstrap.ts, and plugin-settings -3110 7:47p πŸ”΅ Doolittle install.sh Post-Install Flow and Available Commands -3114 7:49p πŸ”΅ Doolittle Turn Classification System: Four Capability Profiles and Multi-Step Policy -3115 " πŸ”΅ Doolittle Plugin Assembly Architecture: Initial vs Deferred Plugin Groups -3116 " πŸ”΅ Doolittle EnvConfig Schema: Full Environment Variable Defaults and Structure -3117 7:52p πŸ”΅ Doolittle TurnState Architecture: Session/Room ID Derivation and CLI Detection -3118 7:54p 🟣 Simple Chat Model Fast Path: handleSimpleChatModelTurn Bypasses Full Provider Runtime -3119 7:57p 🟣 Simple Chat Fast Path Confirmed Live: 890ms Response via TEXT_SMALL Direct Model Call -3120 " πŸ”΄ install.sh Bash Compatibility Shim: Re-execs with bash if Invoked from sh -3121 " 🟣 Ollama ACTION_PLANNER Token Budget Capped at 160; keep_alive Set to "10m" -3122 " πŸ”΄ Test Mock Fixed: runController.finishTurn Missing from createContext() Stub -3123 8:01p 🟣 Direct Informational Fast Path Validated: Architecture Question Answered in 1.2s vs Previous 34s -### May 13, 2026 -3685 9:57p βš–οΈ Doolittle Ollama Glue β€” SDK-Native Cleanup Scope Defined -3686 " πŸ”΅ Doolittle Trajectory System β€” Full File Surface Map -3687 10:00p πŸ”΅ Doolittle Ollama Provider Architecture β€” Full Surface Map -3688 " πŸ”΅ @elizaos/plugin-ollama 2.0.0-alpha.537 β€” Full Capability Map vs Doolittle Custom Layer -3689 " πŸ”΅ ElizaOS Model Registration Priority β€” First-Registered Wins at Equal Priority -3690 " πŸ”΅ @elizaos/plugin-local-embedding β€” Workspace Package Still Referenced, Not Used for Inference -3691 " πŸ”΅ Doolittle OLLAMA_* Env Var Forwarding β€” Plugin Settings Bridge for SDK Plugin Compatibility -3692 " πŸ”΅ ElizaOS SDK Trajectory API Surface β€” Full Confirmed Map from node_modules -3693 " βš–οΈ Trajectory Cleanup Strategy β€” SDK Bridge vs Local JSONL Are Separate Layers -3694 10:03p βš–οΈ Doolittle Trajectory β€” SDK Integration Scope and Architecture Defined -3695 10:09p βš–οΈ Doolittle SDK-Native Cleanup β€” Subagent Scope and File Ownership Defined +## Repository shape -Access 2243k tokens of past work via get_observations([IDs]) or mem-search skill. - +- `packages/agent` β€” the application: runtime (chat-turn, services, providers), + gateway, CLI/TUI. `packages/plugins/*` β€” vendored provider plugins + + `doolittle-plugin`. `packages/{acp,contracts,logger,characters,skills}` β€” + supporting workspaces. +- Runtime: ElizaOS 2.0 **beta** (`@elizaos/core@2.0.0-beta.1`); `@elizaos/autonomous` + is on `alpha.85` (no beta yet) and must be imported only via its subpaths. + +## Gates (run before considering work done) + +``` +bun run typecheck # tsc --noEmit +bun test # full suite +bun run build # bundle packages/agent +bun run lint:check # biome +bun run check:acceptance # repo hygiene + plugin boundaries + doc truth +``` + +## Conventions + +- Match surrounding code style; keep changes additive and well-typed. +- Prompt construction for Doolittle-owned model calls goes through the shared + prompt-cache layer (`runtime/prompt-cache`), never ad hoc. +- Add or update tests alongside changes. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..3d9838c4 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,53 @@ +# Changelog + +All notable changes to Doolittle are documented here. The format follows +[Keep a Changelog](https://keepachangelog.com/), and the project tracks the +ElizaOS 2.0 beta line. + +## [Unreleased] + +### Platform + +- **Migrated to ElizaOS 2.0 beta** (`@elizaos/core@2.0.0-beta.1`, agent `beta.2`, + skills `beta.1`, plugins `beta.1`, `elizaos@beta.5`). `@elizaos/autonomous` + stays on `alpha.85` (no beta published) with `overrides` forcing a single beta + `@elizaos/core` instance. Handled all beta breaking changes (moved subpaths, + removed `ModelType.OBJECT_*`, redesigned `Evaluator` contract, optional + `params.prompt`). Patched a broken `bun` export condition in + `@elizaos/plugin-sql@2.0.0-beta.1`. + +### Added + +- **Provider-aware prompt caching** for Doolittle-owned model calls + (`runtime/prompt-cache`): lossless stable/volatile segmentation emitting SDK + `promptSegments` + `providerOptions`, deterministic versioned cache keys, and + cache metrics surfaced in `/status`. +- Full SDK adoption: self-awareness provider, `/research` deep-research action, + tool-audit hook, autonomous triggers, a recurring maintenance task, and + per-ModelType sampling settings. + +### Security + +- **Local-first API**: the HTTP API binds to `127.0.0.1` by default; non-loopback + binds now **require** `DOOLITTLE_API_TOKEN` (fail-safe β€” no token means every + request on a public bind is rejected). Previously it bound `0.0.0.0` with no + authentication. + +### Fixed / Reliability + +- `/mcp` Β· `/acp` no longer crash on malformed JSON; `/cron ` no longer + crashes the turn. +- Per-item failure isolation for deferred plugin hydration, the cron tick, and + the gateway watchdog (one failure no longer aborts the rest). +- Turns are always finished on exception (no more runs stranded in "thinking"). +- `AGENTS.md` is real guidance again (it had become a memory dump injected into + the live prompt). + +### Performance + +- `SettingsService.get()` and `SOUL.md` reads are now mtime-cached on hot paths. + +### Docs + +- Added LICENSE (MIT), SECURITY, CONTRIBUTING; `/commands` no longer truncates + the browse list; version docs corrected from alpha to beta. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..e17ea652 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,73 @@ +# Contributing to Doolittle + +Thanks for helping build Doolittle β€” an ElizaOS-native, terminal-first agent. + +## Prerequisites + +- [Bun](https://bun.sh) `>= 1.3` (the repo is Bun-first; do not use npm/yarn/pnpm). +- Node `>= 24` headers are used by some native deps. + +```bash +bun install +cp .env.example .env # then fill in provider keys you want +bun run dev # start the paired shell +``` + +## Quality gates + +Every change must keep these green (CI runs them): + +```bash +bun run typecheck # tsc --noEmit, strict +bun test # full suite (bun:test) +bun run build # bundle packages/agent +bun run lint:check # biome +bun run check:acceptance # repo hygiene + plugin boundaries + doc truth +``` + +Run `bun run lint` to auto-fix formatting before committing. + +## Repository shape + +- `packages/agent` β€” the application: `runtime/` (chat-turn, services, providers), + `gateway/`, `cli/`, `server/`. +- `packages/plugins/*` β€” vendored provider plugins + the consolidated + `doolittle-plugin`. +- `packages/{acp,contracts,logger,characters,skills}` β€” supporting workspaces. +- Runtime is ElizaOS 2.0 **beta**; `@elizaos/autonomous` is on `alpha.85` and is + imported only via its subpaths. + +## Extension recipes + +The plugin surface only imports Doolittle internals through one seam: +`@doolittle/agent/plugin-api`. + +### Add an action + +1. Implement `createMyAction(services): Action` in `packages/agent/src/actions/`. +2. Re-export it from `packages/agent/src/plugin-api.ts`. +3. Register it in the assembly's `actions` array + (`packages/plugins/doolittle-plugin/assembly.ts`). +4. Add a unit test next to the action. + +### Add a provider (prompt context) + +1. Implement `createMyProvider(services): Provider` in + `packages/agent/src/providers/`. +2. Re-export it from `plugin-api.ts`. +3. Add it to the `providers` array in `assembly.ts`. + +### Add a model provider + +Add a workspace plugin under `packages/plugins/` that registers the model +handlers; wire its selection through the provider registry. To benefit from +prompt caching, make it consume `params.promptSegments` (see +`packages/agent/src/runtime/prompt-cache/README.md`). + +## Conventions + +- Match the surrounding code style; keep changes additive and strongly typed. +- Doolittle-owned model prompts go through the shared prompt-cache layer, never + ad hoc. +- Add or update tests alongside implementation. +- Never mark user input, secrets, or per-request data as cache-stable. diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..82859a37 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 SYMBaiEX + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 62eba372..6ed48d9f 100644 --- a/README.md +++ b/README.md @@ -1256,15 +1256,19 @@ bun run publish:providers:alpha # publish to alpha t ## Versioning -Tracks the ElizaOS alpha line: +Tracks the ElizaOS 2.0 **beta** line (the actively-maintained channel): -- `elizaos: "alpha"` β€” umbrella package -- `@elizaos/core: "alpha"` β€” core runtime -- `@elizaos/plugin-sql: "alpha"` β€” database adapter -- `@elizaos/plugin-ollama`, `@elizaos/plugin-openai`, `@elizaos/plugin-anthropic` β€” provider plugins -- `@elizaos/autonomous: "alpha"`, `@elizaos/skills: "alpha"` β€” alignment packages +- `elizaos: "2.0.0-beta.5"` β€” umbrella package +- `@elizaos/core: "2.0.0-beta.1"` β€” core runtime +- `@elizaos/agent: "2.0.0-beta.2"`, `@elizaos/skills: "2.0.0-beta.1"` +- `@elizaos/plugin-{ollama,openai,anthropic,pdf,telegram,sql}: "2.0.0-beta.1"` β€” provider/feature plugins +- `@elizaos/autonomous: "2.0.0-alpha.85"` β€” no beta published yet; pinned to alpha and forced onto beta `@elizaos/core` via `overrides` so a single core instance is shared -Features not covered by official ElizaOS packages are implemented as custom actions, providers, evaluators, and Bun-native services. Official packages not yet compatible on the current runtime line are vendored under `packages/plugins/*` and implemented directly against the current `@elizaos/core` alpha service model. +The vendored `@elizaos/plugin-sql` carries a local `bun patch` +(`patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch`) that fixes a broken `bun` +export condition in the published beta.1 package. + +Features not covered by official ElizaOS packages are implemented as custom actions, providers, evaluators, and Bun-native services. Official packages not yet compatible on the current runtime line are vendored under `packages/plugins/*` and implemented directly against the current `@elizaos/core` beta service model. --- diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..aff221cb --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,36 @@ +# Security Policy + +## Reporting a vulnerability + +Please report security issues **privately** β€” do not open a public issue for an +unpatched vulnerability. + +- Use GitHub's [private vulnerability reporting](https://github.com/SYMBaiEX/doolittle/security/advisories/new) + ("Report a vulnerability" under the **Security** tab), or +- Open a minimal private channel with the maintainers. + +Include a description, affected version/commit, reproduction steps, and impact. +We aim to acknowledge reports promptly and coordinate a fix and disclosure. + +## Security model + +Doolittle is terminal-first and **local-first**: + +- The HTTP API binds to **loopback (`127.0.0.1`) by default**, so it is reachable + only from the local machine. +- Exposing the API on a non-loopback interface (e.g. `DOOLITTLE_HOST=0.0.0.0`) + **requires** a bearer token via `DOOLITTLE_API_TOKEN`. Without a token, a + non-loopback bind rejects every request β€” the API is never silently exposed. +- Context files (`AGENTS.md`, `SOUL.md`, …) and tool inputs pass through a + prompt-injection scanner before reaching the model. +- Credentials and secrets are stored under the data directory and are not + returned to non-local/unauthenticated callers. + +## Hardening checklist for operators + +- Keep `DOOLITTLE_HOST=127.0.0.1` unless you intentionally need remote access. +- If you set a non-loopback host, set a long random `DOOLITTLE_API_TOKEN` and put + the API behind TLS / a reverse proxy. +- Treat the workspace directory and `.env` as sensitive β€” they hold credentials. +- Review actions that execute shell commands; approval gates apply to non-CLI + sources. diff --git a/bun.lock b/bun.lock index f5c2762d..6f035a84 100644 --- a/bun.lock +++ b/bun.lock @@ -8,24 +8,23 @@ "@doolittle/acp": "workspace:*", "@doolittle/contracts": "workspace:*", "@doolittle/logger": "workspace:*", - "@elizaos/agent": "2.0.0-alpha.537", + "@elizaos/agent": "2.0.0-beta.2", "@elizaos/autonomous": "2.0.0-alpha.85", - "@elizaos/core": "2.0.0-alpha.537", - "@elizaos/plugin-anthropic": "2.0.0-alpha.537", + "@elizaos/core": "2.0.0-beta.1", + "@elizaos/plugin-anthropic": "2.0.0-beta.1", "@elizaos/plugin-claude-code": "workspace:*", "@elizaos/plugin-codex": "workspace:*", "@elizaos/plugin-devin": "workspace:*", "@elizaos/plugin-elizacloud": "workspace:*", - "@elizaos/plugin-ollama": "2.0.0-alpha.537", - "@elizaos/plugin-openai": "2.0.0-alpha.537", - "@elizaos/plugin-pdf": "2.0.0-alpha.537", + "@elizaos/plugin-ollama": "2.0.0-beta.1", + "@elizaos/plugin-openai": "2.0.0-beta.1", + "@elizaos/plugin-pdf": "2.0.0-beta.1", "@elizaos/plugin-sql": "workspace:*", - "@elizaos/plugin-telegram": "2.0.0-alpha.537", - "@elizaos/skills": "2.0.0-alpha.539", + "@elizaos/plugin-telegram": "2.0.0-beta.1", + "@elizaos/skills": "2.0.0-beta.1", "@fal-ai/client": "^1.9.4", - "cron-parser": "^5.2.0", "dotenv": "^17.2.3", - "elizaos": "2.0.0-alpha.535", + "elizaos": "2.0.0-beta.5", "zod": "^4.3.6", }, "devDependencies": { @@ -49,7 +48,7 @@ "@doolittle/acp": "workspace:*", "@doolittle/contracts": "workspace:*", "@doolittle/logger": "workspace:*", - "@elizaos/agent": "2.0.0-alpha.537", + "@elizaos/agent": "2.0.0-beta.2", }, }, "packages/benchmarks": { @@ -63,9 +62,6 @@ "packages/contracts": { "name": "@doolittle/contracts", "version": "0.1.0", - "dependencies": { - "@elizaos/core": "2.0.0-alpha.537", - }, }, "packages/distributions": { "name": "@doolittle/distributions", @@ -87,37 +83,37 @@ "name": "@elizaos/plugin-claude-code", "version": "2.0.0-alpha.537", "dependencies": { - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos/core": "2.0.0-beta.1", }, }, "packages/plugins/plugin-codex": { "name": "@elizaos/plugin-codex", "version": "2.0.0-alpha.537", "dependencies": { - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos/core": "2.0.0-beta.1", }, }, "packages/plugins/plugin-devin": { "name": "@elizaos/plugin-devin", "version": "2.0.0-alpha.537", "dependencies": { - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos/core": "2.0.0-beta.1", }, }, "packages/plugins/plugin-elizacloud": { "name": "@elizaos/plugin-elizacloud", "version": "2.0.0-alpha.537", "dependencies": { - "@elizaos/agent": "2.0.0-alpha.537", - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos/autonomous": "2.0.0-alpha.85", + "@elizaos/core": "2.0.0-beta.1", }, }, "packages/plugins/plugin-sql": { "name": "@elizaos/plugin-sql", - "version": "2.0.0-alpha.537-patched.0", + "version": "2.0.0-beta.1-patched.0", "dependencies": { - "@elizaos-official/plugin-sql": "npm:@elizaos/plugin-sql@2.0.0-alpha.20", - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos-official/plugin-sql": "npm:@elizaos/plugin-sql@2.0.0-beta.1", + "@elizaos/core": "2.0.0-beta.1", }, }, "packages/skill-packs-optional": { @@ -129,27 +125,31 @@ "version": "0.1.0", }, }, + "patchedDependencies": { + "@elizaos/plugin-sql@2.0.0-beta.1": "patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch", + }, "overrides": { - "@elizaos/agent": "2.0.0-alpha.537", + "@elizaos/agent": "2.0.0-beta.2", "@elizaos/autonomous": "2.0.0-alpha.85", - "@elizaos/core": "2.0.0-alpha.537", - "@elizaos/skills": "2.0.0-alpha.539", - "elizaos": "2.0.0-alpha.535", + "@elizaos/core": "2.0.0-beta.1", + "@elizaos/skills": "2.0.0-beta.1", + "elizaos": "2.0.0-beta.5", + "ollama-ai-provider": "npm:ollama-ai-provider-v2@^3.5.1", }, "packages": { "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.10.1", "", {}, "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw=="], "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.58", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/53SACgmVukO4bkms4dpxpRlYhW8Ct6QZRe6sj1Pi5H00hYhxIrqfiLbZBGxkdRvjsBQeP/4TVGsXgH5rQeb8Q=="], - "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.66", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A=="], + "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.112", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jiBao9pR4owWyjo0BnuNc7WSQBGOD0thysE4AFgZXaG+zMFbISQXUkJr7ePw/phBvePy7jE5FSA2Lf7lwqUiiQ=="], "@ai-sdk/google": ["@ai-sdk/google@3.0.52", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HiFB4VlHnv55k9xIbgQW9tHw5OsLXzbAghnDUqrnk/S94QpQuyrDwLSDsk/tUkxJeT00B+wvhL1y6/SARdLeXw=="], "@ai-sdk/openai": ["@ai-sdk/openai@3.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-IZ42A+FO+vuEQCVNqlnAPYQnnUpUfdJIwn1BEDOBywiEHa23fw7PahxVtlX9zm3/zMvTW4JKPzWyvAgDu+SQ2A=="], - "@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + "@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], - "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], + "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], "@ai-sdk/react": ["@ai-sdk/react@1.2.12", "", { "dependencies": { "@ai-sdk/provider-utils": "2.2.8", "@ai-sdk/ui-utils": "1.2.11", "swr": "^2.2.5", "throttleit": "2.1.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["zod"] }, "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g=="], @@ -255,8 +255,6 @@ "@bramus/specificity": ["@bramus/specificity@2.4.2", "", { "dependencies": { "css-tree": "^3.0.0" }, "bin": { "specificity": "bin/cli.js" } }, "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw=="], - "@bufbuild/protobuf": ["@bufbuild/protobuf@2.11.0", "", {}, "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ=="], - "@cacheable/memory": ["@cacheable/memory@2.0.8", "", { "dependencies": { "@cacheable/utils": "^2.4.0", "@keyv/bigmap": "^1.3.1", "hookified": "^1.15.1", "keyv": "^5.6.0" } }, "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw=="], "@cacheable/node-cache": ["@cacheable/node-cache@1.7.6", "", { "dependencies": { "cacheable": "^2.3.1", "hookified": "^1.14.0", "keyv": "^5.5.5" } }, "sha512-6Omk2SgNnjtxB5f/E6bTIWIt5xhdpx39fGNRQgU9lojvRxU68v+qY+SXXLsp3ZGukqoPjsK21wZ6XABFr/Ge3A=="], @@ -285,6 +283,22 @@ "@csstools/css-tokenizer": ["@csstools/css-tokenizer@4.0.0", "", {}, "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA=="], + "@derhuerst/http-basic": ["@derhuerst/http-basic@8.2.4", "", { "dependencies": { "caseless": "^0.12.0", "concat-stream": "^2.0.0", "http-response-object": "^3.0.1", "parse-cache-control": "^1.0.1" } }, "sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw=="], + + "@discordjs/builders": ["@discordjs/builders@1.14.1", "", { "dependencies": { "@discordjs/formatters": "^0.6.2", "@discordjs/util": "^1.2.0", "@sapphire/shapeshift": "^4.0.0", "discord-api-types": "^0.38.40", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.4", "tslib": "^2.6.3" } }, "sha512-gSKkhXLqs96TCzk66VZuHHl8z2bQMJFGwrXC0f33ngK+FLNau4hU1PYny3DNJfNdSH+gVMzE85/d5FQ2BpcNwQ=="], + + "@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="], + + "@discordjs/formatters": ["@discordjs/formatters@0.6.2", "", { "dependencies": { "discord-api-types": "^0.38.33" } }, "sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ=="], + + "@discordjs/rest": ["@discordjs/rest@2.6.1", "", { "dependencies": { "@discordjs/collection": "^2.1.1", "@discordjs/util": "^1.2.0", "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.5", "@vladfrangu/async_event_emitter": "^2.4.6", "discord-api-types": "^0.38.40", "magic-bytes.js": "^1.13.0", "tslib": "^2.6.3", "undici": "6.24.1" } }, "sha512-wwQdgjeaoYFiaG+atbqx6aJDpqW7JHAo0HrQkBTbYzM3/PJ3GweQIpgElNcGZ26DCUOXMyawYd0YF7vtr+fZXg=="], + + "@discordjs/util": ["@discordjs/util@1.2.0", "", { "dependencies": { "discord-api-types": "^0.38.33" } }, "sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg=="], + + "@discordjs/voice": ["@discordjs/voice@0.19.2", "", { "dependencies": { "@snazzah/davey": "^0.1.9", "@types/ws": "^8.18.1", "discord-api-types": "^0.38.41", "prism-media": "^1.3.5", "tslib": "^2.8.1", "ws": "^8.19.0" } }, "sha512-3yJ255e4ag3wfZu/DSxeOZK1UtnqNxnspmLaQetGT0pDkThNZoHs+Zg6dgZZ19JEVomXygvfHn9lNpICZuYtEA=="], + + "@discordjs/ws": ["@discordjs/ws@1.2.3", "", { "dependencies": { "@discordjs/collection": "^2.1.0", "@discordjs/rest": "^2.5.1", "@discordjs/util": "^1.1.0", "@sapphire/async-queue": "^1.5.2", "@types/ws": "^8.5.10", "@vladfrangu/async_event_emitter": "^2.2.4", "discord-api-types": "^0.38.1", "tslib": "^2.6.2", "ws": "^8.17.0" } }, "sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw=="], + "@doolittle/acp": ["@doolittle/acp@workspace:packages/acp"], "@doolittle/agent": ["@doolittle/agent@workspace:packages/agent"], @@ -311,25 +325,35 @@ "@electric-sql/pglite": ["@electric-sql/pglite@0.4.5", "", {}, "sha512-aGG2zGEyZzGWKy8P+9ZoNUV0jxt1+hgbeTf+bVAYyxVZZLXg3/9aFlfLxb08AYZVAfAkQlQIysmWjhc5hwDG8g=="], - "@elizaos-official/plugin-sql": ["@elizaos/plugin-sql@2.0.0-alpha.20", "", { "dependencies": { "@electric-sql/pglite": "^0.4.0", "@elizaos/core": "^2.0.0-alpha.537", "@neondatabase/serverless": "^1.1.0", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", "drizzle-orm": "0.45.2", "pg": "^8.16.3", "uuid": "^14.0.0", "ws": "^8.18.3" } }, "sha512-go3IS6EmZTdlIFiixEAp+tR8SCWIViUtXFU22Y+CCRRZTJk/A25e9YDDM+3wNnsQa9PXMu6yU2O+9SP4sFQP+A=="], + "@elizaos-official/plugin-sql": ["@elizaos/plugin-sql@2.0.0-beta.1", "", { "dependencies": { "@electric-sql/pglite": "^0.4.0", "@neondatabase/serverless": "^1.1.0", "drizzle-orm": "0.45.2", "pg": "^8.16.3", "uuid": "^14.0.0", "ws": "^8.18.3" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-1IWyanD7IGljBSkbAidstQSaGMHkAteh+uLS4J+HnCeuphS7LQkVyCJ+ZQuoPb9uUL7v8zyNXfEMQPE3pfDJNw=="], - "@elizaos/agent": ["@elizaos/agent@2.0.0-alpha.537", "", { "dependencies": { "@clack/prompts": "^1.0.0", "@elizaos/core": "^2.0.0-alpha.537", "@elizaos/plugin-agent-orchestrator": "^2.0.0-alpha.10", "@elizaos/plugin-agent-skills": "^2.0.0-alpha.71", "@elizaos/plugin-browser-bridge": "^0.1.1", "@elizaos/plugin-local-embedding": "^2.0.0-alpha.12", "@elizaos/plugin-ollama": "^2.0.0-alpha.14", "@elizaos/plugin-pdf": "^2.0.0-alpha.18", "@elizaos/plugin-sql": "^2.0.0-alpha.20", "@elizaos/plugin-wechat": "^2.0.0-alpha.537", "@elizaos/shared": "^2.0.0-alpha.537", "@elizaos/skills": "^2.0.0-alpha.539", "@elizaos/vault": "^2.0.0-alpha.537", "@hapi/boom": "^10.0.1", "@noble/curves": "^2.0.1", "@solana/web3.js": "1.98.4", "@whiskeysockets/baileys": "7.0.0-rc.9", "abitype": "^1.0.0", "coding-agent-adapters": "0.16.3", "dotenv": "^17.2.3", "drizzle-orm": "0.45.2", "ethers": "^6.16.0", "git-workspace-service": "0.4.5", "jsdom": "^29.0.0", "json5": "^2.2.3", "pg": "^8.16.3", "pino": "^10.3.1", "pty-manager": "1.11.0", "puppeteer-core": "^24.37.5", "qrcode": "^1.5.4", "telegram": "2.26.22", "viem": "^2.48.8", "ws": "^8.19.0", "zod": "^4.4.2" }, "optionalDependencies": { "@elizaos/app-elizamaker": "*", "@elizaos/app-lifeops": "*", "@elizaos/app-task-coordinator": "*", "@elizaos/app-training": "*", "@elizaos/capacitor-contacts": "*", "@elizaos/capacitor-phone": "*", "@elizaos/capacitor-wifi": "*", "@elizaos/plugin-streaming": "*", "@elizaos/plugin-video": "*", "@elizaos/plugin-wallet": "*" }, "peerDependencies": { "@elizaos/signal-native": "*" }, "optionalPeers": ["@elizaos/signal-native"], "bin": { "eliza-autonomous": "packages/agent/src/bin.js" } }, "sha512-gKA25EE+8X4SJLOF8Bc+OrE0eUv6tu1EcT0bwIrou6IcMTCUXgaB8ZKJCQgN5tNhhOf8AhLhaCUj0Mg3noRAOg=="], + "@elizaos/agent": ["@elizaos/agent@2.0.0-beta.2", "", { "dependencies": { "@clack/prompts": "^1.0.0", "@elizaos/capacitor-contacts": "2.0.0-beta.1", "@elizaos/capacitor-phone": "2.0.0-beta.1", "@elizaos/capacitor-wifi": "2.0.0-beta.1", "@elizaos/core": "2.0.0-beta.1", "@elizaos/plugin-agent-skills": "2.0.0-beta.1", "@elizaos/plugin-aosp-local-inference": "2.0.0-beta.1", "@elizaos/plugin-browser": "2.0.0-beta.1", "@elizaos/plugin-capacitor-bridge": "2.0.0-beta.1", "@elizaos/plugin-coding-tools": "2.0.0-beta.1", "@elizaos/plugin-commands": "2.0.0-beta.1", "@elizaos/plugin-computeruse": "2.0.0-beta.1", "@elizaos/plugin-discord": "2.0.0-beta.2", "@elizaos/plugin-discord-local": "2.0.0-beta.1", "@elizaos/plugin-elizacloud": "2.0.0-beta.1", "@elizaos/plugin-imessage": "2.0.0-beta.1", "@elizaos/plugin-local-embedding": "2.0.0-beta.1", "@elizaos/plugin-local-inference": "2.0.0-beta.1", "@elizaos/plugin-mcp": "2.0.0-beta.1", "@elizaos/plugin-ollama": "2.0.0-beta.1", "@elizaos/plugin-pdf": "2.0.0-beta.1", "@elizaos/plugin-signal": "2.0.0-beta.1", "@elizaos/plugin-sql": "2.0.0-beta.1", "@elizaos/plugin-streaming": "2.0.0-beta.1", "@elizaos/plugin-video": "2.0.0-beta.1", "@elizaos/plugin-wechat": "2.0.0-beta.1", "@elizaos/plugin-whatsapp": "2.0.0-beta.1", "@elizaos/plugin-workflow": "2.0.0-beta.1", "@elizaos/plugin-x402": "2.0.0-beta.1", "@elizaos/shared": "2.0.0-beta.1", "@elizaos/skills": "2.0.0-beta.1", "@elizaos/vault": "2.0.0-beta.1", "@hapi/boom": "^10.0.1", "@noble/curves": "2.2.0", "@solana/web3.js": "1.98.4", "@whiskeysockets/baileys": "7.0.0-rc.9", "abitype": "^1.0.0", "coding-agent-adapters": "0.16.3", "dotenv": "^17.2.3", "drizzle-orm": "0.45.2", "esbuild": "^0.28.0", "ethers": "^6.16.0", "git-workspace-service": "0.4.5", "jsdom": "^29.0.0", "json5": "^2.2.3", "pg": "^8.16.3", "pino": "^10.3.1", "pty-manager": "1.11.0", "puppeteer-core": "^24.37.5", "qrcode": "^1.5.4", "telegram": "2.26.22", "viem": "^2.48.8", "ws": "^8.19.0", "zod": "^4.4.3" }, "peerDependencies": { "@elizaos/signal-native": "*" }, "optionalPeers": ["@elizaos/signal-native"], "bin": { "eliza-autonomous": "packages/agent/src/bin.js" } }, "sha512-klBvkeRWR6TG4dG0FZh9k0Nmyfn78c3Vuzp/+MFhTxOKdzQzR+Tr7YCuAhL/Qz+4ZEaK5TCNkpmcoVJhdY2Oww=="], "@elizaos/autonomous": ["@elizaos/autonomous@2.0.0-alpha.85", "", { "dependencies": { "@clack/prompts": "^1.0.0", "@elizaos/core": "^2.0.0-alpha.85", "@elizaos/plugin-agent-orchestrator": "0.3.15", "@elizaos/plugin-agent-skills": "alpha", "@elizaos/plugin-anthropic": "alpha", "@elizaos/plugin-coding-agent": "0.1.0-next.1", "@elizaos/plugin-cron": "alpha", "@elizaos/plugin-elizacloud": "alpha", "@elizaos/plugin-experience": "alpha", "@elizaos/plugin-form": "alpha", "@elizaos/plugin-knowledge": "alpha", "@elizaos/plugin-local-embedding": "alpha", "@elizaos/plugin-ollama": "alpha", "@elizaos/plugin-openai": "alpha", "@elizaos/plugin-pdf": "alpha", "@elizaos/plugin-personality": "alpha", "@elizaos/plugin-pi-ai": "alpha", "@elizaos/plugin-plugin-manager": "alpha", "@elizaos/plugin-rolodex": "alpha", "@elizaos/plugin-secrets-manager": "alpha", "@elizaos/plugin-shell": "alpha", "@elizaos/plugin-sql": "alpha", "@elizaos/plugin-todo": "alpha", "@elizaos/plugin-trajectory-logger": "alpha", "@elizaos/plugin-trust": "alpha", "@elizaos/skills": "^2.0.0-alpha.85", "@hapi/boom": "^10.0.1", "@lunchtable/plugin-ltcg": "^0.1.0", "@mariozechner/pi-ai": "0.52.12", "@noble/curves": "^2.0.1", "@whiskeysockets/baileys": "7.0.0-rc.9", "coding-agent-adapters": "0.12.0", "dotenv": "^17.2.3", "drizzle-orm": "0.45.1", "ethers": "^6.16.0", "git-workspace-service": "0.4.4", "json5": "^2.2.3", "pg": "^8.16.3", "pino": "^10.3.1", "pty-manager": "1.9.8", "puppeteer-core": "^24.37.5", "qrcode": "^1.5.4", "ws": "^8.19.0", "zod": "^4.3.6" }, "peerDependencies": { "@miladyai/signal-native": "*" }, "optionalPeers": ["@miladyai/signal-native"], "bin": { "milady-autonomous": "packages/autonomous/src/bin.js" } }, "sha512-wT3LlmpvkMTL6rquRsW+DnrevrLGhCRUGMQHUaNh2GFSbEMFQTPgyHTpgG+0yExA7EkQT+pbHwKUYUTgIDq+xw=="], - "@elizaos/capacitor-contacts": ["@elizaos/capacitor-contacts@1.0.0", "", { "peerDependencies": { "@capacitor/core": "^8.3.1" } }, "sha512-y2+hReo7XGkoDMPxTkHLR6F1yfFkq9+dc1WW4GkUWU//TLDlKWQF6VwS1NabKGwq6G8taoZw58PbXyfJCV8o/Q=="], + "@elizaos/capacitor-contacts": ["@elizaos/capacitor-contacts@2.0.0-beta.1", "", { "peerDependencies": { "@capacitor/core": "^8.3.1" } }, "sha512-ek3VxkIjGoLodUU/Pn8Heis70tESACZRlqUgPvbn9WIKTDq2oo5mwito7VUxoDv8EB2Ku+Q1gxkNkb9jk2Ofsw=="], + + "@elizaos/capacitor-phone": ["@elizaos/capacitor-phone@2.0.0-beta.1", "", { "peerDependencies": { "@capacitor/core": "^8.3.1" } }, "sha512-qzZyXpCRNxVbGSNhQyvi9ByB4Prx7Z+n6T3hvkCFGnaatV6ogE0GyRqEvDddfRr08c9e5ROrvsp9XbYn1GCHzQ=="], + + "@elizaos/capacitor-wifi": ["@elizaos/capacitor-wifi@2.0.0-beta.1", "", { "peerDependencies": { "@capacitor/core": "^8.3.1" } }, "sha512-BwDGapEwJnImKd1+iXFxtob9TaZULvsD6vldJX1Glh8UxQiS2QXxJlItw6Zac0RE6kmVSzTosXKvsUBLqtQyag=="], + + "@elizaos/cloud-routing": ["@elizaos/cloud-routing@2.0.0-beta.1", "", { "peerDependencies": { "zod": "^4.4.3" } }, "sha512-uMQ5TK6FlgrP8jIaSbXG5tQ+6zQzJ52uw6BLuZMubQYY+cXpNYDbu+1fdUrSKe+d/GbqKVzzshwkEIhG5SXymQ=="], + + "@elizaos/cloud-sdk": ["@elizaos/cloud-sdk@2.0.0-beta.1", "", {}, "sha512-79Vv7BeRk4nRAoVFZTkmv+x0YP3xRcmjpArxCmdAY9ZbSHU3wR1Gle2lHSN3/Thm89sRLYOmt1Nq5ChnYFq45w=="], - "@elizaos/capacitor-phone": ["@elizaos/capacitor-phone@1.0.0", "", { "peerDependencies": { "@capacitor/core": "^8.3.1" } }, "sha512-dYsPSHUSnkiV2ks9abC5ew5zmB+uZHKaXRPBkqIbxDconHUgN3SQfZR7cR7Z8lDhtzpaKmv6XQQbO/UKpZDk0g=="], + "@elizaos/core": ["@elizaos/core@2.0.0-beta.1", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.13", "@ai-sdk/gateway": "^3.0.109", "@ai-sdk/google": "^3.0.8", "@ai-sdk/openai": "^3.0.9", "@ai-sdk/provider": "^3.0.10", "@ai-sdk/provider-utils": "^4.0.7", "@anthropic-ai/sdk": "^0.92.0", "@elizaos/prompts": "2.0.0-beta.1", "@noble/ciphers": "2.2.0", "@noble/hashes": "2.2.0", "@openrouter/ai-sdk-provider": "^2.0.0", "@standard-schema/spec": "^1.0.0", "adze": "^2.2.5", "ai": "^6.0.30", "coding-agent-adapters": "0.16.3", "dedent": "^1.7.1", "dotenv": "^17.2.3", "drizzle-orm": "0.45.2", "eventsource-parser": "^3.0.8", "fast-redact": "^3.5.0", "file-type": "^22.0.0", "fs-extra": "^11.3.2", "git-workspace-service": "0.4.5", "glob": "^13.0.0", "handlebars": "^4.7.8", "json5": "^2.2.3", "mammoth": "^1.9.0", "markdown-it": "^14.1.0", "pdfjs-dist": "^5.4.530", "underscore": "^1.13.8", "undici": "8.2.0", "unique-names-generator": "^4.7.1", "unpdf": "^1.4.0", "uuid": "^14.0.0", "yaml": "^2.7.0", "zod": "^4.4.3" } }, "sha512-RxdOuA5GOeFvD9yljeP311wZ8rDDull7dOJV9DCikUNzKnCix+xDPDydYxgz6r0wReJHfkkTH0/RaDcSwTCPCg=="], - "@elizaos/core": ["@elizaos/core@2.0.0-alpha.537", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.13", "@ai-sdk/google": "^3.0.8", "@ai-sdk/openai": "^3.0.9", "@anthropic-ai/sdk": "^0.92.0", "@bufbuild/protobuf": "^2.11.0", "@noble/ciphers": "^2.0.0", "@noble/hashes": "2.2.0", "@openrouter/ai-sdk-provider": "^2.0.0", "@toon-format/toon": "^2.1.0", "adze": "^2.2.5", "ai": "^6.0.30", "coding-agent-adapters": "0.16.3", "dedent": "^1.7.1", "dotenv": "^17.2.3", "drizzle-orm": "0.45.2", "fast-redact": "^3.5.0", "file-type": "^22.0.0", "fs-extra": "^11.3.2", "git-workspace-service": "0.4.5", "glob": "^13.0.0", "handlebars": "^4.7.8", "json5": "^2.2.3", "mammoth": "^1.9.0", "markdown-it": "^14.1.0", "pdfjs-dist": "^5.4.530", "undici": "^8.0.0", "unique-names-generator": "^4.7.1", "unpdf": "^1.4.0", "uuid": "^14.0.0", "yaml": "^2.7.0", "zod": "^4.4.2" } }, "sha512-kCpb6xx3mEKMOWO7gL9DwdIX7nk6fexkOC782sI2ge17Eps2AnX+zTz2V+wkjiXzQ8slEAeAqBrKY75vJ00Rag=="], + "@elizaos/plugin-agent-orchestrator": ["@elizaos/plugin-agent-orchestrator@0.3.15", "", { "dependencies": { "coding-agent-adapters": "0.12.0", "pty-console": "0.3.1" }, "peerDependencies": { "@elizaos/core": ">=2.0.0-alpha.0", "git-workspace-service": "0.4.4", "pty-manager": "1.10.0" } }, "sha512-22aoptlKrNhApQKa9+aZvZ/CTLOaYM1tIMCp+dt/ploI2J8JyRo9r80SGIEGq9iayBjlMXzh4MNHjryH+agXEQ=="], - "@elizaos/plugin-agent-orchestrator": ["@elizaos/plugin-agent-orchestrator@2.0.0-alpha.537", "", { "dependencies": { "coding-agent-adapters": "0.16.3", "drizzle-orm": "^0.45.1", "pty-console": "0.3.1", "pty-state-capture": "0.2.0" }, "peerDependencies": { "@elizaos/core": "^2.0.0-alpha.537", "git-workspace-service": "0.4.5", "pty-manager": "1.11.0" } }, "sha512-VOz9RvD29HuBuJ9VtC6hZIH58yTPmIZWKuTENDowKcLEE+fBg/5u9m9Bnpi6PzRb1yRB64V4/lhnZlaO+0fZGw=="], + "@elizaos/plugin-agent-skills": ["@elizaos/plugin-agent-skills@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "fflate": "^0.8.2" } }, "sha512-gDPDkJ6ThTS5S9zpO2a/P7mmERWk0/rNVorigi5f6sMbi1zcp+QuW2iYlXZWsINPB9VRgWU6qELwXWsQgl137w=="], - "@elizaos/plugin-agent-skills": ["@elizaos/plugin-agent-skills@2.0.0-alpha.537", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "fflate": "^0.8.2" } }, "sha512-aY8gyPXkkYsYgoQjV7d/wda5w9EeJtlwZKdkWmNwXi5fvvd9b2BGwSW+ujFXtWJgdN2uKLoFKxOXWCc/yCRFbQ=="], + "@elizaos/plugin-anthropic": ["@elizaos/plugin-anthropic@2.0.0-beta.1", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.9", "ai": "^6.0.23", "jsonrepair": "^3.12.0" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-i2Mwuh4otYpYL/VzR4bB9jcMJOcecpiGOV/yvOLIRXBkqehtrHX103+Lf5lI8r8ovePj6uVC7tZQounwIWmWPQ=="], - "@elizaos/plugin-anthropic": ["@elizaos/plugin-anthropic@2.0.0-alpha.537", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.9", "ai": "^6.0.23", "jsonrepair": "^3.12.0", "undici": "^8.0.0" }, "peerDependencies": { "@elizaos/core": "^2.0.0-alpha.537" } }, "sha512-ybLiZ4VzTvRAv2kFg6kjH19Q6XMOMq4/zBNHYQ+V3Qcp6Qms4LlDt6YxnqeXKs/5lq10LQUW0hVG9ENO9ArDjQ=="], + "@elizaos/plugin-aosp-local-inference": ["@elizaos/plugin-aosp-local-inference@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-Z2C3ulPkaB+4dPiMMK0d4uaI59e068rW8gSGNK2o3NRox3zJM7ou2pY9P7EsolRptatwCLB+f2hAU35szlIXyw=="], - "@elizaos/plugin-browser-bridge": ["@elizaos/plugin-browser-bridge@0.1.1", "", { "dependencies": { "@elizaos/agent": "^2.0.0-alpha.537", "@elizaos/core": "^2.0.0-alpha.537", "@elizaos/shared": "^2.0.0-alpha.537", "drizzle-orm": "0.45.2" } }, "sha512-CyiHRC4AFCnF1ZER21K44IFPY8iuPqe84s9X3Qs3pHktCn176z1aoL4eJY0PKCUmb62zIa4Jp4oJVzpvqNeveQ=="], + "@elizaos/plugin-browser": ["@elizaos/plugin-browser@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@elizaos/vault": "2.0.0-beta.1", "drizzle-orm": "0.45.2" } }, "sha512-EXdxSDbM+srdht1KcF7s10PbxD30Fo4vAg7HN38TpFrPoKENFztfTUUnmMaAgh1fpLmJIzRbbeVpynFAp3Pq4g=="], + + "@elizaos/plugin-capacitor-bridge": ["@elizaos/plugin-capacitor-bridge@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "ws": "^8.18.0" } }, "sha512-1+cyVdbWMzwG37HgbMVgbXZASWWNEZeYDX1LfpkID9Bq2yjUxxmHArgRNgOqglBZgT/t97hWXX/fzlql+ojCUg=="], "@elizaos/plugin-claude-code": ["@elizaos/plugin-claude-code@workspace:packages/plugins/plugin-claude-code"], @@ -339,25 +363,41 @@ "@elizaos/plugin-coding-agent": ["@elizaos/plugin-coding-agent@0.1.0-next.1", "", { "dependencies": { "coding-agent-adapters": "0.8.0", "pty-console": "0.3.0" }, "peerDependencies": { "@elizaos/core": ">=2.0.0-alpha.0", "git-workspace-service": ">=0.3.0", "pty-manager": ">=1.8.0" } }, "sha512-eNXfY4Cn/hd7v8ToYmYE9ph7Tv5VGuIxNQQ5l2HrhAGz/JDALYo3G6WTGjoWmVgvb9wHERHZa5gyKhJKFGv2PA=="], + "@elizaos/plugin-coding-tools": ["@elizaos/plugin-coding-tools@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@elizaos/shared": "2.0.0-beta.1", "@vscode/ripgrep": "^1.15.9", "zod": "^4.4.3" } }, "sha512-hBA6OVA86uOybBOFv49PSgWD85vjSbkOsXUzpLUc/JI90BW3ie1nXzXpAjxh6jv4EvCfnYkuLisjCgnO3jlCEw=="], + + "@elizaos/plugin-commands": ["@elizaos/plugin-commands@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-5vrvIJqXOWC+7sQPCSIlxCkVzqcveLSfCMNTlOBnqSr+E3ffip74nQ3oGSDcPGVZJk3LEP/bNo/lgkcjNYV/Jw=="], + + "@elizaos/plugin-computeruse": ["@elizaos/plugin-computeruse@2.0.0-beta.1", "", { "dependencies": { "@nut-tree-fork/nut-js": "^4.2.6", "puppeteer-core": "^24.9.0" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-FvqQl3wAw9ZJkCK50E8FOLpyQY8h6ZKc5mIap/v0zrX+HCotDLIFX9DqpIKqHPwwHU9i+BskY+NDw99tmtHTdg=="], + "@elizaos/plugin-cron": ["@elizaos/plugin-cron@2.0.0-alpha.7", "", { "dependencies": { "@elizaos/core": "2.0.0-alpha.3", "@elizaos/plugin-cli": "2.0.0-alpha.3", "croner": "9.0.0", "uuid": "11.0.5" } }, "sha512-hAxyYfxH9e0sqS5Jo+kKMir7EbKK+xJUg5soo8gJUpKwRoJr7305B7XMPGC6e5UzcQKZctYAaVKsmRp5VhuRcA=="], "@elizaos/plugin-devin": ["@elizaos/plugin-devin@workspace:packages/plugins/plugin-devin"], + "@elizaos/plugin-discord": ["@elizaos/plugin-discord@2.0.0-beta.2", "", { "dependencies": { "@discordjs/rest": "^2.6.1", "@discordjs/voice": "^0.19.2", "@elizaos/core": "2.0.0-beta.1", "@elizaos/plugin-browser": "2.0.0-beta.1", "discord-api-types": "^0.38.0", "discord.js": "^14.26.4", "fast-levenshtein": "^3.0.0", "fluent-ffmpeg": "^2.1.3", "get-func-name": "^3.0.0", "libsodium-wrappers": "^0.8.0", "opusscript": "^0.1.1", "prism-media": "1.3.5", "zod": "^4.4.3" } }, "sha512-I+kwjHLO0NuwrQQJdl5XYMekbUfeYaOl4HcELrJK5BsX6CzYrIdQ1M3A3PXvVCz7H15f4kx5k0TCC7yDavYdVg=="], + + "@elizaos/plugin-discord-local": ["@elizaos/plugin-discord-local@2.0.0-beta.1", "", { "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-v72HLAXqKw339ow3/7U6camUt1hx1xjKXLjUXFkSCoz7KIWWUqBYTeHM5y2GSyUHaSEZeBYpkwnYa/3/YeDZOw=="], + "@elizaos/plugin-elizacloud": ["@elizaos/plugin-elizacloud@workspace:packages/plugins/plugin-elizacloud"], "@elizaos/plugin-experience": ["@elizaos/plugin-experience@2.0.0-alpha.10", "", { "dependencies": { "@elizaos/core": "alpha", "uuid": "^13.0.0" } }, "sha512-UFGryx98zUc67hyjsRbfNkSgTISSABqCZLZ/0gL85mZU1XjhxKAhaqoJK/aRvF1Ak4Q8gp8VyrF6eP2LhLlUJw=="], "@elizaos/plugin-form": ["@elizaos/plugin-form@2.0.0-alpha.10", "", { "peerDependencies": { "@elizaos/core": "2.0.0-alpha.3" } }, "sha512-b8ZE3t6qPE+1cGPS6D0ywThubvEdeaQ0NRdiuy7wEnfw4B3vDGxOxhxK2Xhtxkk7aeTSnVp6xHXZqsXlQsHkug=="], + "@elizaos/plugin-imessage": ["@elizaos/plugin-imessage@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "zod": "^4.4.3" } }, "sha512-5VkrFoOwlh7f8PPITmaLPQgcA77EKwHcabnSIxLbTAvBnXGGpqlWdYwDI17llOsfYNbprrDjQr1ahXssP1MJHQ=="], + "@elizaos/plugin-knowledge": ["@elizaos/plugin-knowledge@2.0.0-alpha.7", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.13", "@ai-sdk/google": "^3.0.8", "@ai-sdk/openai": "^3.0.9", "@elizaos/core": "alpha", "@openrouter/ai-sdk-provider": "^1.2.0", "@tanstack/react-query": "^5.51.1", "ai": "^6.0.30", "clsx": "^2.1.1", "dotenv": "^17.2.3", "lucide-react": "^0.525.0", "mammoth": "^1.9.0", "multer": "^2.0.1", "react": "19.2.3", "react-dom": "19.2.3", "react-force-graph-2d": "^1.27.1", "tailwind-merge": "^3.3.1", "unpdf": "^1.4.0", "zod": "^4.3.6" } }, "sha512-xbC8k2xDMD6liCn4saxdwTvMpAzaaaDhgQ4adgpbGRiAIYTOwd+XG4z2CbSKEa8lI0wbfzPq3EMmuTLkPavY5w=="], - "@elizaos/plugin-local-embedding": ["@elizaos/plugin-local-embedding@2.0.0-alpha.537", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "@huggingface/transformers": "^4.0.0", "node-llama-cpp": "^3.15.1", "nodejs-whisper": "^0.3.0", "stream-browserify": "^3.0.0", "undici": "^8.0.0", "uuid": "^14.0.0", "whisper-node": "^1.1.1", "zod": "^4.4.2" } }, "sha512-GVfGzdv4EgmhBSd/Z5Fz8wdCcOZvzvEkswo2I0sljudr7Z1UuT79IzaxNfC2K5B7OnwD1uQs96iOM7vu350rog=="], + "@elizaos/plugin-local-embedding": ["@elizaos/plugin-local-embedding@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@huggingface/transformers": "^4.0.0", "node-llama-cpp": "github:milady-ai/node-llama-cpp#v3.18.1-milady.3", "uuid": "^14.0.0", "zod": "^4.4.3" } }, "sha512-8UF2U6u7M1TmQPa75iQGjpQnE9ZJgbFg/qIvRIFHPIrvWGlBgCnbCGanLQF22XeBoBjwaY3ySN7Q5jlhEynHHA=="], + + "@elizaos/plugin-local-inference": ["@elizaos/plugin-local-inference@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@elizaos/plugin-capacitor-bridge": "2.0.0-beta.1" } }, "sha512-jTVUWVC426mvl1g/TaO5sLmzawe5z+us40Dw+nLu9joFHBYzQ+OYsrkJUsy3SmjnNla1Wvj+0VAZ0UAwMIXHYA=="], - "@elizaos/plugin-ollama": ["@elizaos/plugin-ollama@2.0.0-alpha.537", "", { "dependencies": { "@ai-sdk/ui-utils": "^1.2.8", "ai": "^6.0.174", "js-tiktoken": "^1.0.18", "ollama-ai-provider": "^1.2.0" }, "peerDependencies": { "@elizaos/core": "^2.0.0-alpha.537" } }, "sha512-0Z91l3+i7Y3BniJyqpGq6V62DiG6twwO3FYH2u8gORqEkl+KuCd+cOpitJRxTrFgpLM1naWXIFDDjs2kqVOa0g=="], + "@elizaos/plugin-mcp": ["@elizaos/plugin-mcp@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@modelcontextprotocol/sdk": "^1.7.0", "ajv": "^8.17.1", "json5": "^2.2.3" } }, "sha512-jbdEXJ6UcTjRSXSKg5DfFjdmXyDhUQEoSI+74Cpu9fZpvR/oDBvzF14j6zGp5JCuhVqMxkOplpB6ZaoMUExmRQ=="], - "@elizaos/plugin-openai": ["@elizaos/plugin-openai@2.0.0-alpha.537", "", { "dependencies": { "@ai-sdk/openai": "^3.0.9", "ai": "^6.0.30", "js-tiktoken": "^1.0.21", "undici": "^8.0.0" }, "peerDependencies": { "@elizaos/core": "^2.0.0-alpha.537", "zod": "^4.4.2" } }, "sha512-Baf9UcYXRqcF847q0Mha/Tf/FJms8G3zohb5WmQoPHoYJK89ZUnacJ/kBjRMX2oZXPz3Lo4b1xZFVHtDlMuCOw=="], + "@elizaos/plugin-ollama": ["@elizaos/plugin-ollama@2.0.0-beta.1", "", { "dependencies": { "@ai-sdk/ui-utils": "^1.2.8", "ai": "^6.0.174", "js-tiktoken": "^1.0.18", "ollama-ai-provider-v2": "^3.5.0" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-rs+EFJMyJHLpGAmIk5y1mpOic/RhlTN8HjYuizCMx6mRpds60t53DV2bwGr63CkA28pPgjDBwGBHErGvG/USEw=="], - "@elizaos/plugin-pdf": ["@elizaos/plugin-pdf@2.0.0-alpha.537", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "unpdf": "^1.4.0" } }, "sha512-A0YK4KwXpEeGjt84Po/6ZDLmRinYp6nTGf9WBOtOWZhg6MoNxhAjA/zb+FS0mXUsnVfMRFWWUIgVbNSqsaobtg=="], + "@elizaos/plugin-openai": ["@elizaos/plugin-openai@2.0.0-beta.1", "", { "dependencies": { "@ai-sdk/openai": "^3.0.9", "ai": "^6.0.30", "js-tiktoken": "^1.0.21" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1", "zod": "^4.4.3" } }, "sha512-a5jkyIf4NKJKyH60jA3hoh/Egp4n/Tx7O/qPVow2gvEc7MRQSKKWxhq2y2E8awN13OVXnM3t5e4hDC73deG/5A=="], + + "@elizaos/plugin-pdf": ["@elizaos/plugin-pdf@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "unpdf": "^1.4.0" } }, "sha512-YuEUkj/uMuU6lRhWUXgUOq2DpLewLpF1brPVeYgXjIKb0DPpTTxCrfEHdWfXloWpCBGpW62lEqXFtRQe7tvnmg=="], "@elizaos/plugin-personality": ["@elizaos/plugin-personality@2.0.0-alpha.8", "", { "dependencies": { "@elizaos/core": "alpha", "fs-extra": "^11.2.0", "zod": "^3.22.4" } }, "sha512-L5AKdjffI+x14Wcfry5tA4SqtTCnNAqWy97oTI3EuHjV50xvTbJB1wY8R67ka5gEZ2LjNXJZAzlMw3T03LHTCg=="], @@ -371,9 +411,13 @@ "@elizaos/plugin-shell": ["@elizaos/plugin-shell@2.0.0-alpha.9", "", { "dependencies": { "@elizaos/core": "next", "cross-spawn": "^7.0.6", "zod": "^4.3.6" }, "optionalDependencies": { "@lydell/node-pty": "^1.1.0" } }, "sha512-t6ZyqyEWAaU1hiUdOGviaRgxUa8P8lvnsCG089Yc1g7+kctUB0086u2rjIKtkGEWt50K3XfaNaqhoOhl6iUo+A=="], + "@elizaos/plugin-signal": ["@elizaos/plugin-signal@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "qrcode": "^1.5.4", "zod": "^4.4.3" }, "peerDependencies": { "@elizaos/signal-native": "*" }, "optionalPeers": ["@elizaos/signal-native"] }, "sha512-9PY5VbB9ZMmpoZa5HSYdlES8xdvb66kuuCMl21hv8lKXl4JpLTCQFBdqETN2yL429b+n0E37tejFzVXE5i8zEA=="], + "@elizaos/plugin-sql": ["@elizaos/plugin-sql@workspace:packages/plugins/plugin-sql"], - "@elizaos/plugin-telegram": ["@elizaos/plugin-telegram@2.0.0-alpha.537", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "@telegraf/types": "^7.1.0", "@types/node": "^24.0.10", "strip-literal": "^3.0.0", "telegraf": "4.16.3", "telegram": "^2.26.22", "type-detect": "^4.1.0", "typescript": "^6.0.0" } }, "sha512-JfUv0i1+vUnzzs/XJFfABbb0QzvWj4tM8IAAASpvd9YUhQFgzdZxuWBT7CkCvtFNHiAW4rT5QPuau/mGQlVMeQ=="], + "@elizaos/plugin-streaming": ["@elizaos/plugin-streaming@2.0.0-beta.1", "", { "dependencies": { "@elizaos/cloud-routing": "2.0.0-beta.1", "@elizaos/core": "2.0.0-beta.1", "@elizaos/plugin-browser": "2.0.0-beta.1" } }, "sha512-bcl56KBOL3Nk7k6lkO8kusDpJoN5RcG9tqQHtEfNChIDYBMtrx1VTZZ8GJWqxU/0bIRjITdXz+n20DeywEf0gw=="], + + "@elizaos/plugin-telegram": ["@elizaos/plugin-telegram@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "@telegraf/types": "^7.1.0", "@types/node": "^24.0.10", "strip-literal": "^3.0.0", "telegraf": "4.16.3", "telegram": "^2.26.22", "type-detect": "^4.1.0" } }, "sha512-/gSjSTpTHNODnb2R6YrAhh6WlDw1xWoMAtu6KK5faQHxrRo9VcFUCxR+7lVGvPCYjDF5Hcas14lhjNLb3FAW8g=="], "@elizaos/plugin-todo": ["@elizaos/plugin-todo@2.0.0-alpha.13", "", { "dependencies": { "@elizaos/core": "alpha", "@elizaos/plugin-rolodex": "alpha", "drizzle-orm": "^0.30.10", "start-server-and-test": "^2.0.5", "zod": "3.24.2" } }, "sha512-VhrBubzKK2XHh3oR/G4IkZrshFoYZkV+KL0OvMb/isn7PYaPYt7ilOIht97Tn1PczWMi1bvp3Am0gJZUvf6vPA=="], @@ -381,71 +425,87 @@ "@elizaos/plugin-trust": ["@elizaos/plugin-trust@1.2.2", "", { "dependencies": { "@elizaos/core": "next", "dedent": "^1.6.0", "drizzle-orm": "^0.44.2" } }, "sha512-t1WwAlC2ernlpY6y3DrtZ9Rtowzv+LOzICjZozBbGjcKF7RgCsoFf92mjoc100Vy6e728ErM3Yg5jcW8ATKwNA=="], - "@elizaos/plugin-wechat": ["@elizaos/plugin-wechat@2.0.0-alpha.537", "", { "peerDependencies": { "@elizaos/core": "^2.0.0-alpha.537" } }, "sha512-rspXTkDMzdFMnxvxJyik8jo0K4jqvc4OTraGZz4Y4hF2JjnegNGJa0Hcpnm09F3dtsTouY7hCiOIHctQO10RQg=="], + "@elizaos/plugin-video": ["@elizaos/plugin-video@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "ffmpeg-static": "^5.3.0", "fluent-ffmpeg": "2.1.3", "youtube-dl-exec": "^3.1.5" } }, "sha512-VhoOAGB7bNy5uwvXzhlcBsUKAGKG7F8gGv/LEpakkE5MO4QnEzpSvtmnh8nOGmSTMZlaBlOLvuT1LNQt6BqGVQ=="], + + "@elizaos/plugin-wechat": ["@elizaos/plugin-wechat@2.0.0-beta.1", "", { "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-mHu2W3QZ+CsWXu0MFIXW53q7VW5PxD0Vvx5YHskKasnIppOLWIGFC5rx3ONWJAAf060AdYLyum6banVrtATAfg=="], + + "@elizaos/plugin-whatsapp": ["@elizaos/plugin-whatsapp@2.0.0-beta.1", "", { "dependencies": { "@hapi/boom": "^10.0.1", "@whiskeysockets/baileys": "^7.0.0-rc.9", "pino": "^10.3.1", "qrcode": "^1.5.4", "qrcode-terminal": "^0.12.0" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-zX5a8JZix/N+f5JXGjsS+IBgSrI41r0pu0mmWpVTIRZBOC6P9wRKsHlfYOMc8YKo5QPiuL47s2+yw1A2Bu+I7g=="], + + "@elizaos/plugin-workflow": ["@elizaos/plugin-workflow@2.0.0-beta.1", "", { "dependencies": { "@elizaos/workflows": "2.0.0-beta.1", "drizzle-orm": "^0.45.1", "quickjs-emscripten": "0.32.0" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-6BpWFHIy+0BS+iBqnL6LIs/F7SjS9V11QTHqxskxVlbxMbxfnxs6vSvD1/B5n9MAQku9YhfojaiXpoI7lPDa8A=="], + + "@elizaos/plugin-x402": ["@elizaos/plugin-x402@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "drizzle-orm": "0.45.2", "viem": "^2.48.8" } }, "sha512-L2lcIAO6yEdIoFdm8mL19vZJ195Mg8uFz8KZ2weRXNk57+K9H9eL4CDSqJIk0AwukltiO38QM7pXCuRBD62XxA=="], + + "@elizaos/prompts": ["@elizaos/prompts@2.0.0-beta.1", "", {}, "sha512-aIUTX7URFL7RrmEbvk8ISjhdUCao1cGaB1KB/2YwTLcJo6fFKlBQgTv1bcpmFVwF1Ne1nWsc7TqCl9Istk8BYg=="], - "@elizaos/shared": ["@elizaos/shared@2.0.0-alpha.538", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "zod": "^4.4.2" }, "optionalDependencies": { "figlet": "^1.11.0" } }, "sha512-RvWGK52wy7ySZK++EiK6gffYe4cBfjCXggSdLx+b0U418e7p+Y3LZTwRUH6DVG4kzSvuO7eu2tOnv/tgM0O7Pw=="], + "@elizaos/shared": ["@elizaos/shared@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "chalk": "^5.3.0", "drizzle-orm": "0.45.2", "zod": "^4.4.3" }, "optionalDependencies": { "figlet": "^1.11.0" } }, "sha512-Rjxlhuh6me3usSvhY1nYawqRIHDsZ+4oVnvADVDHjLK436PcnPNpxUzM7OsICkFcgGDiH3G5x3lD4q3FC2JOMA=="], - "@elizaos/skills": ["@elizaos/skills@2.0.0-alpha.539", "", { "dependencies": { "@elizaos/core": "^2.0.0-alpha.537", "yaml": "^2.8.2" } }, "sha512-RVwWP2bg9T5dr5KMIkod81BHD1mkqQaykn5mrToF5CBm3Z/umppQwu/z42p09Ncq5yko54dGGsOcz13nXO6awQ=="], + "@elizaos/skills": ["@elizaos/skills@2.0.0-beta.1", "", { "dependencies": { "@elizaos/core": "2.0.0-beta.1", "yaml": "^2.8.2" } }, "sha512-ora675PbAw9VWtIatyvOboWfxSkzsm33JUMh85+Pmg5ispZbpzj31JC+thnMUqyeaL3P8P4fJznbxEYw7ddvDw=="], - "@elizaos/vault": ["@elizaos/vault@2.0.0-alpha.537", "", { "dependencies": { "@napi-rs/keyring": "^1.1.6" } }, "sha512-5iBj+/na3UJrqiI/acmQoTRMEpz0TF86PIpe/TygmK7lFyFsyvYZEfmCyIKw2mY60F2eEszKp5eO22JvJlokwQ=="], + "@elizaos/vault": ["@elizaos/vault@2.0.0-beta.1", "", { "dependencies": { "@electric-sql/pglite": "^0.4.0", "@napi-rs/keyring": "^1.1.6" } }, "sha512-sVDNGoy3sfYNt/59rzdYFZPXc3QW6gunwn1MzJ7eRXaNXlzSN9L02Krl/nfEq6+mv9Jz4rO+MxcBT3D5Gc/V8w=="], + + "@elizaos/workflows": ["@elizaos/workflows@2.0.0-beta.1", "", {}, "sha512-lQaTUqE6ezVsJVLDnvsdUbjdVX/y0B8Ev/BO3bv8/V0KSf56NwLuRKm5EnNJ1QBxxZJT5j4tg2mOwuTBvas4Xw=="], + + "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], "@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], "@exodus/bytes": ["@exodus/bytes@1.15.0", "", { "peerDependencies": { "@noble/hashes": "^1.8.0 || ^2.0.0" }, "optionalPeers": ["@noble/hashes"] }, "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ=="], @@ -471,7 +531,9 @@ "@huggingface/jinja": ["@huggingface/jinja@0.5.6", "", {}, "sha512-MyMWyLnjqo+KRJYSH7oWNbsOn5onuIvfXYPcc0WOGxU0eHUV7oAYUoQTl2BMdu7ml+ea/bu11UM+EshbeHwtIA=="], - "@huggingface/transformers": ["@huggingface/transformers@3.8.1", "", { "dependencies": { "@huggingface/jinja": "^0.5.3", "onnxruntime-node": "1.21.0", "onnxruntime-web": "1.22.0-dev.20250409-89f8206ba4", "sharp": "^0.34.1" } }, "sha512-tsTk4zVjImqdqjS8/AOZg2yNLd1z9S5v+7oUPpXaasDRwEDhB+xnglK1k5cad26lL5/ZIaeREgWWy0bs9y9pPA=="], + "@huggingface/tokenizers": ["@huggingface/tokenizers@0.1.3", "", {}, "sha512-8rF/RRT10u+kn7YuUbUg0OF30K8rjTc78aHpxT+qJ1uWSqxT1MHi8+9ltwYfkFYJzT/oS+qw3JVfHtNMGAdqyA=="], + + "@huggingface/transformers": ["@huggingface/transformers@4.2.0", "", { "dependencies": { "@huggingface/jinja": "^0.5.6", "@huggingface/tokenizers": "^0.1.3", "onnxruntime-node": "1.24.3", "onnxruntime-web": "1.26.0-dev.20260416-b7804b056c", "sharp": "^0.34.5" } }, "sha512-8BRCoBMH0XsWaEIamuR0LrJGAfftgHAfb2Vrffy0VKlSAE/MnUJ5/h/zTfEP3fDIft+nk7TqB8xXEyABGitBjQ=="], "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], @@ -525,10 +587,84 @@ "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + "@jimp/bmp": ["@jimp/bmp@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "bmp-js": "^0.1.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g=="], + + "@jimp/core": ["@jimp/core@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", "file-type": "^16.5.4", "isomorphic-fetch": "^3.0.0", "pixelmatch": "^4.0.2", "tinycolor2": "^1.6.0" } }, "sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA=="], + + "@jimp/custom": ["@jimp/custom@0.22.12", "", { "dependencies": { "@jimp/core": "^0.22.12" } }, "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q=="], + + "@jimp/gif": ["@jimp/gif@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "gifwrap": "^0.10.1", "omggif": "^1.0.9" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-y6BFTJgch9mbor2H234VSjd9iwAhaNf/t3US5qpYIs0TSbAvM02Fbc28IaDETj9+4YB4676sz4RcN/zwhfu1pg=="], + + "@jimp/jpeg": ["@jimp/jpeg@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "jpeg-js": "^0.4.4" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-Rq26XC/uQWaQKyb/5lksCTCxXhtY01NJeBN+dQv5yNYedN0i7iYu+fXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q=="], + + "@jimp/plugin-blit": ["@jimp/plugin-blit@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ=="], + + "@jimp/plugin-blur": ["@jimp/plugin-blur@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw=="], + + "@jimp/plugin-circle": ["@jimp/plugin-circle@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-SWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg=="], + + "@jimp/plugin-color": ["@jimp/plugin-color@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "tinycolor2": "^1.6.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA=="], + + "@jimp/plugin-contain": ["@jimp/plugin-contain@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-blit": ">=0.3.5", "@jimp/plugin-resize": ">=0.3.5", "@jimp/plugin-scale": ">=0.3.5" } }, "sha512-Eo3DmfixJw3N79lWk8q/0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ=="], + + "@jimp/plugin-cover": ["@jimp/plugin-cover@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-crop": ">=0.3.5", "@jimp/plugin-resize": ">=0.3.5", "@jimp/plugin-scale": ">=0.3.5" } }, "sha512-z0w/1xH/v/knZkpTNx+E8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/W56+4nJ1brhSd233HBJCo01BXA=="], + + "@jimp/plugin-crop": ["@jimp/plugin-crop@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw=="], + + "@jimp/plugin-displace": ["@jimp/plugin-displace@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-qpRM8JRicxfK6aPPqKZA6+GzBwUIitiHaZw0QrJ64Ygd3+AsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA=="], + + "@jimp/plugin-dither": ["@jimp/plugin-dither@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-jYgGdSdSKl1UUEanX8A85v4+QUm+PE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw=="], + + "@jimp/plugin-fisheye": ["@jimp/plugin-fisheye@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-LGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/jJpPaeaishjlxvczjgII+Q=="], + + "@jimp/plugin-flip": ["@jimp/plugin-flip@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-rotate": ">=0.3.5" } }, "sha512-m251Rop7GN8W0Yo/rF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q=="], + + "@jimp/plugin-gaussian": ["@jimp/plugin-gaussian@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-sBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+uqWFF53+n3c8Y0P2HWlUjflEla2h/vWShvhg=="], + + "@jimp/plugin-invert": ["@jimp/plugin-invert@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-N+6rwxdB+7OCR6PYijaA/iizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ=="], + + "@jimp/plugin-mask": ["@jimp/plugin-mask@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA=="], + + "@jimp/plugin-normalize": ["@jimp/plugin-normalize@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+As1FtA=="], + + "@jimp/plugin-print": ["@jimp/plugin-print@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "load-bmfont": "^1.4.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-blit": ">=0.3.5" } }, "sha512-c7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ=="], + + "@jimp/plugin-resize": ["@jimp/plugin-resize@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg=="], + + "@jimp/plugin-rotate": ["@jimp/plugin-rotate@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-blit": ">=0.3.5", "@jimp/plugin-crop": ">=0.3.5", "@jimp/plugin-resize": ">=0.3.5" } }, "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA=="], + + "@jimp/plugin-scale": ["@jimp/plugin-scale@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-resize": ">=0.3.5" } }, "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw=="], + + "@jimp/plugin-shadow": ["@jimp/plugin-shadow@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-blur": ">=0.3.5", "@jimp/plugin-resize": ">=0.3.5" } }, "sha512-FX8mTJuCt7/3zXVoeD/qHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg=="], + + "@jimp/plugin-threshold": ["@jimp/plugin-threshold@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", "@jimp/plugin-color": ">=0.8.0", "@jimp/plugin-resize": ">=0.8.0" } }, "sha512-4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw=="], + + "@jimp/plugins": ["@jimp/plugins@0.22.12", "", { "dependencies": { "@jimp/plugin-blit": "^0.22.12", "@jimp/plugin-blur": "^0.22.12", "@jimp/plugin-circle": "^0.22.12", "@jimp/plugin-color": "^0.22.12", "@jimp/plugin-contain": "^0.22.12", "@jimp/plugin-cover": "^0.22.12", "@jimp/plugin-crop": "^0.22.12", "@jimp/plugin-displace": "^0.22.12", "@jimp/plugin-dither": "^0.22.12", "@jimp/plugin-fisheye": "^0.22.12", "@jimp/plugin-flip": "^0.22.12", "@jimp/plugin-gaussian": "^0.22.12", "@jimp/plugin-invert": "^0.22.12", "@jimp/plugin-mask": "^0.22.12", "@jimp/plugin-normalize": "^0.22.12", "@jimp/plugin-print": "^0.22.12", "@jimp/plugin-resize": "^0.22.12", "@jimp/plugin-rotate": "^0.22.12", "@jimp/plugin-scale": "^0.22.12", "@jimp/plugin-shadow": "^0.22.12", "@jimp/plugin-threshold": "^0.22.12", "timm": "^1.6.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-yBJ8vQrDkBbTgQZLty9k4+KtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/XWILoTZsjTUASQcGoH0TuC0N7xm3ww=="], + + "@jimp/png": ["@jimp/png@0.22.12", "", { "dependencies": { "@jimp/utils": "^0.22.12", "pngjs": "^6.0.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-Mrp6dr3UTn+aLK8ty/dSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg=="], + + "@jimp/tiff": ["@jimp/tiff@0.22.12", "", { "dependencies": { "utif2": "^4.0.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-E1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg=="], + + "@jimp/types": ["@jimp/types@0.22.12", "", { "dependencies": { "@jimp/bmp": "^0.22.12", "@jimp/gif": "^0.22.12", "@jimp/jpeg": "^0.22.12", "@jimp/png": "^0.22.12", "@jimp/tiff": "^0.22.12", "timm": "^1.6.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "sha512-wwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/m30YyuTtfUJgMRMA=="], + + "@jimp/utils": ["@jimp/utils@0.22.12", "", { "dependencies": { "regenerator-runtime": "^0.13.3" } }, "sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q=="], + + "@jitl/quickjs-ffi-types": ["@jitl/quickjs-ffi-types@0.32.0", "", {}, "sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg=="], + + "@jitl/quickjs-wasmfile-debug-asyncify": ["@jitl/quickjs-wasmfile-debug-asyncify@0.32.0", "", { "dependencies": { "@jitl/quickjs-ffi-types": "0.32.0" } }, "sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw=="], + + "@jitl/quickjs-wasmfile-debug-sync": ["@jitl/quickjs-wasmfile-debug-sync@0.32.0", "", { "dependencies": { "@jitl/quickjs-ffi-types": "0.32.0" } }, "sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q=="], + + "@jitl/quickjs-wasmfile-release-asyncify": ["@jitl/quickjs-wasmfile-release-asyncify@0.32.0", "", { "dependencies": { "@jitl/quickjs-ffi-types": "0.32.0" } }, "sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q=="], + + "@jitl/quickjs-wasmfile-release-sync": ["@jitl/quickjs-wasmfile-release-sync@0.32.0", "", { "dependencies": { "@jitl/quickjs-ffi-types": "0.32.0" } }, "sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg=="], + "@keyv/bigmap": ["@keyv/bigmap@1.3.1", "", { "dependencies": { "hashery": "^1.4.0", "hookified": "^1.15.0" }, "peerDependencies": { "keyv": "^5.6.0" } }, "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ=="], "@keyv/serialize": ["@keyv/serialize@1.1.1", "", {}, "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA=="], + "@kikobeats/time-span": ["@kikobeats/time-span@1.0.13", "", {}, "sha512-CfBK4/EZ73uN/6b5/wOfvWju1Ev/6H+uXqS2Vqd7/dEQTyOsvv4BdOHDqESp4Efa9YyrPPvN3IHU+C4z9FAo3Q=="], + "@kwsites/file-exists": ["@kwsites/file-exists@1.1.1", "", { "dependencies": { "debug": "^4.1.1" } }, "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw=="], "@kwsites/promise-deferred": ["@kwsites/promise-deferred@1.1.1", "", {}, "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="], @@ -607,11 +743,13 @@ "@napi-rs/keyring-win32-x64-msvc": ["@napi-rs/keyring-win32-x64-msvc@1.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-4DnCWXwDc0HRKwyRlG5y0VhKZW2tNRQfKKfyj6IX/KWfDNyq9hn4n+GL1auyDcOO/v8PwnhmYo2+rOOqCkvvOg=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], + "@neondatabase/serverless": ["@neondatabase/serverless@1.1.0", "", {}, "sha512-r3ZZhRjEcfEdKIZnoB1RusNgvHuaBRqfCzV4Gi+5A9yUX0S4HTws/ASWqt13wL4y4I+0rqsWGdA2w7EQXHi3+Q=="], "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], - "@noble/curves": ["@noble/curves@2.0.1", "", { "dependencies": { "@noble/hashes": "2.0.1" } }, "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw=="], + "@noble/curves": ["@noble/curves@2.2.0", "", { "dependencies": { "@noble/hashes": "2.2.0" } }, "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ=="], "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], @@ -647,6 +785,24 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@nut-tree-fork/default-clipboard-provider": ["@nut-tree-fork/default-clipboard-provider@4.2.6", "", { "dependencies": { "clipboardy": "2.3.0" } }, "sha512-Hzqj57rheIMGtsS4zK4//kOhaX5FxMluOiz+4TVaHXx+idZS/bPhZwd8e6o1w1GT0PVJOUIP+4CdUe//k5VRig=="], + + "@nut-tree-fork/libnut": ["@nut-tree-fork/libnut@4.2.6", "", { "dependencies": { "@nut-tree-fork/libnut-darwin": "2.7.5", "@nut-tree-fork/libnut-linux": "2.7.5", "@nut-tree-fork/libnut-win32": "2.7.5" } }, "sha512-2FCiTBokMGrMl4eL/trEIO+mtpkXpdPHoVKdTBmW8UBIbhCbrCKmnXb2skWGfVs+U3q7o5EYDjVTNUYaUWbaxQ=="], + + "@nut-tree-fork/libnut-darwin": ["@nut-tree-fork/libnut-darwin@2.7.5", "", { "dependencies": { "bindings": "1.5.0" }, "optionalDependencies": { "@nut-tree-fork/node-mac-permissions": "2.2.1" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-LbqtPtMPTJUcg4XoPP2jsU1wc8flBcGyKTerKsIfK9cD7nBHROnO0QksbrsbSWEpLym8T8fRtuU7XEY83l6Z2Q=="], + + "@nut-tree-fork/libnut-linux": ["@nut-tree-fork/libnut-linux@2.7.5", "", { "dependencies": { "bindings": "1.5.0" }, "optionalDependencies": { "@nut-tree-fork/node-mac-permissions": "2.2.1" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-uxaXEcRKnFObAljsoR6tLOBUU1dJ2sctloG6gFgCBGN7+k6Jdv6jZfOuNjd/fpdq2C5WPMm0rtn9EE7h5J3Jcg=="], + + "@nut-tree-fork/libnut-win32": ["@nut-tree-fork/libnut-win32@2.7.5", "", { "dependencies": { "bindings": "1.5.0" }, "optionalDependencies": { "@nut-tree-fork/node-mac-permissions": "2.2.1" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-yqC87zvmFcDPwFrRU40DYhN0xmEVM3aSkOuyF0IX+y1x+HWSu/i0PNklATpPBhGid3QVb/TOHuVoaraMrUFCNw=="], + + "@nut-tree-fork/node-mac-permissions": ["@nut-tree-fork/node-mac-permissions@2.2.1", "", { "dependencies": { "bindings": "1.5.0", "node-addon-api": "5.0.0" }, "os": "darwin" }, "sha512-iSfOTDiBZ7VDa17PoQje5rUaZSvSAaq+XEyXCmhPuQwV5XuNU02Grv6oFhsdpz89w7+UvB/8KX/cX5IYQ5o2Bw=="], + + "@nut-tree-fork/nut-js": ["@nut-tree-fork/nut-js@4.2.6", "", { "dependencies": { "@nut-tree-fork/default-clipboard-provider": "4.2.6", "@nut-tree-fork/libnut": "4.2.6", "@nut-tree-fork/provider-interfaces": "4.2.6", "@nut-tree-fork/shared": "4.2.6", "jimp": "0.22.10", "node-abort-controller": "3.1.1" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-aI/WCX7gE1HFGPH3EZP/UWqpNMM1NMoM/EkXqp7pKMgXFCi8e5+o5p+jd/QOYpmALv9bQg7+s69nI7FONbMqDg=="], + + "@nut-tree-fork/provider-interfaces": ["@nut-tree-fork/provider-interfaces@4.2.6", "", { "dependencies": { "@nut-tree-fork/shared": "4.2.6" } }, "sha512-brtRegDkLSV0sa5DUAigjWf6hCoamBNPb/hKK9AQlW+j3BxQ/8djaEdEB2cihqUh1ZjEtgPyXRqpCWSdKCX68A=="], + + "@nut-tree-fork/shared": ["@nut-tree-fork/shared@4.2.6", "", { "dependencies": { "jimp": "0.22.10", "node-abort-controller": "3.1.1" } }, "sha512-xZaa0YtJt/DDDq/i1vZkabjq8HOWzfhXieMai61cMbYD11J6VhAfhV23ZtQEM02WG7nc2LKjl4UwRnQCteikwA=="], + "@octokit/auth-app": ["@octokit/auth-app@6.1.4", "", { "dependencies": { "@octokit/auth-oauth-app": "^7.1.0", "@octokit/auth-oauth-user": "^4.1.0", "@octokit/request": "^8.3.1", "@octokit/request-error": "^5.1.0", "@octokit/types": "^13.1.0", "deprecation": "^2.3.1", "lru-cache": "npm:@wolfy1339/lru-cache@^11.0.2-patch.1", "universal-github-app-jwt": "^1.1.2", "universal-user-agent": "^6.0.0" } }, "sha512-QkXkSOHZK4dA5oUqY5Dk3S+5pN2s1igPjEASNQV8/vgJgW034fQWR16u7VsNOK/EljA00eyjYF5mWNxWKWhHRQ=="], "@octokit/auth-oauth-app": ["@octokit/auth-oauth-app@7.1.0", "", { "dependencies": { "@octokit/auth-oauth-device": "^6.1.0", "@octokit/auth-oauth-user": "^4.1.0", "@octokit/request": "^8.3.1", "@octokit/types": "^13.0.0", "@types/btoa-lite": "^1.0.0", "btoa-lite": "^1.0.0", "universal-user-agent": "^6.0.0" } }, "sha512-w+SyJN/b0l/HEb4EOPRudo7uUOSW51jcK1jwLa+4r7PA8FPFpoxEnHBHMITqCsc/3Vo2qqFjgQfz/xUUvsSQnA=="], @@ -733,6 +889,12 @@ "@reflink/reflink-win32-x64-msvc": ["@reflink/reflink-win32-x64-msvc@0.1.19", "", { "os": "win32", "cpu": "x64" }, "sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w=="], + "@sapphire/async-queue": ["@sapphire/async-queue@1.5.5", "", {}, "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg=="], + + "@sapphire/shapeshift": ["@sapphire/shapeshift@4.0.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "lodash": "^4.17.21" } }, "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg=="], + + "@sapphire/snowflake": ["@sapphire/snowflake@3.5.5", "", {}, "sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ=="], + "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], @@ -831,6 +993,36 @@ "@smithy/uuid": ["@smithy/uuid@1.1.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g=="], + "@snazzah/davey": ["@snazzah/davey@0.1.11", "", { "optionalDependencies": { "@snazzah/davey-android-arm-eabi": "0.1.11", "@snazzah/davey-android-arm64": "0.1.11", "@snazzah/davey-darwin-arm64": "0.1.11", "@snazzah/davey-darwin-x64": "0.1.11", "@snazzah/davey-freebsd-x64": "0.1.11", "@snazzah/davey-linux-arm-gnueabihf": "0.1.11", "@snazzah/davey-linux-arm64-gnu": "0.1.11", "@snazzah/davey-linux-arm64-musl": "0.1.11", "@snazzah/davey-linux-x64-gnu": "0.1.11", "@snazzah/davey-linux-x64-musl": "0.1.11", "@snazzah/davey-wasm32-wasi": "0.1.11", "@snazzah/davey-win32-arm64-msvc": "0.1.11", "@snazzah/davey-win32-ia32-msvc": "0.1.11", "@snazzah/davey-win32-x64-msvc": "0.1.11" } }, "sha512-oBN+msHzPnm1M5DDx3wVD7iBwpNXFUtkh2MrAbUJu0OhKjliLChi28hq++mu1+qdMpAVQO5JKAvQQxYVbyneiw=="], + + "@snazzah/davey-android-arm-eabi": ["@snazzah/davey-android-arm-eabi@0.1.11", "", { "os": "android", "cpu": "arm" }, "sha512-T1RYbNYKN6tLOcGIDKJd8OI6FBSEemwL7DOYdTMmhqfhhMr3YVN8WOhfoxGg63OcnpTN2e2c5tdY2bAx25RmQQ=="], + + "@snazzah/davey-android-arm64": ["@snazzah/davey-android-arm64@0.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-ksJn/x2VU8h6w9eku1HT96ugSRZ7lKVkKNKbFleaFN+U99DJaPM+gMu2YvnFU4V54HR06ZBnRihnVG6VLXQpDw=="], + + "@snazzah/davey-darwin-arm64": ["@snazzah/davey-darwin-arm64@0.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-E1d7PbaaVMO3Lj9EiAPqOVbuV0xg5+PsHzHH097DDXiD1+zUDXvJaTnUWsnm5z50pJniHpi4GtaYmk+ieB/guA=="], + + "@snazzah/davey-darwin-x64": ["@snazzah/davey-darwin-x64@0.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-Tl4TI/LTmgJZepgbgVMYDi8RqlAkPtPg1OEBPl7a9Tn3AwR36Vs6lyIT1cs/lGy/ds/+B+mKI4rPObN1cyILTw=="], + + "@snazzah/davey-freebsd-x64": ["@snazzah/davey-freebsd-x64@0.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-T8Iw9FXkuI1T+YBAFzh9v/TXf9IOTOSqnd/BFpTRTrlW72PR2lhIidzSmg027VxO7r5pX47iFwiOkb9I/NU/EA=="], + + "@snazzah/davey-linux-arm-gnueabihf": ["@snazzah/davey-linux-arm-gnueabihf@0.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-1Txj+8pqA8uq/OGtaUaBFWAPnNMQzFgIywj0iA7EI4xZl+mab48/pv+YZ1pNb/suC6ynsW44oB9efiXSdcUAgA=="], + + "@snazzah/davey-linux-arm64-gnu": ["@snazzah/davey-linux-arm64-gnu@0.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-ERzF5nM/IYW1BcN3wLXpEwBCGLFf0kGJUVhaV6yfiInz0tkU8UmvrrgpaMaACfMjIhfWdq5CcX+aTkXo/saNcg=="], + + "@snazzah/davey-linux-arm64-musl": ["@snazzah/davey-linux-arm64-musl@0.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-e6pX6Hiabtz99q+H/YHNkm9JVlpqN8HGh0qPib8G2+UY4/SSH8WvqWipk3v581dMy2oyCHt7MOoY1aU1P1N/xA=="], + + "@snazzah/davey-linux-x64-gnu": ["@snazzah/davey-linux-x64-gnu@0.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-TW5bSoqChOJMbvsDb4wAATYrxmAXuNnse7wFNVSAJUaZKSeRfZbu3UAiPWSNn7GwLwSfU6hg322KZUn8IWCuvg=="], + + "@snazzah/davey-linux-x64-musl": ["@snazzah/davey-linux-x64-musl@0.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-5j6Pmc+Wzv5lSxVP6quA7teYRJXibkZqQyYGfTDnTsUOO5dPpcojpqlXlkhyvsA1OAQTj4uxbOCciN3cVWwzug=="], + + "@snazzah/davey-wasm32-wasi": ["@snazzah/davey-wasm32-wasi@0.1.11", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.2" }, "cpu": "none" }, "sha512-rKOwZ/0J8lp+4VEyOdMDBRP9KR+PksZpa9V1Qn0veMzy4FqTVKthkxwGqewheFe0SFg9fdvt798l/PBFrfDeZw=="], + + "@snazzah/davey-win32-arm64-msvc": ["@snazzah/davey-win32-arm64-msvc@0.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-5fptJU4tX901m3mj0SHiBljMrPT4ZEsynbBhR7bK1yn9TY1jjyhN8EFi7QF5IWtUEni+0mia2BCMHZ5ZkmFZqQ=="], + + "@snazzah/davey-win32-ia32-msvc": ["@snazzah/davey-win32-ia32-msvc@0.1.11", "", { "os": "win32", "cpu": "ia32" }, "sha512-ualexn8SeLsiMHhWfzVrzRcjHgcBapg++FPaVgJJxoh2S/jCRiklXOu3luqIZdJdNKvhe2V9SwO/cImPeIIBKw=="], + + "@snazzah/davey-win32-x64-msvc": ["@snazzah/davey-win32-x64-msvc@0.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-muNhc8UKXtknzsH/w4AIkbPR2I8BuvApn0pDXar0IEvY8PCjqU/M8MPbOOEYwQVvQRMwVTgExtxzrkBPSXB4nA=="], + "@solana/buffer-layout": ["@solana/buffer-layout@4.0.1", "", { "dependencies": { "buffer": "~6.0.3" } }, "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA=="], "@solana/codecs-core": ["@solana/codecs-core@2.3.0", "", { "dependencies": { "@solana/errors": "2.3.0" }, "peerDependencies": { "typescript": ">=5.3.3" } }, "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw=="], @@ -857,12 +1049,12 @@ "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], - "@toon-format/toon": ["@toon-format/toon@2.2.0", "", {}, "sha512-FMYqrlZnMN72YIT9KVt7Kxc41gat+RgMIzDmvRRPHw0J7pqW/FeBGDY/4BIWjT71Y+EdI9fCJip90uXuGuYhjw=="], - "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], "@tweenjs/tween.js": ["@tweenjs/tween.js@25.0.0", "", {}, "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], + "@types/blessed": ["@types/blessed@0.1.27", "", { "dependencies": { "@types/node": "*" } }, "sha512-ZOQGjLvWDclAXp0rW5iuUBXeD6Gr1PkitN7tj7/G8FCoSzTsij6OhXusOzMKhwrZ9YlL2Pmu0d6xJ9zVvk+Hsg=="], "@types/btoa-lite": ["@types/btoa-lite@1.0.2", "", {}, "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg=="], @@ -885,13 +1077,41 @@ "@types/uuid": ["@types/uuid@10.0.0", "", {}, "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ=="], - "@types/ws": ["@types/ws@7.4.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], "@ungap/structured-clone": ["@ungap/structured-clone@1.2.0", "", {}, "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="], - "@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], + "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], + + "@vladfrangu/async_event_emitter": ["@vladfrangu/async_event_emitter@2.4.7", "", {}, "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g=="], + + "@vscode/ripgrep": ["@vscode/ripgrep@1.18.0", "", { "optionalDependencies": { "@vscode/ripgrep-darwin-arm64": "1.18.0", "@vscode/ripgrep-darwin-x64": "1.18.0", "@vscode/ripgrep-linux-arm": "1.18.0", "@vscode/ripgrep-linux-arm64": "1.18.0", "@vscode/ripgrep-linux-ia32": "1.18.0", "@vscode/ripgrep-linux-ppc64": "1.18.0", "@vscode/ripgrep-linux-riscv64": "1.18.0", "@vscode/ripgrep-linux-s390x": "1.18.0", "@vscode/ripgrep-linux-x64": "1.18.0", "@vscode/ripgrep-win32-arm64": "1.18.0", "@vscode/ripgrep-win32-ia32": "1.18.0", "@vscode/ripgrep-win32-x64": "1.18.0" } }, "sha512-ns5lWe44tSfbTMbVUsyB+I1819PVSw4AdpgK0RNkzfWfwy6+3IUNSxwSrfTno1/oWaS/hERNz+XLWVyga2aJBQ=="], + + "@vscode/ripgrep-darwin-arm64": ["@vscode/ripgrep-darwin-arm64@1.18.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-r3ktHSvbFycQNF6sl7sNDPocpsI7J+mEzh1IaZFkY0spm3k2Z9t8hPAeOK7+p0l6p6/swkQC14XWX01low+94Q=="], + + "@vscode/ripgrep-darwin-x64": ["@vscode/ripgrep-darwin-x64@1.18.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-25b4gWbL138dGuQU244ebCKKc0q05ULBMoFSz9oAEUHNeqK/lOJViDS7DRvbDazzAzSEdan391Znks/R5mkaTQ=="], + + "@vscode/ripgrep-linux-arm": ["@vscode/ripgrep-linux-arm@1.18.0", "", { "os": "linux", "cpu": "arm" }, "sha512-GDAvufNDHu8zqLEmXstalQF0Wh6wQvdsBi/Vg3Yi3CK4a8XoFXqqXVEHEZ9xQz3t0NfoSEc9JbvK9DDS6FxyxQ=="], + + "@vscode/ripgrep-linux-arm64": ["@vscode/ripgrep-linux-arm64@1.18.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-lQ/5zTG++U0E3IhVgS4EPTTn/U4okncaRMM5GOFfOYZywS4nuD31GhkHbNYlDk5CuDC68+hYJ0/eQeyCKJDA+g=="], + + "@vscode/ripgrep-linux-ia32": ["@vscode/ripgrep-linux-ia32@1.18.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-YWLkSUtFd4Jh5EepIhA9RJSfv3uMAVMo+2rBIGHPBnvgLrZciIs2cDKei1/p6Wc/aCzUoHyMAg2R6tw4ZCBKGg=="], + + "@vscode/ripgrep-linux-ppc64": ["@vscode/ripgrep-linux-ppc64@1.18.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-quXVY8fwQ8O/lvU1yrSqSl3jlUzysRSb+AfUfCL/tRtphxsKlFvPAejryZ6vg4Bgvn8XL74xb4qMCDmWgYrT5w=="], + + "@vscode/ripgrep-linux-riscv64": ["@vscode/ripgrep-linux-riscv64@1.18.0", "", { "os": "linux", "cpu": "none" }, "sha512-f5kBQBrWfQt8Q7OhSORuNDei5dkYagBj3y4jImSUXGMy8B/Ke7SltSRcUtjPv166FAFfHCAmWuZp3+cWnX2/Vw=="], + + "@vscode/ripgrep-linux-s390x": ["@vscode/ripgrep-linux-s390x@1.18.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-rTOcJFGGcl2c07RUOWUo4U1ndnemKhY6A9hnMB18uk7jSgJc0d/QLBGWMWpumdtoJtpizn/wIv5mXIisJukusQ=="], + + "@vscode/ripgrep-linux-x64": ["@vscode/ripgrep-linux-x64@1.18.0", "", { "os": "linux", "cpu": "x64" }, "sha512-mQ3bVrUpnD2vs7QT0vX90Lt0cnUq467uFtEktIdsJJmW296RoSULRGqWgzG1AKxyBpNDD6l4ZO4qKf6SgyC23Q=="], + + "@vscode/ripgrep-win32-arm64": ["@vscode/ripgrep-win32-arm64@1.18.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-vfTIjq1OHnzUjxZcHVQAMbnggp8dpGf+0QKFOZHwWPqFwXxQC8eCWM+5NUdoJ6yrElCeMzoUTXoK/LdZaniB+Q=="], + + "@vscode/ripgrep-win32-ia32": ["@vscode/ripgrep-win32-ia32@1.18.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-//rfAE+BOw5AC2EMmepmiE36jUuevtQYNQqqlw1s3m9FlRxjxEut97RkRPHAu9BG4mSojatZx+kXZXNdyI9caQ=="], + + "@vscode/ripgrep-win32-x64": ["@vscode/ripgrep-win32-x64@1.18.0", "", { "os": "win32", "cpu": "x64" }, "sha512-KNPvtElldqILHdnAetujPaowkNbpqJy3ssIGGN6F6Kve9Qi+nNLI2DN01O83JjCEVQbCzl8Ov3QZ9Eov3BR8Dg=="], "@whiskeysockets/baileys": ["@whiskeysockets/baileys@7.0.0-rc.9", "", { "dependencies": { "@cacheable/node-cache": "^1.4.0", "@hapi/boom": "^9.1.3", "async-mutex": "^0.5.0", "libsignal": "git+https://github.com/whiskeysockets/libsignal-node.git", "lru-cache": "^11.1.0", "music-metadata": "^11.7.0", "p-queue": "^9.0.0", "pino": "^9.6", "protobufjs": "^7.2.4", "ws": "^8.13.0" }, "peerDependencies": { "audio-decode": "^2.1.3", "jimp": "^1.6.0", "link-preview-js": "^3.0.0", "sharp": "*" }, "optionalPeers": ["audio-decode", "jimp", "link-preview-js"] }, "sha512-YFm5gKXfDP9byCXCW3OPHKXLzrAKzolzgVUlRosHHgwbnf2YOO3XknkMm6J7+F0ns8OA0uuSBhgkRHTDtqkacw=="], @@ -907,6 +1127,8 @@ "adapter-types": ["adapter-types@0.2.0", "", {}, "sha512-T6YjdynGF9u1+D+DnqjsGmyW/dkq+kVRpz/wgVGcK2EHBAz9ETCX9Kz9ZHZdqyd0B2s/YJ0euGHiwhOFoGe0NA=="], + "adm-zip": ["adm-zip@0.5.17", "", {}, "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ=="], + "adze": ["adze@2.3.0", "", { "dependencies": { "@ungap/structured-clone": "1.2.0", "picocolors": "1.1.1" } }, "sha512-c5I7uXn5jZ075LbW0lhkmllq4OLQsLHbEV63MbykOQr/VPIOdTgbxGH4QoXHqakAUO3rUSEmURd5eM9GgpJB6g=="], "aes-js": ["aes-js@4.0.0-beta.5", "", {}, "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q=="], @@ -915,7 +1137,7 @@ "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="], - "ai": ["ai@6.0.116", "", { "dependencies": { "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA=="], + "ai": ["ai@6.0.177", "", { "dependencies": { "@ai-sdk/gateway": "3.0.112", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-1xQtbeWwNcLyyM86ixZhkKvT+WRXc1lvarIKqPVtsyn8F9NDikwUMBqYu+aQKDgMht50SMXh4qboYuU8MeHZZA=="], "ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="], @@ -927,14 +1149,20 @@ "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "any-base": ["any-base@1.1.0", "", {}, "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="], + "append-field": ["append-field@1.0.0", "", {}, "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="], + "arch": ["arch@2.2.0", "", {}, "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="], + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], + "async": ["async@0.2.10", "", {}, "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="], + "async-mutex": ["async-mutex@0.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA=="], "async-retry": ["async-retry@1.3.3", "", { "dependencies": { "retry": "0.13.1" } }, "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw=="], @@ -977,10 +1205,18 @@ "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], + "binary-version": ["binary-version@7.1.0", "", { "dependencies": { "execa": "^8.0.1", "find-versions": "^6.0.0" } }, "sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw=="], + + "binary-version-check": ["binary-version-check@6.1.0", "", { "dependencies": { "binary-version": "^7.1.0", "semver": "^7.6.0", "semver-truncate": "^3.0.0" } }, "sha512-REKdLKmuViV2WrtWXvNSiPX04KbIjfUV3Cy8batUeOg+FtmowavzJorfFhWq95cVJzINnL/44ixP26TrdJZACA=="], + + "bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="], + "blessed": ["blessed@0.1.81", "", { "bin": { "blessed": "./bin/tput.js" } }, "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ=="], "bluebird": ["bluebird@3.4.7", "", {}, "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="], + "bmp-js": ["bmp-js@0.1.0", "", {}, "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="], + "bn.js": ["bn.js@5.2.3", "", {}, "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w=="], "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], @@ -1007,6 +1243,8 @@ "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + "buffer-equal": ["buffer-equal@0.0.1", "", {}, "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA=="], + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], "buffer-fill": ["buffer-fill@1.0.0", "", {}, "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="], @@ -1031,6 +1269,10 @@ "canvas-color-tracker": ["canvas-color-tracker@1.3.2", "", { "dependencies": { "tinycolor2": "^1.6.0" } }, "sha512-ryQkDX26yJ3CXzb3hxUVNlg1NKE4REc5crLBq661Nxzr8TNd236SaEf2ffYLXyI5tSABSeguHLqcVq4vf9L3Zg=="], + "caseless": ["caseless@0.12.0", "", {}, "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="], + + "centra": ["centra@2.7.0", "", { "dependencies": { "follow-redirects": "^1.15.6" } }, "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg=="], + "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], "check-more-types": ["check-more-types@2.24.0", "", {}, "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA=="], @@ -1047,6 +1289,8 @@ "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + "clipboardy": ["clipboardy@2.3.0", "", { "dependencies": { "arch": "^2.1.1", "execa": "^1.0.0", "is-wsl": "^2.1.1" } }, "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ=="], + "cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -1071,6 +1315,8 @@ "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + "convert-hrtime": ["convert-hrtime@5.0.0", "", {}, "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg=="], + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], @@ -1079,8 +1325,6 @@ "cors": ["cors@2.8.6", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw=="], - "cron-parser": ["cron-parser@5.5.0", "", { "dependencies": { "luxon": "^3.7.1" } }, "sha512-oML4lKUXxizYswqmxuOCpgFS8BNUJpIu6k/2HVHyaL8Ynnf3wdf9tkns0yRdJLSIjkJ+b0DXHMZEHGpMwjnPww=="], - "croner": ["croner@9.0.0", "", {}, "sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], @@ -1129,12 +1373,16 @@ "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + "dargs": ["dargs@7.0.0", "", {}, "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg=="], + "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], "data-urls": ["data-urls@7.0.0", "", { "dependencies": { "whatwg-mimetype": "^5.0.0", "whatwg-url": "^16.0.0" } }, "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "debug-logfmt": ["debug-logfmt@1.4.11", "", { "dependencies": { "@kikobeats/time-span": "~1.0.5", "null-prototype-object": "~1.2.2", "pretty-ms": "~7.0.1" } }, "sha512-2zjKALi79JGKZxk9eiDMdiuoxGMOcF5FvAhX5M53nyGpoKpL7Y0AJLjuWT0xZLFwatyL6cjXBDLnbY7GL19rrA=="], + "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], @@ -1171,8 +1419,14 @@ "dingbat-to-unicode": ["dingbat-to-unicode@1.0.1", "", {}, "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w=="], + "discord-api-types": ["discord-api-types@0.38.48", "", {}, "sha512-WFUE/2o0lBlLeCQonQ+Pu2RqHAqbytBJ2RlXR91gzk05InSS6k9ShzzLYoymrA4c2oRgRKGE7/VqQJNNdGWSxQ=="], + + "discord.js": ["discord.js@14.26.4", "", { "dependencies": { "@discordjs/builders": "^1.14.1", "@discordjs/collection": "1.5.3", "@discordjs/formatters": "^0.6.2", "@discordjs/rest": "^2.6.1", "@discordjs/util": "^1.2.0", "@discordjs/ws": "^1.2.3", "@sapphire/snowflake": "3.5.3", "discord-api-types": "^0.38.40", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", "magic-bytes.js": "^1.13.0", "tslib": "^2.6.3", "undici": "6.24.1" } }, "sha512-4oBp8tc6Kf8IDBwAHhbsMaAqx1b5fob9SNasZT7V6yyyUydoO5i5fGuX7TmvRtR+q/WgKRnRViRoAWnG7fNyvA=="], + "dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], + "dom-walk": ["dom-walk@0.1.2", "", {}, "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="], + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], "domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], @@ -1195,7 +1449,7 @@ "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "elizaos": ["elizaos@2.0.0-alpha.535", "", { "dependencies": { "@clack/prompts": "^1.0.0", "commander": "^14.0.0", "picocolors": "^1.1.1" }, "bin": { "elizaos": "dist/cli.js" } }, "sha512-MRI/M2qwuG6SBXKXxOIZpqO9wuYvqhuA55qef3U+J1fik9+6L0/XYXxSDuRC3DTmzOyZLZVo5hW7wqrH17Iung=="], + "elizaos": ["elizaos@2.0.0-beta.5", "", { "dependencies": { "@clack/prompts": "^1.0.0", "commander": "^14.0.0", "picocolors": "^1.1.1" }, "bin": { "elizaos": "dist/cli.js" } }, "sha512-RqyRdt1c51b8XyDfsYQISV3p7lIkp9DafQVV0/LX93yNdVQ7Q0mcQuEa0RYBOwGPxlCoQcAAJmP5HlGs72juRw=="], "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -1205,6 +1459,8 @@ "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + "env-var": ["env-var@7.5.0", "", {}, "sha512-mKZOzLRN0ETzau2W2QXefbFjo5EF4yWq28OyKb9ICdeNhHJlOE/pHHnz4hdYJ9cNZXcJHo5xN4OT4pzuSHSNvA=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], @@ -1227,7 +1483,7 @@ "es6-symbol": ["es6-symbol@3.1.4", "", { "dependencies": { "d": "^1.0.2", "ext": "^1.7.0" } }, "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg=="], - "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -1257,14 +1513,18 @@ "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], "eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="], - "eventsource-parser": ["eventsource-parser@1.1.2", "", {}, "sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA=="], + "eventsource-parser": ["eventsource-parser@3.0.8", "", {}, "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="], "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + "exif-parser": ["exif-parser@0.1.12", "", {}, "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="], + "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], "express-rate-limit": ["express-rate-limit@8.3.1", "", { "dependencies": { "ip-address": "10.1.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw=="], @@ -1283,6 +1543,8 @@ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + "fast-levenshtein": ["fast-levenshtein@3.0.0", "", { "dependencies": { "fastest-levenshtein": "^1.0.7" } }, "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ=="], + "fast-redact": ["fast-redact@3.5.0", "", {}, "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A=="], "fast-stable-stringify": ["fast-stable-stringify@1.0.0", "", {}, "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag=="], @@ -1293,6 +1555,8 @@ "fast-xml-parser": ["fast-xml-parser@5.5.8", "", { "dependencies": { "fast-xml-builder": "^1.1.4", "path-expression-matcher": "^1.2.0", "strnum": "^2.2.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ=="], + "fastest-levenshtein": ["fastest-levenshtein@1.0.16", "", {}, "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="], + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], @@ -1301,10 +1565,14 @@ "fflate": ["fflate@0.8.2", "", {}, "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="], + "ffmpeg-static": ["ffmpeg-static@5.3.0", "", { "dependencies": { "@derhuerst/http-basic": "^8.2.0", "env-paths": "^2.2.0", "https-proxy-agent": "^5.0.0", "progress": "^2.0.3" } }, "sha512-H+K6sW6TiIX6VGend0KQwthe+kaceeH/luE8dIZyOP35ik7ahYojDuqlTV1bOrtEwl01sy2HFNGQfi5IDJvotg=="], + "figlet": ["figlet@1.11.0", "", { "dependencies": { "commander": "^14.0.0" }, "bin": { "figlet": "bin/index.js" } }, "sha512-EEx3OS/l2bFqcUNN2NM9FPJp8vAMrgbCxsbl2hbcJNNxOEwVe3mEzrhan7TbJQViZa8mMqhihlbCaqD+LyYKTQ=="], "file-type": ["file-type@22.0.1", "", { "dependencies": { "@tokenizer/inflate": "^0.4.1", "strtok3": "^10.3.5", "token-types": "^6.1.2", "uint8array-extras": "^1.5.0" } }, "sha512-ww5Mhre0EE+jmBvOXTmXAbEMuZE7uX4a3+oRCQFNj8w++g3ev913N6tXQz0XTXbueQ5TWQfm6BdaViEHHn8bhA=="], + "file-uri-to-path": ["file-uri-to-path@1.0.0", "", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="], + "filename-reserved-regex": ["filename-reserved-regex@3.0.0", "", {}, "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw=="], "filenamify": ["filenamify@6.0.0", "", { "dependencies": { "filename-reserved-regex": "^3.0.0" } }, "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ=="], @@ -1315,10 +1583,14 @@ "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "find-versions": ["find-versions@6.0.0", "", { "dependencies": { "semver-regex": "^4.0.5", "super-regex": "^1.0.0" } }, "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA=="], + "flatbuffers": ["flatbuffers@25.9.23", "", {}, "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ=="], "float-tooltip": ["float-tooltip@1.7.5", "", { "dependencies": { "d3-selection": "2 - 3", "kapsule": "^1.16", "preact": "10" } }, "sha512-/kXzuDnnBqyyWyhDMH7+PfP8J/oXiAavGzcRxASOMRHFuReDtofizLLJsf7nnDLAfEaMW4pVWaXrAjtnglpEkg=="], + "fluent-ffmpeg": ["fluent-ffmpeg@2.1.3", "", { "dependencies": { "async": "^0.2.9", "which": "^1.1.1" } }, "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q=="], + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], "force-graph": ["force-graph@1.51.2", "", { "dependencies": { "@tweenjs/tween.js": "18 - 25", "accessor-fn": "1", "bezier-js": "3 - 6", "canvas-color-tracker": "^1.3", "d3-array": "1 - 3", "d3-drag": "2 - 3", "d3-force-3d": "2 - 3", "d3-scale": "1 - 4", "d3-scale-chromatic": "1 - 3", "d3-selection": "2 - 3", "d3-zoom": "2 - 3", "float-tooltip": "^1.7", "index-array-by": "1", "kapsule": "^1.16", "lodash-es": "4" } }, "sha512-zZNdMqx8qIQGurgnbgYIUsdXxSfvhfRSIdncsKGv/twUOZpwCsk9hPHmdjdcme1+epATgb41G0rkIGHJ0Wydng=="], @@ -1341,6 +1613,8 @@ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + "function-timeout": ["function-timeout@1.0.2", "", {}, "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA=="], + "gaxios": ["gaxios@7.1.4", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA=="], "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], @@ -1349,6 +1623,8 @@ "get-east-asian-width": ["get-east-asian-width@1.5.0", "", {}, "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA=="], + "get-func-name": ["get-func-name@3.0.0", "", {}, "sha512-6lB4zp64YzgT5KVoAuY0vBXQXNObRmelzfVCpx2dHkGVskX8WwjxTVd/kGUsVzxuOpSEF9BcD54ChSKMVjSsfQ=="], + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], @@ -1359,12 +1635,16 @@ "get-uri": ["get-uri@6.0.5", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg=="], + "gifwrap": ["gifwrap@0.10.1", "", { "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" } }, "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw=="], + "git-workspace-service": ["git-workspace-service@0.4.5", "", { "dependencies": { "@octokit/auth-app": "^6.0.0", "@octokit/rest": "^20.0.0", "pino": "^9.0.0" } }, "sha512-T5mMXDku9s/Gz3yus/CudzqUg2KbaGvF4Y4lgDYZYDGbeFiGWYuJLzVexWQMaiOuctw5XKvRKQYLyB2nwXsMSQ=="], "glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "global": ["global@4.4.0", "", { "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" } }, "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w=="], + "global-agent": ["global-agent@3.0.0", "", { "dependencies": { "boolean": "^3.0.1", "es6-error": "^4.1.1", "matcher": "^3.0.0", "roarr": "^2.15.3", "semver": "^7.3.2", "serialize-error": "^7.0.1" } }, "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q=="], "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], @@ -1403,7 +1683,9 @@ "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], - "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "http-response-object": ["http-response-object@3.0.2", "", { "dependencies": { "@types/node": "^10.0.3" } }, "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA=="], + + "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], @@ -1415,6 +1697,8 @@ "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "image-q": ["image-q@4.0.0", "", { "dependencies": { "@types/node": "16.9.1" } }, "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw=="], + "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], @@ -1439,10 +1723,14 @@ "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], "is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], + "is-function": ["is-function@1.0.2", "", {}, "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="], + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], "is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="], @@ -1459,9 +1747,15 @@ "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "is-unix": ["is-unix@2.0.14", "", {}, "sha512-ZE+Iq0h1pxZu/IGsBKobH5PZ0L3ylv7WHEmKiRG8kEzue6f+w0i3ckwnDY7Ckej2jjq1c7NDYljEkNqOxv4w9A=="], + + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - "isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "isomorphic-fetch": ["isomorphic-fetch@3.0.0", "", { "dependencies": { "node-fetch": "^2.6.1", "whatwg-fetch": "^3.4.1" } }, "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA=="], "isomorphic-ws": ["isomorphic-ws@4.0.1", "", { "peerDependencies": { "ws": "*" } }, "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w=="], @@ -1471,10 +1765,14 @@ "jerrypick": ["jerrypick@1.1.2", "", {}, "sha512-YKnxXEekXKzhpf7CLYA0A+oDP8V0OhICNCr5lv96FvSsDEmrb0GKM776JgQvHTMjr7DTTPEVv/1Ciaw0uEWzBA=="], + "jimp": ["jimp@0.22.10", "", { "dependencies": { "@jimp/custom": "^0.22.10", "@jimp/plugins": "^0.22.10", "@jimp/types": "^0.22.10", "regenerator-runtime": "^0.13.3" } }, "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg=="], + "joi": ["joi@18.0.2", "", { "dependencies": { "@hapi/address": "^5.1.1", "@hapi/formula": "^3.0.2", "@hapi/hoek": "^11.0.7", "@hapi/pinpoint": "^2.0.1", "@hapi/tlds": "^1.1.1", "@hapi/topo": "^6.0.2", "@standard-schema/spec": "^1.0.0" } }, "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA=="], "jose": ["jose@6.2.2", "", {}, "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ=="], + "jpeg-js": ["jpeg-js@0.4.4", "", {}, "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="], + "js-tiktoken": ["js-tiktoken@1.0.21", "", { "dependencies": { "base64-js": "^1.5.1" } }, "sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g=="], "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], @@ -1517,12 +1815,18 @@ "libsignal": ["@whiskeysockets/libsignal-node@github:whiskeysockets/libsignal-node#1c30d7d", { "dependencies": { "curve25519-js": "^0.0.4", "protobufjs": "6.8.8" } }, "WhiskeySockets-libsignal-node-1c30d7d", "sha512-5q4/OuDQaMYx3RpDqMqS3WYyqjrsSMpU8ipQZtpYnm5l6DwNoLV9oIYMDK0NILKW+tyk3tVCIA11BMYQ+A1+GA=="], + "libsodium": ["libsodium@0.8.4", "", {}, "sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw=="], + + "libsodium-wrappers": ["libsodium-wrappers@0.8.4", "", { "dependencies": { "libsodium": "^0.8.0" } }, "sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw=="], + "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], "lifecycle-utils": ["lifecycle-utils@3.1.1", "", {}, "sha512-gNd3OvhFNjHykJE3uGntz7UuPzWlK9phrIdXxU9Adis0+ExkwnZibfxCJWiWWZ+a6VbKiZrb+9D9hCQWd4vjTg=="], "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], + "load-bmfont": ["load-bmfont@1.4.2", "", { "dependencies": { "buffer-equal": "0.0.1", "mime": "^1.3.4", "parse-bmfont-ascii": "^1.0.3", "parse-bmfont-binary": "^1.0.5", "parse-bmfont-xml": "^1.1.4", "phin": "^3.7.1", "xhr": "^2.0.1", "xtend": "^4.0.0" } }, "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog=="], + "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], @@ -1545,6 +1849,8 @@ "lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="], + "lodash.snakecase": ["lodash.snakecase@4.1.1", "", {}, "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="], + "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], "log-symbols": ["log-symbols@7.0.1", "", { "dependencies": { "is-unicode-supported": "^2.0.0", "yoctocolors": "^2.1.1" } }, "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg=="], @@ -1561,7 +1867,9 @@ "lucide-react": ["lucide-react@0.525.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ=="], - "luxon": ["luxon@3.7.2", "", {}, "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew=="], + "magic-bytes.js": ["magic-bytes.js@1.13.0", "", {}, "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg=="], + + "make-asynchronous": ["make-asynchronous@1.1.0", "", { "dependencies": { "p-event": "^6.0.0", "type-fest": "^4.6.0", "web-worker": "^1.5.0" } }, "sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg=="], "mammoth": ["mammoth@1.12.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.6", "argparse": "~1.0.3", "base64-js": "^1.5.1", "bluebird": "~3.4.0", "dingbat-to-unicode": "^1.0.1", "jszip": "^3.7.1", "lop": "^0.4.2", "path-is-absolute": "^1.0.0", "underscore": "^1.13.1", "xmlbuilder": "^10.0.0" }, "bin": { "mammoth": "bin/mammoth" } }, "sha512-cwnK1RIcRdDMi2HRx2EXGYlxqIEh0Oo3bLhorgnsVJi2UkbX1+jKxuBNR9PC5+JaX7EkmJxFPmo6mjLpqShI2w=="], @@ -1589,14 +1897,16 @@ "mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], - "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], + "min-document": ["min-document@2.19.2", "", { "dependencies": { "dom-walk": "^0.1.0" } }, "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A=="], + "minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -1625,6 +1935,10 @@ "next-tick": ["next-tick@1.1.0", "", {}, "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="], + "nice-try": ["nice-try@1.0.5", "", {}, "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="], + + "node-abort-controller": ["node-abort-controller@3.1.1", "", {}, "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="], + "node-addon-api": ["node-addon-api@8.6.0", "", {}, "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q=="], "node-api-headers": ["node-api-headers@1.8.0", "", {}, "sha512-jfnmiKWjRAGbdD1yQS28bknFM1tbHC1oucyuMPjmkEs+kpiu76aRs40WlTmBmyEgzDM76ge1DQ7XJ3R5deiVjQ=="], @@ -1635,7 +1949,7 @@ "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], - "node-llama-cpp": ["node-llama-cpp@3.18.1", "", { "dependencies": { "@huggingface/jinja": "^0.5.6", "async-retry": "^1.3.3", "bytes": "^3.1.2", "chalk": "^5.6.2", "chmodrp": "^1.0.2", "cmake-js": "^8.0.0", "cross-spawn": "^7.0.6", "env-var": "^7.5.0", "filenamify": "^6.0.0", "fs-extra": "^11.3.4", "ignore": "^7.0.4", "ipull": "^3.9.5", "is-unicode-supported": "^2.1.0", "lifecycle-utils": "^3.1.1", "log-symbols": "^7.0.1", "nanoid": "^5.1.6", "node-addon-api": "^8.6.0", "ora": "^9.3.0", "pretty-ms": "^9.3.0", "proper-lockfile": "^4.1.2", "semver": "^7.7.1", "simple-git": "^3.33.0", "slice-ansi": "^8.0.0", "stdout-update": "^4.0.1", "strip-ansi": "^7.2.0", "validate-npm-package-name": "^7.0.2", "which": "^6.0.1", "yargs": "^17.7.2" }, "optionalDependencies": { "@node-llama-cpp/linux-arm64": "3.18.1", "@node-llama-cpp/linux-armv7l": "3.18.1", "@node-llama-cpp/linux-x64": "3.18.1", "@node-llama-cpp/linux-x64-cuda": "3.18.1", "@node-llama-cpp/linux-x64-cuda-ext": "3.18.1", "@node-llama-cpp/linux-x64-vulkan": "3.18.1", "@node-llama-cpp/mac-arm64-metal": "3.18.1", "@node-llama-cpp/mac-x64": "3.18.1", "@node-llama-cpp/win-arm64": "3.18.1", "@node-llama-cpp/win-x64": "3.18.1", "@node-llama-cpp/win-x64-cuda": "3.18.1", "@node-llama-cpp/win-x64-cuda-ext": "3.18.1", "@node-llama-cpp/win-x64-vulkan": "3.18.1" }, "peerDependencies": { "typescript": ">=5.0.0" }, "optionalPeers": ["typescript"], "bin": { "node-llama-cpp": "dist/cli/cli.js", "nlc": "dist/cli/cli.js" } }, "sha512-w0zfuy/IKS2fhrbed5SylZDXJHTVz4HnkwZ4UrFPgSNwJab3QIPwIl4lyCKHHy9flLrtxsAuV5kXfH3HZ6bb8w=="], + "node-llama-cpp": ["node-llama-cpp@github:milady-ai/node-llama-cpp#b044d4a", { "dependencies": { "@huggingface/jinja": "^0.5.6", "async-retry": "^1.3.3", "bytes": "^3.1.2", "chalk": "^5.6.2", "chmodrp": "^1.0.2", "cmake-js": "^8.0.0", "cross-spawn": "^7.0.6", "env-var": "^7.5.0", "filenamify": "^6.0.0", "fs-extra": "^11.3.4", "ignore": "^7.0.4", "ipull": "^3.9.5", "is-unicode-supported": "^2.1.0", "lifecycle-utils": "^3.1.1", "log-symbols": "^7.0.1", "nanoid": "^5.1.6", "node-addon-api": "^8.6.0", "ora": "^9.3.0", "pretty-ms": "^9.3.0", "proper-lockfile": "^4.1.2", "semver": "^7.7.1", "simple-git": "^3.33.0", "slice-ansi": "^8.0.0", "stdout-update": "^4.0.1", "strip-ansi": "^7.2.0", "validate-npm-package-name": "^7.0.2", "which": "^6.0.1", "yargs": "^17.7.2" }, "optionalDependencies": { "@node-llama-cpp/linux-arm64": "3.18.1", "@node-llama-cpp/linux-armv7l": "3.18.1", "@node-llama-cpp/linux-x64": "3.18.1", "@node-llama-cpp/linux-x64-cuda": "3.18.1", "@node-llama-cpp/linux-x64-cuda-ext": "3.18.1", "@node-llama-cpp/linux-x64-vulkan": "3.18.1", "@node-llama-cpp/mac-arm64-metal": "3.18.1", "@node-llama-cpp/mac-x64": "3.18.1", "@node-llama-cpp/win-arm64": "3.18.1", "@node-llama-cpp/win-x64": "3.18.1", "@node-llama-cpp/win-x64-cuda": "3.18.1", "@node-llama-cpp/win-x64-cuda-ext": "3.18.1", "@node-llama-cpp/win-x64-vulkan": "3.18.1" }, "peerDependencies": { "typescript": ">=5.0.0" }, "optionalPeers": ["typescript"], "bin": { "node-llama-cpp": "dist/cli/cli.js", "nlc": "dist/cli/cli.js" } }, "elizaOS-node-llama-cpp-b044d4a", "sha512-QJFGkSXWw5NiGzPHM3AIczZgDdHjLqAgWkOtR09WwOlef1uJJwQ/wQc6wn0abzFiCXG95dcriUi2dndev0xymg=="], "node-localstorage": ["node-localstorage@2.2.1", "", { "dependencies": { "write-file-atomic": "^1.1.4" } }, "sha512-vv8fJuOUCCvSPjDjBLlMqYMHob4aGjkmrkaE42/mZr0VT+ZAU10jRF8oTnX9+pgU9/vYJ8P7YT3Vd6ajkmzSCw=="], @@ -1647,13 +1961,19 @@ "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + "null-prototype-object": ["null-prototype-object@1.2.7", "", {}, "sha512-pSZWCUew0zed2gxCerA4zdXRGg8ezLiWwvE8RvncezTcROXL0uz3PjSZXl5NsI04Egz0Uu46o1wyX6qr3u/ZWA=="], + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], - "ollama-ai-provider": ["ollama-ai-provider@1.2.0", "", { "dependencies": { "@ai-sdk/provider": "^1.0.0", "@ai-sdk/provider-utils": "^2.0.0", "partial-json": "0.1.7" }, "peerDependencies": { "zod": "^3.0.0" }, "optionalPeers": ["zod"] }, "sha512-jTNFruwe3O/ruJeppI/quoOUxG7NA6blG3ZyQj3lei4+NnJo7bi3eIRWqlVpRlu/mbzbFXeJSBuYQWF6pzGKww=="], + "ollama-ai-provider": ["ollama-ai-provider-v2@3.5.1", "", { "dependencies": { "@ai-sdk/provider": "^3.0.10", "@ai-sdk/provider-utils": "^4.0.26" }, "peerDependencies": { "ai": "^5.0.0 || ^6.0.0", "zod": "^4.0.16" } }, "sha512-C6JqhEVAQvptakeV62XnwvI2eAYQaCDHSu1F1xYw2gy82SF08JrZfRVq6GoyZdTiZoZ2aYmjHKhyGiQV2vfyog=="], + + "ollama-ai-provider-v2": ["ollama-ai-provider-v2@3.5.1", "", { "dependencies": { "@ai-sdk/provider": "^3.0.10", "@ai-sdk/provider-utils": "^4.0.26" }, "peerDependencies": { "ai": "^5.0.0 || ^6.0.0", "zod": "^4.0.16" } }, "sha512-C6JqhEVAQvptakeV62XnwvI2eAYQaCDHSu1F1xYw2gy82SF08JrZfRVq6GoyZdTiZoZ2aYmjHKhyGiQV2vfyog=="], + + "omggif": ["omggif@1.0.10", "", {}, "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="], "on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="], @@ -1663,20 +1983,26 @@ "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - "onnxruntime-common": ["onnxruntime-common@1.21.0", "", {}, "sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ=="], + "onnxruntime-common": ["onnxruntime-common@1.24.3", "", {}, "sha512-GeuPZO6U/LBJXvwdaqHbuUmoXiEdeCjWi/EG7Y1HNnDwJYuk6WUbNXpF6luSUY8yASul3cmUlLGrCCL1ZgVXqA=="], - "onnxruntime-node": ["onnxruntime-node@1.21.0", "", { "dependencies": { "global-agent": "^3.0.0", "onnxruntime-common": "1.21.0", "tar": "^7.0.1" }, "os": [ "linux", "win32", "darwin", ] }, "sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw=="], + "onnxruntime-node": ["onnxruntime-node@1.24.3", "", { "dependencies": { "adm-zip": "^0.5.16", "global-agent": "^3.0.0", "onnxruntime-common": "1.24.3" }, "os": [ "linux", "win32", "darwin", ] }, "sha512-JH7+czbc8ALA819vlTgcV+Q214/+VjGeBHDjX81+ZCD0PCVCIFGFNtT0V4sXG/1JXypKPgScQcB3ij/hk3YnTg=="], - "onnxruntime-web": ["onnxruntime-web@1.22.0-dev.20250409-89f8206ba4", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.22.0-dev.20250409-89f8206ba4", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ=="], + "onnxruntime-web": ["onnxruntime-web@1.26.0-dev.20260416-b7804b056c", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.24.0-dev.20251116-b39e144322", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-MD6Ss4GSpQBo6zqoJzyT9LRbKYs7x/JVN23FT24EcEvlqF4VuzPOeH6X38orZPKHQDbprn7K+SBpu0/mj2CQiw=="], "openai": ["openai@6.10.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-ITxOGo7rO3XRMiKA5l7tQ43iNNu+iXGFAcf2t+aWVzzqRaS0i7m1K2BhxNdaveB+5eENhO0VY1FkiZzhBk4v3A=="], "option": ["option@0.2.4", "", {}, "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A=="], + "opusscript": ["opusscript@0.1.1", "", {}, "sha512-mL0fZZOUnXdZ78woRXp18lApwpp0lF5tozJOD1Wut0dgrA9WuQTgSels/CSmFleaAZrJi/nci5KOVtbuxeWoQA=="], + "ora": ["ora@9.3.0", "", { "dependencies": { "chalk": "^5.6.2", "cli-cursor": "^5.0.0", "cli-spinners": "^3.2.0", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", "stdin-discarder": "^0.3.1", "string-width": "^8.1.0" } }, "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw=="], "ox": ["ox@0.14.20", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw=="], + "p-event": ["p-event@6.0.1", "", { "dependencies": { "p-timeout": "^6.1.2" } }, "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w=="], + + "p-finally": ["p-finally@1.0.0", "", {}, "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="], + "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], "p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], @@ -1695,6 +2021,16 @@ "pako": ["pako@2.1.0", "", {}, "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="], + "parse-bmfont-ascii": ["parse-bmfont-ascii@1.0.6", "", {}, "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="], + + "parse-bmfont-binary": ["parse-bmfont-binary@1.0.6", "", {}, "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="], + + "parse-bmfont-xml": ["parse-bmfont-xml@1.1.6", "", { "dependencies": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.5.0" } }, "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA=="], + + "parse-cache-control": ["parse-cache-control@1.0.1", "", {}, "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="], + + "parse-headers": ["parse-headers@2.0.6", "", {}, "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A=="], + "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], "parse5": ["parse5@8.0.1", "", { "dependencies": { "entities": "^8.0.0" } }, "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw=="], @@ -1723,6 +2059,8 @@ "pdfjs-dist": ["pdfjs-dist@5.5.207", "", { "optionalDependencies": { "@napi-rs/canvas": "^0.1.95", "node-readable-to-web-readable-stream": "^0.4.2" } }, "sha512-WMqqw06w1vUt9ZfT0gOFhMf3wHsWhaCrxGrckGs5Cci6ybDW87IvPaOd2pnBwT6BJuP/CzXDZxjFgmSULLdsdw=="], + "peek-readable": ["peek-readable@4.1.0", "", {}, "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg=="], + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], "pg": ["pg@8.20.0", "", { "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.3.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA=="], @@ -1741,6 +2079,8 @@ "pgpass": ["pgpass@1.0.5", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="], + "phin": ["phin@3.7.1", "", { "dependencies": { "centra": "^2.7.0" } }, "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -1751,6 +2091,8 @@ "pino-std-serializers": ["pino-std-serializers@7.1.0", "", {}, "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw=="], + "pixelmatch": ["pixelmatch@4.0.2", "", { "dependencies": { "pngjs": "^3.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA=="], + "pkce-challenge": ["pkce-challenge@5.0.1", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="], "platform": ["platform@1.3.6", "", {}, "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="], @@ -1775,6 +2117,10 @@ "pretty-ms": ["pretty-ms@9.3.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="], + "prism-media": ["prism-media@1.3.5", "", { "peerDependencies": { "@discordjs/opus": ">=0.8.0 <1.0.0", "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", "node-opus": "^0.3.3", "opusscript": "^0.0.8" }, "optionalPeers": ["@discordjs/opus", "ffmpeg-static", "node-opus", "opusscript"] }, "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA=="], + + "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], @@ -1799,8 +2145,6 @@ "pty-manager": ["pty-manager@1.11.0", "", { "dependencies": { "adapter-types": "^0.2.0", "node-pty": "^1.0.0" }, "bin": { "pty-worker": "dist/pty-worker.js" } }, "sha512-Ncyh+2lV0cB5cUYcij4fb10ILTamOKeFOGSvq7FaYubnC7pjI4G9nkPOXb6Ac5/YHvh8I/6Ko+JOdILwXbT5vQ=="], - "pty-state-capture": ["pty-state-capture@0.2.0", "", {}, "sha512-FatJj03jyHZ6S05VBZFXnrTxXaESDnQEuN+8lxlSohymE1O2369kSsM+EkltVRzCKEuA9KmEAUAKmaxp9szFQg=="], - "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], @@ -1813,12 +2157,18 @@ "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="], + "qrcode-terminal": ["qrcode-terminal@0.12.0", "", { "bin": { "qrcode-terminal": "./bin/qrcode-terminal.js" } }, "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="], + "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="], "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], "quick-format-unescaped": ["quick-format-unescaped@4.0.4", "", {}, "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="], + "quickjs-emscripten": ["quickjs-emscripten@0.32.0", "", { "dependencies": { "@jitl/quickjs-wasmfile-debug-asyncify": "0.32.0", "@jitl/quickjs-wasmfile-debug-sync": "0.32.0", "@jitl/quickjs-wasmfile-release-asyncify": "0.32.0", "@jitl/quickjs-wasmfile-release-sync": "0.32.0", "quickjs-emscripten-core": "0.32.0" } }, "sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA=="], + + "quickjs-emscripten-core": ["quickjs-emscripten-core@0.32.0", "", { "dependencies": { "@jitl/quickjs-ffi-types": "0.32.0" } }, "sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg=="], + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], @@ -1837,6 +2187,8 @@ "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "readable-web-to-node-stream": ["readable-web-to-node-stream@3.0.4", "", { "dependencies": { "readable-stream": "^4.7.0" } }, "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw=="], + "readline-sync": ["readline-sync@1.4.10", "", {}, "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw=="], "real-cancellable-promise": ["real-cancellable-promise@1.2.3", "", {}, "sha512-hBI5Gy/55VEeeMtImMgEirD7eq5UmqJf1J8dFZtbJZA/3rB0pYFZ7PayMGueb6v4UtUtpKpP+05L0VwyE1hI9Q=="], @@ -1845,6 +2197,8 @@ "rechoir": ["rechoir@0.6.2", "", { "dependencies": { "resolve": "^1.1.6" } }, "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="], + "regenerator-runtime": ["regenerator-runtime@0.13.11", "", {}, "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="], + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], @@ -1883,6 +2237,8 @@ "sandwich-stream": ["sandwich-stream@2.0.2", "", {}, "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ=="], + "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="], + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -1893,6 +2249,10 @@ "semver-compare": ["semver-compare@1.0.0", "", {}, "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="], + "semver-regex": ["semver-regex@4.0.5", "", {}, "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw=="], + + "semver-truncate": ["semver-truncate@3.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg=="], + "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], "serialize-error": ["serialize-error@7.0.1", "", { "dependencies": { "type-fest": "^0.13.1" } }, "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw=="], @@ -1983,6 +2343,8 @@ "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "strip-eof": ["strip-eof@1.0.0", "", {}, "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q=="], + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], "strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], @@ -1993,6 +2355,8 @@ "strtok3": ["strtok3@10.3.5", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA=="], + "super-regex": ["super-regex@1.1.0", "", { "dependencies": { "function-timeout": "^1.0.1", "make-asynchronous": "^1.0.1", "time-span": "^5.1.0" } }, "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ=="], + "superstruct": ["superstruct@2.0.2", "", {}, "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A=="], "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], @@ -2025,8 +2389,14 @@ "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], + "time-span": ["time-span@5.1.0", "", { "dependencies": { "convert-hrtime": "^5.0.0" } }, "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA=="], + + "timm": ["timm@1.7.1", "", {}, "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="], + "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="], + "tinyspawn": ["tinyspawn@1.5.7", "", {}, "sha512-EUrfYrlL9SvWuDjyzgF1NdILYHAOI/fosveOHbIcB9ZTaCu+IqPrA7df4M6Olf4vZUFrO9U0qPqOATLApk8WjA=="], + "tldts": ["tldts@7.0.30", "", { "dependencies": { "tldts-core": "^7.0.30" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw=="], "tldts-core": ["tldts-core@7.0.30", "", {}, "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q=="], @@ -2045,6 +2415,8 @@ "ts-custom-error": ["ts-custom-error@3.3.1", "", {}, "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A=="], + "ts-mixer": ["ts-mixer@6.0.4", "", {}, "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="], + "tslib": ["tslib@2.7.0", "", {}, "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="], "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], @@ -2095,6 +2467,8 @@ "utf-8-validate": ["utf-8-validate@5.0.10", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ=="], + "utif2": ["utif2@4.1.0", "", { "dependencies": { "pako": "^1.0.11" } }, "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w=="], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], "uuid": ["uuid@14.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], @@ -2111,17 +2485,21 @@ "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + "web-worker": ["web-worker@1.5.0", "", {}, "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw=="], + "webdriver-bidi-protocol": ["webdriver-bidi-protocol@0.4.1", "", {}, "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw=="], "webidl-conversions": ["webidl-conversions@8.0.1", "", {}, "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ=="], "websocket": ["websocket@1.0.35", "", { "dependencies": { "bufferutil": "^4.0.1", "debug": "^2.2.0", "es5-ext": "^0.10.63", "typedarray-to-buffer": "^3.1.5", "utf-8-validate": "^5.0.2", "yaeti": "^0.0.6" } }, "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q=="], + "whatwg-fetch": ["whatwg-fetch@3.6.20", "", {}, "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="], + "whatwg-mimetype": ["whatwg-mimetype@5.0.0", "", {}, "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw=="], "whatwg-url": ["whatwg-url@16.0.1", "", { "dependencies": { "@exodus/bytes": "^1.11.0", "tr46": "^6.0.0", "webidl-conversions": "^8.0.1" } }, "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw=="], - "which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], + "which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], @@ -2139,8 +2517,14 @@ "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], + "xhr": ["xhr@2.6.0", "", { "dependencies": { "global": "~4.4.0", "is-function": "^1.0.1", "parse-headers": "^2.0.0", "xtend": "^4.0.0" } }, "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA=="], + "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], + "xml-parse-from-string": ["xml-parse-from-string@1.0.1", "", {}, "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="], + + "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="], + "xmlbuilder": ["xmlbuilder@10.1.1", "", {}, "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg=="], "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], @@ -2163,13 +2547,23 @@ "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], + "youtube-dl-exec": ["youtube-dl-exec@3.1.7", "", { "dependencies": { "binary-version-check": "~6.1.0", "dargs": "~7.0.0", "debug-logfmt": "~1.4.0", "is-unix": "~2.0.10", "tinyspawn": "~1.5.0" } }, "sha512-NlbHVcnoj1qmnHe2OFAh7zsZT4+pC2RdvWLiGgHWI9Jef+EIFzG3uUh32G745l3arxAnGsVEKyODEJClTwf5Kw=="], + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], + "@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + + "@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], + + "@ai-sdk/google/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + "@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + "@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + + "@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], "@ai-sdk/react/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@2.2.8", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA=="], @@ -2247,11 +2641,21 @@ "@capacitor/core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@elizaos/agent/@elizaos/plugin-ollama": ["@elizaos/plugin-ollama@2.0.0-alpha.70", "", { "dependencies": { "@ai-sdk/ui-utils": "^1.2.8", "@elizaos/core": "alpha", "ai": "^4.3.9", "js-tiktoken": "^1.0.18", "ollama-ai-provider": "^1.2.0" } }, "sha512-NlNaQTiEUs7KDKazqozmwbUGVHHs6vCocwXvU7RhyeRtgd49rYb5R0d/oLmMCKjTIld/jGmMjY9/qIHRqFk9wA=="], + "@discordjs/builders/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@elizaos/agent/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@discordjs/rest/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@discordjs/rest/undici": ["undici@6.24.1", "", {}, "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA=="], + + "@discordjs/voice/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@discordjs/ws/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@elizaos/agent/@elizaos/plugin-elizacloud": ["@elizaos/plugin-elizacloud@2.0.0-beta.1", "", { "dependencies": { "@ai-sdk/openai": "^3.0.9", "@elizaos/cloud-sdk": "2.0.0-beta.1", "@elizaos/core": "2.0.0-beta.1", "ai": "^6.0.30", "jose": "^6.2.2", "js-tiktoken": "^1.0.21", "undici": "8.2.0", "viem": "^2.48.8" }, "peerDependencies": { "zod": "^4.4.3" } }, "sha512-RD7CL+N/4+x1CmDRKLJuGNG/m4ABZGWJw3+v4fm2gZIzZTACCq87Igro/hi935QVY5uRhMwN3zR9hZlS+ddd3Q=="], + + "@elizaos/agent/@elizaos/plugin-sql": ["@elizaos/plugin-sql@2.0.0-beta.1", "", { "dependencies": { "@electric-sql/pglite": "^0.4.0", "@neondatabase/serverless": "^1.1.0", "drizzle-orm": "0.45.2", "pg": "^8.16.3", "uuid": "^14.0.0", "ws": "^8.18.3" }, "peerDependencies": { "@elizaos/core": "2.0.0-beta.1" } }, "sha512-1IWyanD7IGljBSkbAidstQSaGMHkAteh+uLS4J+HnCeuphS7LQkVyCJ+ZQuoPb9uUL7v8zyNXfEMQPE3pfDJNw=="], - "@elizaos/autonomous/@elizaos/plugin-agent-orchestrator": ["@elizaos/plugin-agent-orchestrator@0.3.15", "", { "dependencies": { "coding-agent-adapters": "0.12.0", "pty-console": "0.3.1" }, "peerDependencies": { "@elizaos/core": ">=2.0.0-alpha.0", "git-workspace-service": "0.4.4", "pty-manager": "1.10.0" } }, "sha512-22aoptlKrNhApQKa9+aZvZ/CTLOaYM1tIMCp+dt/ploI2J8JyRo9r80SGIEGq9iayBjlMXzh4MNHjryH+agXEQ=="], + "@elizaos/agent/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@elizaos/autonomous/@elizaos/plugin-agent-skills": ["@elizaos/plugin-agent-skills@2.0.0-alpha.70", "", { "dependencies": { "@elizaos/core": "alpha", "fflate": "^0.8.2" } }, "sha512-VIGpQY2YMeqeH7llCr0YTOrUlVZjOEogg/Ur6v2HAIUgIYt0X9C82vDxcW9ff8F87/epcGqK//6ODXAF248Dhw=="], @@ -2269,6 +2673,8 @@ "@elizaos/autonomous/@elizaos/plugin-sql": ["@elizaos/plugin-sql@2.0.0-alpha.17", "", { "dependencies": { "@electric-sql/pglite": "^0.3.3", "@elizaos/core": "alpha", "@neondatabase/serverless": "^1.0.2", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", "drizzle-orm": "^0.45.1", "pg": "^8.16.3", "uuid": "^13.0.0" } }, "sha512-O3I7ZX73DFMMCXWtjITi4QBYdo/01MI0neNBfqf6kbCBsE6j1r3ejZDoPBbRi/Ticsj3jlCc9nuwiOnKgWt+mQ=="], + "@elizaos/autonomous/@noble/curves": ["@noble/curves@2.0.1", "", { "dependencies": { "@noble/hashes": "2.0.1" } }, "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw=="], + "@elizaos/autonomous/coding-agent-adapters": ["coding-agent-adapters@0.12.0", "", { "peerDependencies": { "agent-adapter-monitor": "^0.3.0", "pty-manager": "^1.9.5" }, "optionalPeers": ["agent-adapter-monitor"] }, "sha512-PrhVgOThCkmQNidwE9Qvab4AqyZ1hDhwEVHD9UdEEtl7bW7RR/vaGBergj6aUJsCIQQdaKyC3Blfm3UWfhnf2Q=="], "@elizaos/autonomous/drizzle-orm": ["drizzle-orm@0.45.1", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA=="], @@ -2279,25 +2685,39 @@ "@elizaos/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@elizaos/plugin-agent-orchestrator/coding-agent-adapters": ["coding-agent-adapters@0.12.0", "", { "peerDependencies": { "agent-adapter-monitor": "^0.3.0", "pty-manager": "^1.9.5" }, "optionalPeers": ["agent-adapter-monitor"] }, "sha512-PrhVgOThCkmQNidwE9Qvab4AqyZ1hDhwEVHD9UdEEtl7bW7RR/vaGBergj6aUJsCIQQdaKyC3Blfm3UWfhnf2Q=="], + + "@elizaos/plugin-agent-orchestrator/git-workspace-service": ["git-workspace-service@0.4.4", "", { "dependencies": { "@octokit/auth-app": "^6.0.0", "@octokit/rest": "^20.0.0" } }, "sha512-pDmjqcPYF/wO6hz2P7lm+T+eZz3v4pM9Mxi0lPlU06JiEeh1kTdfxpp6zEz7aMXvf5M6IMJEOVVOO2lfBnrkmg=="], + + "@elizaos/plugin-agent-orchestrator/pty-manager": ["pty-manager@1.9.8", "", { "dependencies": { "node-pty": "^1.0.0" }, "bin": { "pty-worker": "dist/pty-worker.js" } }, "sha512-FoliQUAqdWPqOZIckzafISwS9Fom/cPcxTIeyXA86ypyCW2lRIqs1UVOTvCnOnSWCRbAtLj3JmcPSZ0pH/dpig=="], + "@elizaos/plugin-cli/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], "@elizaos/plugin-coding-agent/coding-agent-adapters": ["coding-agent-adapters@0.8.0", "", { "peerDependencies": { "agent-adapter-monitor": "^0.3.0", "pty-manager": "^1.9.0" }, "optionalPeers": ["agent-adapter-monitor"] }, "sha512-u55gCgTzRCsfYAzI2XobqrQtIIgLDJJUT6ffABwlv48Ta/oBE5lZA2xAbTUMCEB4p7zy/vYBYkLpRSwSLbcx2w=="], "@elizaos/plugin-coding-agent/pty-console": ["pty-console@0.3.0", "", { "dependencies": { "pty-manager": "^1.9.0" } }, "sha512-IEizJ4F8LjQJLimLT7aHRFzWTU19Bjv2/3h6Ols+Zn9iU23iQmF1lIGaDuwWmlZ0ADUOPUkGiWwOh+7MFM074g=="], + "@elizaos/plugin-coding-tools/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@elizaos/plugin-cron/uuid": ["uuid@11.0.5", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA=="], + "@elizaos/plugin-discord/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@elizaos/plugin-experience/uuid": ["uuid@13.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w=="], + "@elizaos/plugin-imessage/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@elizaos/plugin-knowledge/@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@1.5.4", "", { "dependencies": { "@openrouter/sdk": "^0.1.27" }, "peerDependencies": { "ai": "^5.0.0", "zod": "^3.24.1 || ^v4" } }, "sha512-xrSQPUIH8n9zuyYZR0XK7Ba0h2KsjJcMkxnwaYfmv13pKs3sDkjPzVPPhlhzqBGddHb5cFEwJ9VFuFeDcxCDSw=="], - "@elizaos/plugin-ollama/ai": ["ai@6.0.177", "", { "dependencies": { "@ai-sdk/gateway": "3.0.112", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-1xQtbeWwNcLyyM86ixZhkKvT+WRXc1lvarIKqPVtsyn8F9NDikwUMBqYu+aQKDgMht50SMXh4qboYuU8MeHZZA=="], + "@elizaos/plugin-knowledge/ai": ["ai@6.0.116", "", { "dependencies": { "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA=="], + + "@elizaos/plugin-local-embedding/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@elizaos/plugin-personality/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "@elizaos/plugin-rolodex/whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], - "@elizaos/plugin-telegram/typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], + "@elizaos/plugin-signal/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@elizaos/plugin-todo/drizzle-orm": ["drizzle-orm@0.30.10", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=3", "@electric-sql/pglite": ">=0.1.1", "@libsql/client": "*", "@neondatabase/serverless": ">=0.1", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/react": ">=18", "@types/sql.js": "*", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=13.2.0", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "react": ">=18", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@types/better-sqlite3", "@types/pg", "@types/react", "@types/sql.js", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "knex", "kysely", "mysql2", "pg", "postgres", "react", "sql.js", "sqlite3"] }, "sha512-IRy/QmMWw9lAQHpwbUh1b8fcn27S/a9zMIzqea1WNOxK9/4EB8gIo+FZWLiPXzl2n9ixGSv8BhsLZiOppWEwBw=="], @@ -2309,10 +2729,22 @@ "@elizaos/shared/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@emnapi/core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@emnapi/runtime/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], + "@fal-ai/client/eventsource-parser": ["eventsource-parser@1.1.2", "", {}, "sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA=="], + + "@jimp/core/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "@jimp/core/file-type": ["file-type@16.5.4", "", { "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", "token-types": "^4.1.1" } }, "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw=="], + + "@jimp/png/pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="], + "@mariozechner/pi-ai/@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.73.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-URURVzhxXGJDGUGFunIOtBlSl7KWvZiAAKY/ttTkZAkXT9bTPqdk2eK0b8qqSxXpikh3QKPnPYpiyX98zf5ebw=="], "@mariozechner/pi-ai/undici": ["undici@7.24.5", "", {}, "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q=="], @@ -2321,7 +2753,7 @@ "@modelcontextprotocol/sdk/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], - "@noble/curves/@noble/hashes": ["@noble/hashes@2.0.1", "", {}, "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw=="], + "@nut-tree-fork/node-mac-permissions/node-addon-api": ["node-addon-api@5.0.0", "", {}, "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA=="], "@octokit/auth-app/lru-cache": ["@wolfy1339/lru-cache@11.0.2-patch.1", "", {}, "sha512-BgYZfL2ADCXKOw2wJtkM3slhHotawWkgIRRxq4wEybnZQPjvAp71SPX35xepMykTw8gXlzWcWPTY31hlbnRsDA=="], @@ -2427,30 +2859,48 @@ "@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@tybys/wasm-util/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@whiskeysockets/baileys/@hapi/boom": ["@hapi/boom@9.1.4", "", { "dependencies": { "@hapi/hoek": "9.x.x" } }, "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw=="], "@whiskeysockets/baileys/pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="], - "accepts/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], - "ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "async-mutex/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "binary-version/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + "body-parser/type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], "chromium-bidi/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "clipboardy/execa": ["execa@1.0.0", "", { "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } }, "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "cmake-js/which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], + "cmake-js/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "coding-agent-adapters/pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="], "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "debug-logfmt/pretty-ms": ["pretty-ms@7.0.1", "", { "dependencies": { "parse-ms": "^2.1.0" } }, "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q=="], + + "discord.js/@discordjs/collection": ["@discordjs/collection@1.5.3", "", {}, "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ=="], + + "discord.js/@sapphire/snowflake": ["@sapphire/snowflake@3.5.3", "", {}, "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ=="], + + "discord.js/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "discord.js/undici": ["undici@6.24.1", "", {}, "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA=="], + "dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], + "drizzle-kit/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + "ethers/@noble/curves": ["@noble/curves@1.2.0", "", { "dependencies": { "@noble/hashes": "1.3.2" } }, "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw=="], "ethers/@noble/hashes": ["@noble/hashes@1.3.2", "", {}, "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ=="], @@ -2463,16 +2913,24 @@ "execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], - "express/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], - "express/type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], + "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], "git-workspace-service/pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="], "htmlparser2/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], + "http-response-object/@types/node": ["@types/node@10.17.60", "", {}, "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="], + + "https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + + "image-q/@types/node": ["@types/node@16.9.1", "", {}, "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="], + "ipull/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "ipull/lifecycle-utils": ["lifecycle-utils@2.1.0", "", {}, "sha512-AnrXnE2/OF9PHCyFg0RSqsnQTzV991XaZA/buhFDoc58xU7rhSCDgCz/09Lqpsn4MpoPHt7TRAXV1kWZypFVsA=="], @@ -2483,6 +2941,8 @@ "jayson/@types/node": ["@types/node@12.20.55", "", {}, "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="], + "jayson/@types/ws": ["@types/ws@7.4.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="], + "jayson/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], "jayson/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], @@ -2499,8 +2959,12 @@ "libsignal/protobufjs": ["protobufjs@6.8.8", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/long": "^4.0.0", "@types/node": "^10.1.0", "long": "^4.0.0" }, "bin": { "pbjs": "bin/pbjs", "pbts": "bin/pbts" } }, "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw=="], + "load-bmfont/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + "loose-envify/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "make-asynchronous/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + "markdown-it/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], "music-metadata/file-type": ["file-type@21.3.3", "", { "dependencies": { "@tokenizer/inflate": "^0.4.1", "strtok3": "^10.3.4", "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" } }, "sha512-pNwbwz8c3aZ+GvbJnIsCnDjKvgCZLHxkFWLEFxU3RMa+Ey++ZSEfisvsWQMcdys6PpxQjWUOIDi1fifXsW3YRg=="], @@ -2509,15 +2973,13 @@ "node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + "node-llama-cpp/which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], + "node-llama-cpp/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "node-pty/node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], - "ollama-ai-provider/@ai-sdk/provider": ["@ai-sdk/provider@1.1.3", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="], - - "ollama-ai-provider/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@2.2.8", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA=="], - - "onnxruntime-web/onnxruntime-common": ["onnxruntime-common@1.22.0-dev.20250409-89f8206ba4", "", {}, "sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ=="], + "onnxruntime-web/onnxruntime-common": ["onnxruntime-common@1.24.0-dev.20251116-b39e144322", "", {}, "sha512-BOoomdHYmNRL5r4iQ4bMvsl2t0/hzVQ3OM3PHD0gxeXu1PmggqBv3puZicEUVOA3AtHHYmqZtjMj9FOfGrATTw=="], "ora/cli-spinners": ["cli-spinners@3.4.0", "", {}, "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw=="], @@ -2533,32 +2995,38 @@ "ox/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + "p-event/p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], + "p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], + "pac-proxy-agent/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "parse5/entities": ["entities@8.0.0", "", {}, "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA=="], + "pixelmatch/pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="], + "proper-lockfile/retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], + "proxy-agent/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], "pty-console/pty-manager": ["pty-manager@1.9.8", "", { "dependencies": { "node-pty": "^1.0.0" }, "bin": { "pty-worker": "dist/pty-worker.js" } }, "sha512-FoliQUAqdWPqOZIckzafISwS9Fom/cPcxTIeyXA86ypyCW2lRIqs1UVOTvCnOnSWCRbAtLj3JmcPSZ0pH/dpig=="], "qified/hookified": ["hookified@2.1.0", "", {}, "sha512-ootKng4eaxNxa7rx6FJv2YKef3DuhqbEj3l70oGXwddPQEEnISm50TEZQclqiLTAtilT2nu7TErtCO523hHkyg=="], + "readable-web-to-node-stream/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], + "restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], "restore-cursor/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], "roarr/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], - "rpc-websockets/@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "rpc-websockets/utf-8-validate": ["utf-8-validate@6.0.6", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA=="], "rxjs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "send/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], - "start-server-and-test/bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="], "stdout-update/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], @@ -2577,6 +3045,10 @@ "type-is/media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + "type-is/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "utif2/pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + "viem/@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], "viem/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], @@ -2593,8 +3065,14 @@ "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + + "@ai-sdk/anthropic/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + "@ai-sdk/google/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + "@ai-sdk/openai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + "@ai-sdk/react/@ai-sdk/provider-utils/@ai-sdk/provider": ["@ai-sdk/provider@1.1.3", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="], "@ai-sdk/react/@ai-sdk/provider-utils/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], @@ -2605,18 +3083,26 @@ "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - "@elizaos/agent/@elizaos/plugin-ollama/ai": ["ai@4.3.19", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8", "@ai-sdk/react": "1.2.12", "@ai-sdk/ui-utils": "1.2.11", "@opentelemetry/api": "1.9.0", "jsondiffpatch": "0.6.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["react"] }, "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q=="], + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai": ["ai@6.0.116", "", { "dependencies": { "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA=="], "@elizaos/autonomous/@elizaos/plugin-anthropic/undici": ["undici@7.24.5", "", {}, "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q=="], + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai": ["ai@6.0.116", "", { "dependencies": { "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA=="], + "@elizaos/autonomous/@elizaos/plugin-elizacloud/undici": ["undici@7.24.5", "", {}, "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q=="], + "@elizaos/autonomous/@elizaos/plugin-local-embedding/@huggingface/transformers": ["@huggingface/transformers@3.8.1", "", { "dependencies": { "@huggingface/jinja": "^0.5.3", "onnxruntime-node": "1.21.0", "onnxruntime-web": "1.22.0-dev.20250409-89f8206ba4", "sharp": "^0.34.1" } }, "sha512-tsTk4zVjImqdqjS8/AOZg2yNLd1z9S5v+7oUPpXaasDRwEDhB+xnglK1k5cad26lL5/ZIaeREgWWy0bs9y9pPA=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp": ["node-llama-cpp@3.18.1", "", { "dependencies": { "@huggingface/jinja": "^0.5.6", "async-retry": "^1.3.3", "bytes": "^3.1.2", "chalk": "^5.6.2", "chmodrp": "^1.0.2", "cmake-js": "^8.0.0", "cross-spawn": "^7.0.6", "env-var": "^7.5.0", "filenamify": "^6.0.0", "fs-extra": "^11.3.4", "ignore": "^7.0.4", "ipull": "^3.9.5", "is-unicode-supported": "^2.1.0", "lifecycle-utils": "^3.1.1", "log-symbols": "^7.0.1", "nanoid": "^5.1.6", "node-addon-api": "^8.6.0", "ora": "^9.3.0", "pretty-ms": "^9.3.0", "proper-lockfile": "^4.1.2", "semver": "^7.7.1", "simple-git": "^3.33.0", "slice-ansi": "^8.0.0", "stdout-update": "^4.0.1", "strip-ansi": "^7.2.0", "validate-npm-package-name": "^7.0.2", "which": "^6.0.1", "yargs": "^17.7.2" }, "optionalDependencies": { "@node-llama-cpp/linux-arm64": "3.18.1", "@node-llama-cpp/linux-armv7l": "3.18.1", "@node-llama-cpp/linux-x64": "3.18.1", "@node-llama-cpp/linux-x64-cuda": "3.18.1", "@node-llama-cpp/linux-x64-cuda-ext": "3.18.1", "@node-llama-cpp/linux-x64-vulkan": "3.18.1", "@node-llama-cpp/mac-arm64-metal": "3.18.1", "@node-llama-cpp/mac-x64": "3.18.1", "@node-llama-cpp/win-arm64": "3.18.1", "@node-llama-cpp/win-x64": "3.18.1", "@node-llama-cpp/win-x64-cuda": "3.18.1", "@node-llama-cpp/win-x64-cuda-ext": "3.18.1", "@node-llama-cpp/win-x64-vulkan": "3.18.1" }, "peerDependencies": { "typescript": ">=5.0.0" }, "optionalPeers": ["typescript"], "bin": { "node-llama-cpp": "dist/cli/cli.js", "nlc": "dist/cli/cli.js" } }, "sha512-w0zfuy/IKS2fhrbed5SylZDXJHTVz4HnkwZ4UrFPgSNwJab3QIPwIl4lyCKHHy9flLrtxsAuV5kXfH3HZ6bb8w=="], + "@elizaos/autonomous/@elizaos/plugin-local-embedding/undici": ["undici@7.24.5", "", {}, "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q=="], "@elizaos/autonomous/@elizaos/plugin-local-embedding/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], "@elizaos/autonomous/@elizaos/plugin-ollama/ai": ["ai@4.3.19", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8", "@ai-sdk/react": "1.2.12", "@ai-sdk/ui-utils": "1.2.11", "@opentelemetry/api": "1.9.0", "jsondiffpatch": "0.6.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["react"] }, "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q=="], + "@elizaos/autonomous/@elizaos/plugin-openai/ai": ["ai@6.0.116", "", { "dependencies": { "@ai-sdk/gateway": "3.0.66", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA=="], + "@elizaos/autonomous/@elizaos/plugin-openai/undici": ["undici@7.24.5", "", {}, "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q=="], "@elizaos/autonomous/@elizaos/plugin-sql/@electric-sql/pglite": ["@electric-sql/pglite@0.3.16", "", {}, "sha512-mZkZfOd9OqTMHsK+1cje8OSzfAQcpD7JmILXTl5ahdempjUDdmg4euf1biDex5/LfQIDJ3gvCu6qDgdnDxfJmA=="], @@ -2625,13 +3111,15 @@ "@elizaos/autonomous/@elizaos/plugin-sql/uuid": ["uuid@13.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w=="], + "@elizaos/autonomous/@noble/curves/@noble/hashes": ["@noble/hashes@2.0.1", "", {}, "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw=="], + "@elizaos/plugin-coding-agent/pty-console/pty-manager": ["pty-manager@1.9.8", "", { "dependencies": { "node-pty": "^1.0.0" }, "bin": { "pty-worker": "dist/pty-worker.js" } }, "sha512-FoliQUAqdWPqOZIckzafISwS9Fom/cPcxTIeyXA86ypyCW2lRIqs1UVOTvCnOnSWCRbAtLj3JmcPSZ0pH/dpig=="], - "@elizaos/plugin-ollama/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.112", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jiBao9pR4owWyjo0BnuNc7WSQBGOD0thysE4AFgZXaG+zMFbISQXUkJr7ePw/phBvePy7jE5FSA2Lf7lwqUiiQ=="], + "@elizaos/plugin-knowledge/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.66", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A=="], - "@elizaos/plugin-ollama/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@elizaos/plugin-knowledge/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], - "@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@elizaos/plugin-knowledge/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], "@elizaos/plugin-rolodex/whatwg-url/tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], @@ -2681,6 +3169,10 @@ "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], + "@jimp/core/file-type/strtok3": ["strtok3@6.3.0", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" } }, "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw=="], + + "@jimp/core/file-type/token-types": ["token-types@4.2.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ=="], + "@puppeteer/browsers/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "@puppeteer/browsers/yargs/y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -2693,12 +3185,32 @@ "@whiskeysockets/baileys/pino/thread-stream": ["thread-stream@3.1.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="], - "accepts/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "binary-version/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], + + "binary-version/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], + + "binary-version/execa/is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + + "binary-version/execa/npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], + + "binary-version/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + + "binary-version/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "binary-version/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + + "clipboardy/execa/cross-spawn": ["cross-spawn@6.0.6", "", { "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw=="], + + "clipboardy/execa/get-stream": ["get-stream@4.1.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w=="], - "body-parser/type-is/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + "clipboardy/execa/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], + + "clipboardy/execa/npm-run-path": ["npm-run-path@2.0.2", "", { "dependencies": { "path-key": "^2.0.0" } }, "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw=="], "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "cmake-js/which/isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], + "cmake-js/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "cmake-js/yargs/y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -2709,11 +3221,63 @@ "coding-agent-adapters/pino/thread-stream": ["thread-stream@3.1.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="], - "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "debug-logfmt/pretty-ms/parse-ms": ["parse-ms@2.1.0", "", {}, "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA=="], + + "drizzle-kit/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "drizzle-kit/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "drizzle-kit/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "drizzle-kit/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "drizzle-kit/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "drizzle-kit/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "drizzle-kit/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "drizzle-kit/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "drizzle-kit/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "drizzle-kit/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "drizzle-kit/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "drizzle-kit/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "drizzle-kit/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "drizzle-kit/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "drizzle-kit/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "drizzle-kit/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "drizzle-kit/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "drizzle-kit/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "drizzle-kit/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "drizzle-kit/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "drizzle-kit/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "drizzle-kit/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "drizzle-kit/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "drizzle-kit/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "drizzle-kit/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "drizzle-kit/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], "ethers/@types/node/undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="], - "express/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "gaxios/node-fetch/data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], @@ -2723,6 +3287,8 @@ "ipull/pretty-ms/parse-ms": ["parse-ms@3.0.0", "", {}, "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw=="], + "jayson/@types/ws/@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="], + "jszip/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "libsignal/protobufjs/@types/node": ["@types/node@10.17.60", "", {}, "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="], @@ -2733,15 +3299,15 @@ "node-fetch/whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + "node-llama-cpp/which/isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], + "node-llama-cpp/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "node-llama-cpp/yargs/y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], "node-llama-cpp/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - "ollama-ai-provider/@ai-sdk/provider-utils/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - - "send/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "readable-web-to-node-stream/readable-stream/string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], "stdout-update/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], @@ -2801,6 +3367,8 @@ "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.4", "", { "os": "win32", "cpu": "x64" }, "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg=="], + "type-is/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "websocket/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "whisper-node/shelljs/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], @@ -2811,27 +3379,57 @@ "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], - "@elizaos/agent/@elizaos/plugin-ollama/ai/@ai-sdk/provider": ["@ai-sdk/provider@1.1.3", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="], + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.66", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A=="], - "@elizaos/agent/@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@2.2.8", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA=="], + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], - "@elizaos/agent/@elizaos/plugin-ollama/ai/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], + + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.66", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A=="], + + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/@huggingface/transformers/onnxruntime-node": ["onnxruntime-node@1.21.0", "", { "dependencies": { "global-agent": "^3.0.0", "onnxruntime-common": "1.21.0", "tar": "^7.0.1" }, "os": [ "linux", "win32", "darwin", ] }, "sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/@huggingface/transformers/onnxruntime-web": ["onnxruntime-web@1.22.0-dev.20250409-89f8206ba4", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.22.0-dev.20250409-89f8206ba4", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "@elizaos/autonomous/@elizaos/plugin-ollama/ai/@ai-sdk/provider": ["@ai-sdk/provider@1.1.3", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="], "@elizaos/autonomous/@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@2.2.8", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA=="], + "@elizaos/autonomous/@elizaos/plugin-openai/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.66", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A=="], + + "@elizaos/autonomous/@elizaos/plugin-openai/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + + "@elizaos/autonomous/@elizaos/plugin-openai/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], + "@elizaos/autonomous/@elizaos/plugin-sql/@neondatabase/serverless/@types/node": ["@types/node@22.19.15", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg=="], - "@elizaos/plugin-ollama/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], + "@elizaos/plugin-knowledge/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], - "@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.8", "", {}, "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="], + "@elizaos/plugin-knowledge/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], "@puppeteer/browsers/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "@puppeteer/browsers/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "body-parser/type-is/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "binary-version/execa/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + + "binary-version/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], + + "clipboardy/execa/cross-spawn/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], + + "clipboardy/execa/cross-spawn/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "clipboardy/execa/cross-spawn/shebang-command": ["shebang-command@1.2.0", "", { "dependencies": { "shebang-regex": "^1.0.0" } }, "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg=="], + + "clipboardy/execa/npm-run-path/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], "cmake-js/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -2843,16 +3441,40 @@ "whisper-node/shelljs/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - "@elizaos/agent/@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], + + "@elizaos/autonomous/@elizaos/plugin-anthropic/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], + + "@elizaos/autonomous/@elizaos/plugin-elizacloud/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/@huggingface/transformers/onnxruntime-node/onnxruntime-common": ["onnxruntime-common@1.21.0", "", {}, "sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/@huggingface/transformers/onnxruntime-web/onnxruntime-common": ["onnxruntime-common@1.22.0-dev.20250409-89f8206ba4", "", {}, "sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/which/isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "@elizaos/autonomous/@elizaos/plugin-ollama/ai/@ai-sdk/provider-utils/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "@elizaos/autonomous/@elizaos/plugin-openai/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], + + "@elizaos/autonomous/@elizaos/plugin-openai/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], + "@elizaos/autonomous/@elizaos/plugin-sql/@neondatabase/serverless/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], "@puppeteer/browsers/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "@puppeteer/browsers/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "clipboardy/execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@1.0.0", "", {}, "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="], + "cmake-js/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "cmake-js/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -2863,6 +3485,14 @@ "whisper-node/shelljs/glob/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + "whisper-node/shelljs/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@elizaos/autonomous/@elizaos/plugin-local-embedding/node-llama-cpp/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], } } diff --git a/package.json b/package.json index 22f3f2a8..a3362488 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "doolittle", "version": "0.1.0", "private": true, + "license": "MIT", "type": "module", "bin": { "doolittle": "./packages/agent/src/index.ts" @@ -54,32 +55,32 @@ "@doolittle/acp": "workspace:*", "@doolittle/contracts": "workspace:*", "@doolittle/logger": "workspace:*", - "@elizaos/agent": "2.0.0-alpha.537", + "@elizaos/agent": "2.0.0-beta.2", "@elizaos/autonomous": "2.0.0-alpha.85", - "@elizaos/core": "2.0.0-alpha.537", - "@elizaos/plugin-anthropic": "2.0.0-alpha.537", + "@elizaos/core": "2.0.0-beta.1", + "@elizaos/plugin-anthropic": "2.0.0-beta.1", "@elizaos/plugin-claude-code": "workspace:*", "@elizaos/plugin-codex": "workspace:*", "@elizaos/plugin-devin": "workspace:*", "@elizaos/plugin-elizacloud": "workspace:*", - "@elizaos/plugin-ollama": "2.0.0-alpha.537", - "@elizaos/plugin-openai": "2.0.0-alpha.537", - "@elizaos/plugin-pdf": "2.0.0-alpha.537", + "@elizaos/plugin-ollama": "2.0.0-beta.1", + "@elizaos/plugin-openai": "2.0.0-beta.1", + "@elizaos/plugin-pdf": "2.0.0-beta.1", "@elizaos/plugin-sql": "workspace:*", - "@elizaos/plugin-telegram": "2.0.0-alpha.537", - "@elizaos/skills": "2.0.0-alpha.539", + "@elizaos/plugin-telegram": "2.0.0-beta.1", + "@elizaos/skills": "2.0.0-beta.1", "@fal-ai/client": "^1.9.4", - "cron-parser": "^5.2.0", "dotenv": "^17.2.3", - "elizaos": "2.0.0-alpha.535", + "elizaos": "2.0.0-beta.5", "zod": "^4.3.6" }, "overrides": { - "@elizaos/agent": "2.0.0-alpha.537", - "@elizaos/core": "2.0.0-alpha.537", + "@elizaos/agent": "2.0.0-beta.2", + "@elizaos/core": "2.0.0-beta.1", "@elizaos/autonomous": "2.0.0-alpha.85", - "@elizaos/skills": "2.0.0-alpha.539", - "elizaos": "2.0.0-alpha.535" + "@elizaos/skills": "2.0.0-beta.1", + "elizaos": "2.0.0-beta.5", + "ollama-ai-provider": "npm:ollama-ai-provider-v2@^3.5.1" }, "devDependencies": { "@biomejs/biome": "^2.3.11", @@ -92,5 +93,8 @@ }, "engines": { "bun": ">=1.3.0" + }, + "patchedDependencies": { + "@elizaos/plugin-sql@2.0.0-beta.1": "patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch" } } diff --git a/packages/agent/package.json b/packages/agent/package.json index f565f6af..0359ffe6 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -8,7 +8,7 @@ "@doolittle/acp": "workspace:*", "@doolittle/contracts": "workspace:*", "@doolittle/logger": "workspace:*", - "@elizaos/agent": "2.0.0-alpha.537" + "@elizaos/agent": "2.0.0-beta.2" }, "scripts": { "dev": "bun --watch src/index.ts", diff --git a/packages/agent/src/actions/cron-action.ts b/packages/agent/src/actions/cron-action.ts index 74008fe1..0bec1227 100644 --- a/packages/agent/src/actions/cron-action.ts +++ b/packages/agent/src/actions/cron-action.ts @@ -36,52 +36,59 @@ export function createCronAction(services: AppServices): Action { const trimmed = text?.trim() ?? ""; let response = ""; - if (trimmed === "/cron" || trimmed === "/cron list") { - const jobs = services.cron.list(); - response = jobs.length - ? jobs - .map( - (job) => - `- ${job.id} ${job.name} [${job.status}] schedule="${job.schedule}" next=${job.nextRunAt ?? "n/a"}`, - ) - .join("\n") - : "No cron jobs configured."; - } else if (trimmed.startsWith("/cron create ")) { - const payload = trimmed.replace("/cron create ", ""); - const [schedule, prompt] = payload - .split("::") - .map((part) => part.trim()); - if (!schedule || !prompt) { - response = "Usage: /cron create :: "; + try { + if (trimmed === "/cron" || trimmed === "/cron list") { + const jobs = services.cron.list(); + response = jobs.length + ? jobs + .map( + (job) => + `- ${job.id} ${job.name} [${job.status}] schedule="${job.schedule}" next=${job.nextRunAt ?? "n/a"}`, + ) + .join("\n") + : "No cron jobs configured."; + } else if (trimmed.startsWith("/cron create ")) { + const payload = trimmed.replace("/cron create ", ""); + const [schedule, prompt] = payload + .split("::") + .map((part) => part.trim()); + if (!schedule || !prompt) { + response = "Usage: /cron create :: "; + } else { + const created = services.cron.create({ + name: `job-${Date.now()}`, + schedule, + prompt, + }); + response = `Created cron job ${created.id} with next run ${created.nextRunAt ?? "n/a"}.`; + } + } else if (trimmed.startsWith("/cron pause ")) { + const job = services.cron.pause( + trimmed.replace("/cron pause ", "").trim(), + ); + response = `Paused ${job.id}.`; + } else if (trimmed.startsWith("/cron resume ")) { + const job = services.cron.resume( + trimmed.replace("/cron resume ", "").trim(), + ); + response = `Resumed ${job.id}; next run ${job.nextRunAt ?? "n/a"}.`; + } else if (trimmed.startsWith("/cron run ")) { + const job = services.cron.runNow( + trimmed.replace("/cron run ", "").trim(), + ); + response = `Marked ${job.id} to run immediately.`; + } else if (trimmed.startsWith("/cron remove ")) { + const id = trimmed.replace("/cron remove ", "").trim(); + services.cron.remove(id); + response = `Removed ${id}.`; } else { - const created = services.cron.create({ - name: `job-${Date.now()}`, - schedule, - prompt, - }); - response = `Created cron job ${created.id} with next run ${created.nextRunAt ?? "n/a"}.`; + response = + "Usage: /cron list | create | pause | resume | run | remove"; } - } else if (trimmed.startsWith("/cron pause ")) { - const job = services.cron.pause( - trimmed.replace("/cron pause ", "").trim(), - ); - response = `Paused ${job.id}.`; - } else if (trimmed.startsWith("/cron resume ")) { - const job = services.cron.resume( - trimmed.replace("/cron resume ", "").trim(), - ); - response = `Resumed ${job.id}; next run ${job.nextRunAt ?? "n/a"}.`; - } else if (trimmed.startsWith("/cron run ")) { - const job = services.cron.runNow( - trimmed.replace("/cron run ", "").trim(), - ); - response = `Marked ${job.id} to run immediately.`; - } else if (trimmed.startsWith("/cron remove ")) { - const id = trimmed.replace("/cron remove ", "").trim(); - services.cron.remove(id); - response = `Removed ${id}.`; - } else { - response = "Usage: /cron list | create | pause | resume | run | remove"; + } catch (error) { + const failure = error instanceof Error ? error.message : String(error); + await callback?.({ text: failure, source: "cron-action" }); + return { success: false, text: failure }; } await callback?.({ text: response, source: "cron-action" }); diff --git a/packages/agent/src/actions/research-action.test.ts b/packages/agent/src/actions/research-action.test.ts new file mode 100644 index 00000000..5062bbc8 --- /dev/null +++ b/packages/agent/src/actions/research-action.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, it } from "bun:test"; +import type { IAgentRuntime, Memory, ResearchResult } from "@elizaos/core"; +import { createResearchAction } from "./research-action"; + +function message(text: string): Memory { + return { content: { text } } as Memory; +} + +function makeRuntime(opts: { + hasModel: boolean; + research?: () => Promise; +}): IAgentRuntime { + return { + getModel: () => (opts.hasModel ? () => Promise.resolve({}) : undefined), + useModel: (_modelType: unknown, _params: unknown) => + ( + opts.research ?? + (async () => { + throw new Error("no research model"); + }) + )(), + } as unknown as IAgentRuntime; +} + +const noModelRuntime = makeRuntime({ hasModel: false }); + +describe("research action (ModelType.RESEARCH adoption)", () => { + it("validates only a /research command with a question", async () => { + const action = createResearchAction(); + expect( + await action.validate(noModelRuntime, message("/research RAG in 2026")), + ).toBe(true); + expect(await action.validate(noModelRuntime, message("/research"))).toBe( + false, + ); + expect( + await action.validate(noModelRuntime, message("tell me about RAG")), + ).toBe(false); + }); + + it("responds gracefully when no RESEARCH model is registered", async () => { + const action = createResearchAction(); + let delivered = ""; + const result = await action.handler( + noModelRuntime, + message("/research what is X"), + undefined, + undefined, + async (content) => { + delivered = content.text ?? ""; + return []; + }, + ); + expect(result).toMatchObject({ success: false }); + expect(delivered).toContain("OPENAI_API_KEY"); + }); + + it("runs the research model and renders a cited report", async () => { + const action = createResearchAction(); + const runtime = makeRuntime({ + hasModel: true, + research: async () => + ({ + id: "resp_1", + text: "RAG combines retrieval with generation.", + annotations: [ + { + url: "https://a.example/x", + title: "Paper A", + startIndex: 0, + endIndex: 3, + }, + { + url: "https://a.example/x", + title: "Paper A dup", + startIndex: 4, + endIndex: 7, + }, + { + url: "https://b.example/y", + title: "Paper B", + startIndex: 8, + endIndex: 11, + }, + ], + }) as unknown as ResearchResult, + }); + let delivered = ""; + const result = await action.handler( + runtime, + message("/research how does RAG work"), + undefined, + undefined, + async (content) => { + delivered = content.text ?? ""; + return []; + }, + ); + expect(result?.success).toBe(true); + expect(delivered).toContain("RAG combines retrieval with generation."); + expect(delivered).toContain("Sources:"); + expect(delivered).toContain("https://a.example/x"); + expect(delivered).toContain("https://b.example/y"); + // de-duped by url -> exactly two source lines + expect(delivered.match(/^- /gmu)?.length).toBe(2); + }); + + it("reports a clear failure when the model throws", async () => { + const action = createResearchAction(); + const runtime = makeRuntime({ + hasModel: true, + research: async () => { + throw new Error("rate limited"); + }, + }); + const result = await action.handler( + runtime, + message("/research boom"), + undefined, + undefined, + ); + expect(result?.success).toBe(false); + expect(result?.text).toContain("rate limited"); + }); +}); diff --git a/packages/agent/src/actions/research-action.ts b/packages/agent/src/actions/research-action.ts new file mode 100644 index 00000000..b759737c --- /dev/null +++ b/packages/agent/src/actions/research-action.ts @@ -0,0 +1,118 @@ +import { + type Action, + type ActionResult, + type HandlerCallback, + type HandlerOptions, + type IAgentRuntime, + type Memory, + ModelType, + type ResearchAnnotation, + type State, +} from "@elizaos/core"; + +const RESEARCH_PREFIX = "/research"; + +function messageText(message: Memory): string { + return typeof message.content === "string" + ? message.content + : (message.content?.text ?? ""); +} + +function parseResearchQuestion(text: string): string | undefined { + const trimmed = text.trim(); + if (!trimmed.startsWith(RESEARCH_PREFIX)) { + return undefined; + } + const question = trimmed.slice(RESEARCH_PREFIX.length).trim(); + return question.length > 0 ? question : undefined; +} + +function renderSources(annotations: ResearchAnnotation[]): string { + const seen = new Set(); + const lines: string[] = []; + for (const annotation of annotations) { + if (!annotation.url || seen.has(annotation.url)) { + continue; + } + seen.add(annotation.url); + lines.push(`- ${annotation.title || annotation.url} (${annotation.url})`); + } + return lines.length > 0 ? `\n\nSources:\n${lines.join("\n")}` : ""; +} + +/** + * Adopts the ElizaOS `ModelType.RESEARCH` deep-research model (o3-deep-research) + * as a first-class action. Triggered by `/research `, it runs the + * model with web search and returns the cited report. + * + * Availability-gated: if no RESEARCH handler is registered (i.e. the OpenAI + * deep-research provider is not configured via `OPENAI_API_KEY`), the action + * responds with a clear message instead of failing β€” so boot and the test + * suite stay green without a live key, and the capability lights up the moment + * a key is present. + */ +export function createResearchAction(): Action { + return { + name: "DOOLITTLE_RESEARCH", + similes: ["DEEP_RESEARCH", "RESEARCH_REPORT", "WEB_RESEARCH"], + description: + "Runs the ElizaOS deep-research model (ModelType.RESEARCH, e.g. o3-deep-research) over a question with web search and returns a cited report. Triggered by `/research `. Requires a registered RESEARCH model (OPENAI_API_KEY); deep research can take several minutes.", + validate: async (_runtime: IAgentRuntime, message: Memory) => { + return parseResearchQuestion(messageText(message)) !== undefined; + }, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + _state: State | undefined, + _options: HandlerOptions | undefined, + callback?: HandlerCallback, + ): Promise => { + const question = parseResearchQuestion(messageText(message)); + if (!question) { + const usage = "Usage: /research "; + await callback?.({ text: usage, source: "research-action" }); + return { success: false, text: usage }; + } + + if (!runtime.getModel(ModelType.RESEARCH)) { + const unavailable = + "Deep research is unavailable: no RESEARCH model is registered. Set OPENAI_API_KEY and enable the OpenAI provider to use `/research`."; + await callback?.({ text: unavailable, source: "research-action" }); + return { success: false, text: unavailable }; + } + + try { + const result = await runtime.useModel(ModelType.RESEARCH, { + input: question, + tools: [{ type: "web_search_preview" }], + }); + const report = `${result.text}${renderSources(result.annotations ?? [])}`; + await callback?.({ text: report, source: "research-action" }); + return { success: true, text: report }; + } catch (error) { + const failure = `Deep research failed: ${ + error instanceof Error ? error.message : String(error) + }`; + await callback?.({ text: failure, source: "research-action" }); + return { success: false, text: failure }; + } + }, + examples: [ + [ + { + name: "{{userName}}", + content: { + text: "/research What are the leading approaches to retrieval-augmented generation in 2026?", + }, + }, + { + name: "{{agentName}}", + content: { + text: "Here is a cited research report…", + actions: ["DOOLITTLE_RESEARCH"], + }, + }, + ], + ], + }; +} diff --git a/packages/agent/src/actions/terminal-action.test.ts b/packages/agent/src/actions/terminal-action.test.ts index 6bf57475..9f72b536 100644 --- a/packages/agent/src/actions/terminal-action.test.ts +++ b/packages/agent/src/actions/terminal-action.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "bun:test"; import { + isTerminalIntent, resolveCommandFromArguments, resolveCommandFromObject, resolveCommandFromParams, @@ -65,3 +66,27 @@ describe("resolveCommandFromText", () => { expect(resolveCommandFromText("```bash\nls -la\n```")).toBe("ls -la"); }); }); + +describe("isTerminalIntent", () => { + it("matches explicit terminal prefixes", () => { + expect(isTerminalIntent("!git status")).toBe(true); + expect(isTerminalIntent("/terminal run npm -v")).toBe(true); + expect(isTerminalIntent("run `pwd` in terminal")).toBe(true); + }); + + it("matches scaffolding requests that name package managers", () => { + expect( + isTerminalIntent( + 'Go to ~/symbiex/dev and create a folder named "the-game". In the folder, build a react app (use bunx or npx to scaffold from an official boilerplate so we can reduce context, find this online)', + ), + ).toBe(true); + expect(isTerminalIntent("scaffold a new vite project")).toBe(true); + expect(isTerminalIntent("git clone https://example.com/foo")).toBe(true); + expect(isTerminalIntent("cargo build the workspace please")).toBe(true); + }); + + it("ignores prose without shell intent", () => { + expect(isTerminalIntent("how are you?")).toBe(false); + expect(isTerminalIntent("explain how react routing works")).toBe(false); + }); +}); diff --git a/packages/agent/src/actions/terminal-action/index.ts b/packages/agent/src/actions/terminal-action/index.ts index 9a7abc8e..eff77bc9 100644 --- a/packages/agent/src/actions/terminal-action/index.ts +++ b/packages/agent/src/actions/terminal-action/index.ts @@ -5,4 +5,4 @@ export { resolveCommandFromParams, resolveCommandFromText, } from "./parsing"; -export { createTerminalAction } from "./wiring"; +export { createTerminalAction, isTerminalIntent } from "./wiring"; diff --git a/packages/agent/src/actions/terminal-action/wiring.ts b/packages/agent/src/actions/terminal-action/wiring.ts index 112a051e..42418d41 100644 --- a/packages/agent/src/actions/terminal-action/wiring.ts +++ b/packages/agent/src/actions/terminal-action/wiring.ts @@ -17,6 +17,50 @@ const ACTION_SOURCE = "terminal-action"; const MISSING_COMMAND_RESPONSE = "I couldn't determine the terminal command to run. Try `!git status` or say `run `rg TODO` in the terminal`."; +const SHELL_TOOL_PATTERN = + /\b(?:bunx|bun(?:\s+(?:add|install|i|run|x|create|init))?|npx|npm(?:\s+(?:install|i|run|create|init|ci|test|exec))?|pnpm(?:\s+(?:dlx|add|install|i|run|create|exec))?|yarn(?:\s+(?:add|install|create|dlx|run))?|deno(?:\s+(?:run|task|install))?|tsx|ts-node|node(?:\s+\S+)?|cargo(?:\s+(?:new|init|run|build|test|add|install))?|rustup|go(?:\s+(?:build|run|test|get|mod|install))?|pip(?:3)?(?:\s+install)?|poetry|uv(?:\s+(?:pip|venv|run))?|make|cmake|ninja|gradle|gradlew|mvn|docker|docker-compose|podman|kubectl|helm|terraform|ansible|git(?:\s+(?:clone|init|add|commit|push|pull|fetch|status|log|diff|checkout|switch|branch|stash|merge|rebase|reset|tag))?|gh\s+\S+|create-(?:react-app|next-app|vite|tauri-app|t3-app|expo-app|nuxt-app|svelte-app|astro)|vite|next|nuxt|astro|expo|sveltekit|hardhat|forge|anchor|solana(?:\s+\S+)?|spl-token|metaplex|firebase|supabase|vercel|netlify|wrangler|playwright|cypress|vitest|jest|mocha|rg|fd|fzf|jq|curl|wget|sh|bash|zsh|fish|pwsh)\b/iu; + +const TERMINAL_VERB_PATTERN = + /\b(?:run|execute|exec|start|launch|invoke|spawn|fire(?:\s+off)?)\b/iu; + +const BUILD_OR_SCAFFOLD_VERB_PATTERN = + /\b(?:scaffold|bootstrap|build|install|compile|setup|set\s+up|spin\s+up|stand\s+up|initialize|init|generate|deploy|publish|push|pull|test|lint|format)\b/iu; + +const SHELL_PATH_PATTERN = + /(?:\.\/[\w./-]+|~\/[\w./-]+|\$\(|\|\||&&|\bsudo\b)/u; + +export function isTerminalIntent(text: string): boolean { + const trimmed = text.trim(); + if (!trimmed) { + return false; + } + if (trimmed.startsWith("!") || trimmed.startsWith("/terminal")) { + return true; + } + if ( + TERMINAL_VERB_PATTERN.test(trimmed) && + /\b(?:terminal|shell)\b/iu.test(trimmed) + ) { + return true; + } + if (/\b(?:run|execute|exec)\b\s+`[^`\n]+`/u.test(trimmed)) { + return true; + } + if (SHELL_TOOL_PATTERN.test(trimmed)) { + return true; + } + if ( + BUILD_OR_SCAFFOLD_VERB_PATTERN.test(trimmed) && + SHELL_TOOL_PATTERN.test(trimmed) + ) { + return true; + } + if (SHELL_PATH_PATTERN.test(trimmed)) { + return true; + } + return false; +} + export function createTerminalAction(services: AppServices): Action { return { name: ACTION_NAME, @@ -37,13 +81,7 @@ export function createTerminalAction(services: AppServices): Action { typeof message.content === "string" ? message.content : message.content?.text; - return Boolean( - text && - (text.trim().startsWith("!") || - text.trim().startsWith("/terminal") || - /\b(?:run|execute|exec)\b.+\b(?:terminal|shell)\b/iu.test(text) || - /\b(?:run|execute|exec)\b\s+`[^`\n]+`/u.test(text)), - ); + return Boolean(text && isTerminalIntent(text)); }, handler: async ( runtime: IAgentRuntime, diff --git a/packages/agent/src/cli/splash.ts b/packages/agent/src/cli/splash.ts deleted file mode 100644 index ad14bcfc..00000000 --- a/packages/agent/src/cli/splash.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Boot splash screen for Doolittle. - * - * Displays Eliza in a lab coat alongside the Doolittle wordmark in - * ANSI-colored ASCII art. Skipped in non-TTY environments or when - * DOOLITTLE_SKIP_SPLASH=1. - */ - -// Color palette (ANSI 24-bit / truecolor) -const O = "\x1b[38;2;255;106;0m\x1b[1m"; // orange (brand) -const H = "\x1b[38;2;30;30;45m\x1b[1m"; // dark hair -const S = "\x1b[38;2;255;220;185m"; // skin -const E = "\x1b[38;2;230;140;50m"; // amber eyes -const M = "\x1b[38;2;200;80;80m"; // mouth / blush -const L = "\x1b[38;2;239;244;255m\x1b[1m"; // lab coat -const C = "\x1b[38;2;85;214;255m"; // cyan accent -const D = "\x1b[2m"; // dim -const R = "\x1b[0m"; // reset - -/* eslint-disable no-irregular-whitespace */ -const SPLASH_LINES = [ - ``, - `${H} @@@@@@@@@@@${R}`, - `${H} @@@@@@@@@@@@@@@${R}`, - `${H} @@@@@@@@@@@@@@@@@@@${R}`, - `${H} @@@@@@@${S}@@@@@@@@@${H}@@@@@@${R}`, - `${H} @@@@@${S}@@@@${E}@@${S}@@${E}@@${S}@@@@${H}@@@@@${R} ${O}DOOLITTLE${R}`, - `${H} @@@@@${S}@@@@@@@@${M}@@${S}@@@@@@${H}@@@@@${R} ${D}${C}ELIZA // CYPHERPUNK OPERATOR SHELL${R}`, - `${H} @@@@@${S}@@@@@@${M}____${S}@@@@@@${H}@@@@@${R}`, - `${H} @@@@@${S}@@@@@${H}@@@@@@${S}@@@@@${H}@@@@${R} ${D}Booting workspace...${R}`, - `${H} @@@@@${S}@@@@${H}@@@@@@${S}@@@@${H}@@@@${R}`, - `${L} _____${H}@@${R}${L}___${H}@@${R}${L}_____ ${R}`, - `${L} / ____\\ /____ \\${R}`, - `${L} / / __ \\ / __ \\ \\${R}`, - `${L} / /_/ /\\ V / /_/ /${R}`, - `${L} /_____/_/\\___/\\____/ ${R}`, - `${L} /_/ \\_\\${R}`, - `${L} /_/ \\_\\${R}`, - ``, -]; - -const SPLASH_ART = SPLASH_LINES.join("\n"); - -/** - * Show the boot splash screen if we're in an interactive TTY and - * the user hasn't opted out via DOOLITTLE_SKIP_SPLASH=1. - * - * @param durationMs How long to show the splash (default 1500ms). - */ -export async function showBootSplash(durationMs = 1500): Promise { - if (process.env.DOOLITTLE_SKIP_SPLASH === "1") { - return; - } - if (!process.stdin.isTTY || !process.stdout.isTTY) { - return; - } - - // Hide cursor - process.stdout.write("\x1b[?25l"); - // Clear screen and move to top-left - process.stdout.write("\x1b[2J\x1b[H"); - - process.stdout.write(SPLASH_ART); - process.stdout.write("\n"); - - await new Promise((resolve) => setTimeout(resolve, durationMs)); - - // Clear screen and restore cursor - process.stdout.write("\x1b[2J\x1b[H"); - process.stdout.write("\x1b[?25h"); -} diff --git a/packages/agent/src/config/env/build.ts b/packages/agent/src/config/env/build.ts index bf690bb6..fb15ff43 100644 --- a/packages/agent/src/config/env/build.ts +++ b/packages/agent/src/config/env/build.ts @@ -35,6 +35,7 @@ export function buildEnvConfig( mode: values.DOOLITTLE_MODE, host: values.DOOLITTLE_HOST, port: values.DOOLITTLE_PORT, + apiToken: values.DOOLITTLE_API_TOKEN, dataDir: directories.dataDir, skillsDir: directories.skillsDir, timezone: values.DOOLITTLE_TIMEZONE, diff --git a/packages/agent/src/config/env/schema.ts b/packages/agent/src/config/env/schema.ts index c0c0a781..6dbdcfbc 100644 --- a/packages/agent/src/config/env/schema.ts +++ b/packages/agent/src/config/env/schema.ts @@ -1,11 +1,12 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import { z } from "zod"; export const envSchema = z.object({ DOOLITTLE_NAME: z.string().default("Doolittle"), DOOLITTLE_MODE: z.enum(["api", "cli", "both"]).default("both"), - DOOLITTLE_HOST: z.string().default("0.0.0.0"), + DOOLITTLE_HOST: z.string().default("127.0.0.1"), DOOLITTLE_PORT: z.coerce.number().int().positive().default(3000), + DOOLITTLE_API_TOKEN: z.string().optional(), DOOLITTLE_DATA_DIR: z.string().default(".doolittle"), DOOLITTLE_SKILLS_DIR: z.string().default("./packages/skills"), DOOLITTLE_TIMEZONE: z.string().default("America/Chicago"), diff --git a/packages/agent/src/evaluators/memory-nudge-evaluator.test.ts b/packages/agent/src/evaluators/memory-nudge-evaluator.test.ts new file mode 100644 index 00000000..2d74796b --- /dev/null +++ b/packages/agent/src/evaluators/memory-nudge-evaluator.test.ts @@ -0,0 +1,74 @@ +import { describe, expect, it } from "bun:test"; +import type { EvaluatorRunContext, Memory } from "@elizaos/core"; +import type { AppServices } from "@/services"; +import { createMemoryNudgeEvaluator } from "./memory-nudge-evaluator"; + +function makeServices() { + const writes: Array<{ target: string; content: string }> = []; + const services = { + memory: { + add: (target: string, content: string) => { + writes.push({ target, content }); + return content; + }, + }, + } as unknown as AppServices; + return { services, writes }; +} + +function runContext(text: string): EvaluatorRunContext { + return { + message: { content: { text } } as Memory, + } as EvaluatorRunContext; +} + +describe("memoryNudge evaluator (beta contract)", () => { + it("gates on remember/save cues via shouldRun", async () => { + const { services } = makeServices(); + const evaluator = createMemoryNudgeEvaluator(services); + expect( + await evaluator.shouldRun(runContext("remember that we use Bun")), + ).toBe(true); + expect(await evaluator.shouldRun(runContext("what is the weather"))).toBe( + false, + ); + }); + + it("requires a schema and prompt (beta-required fields)", () => { + const { services } = makeServices(); + const evaluator = createMemoryNudgeEvaluator(services); + expect(evaluator.schema).toBeDefined(); + expect(typeof evaluator.prompt).toBe("function"); + }); + + it("parses model output into a normalized record", () => { + const { services } = makeServices(); + const evaluator = createMemoryNudgeEvaluator(services); + expect( + evaluator.parse?.({ + shouldStore: true, + target: "user", + fact: " likes bun ", + }), + ).toEqual({ shouldStore: true, target: "user", fact: "likes bun" }); + expect(evaluator.parse?.({ target: "memory", fact: "" })).toBeNull(); + expect(evaluator.parse?.(null)).toBeNull(); + }); + + it("persists the parsed fact through a processor", async () => { + const { services, writes } = makeServices(); + const evaluator = createMemoryNudgeEvaluator(services); + const processor = evaluator.processors?.[0]; + if (!processor) { + throw new Error("expected a persistence processor"); + } + type ProcessorContext = Parameters[0]; + await processor.process({ + output: { shouldStore: true, target: "memory", fact: "uses bun" }, + } as unknown as ProcessorContext); + await processor.process({ + output: { shouldStore: false, target: "memory", fact: "ignored" }, + } as unknown as ProcessorContext); + expect(writes).toEqual([{ target: "memory", content: "uses bun" }]); + }); +}); diff --git a/packages/agent/src/evaluators/memory-nudge-evaluator.ts b/packages/agent/src/evaluators/memory-nudge-evaluator.ts index 2378fa22..6b6a7d8a 100644 --- a/packages/agent/src/evaluators/memory-nudge-evaluator.ts +++ b/packages/agent/src/evaluators/memory-nudge-evaluator.ts @@ -1,59 +1,116 @@ -import type { Evaluator, IAgentRuntime, Memory } from "@elizaos/core"; +import type { + Evaluator, + EvaluatorProcessorContext, + EvaluatorPromptContext, + EvaluatorRunContext, + JSONSchema, + Memory, +} from "@elizaos/core"; import type { AppServices } from "@/services"; -export function createMemoryNudgeEvaluator(services: AppServices): Evaluator { +type MemoryNudgeOutput = { + shouldStore: boolean; + target: "user" | "memory"; + fact: string; +}; + +const MEMORY_NUDGE_SCHEMA: JSONSchema = { + type: "object", + additionalProperties: false, + required: ["shouldStore", "target", "fact"], + properties: { + shouldStore: { + type: "boolean", + description: "Whether the message contains a durable fact worth saving.", + }, + target: { + type: "string", + enum: ["user", "memory"], + description: + 'Use "user" for personal preferences about the user, otherwise "memory".', + }, + fact: { + type: "string", + description: "The normalized fact to persist, without the leading cue.", + }, + }, +}; + +const REMEMBER_CUE = /remember|save that|keep in mind/iu; + +function extractText(message: Memory): string { + const content = message.content; + if (typeof content === "string") { + return content; + } + return content?.text ?? ""; +} + +/** + * Persists explicit "remember this" cues into the Doolittle memory stores. + * + * Rewritten for the ElizaOS 2.0 beta evaluator contract: the regex still gates + * whether the evaluator runs, but fact extraction is delegated to the model + * (via `schema`/`prompt`/`parse`) and the write happens in a processor. + */ +export function createMemoryNudgeEvaluator( + services: AppServices, +): Evaluator { return { name: "memoryNudge", description: "Stores explicit remember/save cues in the persistent memory stores.", - alwaysRun: true, similes: ["remember this", "save preference", "persist fact"], - examples: [ - { - prompt: "Remember that this repository uses Bun only.", - messages: [ - { - name: "user", - content: { - text: "Remember that this repository uses Bun only.", - }, - }, - ], - outcome: - "The evaluator saves the preference into user or project memory.", - }, - ], - validate: async (_runtime: IAgentRuntime, message: Memory) => { - const text = - typeof message.content === "string" - ? message.content - : message.content?.text; - return Boolean(text && /remember|save that|keep in mind/iu.test(text)); + schema: MEMORY_NUDGE_SCHEMA, + shouldRun: async ({ message }: EvaluatorRunContext) => { + const text = extractText(message); + return Boolean(text && REMEMBER_CUE.test(text)); + }, + prompt: ({ message }: EvaluatorPromptContext) => { + const text = extractText(message); + return [ + "The user asked the agent to remember something.", + `Message: "${text}"`, + "", + "Decide whether there is a durable fact worth persisting.", + 'Set "target" to "user" for personal preferences (for example "I prefer",', + '"my preference", "remember that I"), otherwise "memory".', + 'Strip leading cues such as "please" or "remember that" from the stored fact.', + ].join("\n"); }, - handler: async (_runtime: IAgentRuntime, message: Memory) => { - const text = - typeof message.content === "string" - ? message.content - : message.content?.text; - if (!text) { - return undefined; + parse: (output: unknown): MemoryNudgeOutput | null => { + if (!output || typeof output !== "object") { + return null; } - - const target = /i prefer|my preference|remember that i/iu.test(text) - ? "user" - : "memory"; - const normalized = text - .replace(/^please\s+/iu, "") - .replace(/^remember that\s+/iu, "") - .trim(); - - try { - services.memory.add(target, normalized); - } catch { - // Ignore duplicate or over-limit writes inside the evaluator path. + const candidate = output as Record; + const fact = + typeof candidate.fact === "string" ? candidate.fact.trim() : ""; + if (!fact) { + return null; } - - return undefined; + return { + shouldStore: candidate.shouldStore !== false, + target: candidate.target === "user" ? "user" : "memory", + fact, + }; }, + processors: [ + { + name: "persist-memory-nudge", + process: async ({ + output, + }: EvaluatorProcessorContext) => { + if (!output.shouldStore || !output.fact) { + return undefined; + } + try { + services.memory.add(output.target, output.fact); + } catch { + // Ignore duplicate or over-limit writes inside the evaluator path. + } + return undefined; + }, + }, + ], }; } diff --git a/packages/agent/src/gateway/supervision/watchdog-cycle.ts b/packages/agent/src/gateway/supervision/watchdog-cycle.ts index d948a9eb..2dbd31e9 100644 --- a/packages/agent/src/gateway/supervision/watchdog-cycle.ts +++ b/packages/agent/src/gateway/supervision/watchdog-cycle.ts @@ -15,92 +15,99 @@ export async function runGatewayWatchdogPlatform(params: { watchdogAt: string; }): Promise { const { deps, platform, adapter, reason, watchdogAt } = params; - const health = await adapter.health(); - const restartState = deps.ensureRestartState(platform); - const backoffActive = - restartState.nextEligibleAt !== undefined && - new Date(restartState.nextEligibleAt).getTime() > Date.now(); + try { + const health = await adapter.health(); + const restartState = deps.ensureRestartState(platform); + const backoffActive = + restartState.nextEligibleAt !== undefined && + new Date(restartState.nextEligibleAt).getTime() > Date.now(); - if (health.ready) { - const records = [ - applySupervisionOutcome( - deps, - platform, - "healthy", - `${platform} healthy during ${reason}.`, - ), - ]; + if (health.ready) { + const records = [ + applySupervisionOutcome( + deps, + platform, + "healthy", + `${platform} healthy during ${reason}.`, + ), + ]; - if (platform === "homeassistant") { - const watchResult = await adapter.watch?.(reason); - if (watchResult) { + if (platform === "homeassistant") { + const watchResult = await adapter.watch?.(reason); + if (watchResult) { + records.push( + deps.recordSupervision( + platform, + "watch", + `Home Assistant watch cycle observed ${watchResult.count} states during ${reason}.`, + ), + ); + await deps.observeAdapter(platform, { + at: watchResult.watchedAt, + kind: "heartbeat", + detail: watchResult.summary, + }); + } records.push( deps.recordSupervision( platform, "watch", - `Home Assistant watch cycle observed ${watchResult.count} states during ${reason}.`, + `Home Assistant watcher cycle acknowledged during ${reason}.`, ), ); - await deps.observeAdapter(platform, { - at: watchResult.watchedAt, - kind: "heartbeat", - detail: watchResult.summary, - }); } - records.push( - deps.recordSupervision( + + return records; + } + + const restartable = health.status === "running" || health.status === "idle"; + if (!restartable) { + return [ + applySupervisionOutcome( + deps, platform, - "watch", - `Home Assistant watcher cycle acknowledged during ${reason}.`, + "skip", + `${platform} supervision skipped during ${reason}; adapter status ${health.status}.`, ), - ); + ]; } - return records; - } - - const restartable = health.status === "running" || health.status === "idle"; - if (!restartable) { - return [ - applySupervisionOutcome( - deps, - platform, - "skip", - `${platform} supervision skipped during ${reason}; adapter status ${health.status}.`, - ), - ]; - } - - if (backoffActive) { - return [ - applySupervisionOutcome( - deps, - platform, - "backoff", - `${platform} restart delayed until ${restartState.nextEligibleAt} during ${reason}.`, - restartState.backoffMs, - ), - ]; - } + if (backoffActive) { + return [ + applySupervisionOutcome( + deps, + platform, + "backoff", + `${platform} restart delayed until ${restartState.nextEligibleAt} during ${reason}.`, + restartState.backoffMs, + ), + ]; + } - try { - await adapter.stop(); - await adapter.start(); - restartState.failures = 0; - restartState.nextEligibleAt = undefined; - restartState.backoffMs = GATEWAY_DAEMON_POLICY.restartBaseDelayMs; - restartState.lastRestartAt = watchdogAt; - restartState.lastAction = "restart"; - return [ - applySupervisionOutcome( - deps, - platform, - "restart", - `${platform} adapter restart attempted during ${reason}.`, - ), - ]; + try { + await adapter.stop(); + await adapter.start(); + restartState.failures = 0; + restartState.nextEligibleAt = undefined; + restartState.backoffMs = GATEWAY_DAEMON_POLICY.restartBaseDelayMs; + restartState.lastRestartAt = watchdogAt; + restartState.lastAction = "restart"; + return [ + applySupervisionOutcome( + deps, + platform, + "restart", + `${platform} adapter restart attempted during ${reason}.`, + ), + ]; + } catch (error) { + const detail = `${platform} recovery failed during ${reason}: ${error instanceof Error ? error.message : String(error)}`; + return [applySupervisionOutcome(deps, platform, "recover", detail)]; + } } catch (error) { - const detail = `${platform} recovery failed during ${reason}: ${error instanceof Error ? error.message : String(error)}`; + // Contain any failure (e.g. adapter.health()/watch() throwing) to this + // platform so the watchdog loop continues supervising the others. + const detail = `${platform} watchdog cycle failed during ${reason}: ${error instanceof Error ? error.message : String(error)}`; return [applySupervisionOutcome(deps, platform, "recover", detail)]; } } diff --git a/packages/agent/src/plugin-api.ts b/packages/agent/src/plugin-api.ts index e079bc20..ab4dfceb 100644 --- a/packages/agent/src/plugin-api.ts +++ b/packages/agent/src/plugin-api.ts @@ -2,6 +2,7 @@ export { createCronAction } from "@/actions/cron-action"; export { createFileActions } from "@/actions/file-action"; export { createMemoryAction } from "@/actions/memory-action"; export { createRepositoryAction } from "@/actions/repository-action"; +export { createResearchAction } from "@/actions/research-action"; export { createSessionSearchAction } from "@/actions/session-search-action"; export { createSkillsAction } from "@/actions/skills-action"; export { createTerminalAction } from "@/actions/terminal-action"; @@ -9,6 +10,7 @@ export { createWorkspaceAction } from "@/actions/workspace-action"; export { createMemoryNudgeEvaluator } from "@/evaluators/memory-nudge-evaluator"; export { GatewayRunner } from "@/gateway/runner"; export { createAgentContextProvider } from "@/providers/agent-context"; +export { createSelfAwarenessProvider } from "@/providers/self-awareness"; export type { AppContext } from "@/runtime/bootstrap"; export type { AgentExecutionContext } from "@/runtime/chat"; export { handleAgentTurn } from "@/runtime/chat"; diff --git a/packages/agent/src/providers/self-awareness/index.ts b/packages/agent/src/providers/self-awareness/index.ts new file mode 100644 index 00000000..51632d79 --- /dev/null +++ b/packages/agent/src/providers/self-awareness/index.ts @@ -0,0 +1 @@ +export { createSelfAwarenessProvider } from "./provider"; diff --git a/packages/agent/src/providers/self-awareness/provider.test.ts b/packages/agent/src/providers/self-awareness/provider.test.ts new file mode 100644 index 00000000..f3b11bd7 --- /dev/null +++ b/packages/agent/src/providers/self-awareness/provider.test.ts @@ -0,0 +1,50 @@ +import { describe, expect, it } from "bun:test"; +import type { IAgentRuntime, Memory, State } from "@elizaos/core"; +import type { AppServices } from "@/services"; +import { createSelfAwarenessProvider } from "./provider"; + +function makeServices(composeSummary: () => Promise): AppServices { + return { + awareness: { composeSummary }, + } as unknown as AppServices; +} + +const runtime = {} as IAgentRuntime; +const message = { content: { text: "hi" } } as Memory; +const state = {} as State; + +describe("self-awareness provider", () => { + it("injects the composed (trimmed) summary as text and data", async () => { + const provider = createSelfAwarenessProvider( + makeServices(async () => " [STATUS] 3 tasks pending "), + ); + const result = await provider.get(runtime, message, state); + expect(result.text).toBe("[STATUS] 3 tasks pending"); + expect(result.data?.selfAwareness).toBe("[STATUS] 3 tasks pending"); + }); + + it("injects nothing when the summary is empty/whitespace", async () => { + const provider = createSelfAwarenessProvider( + makeServices(async () => " "), + ); + const result = await provider.get(runtime, message, state); + expect(result.text).toBe(""); + expect(result.data).toEqual({}); + }); + + it("is fault-tolerant when composeSummary throws", async () => { + const provider = createSelfAwarenessProvider( + makeServices(async () => { + throw new Error("contributor blew up"); + }), + ); + const result = await provider.get(runtime, message, state); + expect(result.text).toBe(""); + }); + + it("renders late (positive position) after the main context", () => { + const provider = createSelfAwarenessProvider(makeServices(async () => "x")); + expect(provider.position ?? 0).toBeGreaterThan(0); + expect(provider.name).toBe("DOOLITTLE_SELF_AWARENESS_PROVIDER"); + }); +}); diff --git a/packages/agent/src/providers/self-awareness/provider.ts b/packages/agent/src/providers/self-awareness/provider.ts new file mode 100644 index 00000000..52b6a607 --- /dev/null +++ b/packages/agent/src/providers/self-awareness/provider.ts @@ -0,0 +1,53 @@ +import type { + IAgentRuntime, + Memory, + Provider, + ProviderResult, + State, +} from "@elizaos/core"; +import type { AppServices } from "@/services"; + +/** + * Surfaces the agent's composed self-awareness summary into the runtime + * provider context so the model can reason about its own operational state. + * + * The ElizaOS `AwarenessRegistry` (assembled by {@link AwarenessService} with + * the runtime / run / startup / settings / capabilities contributors) produces + * a Layer-1 summary via `composeSummary`. The registry is built at startup, but + * nothing injected its output into a turn β€” this provider closes that gap. + * + * Additive and fault-tolerant: `composeSummary` already returns `""` on + * contributor failure, and any throw is swallowed, so the turn is never broken + * and nothing is injected when there is no summary to show. + */ +export function createSelfAwarenessProvider(services: AppServices): Provider { + return { + name: "DOOLITTLE_SELF_AWARENESS_PROVIDER", + description: + "Injects the agent's composed self-awareness summary (runtime, run, startup, settings, capabilities) into the runtime context.", + // Render late, after the main Doolittle context block. + position: 100, + get: async ( + runtime: IAgentRuntime, + _message: Memory, + _state: State, + ): Promise => { + let summary = ""; + try { + summary = (await services.awareness.composeSummary(runtime)).trim(); + } catch { + summary = ""; + } + + if (!summary) { + return { text: "", values: {}, data: {} }; + } + + return { + text: summary, + values: {}, + data: { selfAwareness: summary }, + }; + }, + }; +} diff --git a/packages/agent/src/runtime/action-result-metadata.ts b/packages/agent/src/runtime/action-result-metadata.ts index 977a852d..aaff940d 100644 --- a/packages/agent/src/runtime/action-result-metadata.ts +++ b/packages/agent/src/runtime/action-result-metadata.ts @@ -2,8 +2,8 @@ import type { CodingIteration, CommandResult, FileOperation, -} from "@elizaos/agent/services/coding-agent-context"; -import { validateCodingIteration } from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; +import { validateCodingIteration } from "@elizaos/autonomous/services/coding-agent-context"; import type { ActionResult, ProviderDataRecord } from "@elizaos/core"; import type { LocalMutationInput } from "@/services/run-controller-service"; diff --git a/packages/agent/src/runtime/bootstrap/runtime/deferred-hydration.ts b/packages/agent/src/runtime/bootstrap/runtime/deferred-hydration.ts index 8d008cc2..250072fb 100644 --- a/packages/agent/src/runtime/bootstrap/runtime/deferred-hydration.ts +++ b/packages/agent/src/runtime/bootstrap/runtime/deferred-hydration.ts @@ -32,11 +32,28 @@ export function createDeferredHydrator(params: { "registering deferred runtime plugins", ); const deferredPlugins = await loadDeferredPlugins(); + const failures: string[] = []; for (const plugin of deferredPlugins) { - await registerPlugin(plugin); + // Isolate each optional plugin: one failure must not abort the whole + // batch (and, because the hydration promise is memoized, permanently + // disable deferred startup). Skip the failing plugin and continue. + try { + await registerPlugin(plugin); + } catch (error) { + const detail = `${plugin.name ?? "unknown"}: ${formatError(error)}`; + failures.push(detail); + process.stderr.write( + `[doolittle] deferred plugin failed, skipping β€” ${detail}\n`, + ); + } } deferredPluginsRegistered = true; - services.startupState.markReady("runtime", "runtime ready"); + services.startupState.markReady( + "runtime", + failures.length > 0 + ? `runtime ready (${failures.length} deferred plugin(s) skipped)` + : "runtime ready", + ); }; return async (reason?: string): Promise => { diff --git a/packages/agent/src/runtime/chat-turn-post-provider.test.ts b/packages/agent/src/runtime/chat-turn-post-provider.test.ts index 2f13318b..5befffc1 100644 --- a/packages/agent/src/runtime/chat-turn-post-provider.test.ts +++ b/packages/agent/src/runtime/chat-turn-post-provider.test.ts @@ -504,4 +504,72 @@ describe("chat turn post-provider seam", () => { }, ]); }); + + it("accepts shell-scaffolded turns when a successful RUN_IN_TERMINAL command landed", async () => { + const harness = createContext({ observedActionCount: 0 }); + const scaffoldMessage = + 'Go to ~/symbiex/dev and create a folder named "the-game". In the folder, build a react app (use bunx or npx to scaffold from an official boilerplate).'; + + const result = await runPostProviderTurn({ + input: { + userId: "alice", + message: scaffoldMessage, + source: "cli", + }, + effectiveInput: { + userId: "alice", + message: scaffoldMessage, + source: "cli", + }, + context: harness.context, + turn: createTurn(), + response: "Scaffolded the-game.", + actionResults: [ + { + success: true, + text: "bunx create-vite the-game --template react", + data: { + actionName: "RUN_IN_TERMINAL", + commandResult: { + command: "bunx create-vite the-game --template react", + exitCode: 0, + stdout: "Scaffolding project in ~/dev/the-game...", + stderr: "", + executedIn: "/Users/symbiex/dev", + success: true, + }, + }, + }, + ], + settingsDuring: { + model: { + provider: "devin", + model: "swe-1-6-fast", + }, + } as Parameters[0]["settingsDuring"], + scheduleProfileObservation: () => undefined, + loadDirectLocalIntent: async () => ({ + directLocalIntent: null, + executeDirectLocalIntent: async () => "unused", + isHighConfidenceDirectLocalIntent: () => false, + requiresModelSynthesisForLocalIntent: () => false, + shouldUseDirectLocalFallback: () => false, + }), + approveDirectLocalIntent: async () => undefined, + }); + + expect(result).toMatchObject({ + kind: "final", + runFailureMessage: undefined, + observedActionCount: 1, + usedFallback: false, + }); + expect(harness.finishEvents).toEqual([ + { + sessionId: "session-1", + status: "complete", + message: undefined, + }, + ]); + }); }); diff --git a/packages/agent/src/runtime/chat-turn/execution-contract.ts b/packages/agent/src/runtime/chat-turn/execution-contract.ts index e66a3c5f..a6a26a5d 100644 --- a/packages/agent/src/runtime/chat-turn/execution-contract.ts +++ b/packages/agent/src/runtime/chat-turn/execution-contract.ts @@ -1,12 +1,17 @@ +import type { CommandResult } from "@elizaos/autonomous/services/coding-agent-context"; import type { ActionResult } from "@elizaos/core"; import { summarizeActionResults } from "@/runtime/action-result-metadata"; import { classifyTurnMessage } from "@/runtime/turn-classification/message"; import type { LocalMutationInput } from "@/services/run-controller-service"; const FILE_MUTATION_REQUEST_PATTERN = - /\b(?:create|make|write|add|edit|update|change|modify|patch|delete|remove|scaffold|build|generate|save|mkdir|touch)\b[\s\S]*\b(?:file|files|folder|directory|html|css|js|javascript|typescript|json|md|markdown|website|site|project)\b|\b(?:file|files|folder|directory|html|css|js|javascript|typescript|json|md|markdown|website|site|project)\b[\s\S]*\b(?:create|make|write|add|edit|update|change|modify|patch|delete|remove|scaffold|build|generate|save|mkdir|touch)\b/iu; + /\b(?:create|make|write|add|edit|update|change|modify|patch|delete|remove|scaffold|build|generate|save|mkdir|touch)\b[\s\S]*\b(?:file|files|folder|directory|html|css|js|javascript|typescript|json|md|markdown|website|site|project|app|application)\b|\b(?:file|files|folder|directory|html|css|js|javascript|typescript|json|md|markdown|website|site|project|app|application)\b[\s\S]*\b(?:create|make|write|add|edit|update|change|modify|patch|delete|remove|scaffold|build|generate|save|mkdir|touch)\b/iu; const FILE_WRITE_REQUEST_PATTERN = /\b(?:create|make|write|add|edit|update|change|modify|patch|scaffold|build|generate|save|touch)\b[\s\S]*\b(?:file|files|html|css|js|javascript|typescript|json|md|markdown|website|site|page)\b|\b(?:file|files|html|css|js|javascript|typescript|json|md|markdown|website|site|page)\b[\s\S]*\b(?:create|make|write|add|edit|update|change|modify|patch|scaffold|build|generate|save|touch)\b/iu; +const SHELL_SCAFFOLD_REQUEST_PATTERN = + /\b(?:bunx|npx|pnpm\s+(?:dlx|create)|yarn\s+(?:create|dlx)|npm\s+(?:init|create|exec)|create-(?:react-app|next-app|vite|tauri-app|t3-app|expo-app|nuxt-app|svelte-app|astro)|cargo\s+(?:new|init)|git\s+clone|anchor\s+init|vite|next|nuxt|astro|expo|sveltekit|hardhat|forge|spl-token|metaplex)\b/iu; +const SHELL_SCAFFOLD_COMMAND_PATTERN = + /\b(?:bunx|npx|pnpm|yarn|npm|create-(?:react-app|next-app|vite|tauri-app|t3-app|expo-app|nuxt-app|svelte-app|astro)|cargo\s+(?:new|init|build|test|run)|git\s+clone|anchor|forge|hardhat|vite|next|expo|sveltekit|spl-token|metaplex|mkdir|cp|mv|rsync)\b/iu; const EMPTY_PROVIDER_EXECUTION_PATTERN = /^πŸ”Ž\s*Provider executed:\s*\[\]\s*$/u; @@ -55,14 +60,24 @@ export function buildTurnExecutionContract(input: { (classification.likelyLocalTask || classification.shouldUseMultiStep); const requiresMutationProof = requiresLocalExecution && FILE_MUTATION_REQUEST_PATTERN.test(input.message); + const shellScaffoldRequested = SHELL_SCAFFOLD_REQUEST_PATTERN.test( + input.message, + ); + + const requiredMutationActions: string[] = []; + if (requiresMutationProof) { + if (FILE_WRITE_REQUEST_PATTERN.test(input.message)) { + requiredMutationActions.push("WRITE_FILE", "PATCH_FILE"); + } + if (shellScaffoldRequested) { + requiredMutationActions.push("RUN_IN_TERMINAL"); + } + } return { requiresLocalExecution, requiresMutationProof, - requiredMutationActions: - requiresMutationProof && FILE_WRITE_REQUEST_PATTERN.test(input.message) - ? ["WRITE_FILE", "PATCH_FILE"] - : [], + requiredMutationActions, reason: requiresMutationProof ? "local file mutation requested" : requiresLocalExecution @@ -71,12 +86,20 @@ export function buildTurnExecutionContract(input: { }; } +function commandResultLooksLikeMutation(result: CommandResult): boolean { + if (!result.success || result.exitCode !== 0) { + return false; + } + return SHELL_SCAFFOLD_COMMAND_PATTERN.test(result.command); +} + export function assessTurnExecutionContract(input: { contract: TurnExecutionContract; response: string; observedActionCount: number; actionResults?: ActionResult[]; localMutations?: LocalMutationInput[]; + commandResults?: CommandResult[]; runFailureMessage?: string; }): TurnExecutionAssessment { if (!input.contract.requiresLocalExecution || input.runFailureMessage) { @@ -92,6 +115,13 @@ export function assessTurnExecutionContract(input: { ...actionResultSummary.localMutations, ...(input.localMutations ?? []), ]; + const commandResults = [ + ...actionResultSummary.commandResults, + ...(input.commandResults ?? []), + ]; + const scaffoldingCommands = commandResults.filter( + commandResultLooksLikeMutation, + ); if ( observedActionCount === 0 && @@ -116,7 +146,8 @@ export function assessTurnExecutionContract(input: { const successfulMutation = localMutations.some( (mutation) => mutation.success, ); - if (!successfulMutation) { + const successfulScaffoldCommand = scaffoldingCommands.length > 0; + if (!successfulMutation && !successfulScaffoldCommand) { const failedMutation = summarizeFailedMutation(localMutations); return { ok: false, @@ -127,15 +158,16 @@ export function assessTurnExecutionContract(input: { } if (input.contract.requiredMutationActions.length > 0) { + const required = input.contract.requiredMutationActions; const hasRequiredMutation = localMutations.some( - (mutation) => - mutation.success && - input.contract.requiredMutationActions.includes(mutation.action), + (mutation) => mutation.success && required.includes(mutation.action), ); - if (!hasRequiredMutation) { + const hasRequiredCommand = + required.includes("RUN_IN_TERMINAL") && successfulScaffoldCommand; + if (!hasRequiredMutation && !hasRequiredCommand) { return { ok: false, - failureMessage: `Native execution failed: the requested file write did not land. Expected one of ${input.contract.requiredMutationActions.join(", ")}.`, + failureMessage: `Native execution failed: the requested file write did not land. Expected one of ${required.join(", ")}.`, }; } } diff --git a/packages/agent/src/runtime/chat-turn/native/profile-memory.ts b/packages/agent/src/runtime/chat-turn/native/profile-memory.ts index 4033ae26..70456e2f 100644 --- a/packages/agent/src/runtime/chat-turn/native/profile-memory.ts +++ b/packages/agent/src/runtime/chat-turn/native/profile-memory.ts @@ -10,7 +10,8 @@ import type { TurnState } from "../state"; import { elapsedMsSince, recordTrajectoryEvent } from "../trajectory"; import { runShortcutModelWithSdkTrajectory } from "./model-trajectory"; import { - buildDirectInformationalPrompt, + buildDirectInformationalPromptParts, + buildShortcutPromptCache, finalizeNativeShortcut, normalizeDirectInformationalResponse, } from "./shortcuts"; @@ -250,8 +251,8 @@ export async function handleProfileMemoryModelTurn(input: { }); const identityRequest = asksForDoolittleIdentity(input.message); - const prompt = [ - buildDirectInformationalPrompt(input), + const parts = buildDirectInformationalPromptParts(input); + const appended = [ "", "This turn has already applied a durable user profile update.", `- savedDisplayName=${displayName}`, @@ -259,6 +260,13 @@ export async function handleProfileMemoryModelTurn(input: { ? "- The user also asked about Doolittle's personality or soul. Answer from SOUL.md with warmth and specificity." : "- Acknowledge the saved name naturally.", ].join("\n"); + const cache = buildShortcutPromptCache({ + context: input.context, + turn: input.turn, + stableBlocks: [parts.stablePrefix], + volatile: `${parts.volatileSuffix}\n${appended}`, + }); + const prompt = cache.prompt; const settings = input.context.services.settings.get(); const startedAt = performance.now(); @@ -300,6 +308,8 @@ export async function handleProfileMemoryModelTurn(input: { run: () => input.context.runtime.useModel(ModelType.TEXT_SMALL, { prompt, + promptSegments: cache.promptSegments, + providerOptions: cache.providerOptions, temperature: 0.45, maxTokens: identityRequest ? 260 : 120, stopSequences: ["\nUser:", "\nAssistant:", "\nDoolittle:"], @@ -387,8 +397,8 @@ export async function handleSoulIdentityModelTurn(input: { return undefined; } - const prompt = [ - buildDirectInformationalPrompt(input), + const parts = buildDirectInformationalPromptParts(input); + const appended = [ "", "Soul identity task:", "- Treat this as a Doolittle identity/personality conversation, not a global character mutation.", @@ -396,6 +406,13 @@ export async function handleSoulIdentityModelTurn(input: { "- Be warm, vivid, and specific. Avoid sterile disclaimers.", "- If the user asked for a soul file, acknowledge that SOUL.md is the local editable identity file.", ].join("\n"); + const cache = buildShortcutPromptCache({ + context: input.context, + turn: input.turn, + stableBlocks: [parts.stablePrefix], + volatile: `${parts.volatileSuffix}\n${appended}`, + }); + const prompt = cache.prompt; const settings = input.context.services.settings.get(); const startedAt = performance.now(); @@ -433,6 +450,8 @@ export async function handleSoulIdentityModelTurn(input: { run: () => input.context.runtime.useModel(ModelType.TEXT_SMALL, { prompt, + promptSegments: cache.promptSegments, + providerOptions: cache.providerOptions, temperature: 0.55, maxTokens: 280, stopSequences: ["\nUser:", "\nAssistant:", "\nDoolittle:"], diff --git a/packages/agent/src/runtime/chat-turn/native/prompt-cache-integration.test.ts b/packages/agent/src/runtime/chat-turn/native/prompt-cache-integration.test.ts new file mode 100644 index 00000000..8af15bd8 --- /dev/null +++ b/packages/agent/src/runtime/chat-turn/native/prompt-cache-integration.test.ts @@ -0,0 +1,62 @@ +import { describe, expect, it } from "bun:test"; +import type { AgentExecutionContext } from "@/runtime/chat"; +import type { TurnState } from "../state"; +import { buildShortcutPromptCache } from "./shortcuts"; + +function context(provider: string): AgentExecutionContext { + return { + services: { + settings: { get: () => ({ model: { provider, model: "m1" } }) }, + personalities: { getActive: () => ({ id: "p1" }) }, + }, + runtime: { logger: { debug: () => {} } }, + } as unknown as AgentExecutionContext; +} + +const turn = { roomId: "room-1" } as unknown as TurnState; + +describe("buildShortcutPromptCache (cache funnel at the real seam)", () => { + it("emits lossless promptSegments for an explicit provider (anthropic)", () => { + const r = buildShortcutPromptCache({ + context: context("anthropic"), + turn, + stableBlocks: ["SYS"], + volatile: "USER", + }); + expect(r.prompt).toBe("SYS\nUSER"); + expect(r.promptSegments).toBeDefined(); + // The exact invariant the SDK requires of anything passed to useModel. + expect(r.promptSegments?.map((s) => s.content).join("")).toBe(r.prompt); + expect(r.promptSegments?.at(0)?.stable).toBe(true); + expect(r.promptSegments?.at(-1)?.stable).toBe(false); + }); + + it("emits NO segments for a non-caching provider (devin)", () => { + const r = buildShortcutPromptCache({ + context: context("devin"), + turn, + stableBlocks: ["SYS"], + volatile: "USER", + }); + expect(r.prompt).toBe("SYS\nUSER"); + expect(r.promptSegments).toBeUndefined(); + expect(r.providerOptions).toBeUndefined(); + }); + + it("scopes OpenAI provider options with a stable cache key + conversation id", () => { + const r = buildShortcutPromptCache({ + context: context("openai"), + turn, + stableBlocks: ["SYS"], + volatile: "USER", + }); + const opts = r.providerOptions as + | { + openai?: { promptCacheKey?: string }; + eliza?: { conversationId?: string }; + } + | undefined; + expect(opts?.openai?.promptCacheKey).toBeTruthy(); + expect(opts?.eliza?.conversationId).toBe("room-1"); + }); +}); diff --git a/packages/agent/src/runtime/chat-turn/native/shortcuts.ts b/packages/agent/src/runtime/chat-turn/native/shortcuts.ts index a959eacf..4d61b0ca 100644 --- a/packages/agent/src/runtime/chat-turn/native/shortcuts.ts +++ b/packages/agent/src/runtime/chat-turn/native/shortcuts.ts @@ -1,5 +1,9 @@ -import { ModelType } from "@elizaos/core"; +import { ModelType, type PromptSegment } from "@elizaos/core"; import type { AgentExecutionContext, AgentTurnHooks } from "@/runtime/chat"; +import { + buildCacheablePrompt, + promptCacheMetrics, +} from "@/runtime/prompt-cache"; import { renderDoolittleSoulContext } from "@/runtime/soul"; import type { TurnClassification } from "@/runtime/turn-classification/types"; import { finalizeTurnResponse, isTurnReadinessMessage } from "../finalization"; @@ -227,15 +231,35 @@ function isPresenceOrSmallTalkPrompt(message: string): boolean { ); } -export function buildDirectInformationalPrompt(input: { +export interface DirectInformationalPromptParts { + /** + * Cache-stable prefix: identity, character voice, soul, and the conversation + * contract. Identical across calls for the same character + social mode, so + * it is the cacheable prompt prefix. + */ + stablePrefix: string; + /** + * Volatile suffix: recent conversation, durable memory, runtime facts, and + * the user message. Changes every call β€” never cached as stable. + */ + volatileSuffix: string; +} + +/** + * Build the direct-informational prompt split into a cache-stable prefix and a + * volatile suffix. The split preserves the exact wire prompt: + * `stablePrefix + "\n" + volatileSuffix` equals the original joined string, so + * segmentation never changes what the model is asked. + */ +export function buildDirectInformationalPromptParts(input: { context: AgentExecutionContext; turn: TurnState; userId: string; message: string; -}): string { +}): DirectInformationalPromptParts { const settings = input.context.services.settings.get(); const socialMode = isPresenceOrSmallTalkPrompt(input.message); - return [ + const stableLines = [ `You are ${input.turn.agentName}.`, "", ...buildCharacterVoiceContext(input.context), @@ -252,7 +276,8 @@ export function buildDirectInformationalPrompt(input: { socialMode ? "- This turn is social/presence-oriented. Do not redirect immediately to work; meet the user first." : "- This turn is informational. Be natural first, then useful.", - "", + ]; + const volatileLines = [ ...buildRecentConversationContext({ context: input.context, sessionId: input.turn.sessionId, @@ -274,7 +299,74 @@ export function buildDirectInformationalPrompt(input: { "", `User: ${input.message.trim()}`, `${input.turn.agentName}:`, - ].join("\n"); + ]; + return { + stablePrefix: stableLines.join("\n"), + volatileSuffix: volatileLines.join("\n"), + }; +} + +export function buildDirectInformationalPrompt(input: { + context: AgentExecutionContext; + turn: TurnState; + userId: string; + message: string; +}): string { + const { stablePrefix, volatileSuffix } = + buildDirectInformationalPromptParts(input); + return `${stablePrefix}\n${volatileSuffix}`; +} + +export interface ShortcutPromptCache { + prompt: string; + promptSegments?: PromptSegment[]; + providerOptions?: Record; +} + +/** + * Apply Doolittle's shared prompt-cache segmentation to a fast-path prompt and + * record the plan for observability. Every shortcut model call routes through + * this one helper so provider prompt caching is never hand-rolled per call + * site. The returned `prompt` is always the exact text that would have been + * sent; `promptSegments`/`providerOptions` are populated only for caching + * providers. + */ +export function buildShortcutPromptCache(args: { + context: AgentExecutionContext; + turn: TurnState; + stableBlocks: string[]; + volatile: string; +}): ShortcutPromptCache { + const settings = args.context.services.settings.get(); + // The active personality id is part of the stable-prefix version fingerprint + // (a persona switch rotates the cache key). Accessed defensively so the fast + // path never depends on the personality service being present. + const personalityId = + ( + args.context.services as { + personalities?: { getActive?: () => { id?: string } }; + } + ).personalities?.getActive?.()?.id ?? "default"; + const cacheable = buildCacheablePrompt({ + stableBlocks: args.stableBlocks, + volatile: args.volatile, + joiner: "\n", + provider: settings.model.provider, + model: settings.model.model, + versionDigest: personalityId, + conversationId: + args.turn.roomId != null ? String(args.turn.roomId) : undefined, + }); + promptCacheMetrics.recordPlan(cacheable.stats); + args.context.runtime.logger?.debug?.( + { src: "doolittle:prompt-cache", ...cacheable.stats }, + "[DOOLITTLE] prompt cache plan", + ); + return { + prompt: cacheable.prompt, + promptSegments: cacheable.promptSegments, + providerOptions: cacheable.providerOptions, + }; } export function normalizeDirectInformationalResponse( @@ -306,7 +398,14 @@ export async function handleDirectInformationalModelTurn(input: { return undefined; } - const prompt = buildDirectInformationalPrompt(input); + const parts = buildDirectInformationalPromptParts(input); + const cache = buildShortcutPromptCache({ + context: input.context, + turn: input.turn, + stableBlocks: [parts.stablePrefix], + volatile: parts.volatileSuffix, + }); + const prompt = cache.prompt; const startedAt = performance.now(); const settings = input.context.services.settings.get(); recordTrajectoryEvent(input.context, { @@ -342,6 +441,8 @@ export async function handleDirectInformationalModelTurn(input: { run: () => input.context.runtime.useModel(ModelType.TEXT_SMALL, { prompt, + promptSegments: cache.promptSegments, + providerOptions: cache.providerOptions, temperature: 0.35, maxTokens: input.classification.simpleChat ? 96 : 192, stopSequences: ["\nUser:", "\nAssistant:", "\nDoolittle:"], diff --git a/packages/agent/src/runtime/chat-turn/post-command.ts b/packages/agent/src/runtime/chat-turn/post-command.ts index 55d42392..5968f67c 100644 --- a/packages/agent/src/runtime/chat-turn/post-command.ts +++ b/packages/agent/src/runtime/chat-turn/post-command.ts @@ -39,46 +39,61 @@ export async function runPostCommandTurn( ): Promise { const prepared = preparedTurn ?? prepareTurnState(input, context); const turn = prepared.turn; - await ensureTurnConnection(context, { - entityId: turn.entityId, - roomId: turn.roomId, - worldId: turn.worldId, - source: turn.connectionSource, - channelId: turn.localInteractive ? turn.sessionId : turn.worldId, - messageServerId: turn.messageServerId, - }); - await ensureLocalInteractiveSettingsState(context, turn); + try { + await ensureTurnConnection(context, { + entityId: turn.entityId, + roomId: turn.roomId, + worldId: turn.worldId, + source: turn.connectionSource, + channelId: turn.localInteractive ? turn.sessionId : turn.worldId, + messageServerId: turn.messageServerId, + }); + await ensureLocalInteractiveSettingsState(context, turn); - const shellResponse = await runner.runShellPostCommandTurn({ - input, - effectiveInput, - context, - options, - perf, - preparedTurn: prepared, - }); - if (shellResponse !== undefined) { - return shellResponse; - } + const shellResponse = await runner.runShellPostCommandTurn({ + input, + effectiveInput, + context, + options, + perf, + preparedTurn: prepared, + }); + if (shellResponse !== undefined) { + return shellResponse; + } - const nativeTurnSetup = runner.prepareNativeTurnSetup({ - input, - effectiveInput, - context, - preparedTurn: prepared, - }); - const settingsDuring = applyRuntimeOverrides( - nativeTurnSetup.settingsBefore, - options?.runtimeOverrides, - ); + const nativeTurnSetup = runner.prepareNativeTurnSetup({ + input, + effectiveInput, + context, + preparedTurn: prepared, + }); + const settingsDuring = applyRuntimeOverrides( + nativeTurnSetup.settingsBefore, + options?.runtimeOverrides, + ); - return runner.runNativeMessageTurn({ - input, - effectiveInput, - context, - options, - perf, - turnSetup: nativeTurnSetup, - settingsDuring, - }); + return runner.runNativeMessageTurn({ + input, + effectiveInput, + context, + options, + perf, + turnSetup: nativeTurnSetup, + settingsDuring, + }); + } catch (error) { + // Guarantee the run is finished even when execution throws before any + // success/error path finalizes it β€” otherwise the run is stranded in + // "thinking". Guard on the active run so an inner path that already + // finalized (and rethrew) is never double-finished. + if (context.services.runController.getActive(turn.sessionId)) { + context.services.runController.finishTurn( + turn.sessionId, + "error", + error instanceof Error ? error.message : String(error), + ); + } + throw error; + } } diff --git a/packages/agent/src/runtime/chat-turn/post-provider.ts b/packages/agent/src/runtime/chat-turn/post-provider.ts index 9b7aa135..ec69a429 100644 --- a/packages/agent/src/runtime/chat-turn/post-provider.ts +++ b/packages/agent/src/runtime/chat-turn/post-provider.ts @@ -50,6 +50,7 @@ export async function runPostProviderTurn( observedActionCount, actionResults: input.actionResults, localMutations: activeRun?.localMutations, + commandResults: actionResultSummary.commandResults, runFailureMessage: fallbackResult.runFailureMessage, }); const runFailureMessage = executionAssessment.ok diff --git a/packages/agent/src/runtime/chat-turn/post-provider/fallback.test.ts b/packages/agent/src/runtime/chat-turn/post-provider/fallback.test.ts new file mode 100644 index 00000000..16ba4e14 --- /dev/null +++ b/packages/agent/src/runtime/chat-turn/post-provider/fallback.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it } from "bun:test"; +import { resolvePostProviderFallback } from "./fallback"; + +type FallbackInput = Parameters[0]; + +function makeInput(aborted: boolean, onLoad: () => void): FallbackInput { + const controller = new AbortController(); + if (aborted) { + controller.abort(); + } + return { + context: { + services: { + runController: { getActive: () => undefined, finishTurn: () => {} }, + }, + }, + effectiveInput: { message: "scaffold the project" }, + turn: { sessionId: "s1", localInteractive: true }, + options: { abortSignal: controller.signal }, + loadDirectLocalIntent: async () => { + onLoad(); + return { + directLocalIntent: undefined, + shouldUseDirectLocalFallback: () => false, + isHighConfidenceDirectLocalIntent: () => false, + requiresModelSynthesisForLocalIntent: () => false, + executeDirectLocalIntent: async () => "", + }; + }, + approveDirectLocalIntent: async () => undefined, + actionResults: [], + response: "", + runFailureMessage: "aborted by user", + } as unknown as FallbackInput; +} + +describe("resolvePostProviderFallback abort handling", () => { + it("never runs the direct-local fallback when the turn was aborted", async () => { + let loaded = false; + const result = await resolvePostProviderFallback( + makeInput(true, () => { + loaded = true; + }), + ); + // The fallback loader must not even be consulted β€” otherwise cancelled work + // could re-execute. + expect(loaded).toBe(false); + expect(result).toMatchObject({ kind: "continue", usedFallback: false }); + }); + + it("consults the fallback loader on a non-aborted failed turn", async () => { + let loaded = false; + const result = await resolvePostProviderFallback( + makeInput(false, () => { + loaded = true; + }), + ); + expect(loaded).toBe(true); + expect(result).toMatchObject({ kind: "continue" }); + }); +}); diff --git a/packages/agent/src/runtime/chat-turn/post-provider/fallback.ts b/packages/agent/src/runtime/chat-turn/post-provider/fallback.ts index 81ceb667..aaee855b 100644 --- a/packages/agent/src/runtime/chat-turn/post-provider/fallback.ts +++ b/packages/agent/src/runtime/chat-turn/post-provider/fallback.ts @@ -51,6 +51,19 @@ export async function resolvePostProviderFallback( summarizeActionResults(input.actionResults).observedActionCount, ); + // If the user aborted, never run the direct-local fallback β€” an abort + // surfaces as a runFailureMessage, and falling through would re-execute the + // exact work the user just cancelled. + if (input.options?.abortSignal?.aborted) { + return { + kind: "continue", + observedActionCount, + response, + runFailureMessage, + usedFallback: false, + }; + } + const fallbackModule = shouldLoadDirectLocalIntentFallback({ localInteractive: input.turn.localInteractive, observedActionCount, diff --git a/packages/agent/src/runtime/command-catalog/render.ts b/packages/agent/src/runtime/command-catalog/render.ts index 9ce07a60..082bd949 100644 --- a/packages/agent/src/runtime/command-catalog/render.ts +++ b/packages/agent/src/runtime/command-catalog/render.ts @@ -8,9 +8,11 @@ export function renderCommandCatalog( workspaceDir?: string, ): string { const catalog = getCommandCatalogEntries(workspaceDir); + // Browse (no query) shows the entire catalog β€” never silently drop commands; + // the `limit` only bounds ranked search results. const entries = query?.trim() ? rankCommandCatalogEntries(catalog, query, limit) - : catalog.slice(0, limit); + : catalog; return entries .map( diff --git a/packages/agent/src/runtime/commands/runtime-workspace/status.ts b/packages/agent/src/runtime/commands/runtime-workspace/status.ts index 854b8e9b..26499c07 100644 --- a/packages/agent/src/runtime/commands/runtime-workspace/status.ts +++ b/packages/agent/src/runtime/commands/runtime-workspace/status.ts @@ -3,8 +3,21 @@ import { getEffectiveMemorySnapshot, getNativeOwnershipControlPlane, } from "@/runtime/native/service-bridge/ownership"; +import { promptCacheMetrics } from "@/runtime/prompt-cache"; import type { ChatTurnRequest } from "@/types/runtime"; +function formatPromptCacheSummary(): string { + const snapshot = promptCacheMetrics.snapshot(); + if (snapshot.calls === 0) { + return "no Doolittle model calls yet"; + } + const base = `${snapshot.calls} calls, ${snapshot.eligibleCalls} eligible, ${snapshot.segmentsEmitted} segmented`; + if (snapshot.usageSamples === 0) { + return base; + } + return `${base}; hit-rate ${Math.round(snapshot.hitRate * 100)}% (${snapshot.cacheReadTokens} tok from cache)`; +} + import type { AgentExecutionContext } from "../../chat"; import { formatExperienceSummary, @@ -69,6 +82,7 @@ function buildCommonStatusLines( `Transport inventory: ${ownership.transportControl.totals.operationalTransports}/${ownership.transportControl.transportInventory.length} operational`, `Gateway bridges: ${ownership.transportControl.totals.liveServices}/${ownership.transportControl.totals.gatewayEnabled} live`, `Memory summary: ${formatMemorySummary(memorySummary)}`, + `Prompt cache: ${formatPromptCacheSummary()}`, ], }; } diff --git a/packages/agent/src/runtime/commands/tooling/shared.ts b/packages/agent/src/runtime/commands/tooling/shared.ts index 13eb4ce0..51c45563 100644 --- a/packages/agent/src/runtime/commands/tooling/shared.ts +++ b/packages/agent/src/runtime/commands/tooling/shared.ts @@ -5,10 +5,16 @@ export function parseNamedToolPayload( if (!toolName) { return undefined; } - return { - toolName, - parsedInput: inputRaw - ? (JSON.parse(inputRaw) as Record) - : {}, - }; + if (!inputRaw) { + return { toolName, parsedInput: {} }; + } + try { + return { + toolName, + parsedInput: JSON.parse(inputRaw) as Record, + }; + } catch { + // Malformed JSON input β€” surface a usage message rather than crashing the turn. + return undefined; + } } diff --git a/packages/agent/src/runtime/linked-provider-accounts/messages.ts b/packages/agent/src/runtime/linked-provider-accounts/messages.ts index 344f1e26..524cd07f 100644 --- a/packages/agent/src/runtime/linked-provider-accounts/messages.ts +++ b/packages/agent/src/runtime/linked-provider-accounts/messages.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import { displayCommand } from "@/runtime/commands/command-execution"; export const ELIZA_CLOUD_BILLING_URL = diff --git a/packages/agent/src/runtime/linked-provider-accounts/model-settings.ts b/packages/agent/src/runtime/linked-provider-accounts/model-settings.ts index 117a062d..a309c4c7 100644 --- a/packages/agent/src/runtime/linked-provider-accounts/model-settings.ts +++ b/packages/agent/src/runtime/linked-provider-accounts/model-settings.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import type { AgentExecutionContext } from "../chat"; import { normalizeElizaCloudBaseUrl } from "./messages"; import type { LinkedProviderName } from "./types"; diff --git a/packages/agent/src/runtime/linked-provider-accounts/readiness.test.ts b/packages/agent/src/runtime/linked-provider-accounts/readiness.test.ts index 1c669d1b..95c7ce78 100644 --- a/packages/agent/src/runtime/linked-provider-accounts/readiness.test.ts +++ b/packages/agent/src/runtime/linked-provider-accounts/readiness.test.ts @@ -49,7 +49,7 @@ function installReadinessMocks() { }, })); - mock.module("@elizaos/agent/cloud/validate-url", () => ({ + mock.module("@elizaos/autonomous/cloud/validate-url", () => ({ validateCloudBaseUrl: async () => null, })); } diff --git a/packages/agent/src/runtime/linked-provider-accounts/readiness.ts b/packages/agent/src/runtime/linked-provider-accounts/readiness.ts index 5a62a4cf..97959c79 100644 --- a/packages/agent/src/runtime/linked-provider-accounts/readiness.ts +++ b/packages/agent/src/runtime/linked-provider-accounts/readiness.ts @@ -1,4 +1,4 @@ -import { validateCloudBaseUrl } from "@elizaos/agent/cloud/validate-url"; +import { validateCloudBaseUrl } from "@elizaos/autonomous/cloud/validate-url"; import { displayCommand } from "@/runtime/commands/command-execution"; import { getLinkedProviderAccountsSnapshot, diff --git a/packages/agent/src/runtime/native/account-auth/elizacloud-support.ts b/packages/agent/src/runtime/native/account-auth/elizacloud-support.ts index 36edf9ef..f40ba4c9 100644 --- a/packages/agent/src/runtime/native/account-auth/elizacloud-support.ts +++ b/packages/agent/src/runtime/native/account-auth/elizacloud-support.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import { commandExists } from "./shared"; import { getStoredElizaCloudCredentials, diff --git a/packages/agent/src/runtime/native/account-auth/store.ts b/packages/agent/src/runtime/native/account-auth/store.ts index a1dfad64..fb32d970 100644 --- a/packages/agent/src/runtime/native/account-auth/store.ts +++ b/packages/agent/src/runtime/native/account-auth/store.ts @@ -1,6 +1,6 @@ import { existsSync } from "node:fs"; import { isAbsolute, join } from "node:path"; -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import { hasTokenCredentials } from "./credentials"; import { readJson, writeJson } from "./shared"; import type { diff --git a/packages/agent/src/runtime/native/autonomous-stack/index.ts b/packages/agent/src/runtime/native/autonomous-stack/index.ts index d6cbb8b7..35baafe9 100644 --- a/packages/agent/src/runtime/native/autonomous-stack/index.ts +++ b/packages/agent/src/runtime/native/autonomous-stack/index.ts @@ -1,7 +1,3 @@ -import type {} from "@elizaos/agent"; -import type {} from "@elizaos/autonomous"; -import type {} from "@elizaos/skills"; - export { describeAutonomousAlignment } from "./alignment"; export { buildAutonomousCompatConfig } from "./compat-config"; export { buildAutonomousCompatEnv } from "./compat-env"; diff --git a/packages/agent/src/runtime/native/plugin-registry/local-ollama.ts b/packages/agent/src/runtime/native/plugin-registry/local-ollama.ts index 04dd9458..a32f2431 100644 --- a/packages/agent/src/runtime/native/plugin-registry/local-ollama.ts +++ b/packages/agent/src/runtime/native/plugin-registry/local-ollama.ts @@ -156,7 +156,6 @@ function modelForType( case ModelType.RESPONSE_HANDLER: return response; case ModelType.TEXT_SMALL: - case ModelType.OBJECT_SMALL: return small; case ModelType.TEXT_MEDIUM: case ModelType.TEXT_REASONING_SMALL: diff --git a/packages/agent/src/runtime/native/service-bridge/tooling/context.ts b/packages/agent/src/runtime/native/service-bridge/tooling/context.ts index c48438b5..0299f120 100644 --- a/packages/agent/src/runtime/native/service-bridge/tooling/context.ts +++ b/packages/agent/src/runtime/native/service-bridge/tooling/context.ts @@ -4,7 +4,7 @@ import { createCodingAgentContext, injectFeedback, validateCodingAgentContext, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; import type { AppServices } from "@/services"; import type { RuntimeLike } from "../runtime-contracts"; import { getNativeCodingAgent } from "./native-services"; diff --git a/packages/agent/src/runtime/native/service-bridge/tooling/index.test.ts b/packages/agent/src/runtime/native/service-bridge/tooling/index.test.ts index b576cfac..007f034b 100644 --- a/packages/agent/src/runtime/native/service-bridge/tooling/index.test.ts +++ b/packages/agent/src/runtime/native/service-bridge/tooling/index.test.ts @@ -7,7 +7,7 @@ import type { CodingAgentContext, CodingIteration, HumanFeedback, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; import type { AppServices } from "@/services"; import type { RuntimeLike } from "../runtime"; import { diff --git a/packages/agent/src/runtime/native/service-bridge/tooling/types.ts b/packages/agent/src/runtime/native/service-bridge/tooling/types.ts index 7410bcc2..fc39ff6d 100644 --- a/packages/agent/src/runtime/native/service-bridge/tooling/types.ts +++ b/packages/agent/src/runtime/native/service-bridge/tooling/types.ts @@ -3,7 +3,7 @@ import type { ConnectorType, HumanFeedback, InteractionMode, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; export interface EffectiveCodingAgentContextInput { sessionId: string; diff --git a/packages/agent/src/runtime/prompt-cache/README.md b/packages/agent/src/runtime/prompt-cache/README.md new file mode 100644 index 00000000..5dcbafe5 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/README.md @@ -0,0 +1,106 @@ +# Doolittle prompt caching + +Provider-aware prompt caching for the prompts **Doolittle itself owns** β€” i.e. +the direct `runtime.useModel` calls Doolittle makes outside the ElizaOS SDK +message pipeline. + +## TL;DR + +- The **SDK already caches** everything routed through `runtime.messageService.handleMessage` + (the action / evaluator / planner path). `@elizaos/core` builds `promptSegments` + and a full provider cache plan there. **Do not reimplement that.** +- The only prompts with **zero caching** were Doolittle's own direct `useModel` + calls (the chat-turn "shortcut" fast paths). This module fixes exactly those. +- It is a small, shared abstraction β€” never hand-rolled per call site. + +## Where it lives + +``` +runtime/prompt-cache/ + types.ts # PromptBlock, CacheablePrompt, ProviderCachePolicy, stats + provider-policy.ts # provider id -> caching capability (explicit | implicit | none) + digest.ts # deterministic hashing + the stable-prefix version fingerprint + cacheable-prompt.ts # buildCacheablePrompt(): the segment builder + metrics.ts # promptCacheMetrics: observability recorder + snapshot +``` + +Integration point: `chat-turn/native/shortcuts.ts#buildShortcutPromptCache`, +used by all three shortcut handlers (direct-informational + the two +profile-memory paths). That is the single funnel for Doolittle-owned model +calls, so caching is applied once and uniformly. + +## How it works + +1. A prompt is described as a **stable prefix** (character voice, soul, + conversation contract β€” identical across calls for the same character) plus a + **volatile suffix** (recent conversation, durable memory, the user message). + `buildDirectInformationalPromptParts` splits the fast-path prompt losslessly: + `stablePrefix + "\n" + volatileSuffix` equals the original wire prompt. +2. `buildCacheablePrompt` turns that into SDK `promptSegments` (`{content, stable}`) + plus `providerOptions`, preserving the invariant + `prompt === promptSegments.map(s => s.content).join("")`. +3. The segments are passed straight to `runtime.useModel`. The provider plugin + does the rest: `@elizaos/plugin-anthropic` emits `cache_control: ephemeral` + on the stable segments; `@elizaos/plugin-openai` keys prefix caching by + `providerOptions.openai.promptCacheKey`. + +## Provider awareness (`provider-policy.ts`) + +| Mode | Providers | Behavior | +|---|---|---| +| `explicit` | `anthropic`, `openai` (SDK plugins) | Emit `promptSegments` (+ `promptCacheKey` for OpenAI). | +| `implicit` | `ollama` / local | No hints; an identical leading prefix is reused by the KV cache automatically. | +| `none` | claude-code, codex, devin, elizacloud (custom plugins), unknown | No-op β€” those plugins build their own request from `params.prompt` and ignore segments today. | + +## Cache keys & invalidation + +The cache key is `sha256(templateVersion + versionDigest + provider + model + ...stableBlocks)`. +It rotates automatically β€” and the provider therefore treats the prompt as new β€” +whenever any of these change: + +- **Template** β€” bump `PROMPT_CACHE_TEMPLATE_VERSION` when segment shape/ordering changes. +- **Stable content** β€” character voice, soul, or contract text (hashed directly). +- **Persona / character** β€” via `versionDigest` (active personality id today; + extend with `computeStablePrefixVersion` for character/tool/settings digests). +- **Provider / model** β€” part of the key string. + +Volatile content (user input, fresh memory) is **never** part of the key, so it +can never cause a stale or cross-request hit. + +## Observability (`promptCacheMetrics`) + +`recordPlan` is called for every cacheable prompt (what we attempted). The +snapshot reports calls, eligible calls, segments emitted, and stable/volatile +volume per provider. Each plan is also debug-logged (`src: "doolittle:prompt-cache"`). + +`recordUsage` accepts provider cache-token reports (hits/misses/savings) but is +**not wired** today: the SDK `MODEL_USED` event exposes only +`{prompt, completion, total}` tokens, not `cacheReadInputTokens`. Surfacing real +hit-rate requires the SDK to forward cache usage β€” see "Known limitations". + +## Extending + +- **A new caching provider:** add a branch to `resolveProviderCachePolicy`. +- **A new Doolittle-owned `useModel` call:** build a stable/volatile split and + route it through `buildShortcutPromptCache` (or `buildCacheablePrompt` + directly). Never pass cache hints ad hoc. +- **Make a custom provider plugin cacheable:** teach it to read + `params.promptSegments` / `params.providerOptions`, then move it to `explicit`. + +## When NOT to use it + +- Don't segment SDK-pipeline prompts (handleMessage) β€” core already does it. +- Don't mark anything user-derived, secret, credential-bearing, or per-request + as `stable`. Correctness beats cache rate: a wrong stable flag is a stale or + leaked prompt. + +## Known limitations / follow-ups + +- Real hit-rate/token-savings telemetry needs the SDK to forward provider cache + usage through `MODEL_USED` (or a usage callback). Today only the *plan* is + observable. +- Custom provider plugins (claude-code, codex, elizacloud) ignore `promptSegments` + β€” make them segment-aware to extend explicit caching to those providers. +- The SDK main-path **prelude** (`chat-turn/model-input.ts`) still rides as + volatile; hoisting its stable half into a static provider would let core cache + it. Tracked separately. diff --git a/packages/agent/src/runtime/prompt-cache/cacheable-prompt.test.ts b/packages/agent/src/runtime/prompt-cache/cacheable-prompt.test.ts new file mode 100644 index 00000000..e9b409b0 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/cacheable-prompt.test.ts @@ -0,0 +1,120 @@ +import { describe, expect, it } from "bun:test"; +import { buildCacheablePrompt } from "./cacheable-prompt"; + +const base = { joiner: "\n", versionDigest: "v1", conversationId: "room1" }; + +function options(result: { providerOptions?: Record }) { + return result.providerOptions as + | { + openai?: { promptCacheKey?: string }; + eliza?: { conversationId?: string }; + } + | undefined; +} + +describe("buildCacheablePrompt", () => { + it("emits lossless stable + volatile segments for explicit providers", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["SYS", "TOOLS"], + volatile: "USER", + provider: "anthropic", + model: "claude", + }); + expect(r.prompt).toBe("SYS\nTOOLS\nUSER"); + expect(r.promptSegments).toBeDefined(); + // The SDK invariant: segments reconstruct the prompt exactly. + expect(r.promptSegments?.map((s) => s.content).join("")).toBe(r.prompt); + expect(r.promptSegments?.filter((s) => s.stable).length).toBe(2); + expect(r.promptSegments?.at(-1)?.stable).toBe(false); + expect(r.stats).toMatchObject({ mode: "explicit", segmentsEmitted: true }); + }); + + it("sets openai promptCacheKey + eliza conversationId for OpenAI-family", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["SYS"], + volatile: "U", + provider: "openai", + model: "gpt", + }); + expect(options(r)?.openai?.promptCacheKey).toBe(r.cacheKey); + expect(options(r)?.eliza?.conversationId).toBe("room1"); + }); + + it("does NOT emit segments for implicit providers (ollama) but stays eligible", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["SYS"], + volatile: "U", + provider: "ollama", + model: "granite", + }); + expect(r.promptSegments).toBeUndefined(); + expect(r.providerOptions).toBeUndefined(); + expect(r.prompt).toBe("SYS\nU"); + expect(r.stats).toMatchObject({ + mode: "implicit", + eligible: true, + segmentsEmitted: false, + }); + }); + + it("is a no-op for providers with no caching (devin / CLI)", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["SYS"], + volatile: "U", + provider: "devin", + model: "x", + }); + expect(r.promptSegments).toBeUndefined(); + expect(r.stats).toMatchObject({ mode: "none", eligible: false }); + }); + + it("caps stable segments to the provider breakpoint budget, losslessly", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["A", "B", "C"], + volatile: "U", + provider: "openai", // maxStableBreakpoints = 1 + model: "gpt", + }); + expect(r.promptSegments?.filter((s) => s.stable).length).toBe(1); + expect(r.promptSegments?.map((s) => s.content).join("")).toBe(r.prompt); + expect(r.prompt).toBe("A\nB\nC\nU"); + }); + + it("produces deterministic keys that rotate on every invalidation input", () => { + const key = (over: Record) => + buildCacheablePrompt({ + ...base, + stableBlocks: ["SYS"], + volatile: "U", + provider: "anthropic", + model: "claude", + ...over, + }).cacheKey; + const baseline = key({}); + expect(key({})).toBe(baseline); // deterministic + expect(key({ versionDigest: "v2" })).not.toBe(baseline); // persona/character change + expect(key({ model: "claude-2" })).not.toBe(baseline); // model change + expect(key({ provider: "openai" })).not.toBe(baseline); // provider change + expect(key({ stableBlocks: ["SYS2"] })).not.toBe(baseline); // stable content change + // volatile content must NOT affect the key + expect(key({ volatile: "different user input" })).toBe(baseline); + }); + + it("emits nothing when there is no stable content", () => { + const r = buildCacheablePrompt({ + ...base, + stableBlocks: ["", ""], + volatile: "U", + provider: "anthropic", + model: "claude", + }); + expect(r.promptSegments).toBeUndefined(); + expect(r.prompt).toBe("U"); + expect(r.stats.eligible).toBe(false); + }); +}); diff --git a/packages/agent/src/runtime/prompt-cache/cacheable-prompt.ts b/packages/agent/src/runtime/prompt-cache/cacheable-prompt.ts new file mode 100644 index 00000000..b40024c3 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/cacheable-prompt.ts @@ -0,0 +1,150 @@ +import type { PromptSegment } from "@elizaos/core"; +import { hashParts, PROMPT_CACHE_TEMPLATE_VERSION } from "./digest"; +import { resolveProviderCachePolicy } from "./provider-policy"; +import type { + CacheablePrompt, + PromptCacheStats, + ProviderCachePolicy, +} from "./types"; + +export interface BuildCacheablePromptInput { + /** + * Ordered stable prefix blocks β€” content that is identical across calls for + * the same character / schema / tool set (character voice, soul, conversation + * contract, runtime facts, per-path instructions, tool schemas). + */ + stableBlocks: string[]; + /** + * The volatile suffix β€” content that changes every call (fresh memory and + * conversation context, the user message, timestamps, ids). NEVER cached as + * stable. + */ + volatile: string; + /** Separator between every block; must match how the original prompt joins. */ + joiner?: string; + /** Resolved provider id (settings `model.provider`). */ + provider: string | undefined; + /** Resolved model id (settings `model.model`). */ + model: string | undefined; + /** Stable-prefix version fingerprint β€” see `computeStablePrefixVersion`. */ + versionDigest: string; + /** Slot key for provider cache scoping (typically the room id). */ + conversationId?: string; +} + +/** + * Segment a Doolittle-owned prompt into a cacheable stable prefix + volatile + * suffix and produce the `promptSegments` / `providerOptions` to pass to + * `runtime.useModel`. Provider-aware and lossless: + * `prompt === promptSegments.map(s => s.content).join("")` always holds when + * segments are emitted. On any inconsistency it degrades safely to the plain + * prompt β€” caching is never allowed to change what the model is asked. + */ +export function buildCacheablePrompt( + input: BuildCacheablePromptInput, +): CacheablePrompt { + const joiner = input.joiner ?? "\n"; + const provider = input.provider ?? "unknown"; + const model = input.model ?? "unknown"; + const stableBlocks = input.stableBlocks.filter((block) => block.length > 0); + const volatile = input.volatile; + const policy = resolveProviderCachePolicy(provider); + + const prompt = [...stableBlocks, volatile].join(joiner); + const stableChars = stableBlocks.reduce((total, b) => total + b.length, 0); + const cacheKey = hashParts([ + PROMPT_CACHE_TEMPLATE_VERSION, + input.versionDigest, + provider, + model, + ...stableBlocks, + ]).slice(0, 32); + + const eligible = policy.mode !== "none" && stableBlocks.length > 0; + const stats: PromptCacheStats = { + provider, + model, + mode: policy.mode, + cacheKey, + stableChars, + volatileChars: volatile.length, + stableSegments: 0, + eligible, + segmentsEmitted: false, + }; + + // Explicit-mode providers (Anthropic / OpenAI-family) are the only ones that + // consume promptSegments. Implicit providers (ollama) already benefit from an + // identical leading prefix, and `none` providers cannot cache at all β€” for + // both we send the plain prompt unchanged. + if (!eligible || policy.mode !== "explicit") { + return { prompt, cacheKey, stats }; + } + + const cappedStable = capStableBlocks( + stableBlocks, + policy.maxStableBreakpoints, + joiner, + ); + const promptSegments: PromptSegment[] = [ + ...cappedStable.map((content) => ({ + content: content + joiner, + stable: true, + })), + { content: volatile, stable: false }, + ]; + + if (promptSegments.map((s) => s.content).join("") !== prompt) { + // Lossless invariant violated β€” never send an altered prompt. + return { prompt, cacheKey, stats }; + } + + return { + prompt, + promptSegments, + providerOptions: buildProviderOptions( + policy, + cacheKey, + input.conversationId, + ), + cacheKey, + stats: { + ...stats, + stableSegments: cappedStable.length, + segmentsEmitted: true, + }, + }; +} + +/** + * Merge leading blocks until the count fits the provider's breakpoint budget. + * Only ever called for explicit-mode providers (max >= 1) with a non-empty + * block list, so the merge is always well-defined. + */ +function capStableBlocks( + blocks: string[], + max: number, + joiner: string, +): string[] { + if (blocks.length <= max) { + return blocks; + } + const mergeCount = blocks.length - max + 1; + const merged = blocks.slice(0, mergeCount).join(joiner); + return [merged, ...blocks.slice(mergeCount)]; +} + +function buildProviderOptions( + policy: ProviderCachePolicy, + cacheKey: string, + conversationId: string | undefined, +): Record | undefined { + const options: Record = {}; + if (policy.emitsPromptCacheKey) { + options.openai = { promptCacheKey: cacheKey }; + } + if (conversationId) { + options.eliza = { conversationId }; + } + return Object.keys(options).length > 0 ? options : undefined; +} diff --git a/packages/agent/src/runtime/prompt-cache/digest.test.ts b/packages/agent/src/runtime/prompt-cache/digest.test.ts new file mode 100644 index 00000000..76e03c6c --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/digest.test.ts @@ -0,0 +1,65 @@ +import { describe, expect, it } from "bun:test"; +import { + computeStablePrefixVersion, + hashParts, + hashStableJson, + PROMPT_CACHE_TEMPLATE_VERSION, +} from "./digest"; + +describe("hashParts", () => { + it("is deterministic and order-sensitive", () => { + expect(hashParts(["a", "b"])).toBe(hashParts(["a", "b"])); + expect(hashParts(["a", "b"])).not.toBe(hashParts(["b", "a"])); + }); + + it("is not fooled by boundary ambiguity (delimiter is hashed)", () => { + expect(hashParts(["a", "b"])).not.toBe(hashParts(["ab"])); + }); +}); + +describe("hashStableJson", () => { + it("is independent of key order", () => { + expect(hashStableJson({ a: 1, b: 2 })).toBe(hashStableJson({ b: 2, a: 1 })); + }); + + it("ignores undefined values", () => { + expect(hashStableJson({ a: 1, b: undefined })).toBe( + hashStableJson({ a: 1 }), + ); + }); + + it("distinguishes different values", () => { + expect(hashStableJson({ a: 1 })).not.toBe(hashStableJson({ a: 2 })); + }); +}); + +describe("computeStablePrefixVersion", () => { + it("rotates when any input changes", () => { + const baseline = computeStablePrefixVersion({ characterDigest: "c1" }); + expect(computeStablePrefixVersion({ characterDigest: "c1" })).toBe( + baseline, + ); + expect(computeStablePrefixVersion({ characterDigest: "c2" })).not.toBe( + baseline, + ); + expect( + computeStablePrefixVersion({ + characterDigest: "c1", + personalityId: "p1", + }), + ).not.toBe(baseline); + expect( + computeStablePrefixVersion({ + characterDigest: "c1", + toolsetDigest: "t1", + }), + ).not.toBe(baseline); + }); + + it("embeds the template version so a bump invalidates all keys", () => { + // The template version is part of the digest input β€” documented invariant. + expect(PROMPT_CACHE_TEMPLATE_VERSION.length).toBeGreaterThan(0); + const v = computeStablePrefixVersion({ characterDigest: "c1" }); + expect(v).toHaveLength(32); + }); +}); diff --git a/packages/agent/src/runtime/prompt-cache/digest.ts b/packages/agent/src/runtime/prompt-cache/digest.ts new file mode 100644 index 00000000..e1715d84 Binary files /dev/null and b/packages/agent/src/runtime/prompt-cache/digest.ts differ diff --git a/packages/agent/src/runtime/prompt-cache/index.ts b/packages/agent/src/runtime/prompt-cache/index.ts new file mode 100644 index 00000000..47c40fdb --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/index.ts @@ -0,0 +1,23 @@ +export type { BuildCacheablePromptInput } from "./cacheable-prompt"; +export { buildCacheablePrompt } from "./cacheable-prompt"; +export { + computeStablePrefixVersion, + hashParts, + hashStableJson, + PROMPT_CACHE_TEMPLATE_VERSION, + type StablePrefixInputs, +} from "./digest"; +export { + type PromptCacheProviderSnapshot, + type PromptCacheSnapshot, + type PromptCacheUsageSample, + promptCacheMetrics, +} from "./metrics"; +export { resolveProviderCachePolicy } from "./provider-policy"; +export type { + CacheablePrompt, + PromptBlock, + PromptCacheStats, + ProviderCacheMode, + ProviderCachePolicy, +} from "./types"; diff --git a/packages/agent/src/runtime/prompt-cache/metrics.test.ts b/packages/agent/src/runtime/prompt-cache/metrics.test.ts new file mode 100644 index 00000000..b428d896 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/metrics.test.ts @@ -0,0 +1,74 @@ +import { beforeEach, describe, expect, it } from "bun:test"; +import { promptCacheMetrics } from "./metrics"; +import type { PromptCacheStats } from "./types"; + +function stats(over: Partial = {}): PromptCacheStats { + return { + provider: "anthropic", + model: "claude", + mode: "explicit", + cacheKey: "k", + stableChars: 100, + volatileChars: 10, + stableSegments: 1, + eligible: true, + segmentsEmitted: true, + ...over, + }; +} + +describe("promptCacheMetrics", () => { + beforeEach(() => promptCacheMetrics.reset()); + + it("aggregates plan records globally and per provider", () => { + promptCacheMetrics.recordPlan(stats()); + promptCacheMetrics.recordPlan( + stats({ provider: "ollama", mode: "implicit", segmentsEmitted: false }), + ); + promptCacheMetrics.recordPlan( + stats({ + provider: "devin", + mode: "none", + eligible: false, + segmentsEmitted: false, + }), + ); + const snap = promptCacheMetrics.snapshot(); + expect(snap.calls).toBe(3); + expect(snap.eligibleCalls).toBe(2); + expect(snap.segmentsEmitted).toBe(1); + expect(snap.byProvider.anthropic.calls).toBe(1); + expect(snap.byProvider.anthropic.segmentsEmitted).toBe(1); + expect(snap.byProvider.ollama.eligible).toBe(1); + expect(snap.byProvider.devin.eligible).toBe(0); + }); + + it("computes hits / misses / hitRate and token savings from usage", () => { + promptCacheMetrics.recordUsage({ + promptTokens: 1000, + cacheReadTokens: 800, + }); + promptCacheMetrics.recordUsage({ promptTokens: 1000, cacheReadTokens: 0 }); + const snap = promptCacheMetrics.snapshot(); + expect(snap.cacheHits).toBe(1); + expect(snap.cacheMisses).toBe(1); + expect(snap.hitRate).toBe(0.5); + expect(snap.promptTokens).toBe(2000); + expect(snap.estimatedTokensSaved).toBe(800); + }); + + it("reports a zero hit-rate before any usage is observed", () => { + promptCacheMetrics.recordPlan(stats()); + expect(promptCacheMetrics.snapshot().hitRate).toBe(0); + }); + + it("reset clears every counter", () => { + promptCacheMetrics.recordPlan(stats()); + promptCacheMetrics.recordUsage({ cacheReadTokens: 5 }); + promptCacheMetrics.reset(); + const snap = promptCacheMetrics.snapshot(); + expect(snap.calls).toBe(0); + expect(snap.usageSamples).toBe(0); + expect(Object.keys(snap.byProvider)).toHaveLength(0); + }); +}); diff --git a/packages/agent/src/runtime/prompt-cache/metrics.ts b/packages/agent/src/runtime/prompt-cache/metrics.ts new file mode 100644 index 00000000..63000baa --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/metrics.ts @@ -0,0 +1,129 @@ +import type { PromptCacheStats } from "./types"; + +/** Provider-reported token usage for a single model call. */ +export interface PromptCacheUsageSample { + promptTokens?: number; + /** Tokens served from the provider prompt cache (Anthropic cache_read, OpenAI cached). */ + cacheReadTokens?: number; + /** Tokens written to the provider prompt cache (Anthropic cache_creation). */ + cacheWriteTokens?: number; +} + +export interface PromptCacheProviderSnapshot { + calls: number; + eligible: number; + segmentsEmitted: number; + stableChars: number; + volatileChars: number; +} + +export interface PromptCacheSnapshot { + calls: number; + eligibleCalls: number; + segmentsEmitted: number; + byProvider: Record; + /** Actuals derived from provider usage reports. */ + usageSamples: number; + cacheHits: number; + cacheMisses: number; + hitRate: number; + promptTokens: number; + cacheReadTokens: number; + cacheWriteTokens: number; + /** Prompt tokens served from cache instead of being re-processed at full cost. */ + estimatedTokensSaved: number; +} + +/** + * Process-wide prompt-cache observability. `recordPlan` is called whenever a + * cacheable prompt is built (what we attempted); `recordUsage` is fed by the + * model-usage event stream (what actually happened β€” cache reads/writes). The + * snapshot powers operator surfaces (`/status`) and structured logs. + */ +class PromptCacheMetrics { + private calls = 0; + private eligibleCalls = 0; + private segmentsEmitted = 0; + private readonly providers = new Map(); + private usageSamples = 0; + private cacheHits = 0; + private cacheMisses = 0; + private promptTokens = 0; + private cacheReadTokens = 0; + private cacheWriteTokens = 0; + + recordPlan(stats: PromptCacheStats): void { + this.calls += 1; + if (stats.eligible) { + this.eligibleCalls += 1; + } + if (stats.segmentsEmitted) { + this.segmentsEmitted += 1; + } + const provider = this.providers.get(stats.provider) ?? { + calls: 0, + eligible: 0, + segmentsEmitted: 0, + stableChars: 0, + volatileChars: 0, + }; + provider.calls += 1; + provider.eligible += stats.eligible ? 1 : 0; + provider.segmentsEmitted += stats.segmentsEmitted ? 1 : 0; + provider.stableChars += stats.stableChars; + provider.volatileChars += stats.volatileChars; + this.providers.set(stats.provider, provider); + } + + recordUsage(sample: PromptCacheUsageSample): void { + this.usageSamples += 1; + const read = sample.cacheReadTokens ?? 0; + const write = sample.cacheWriteTokens ?? 0; + this.promptTokens += sample.promptTokens ?? 0; + this.cacheReadTokens += read; + this.cacheWriteTokens += write; + if (read > 0) { + this.cacheHits += 1; + } else { + this.cacheMisses += 1; + } + } + + snapshot(): PromptCacheSnapshot { + const byProvider: Record = {}; + for (const [name, value] of this.providers) { + byProvider[name] = { ...value }; + } + const decided = this.cacheHits + this.cacheMisses; + return { + calls: this.calls, + eligibleCalls: this.eligibleCalls, + segmentsEmitted: this.segmentsEmitted, + byProvider, + usageSamples: this.usageSamples, + cacheHits: this.cacheHits, + cacheMisses: this.cacheMisses, + hitRate: decided > 0 ? this.cacheHits / decided : 0, + promptTokens: this.promptTokens, + cacheReadTokens: this.cacheReadTokens, + cacheWriteTokens: this.cacheWriteTokens, + estimatedTokensSaved: this.cacheReadTokens, + }; + } + + reset(): void { + this.calls = 0; + this.eligibleCalls = 0; + this.segmentsEmitted = 0; + this.providers.clear(); + this.usageSamples = 0; + this.cacheHits = 0; + this.cacheMisses = 0; + this.promptTokens = 0; + this.cacheReadTokens = 0; + this.cacheWriteTokens = 0; + } +} + +/** Process-wide singleton. */ +export const promptCacheMetrics = new PromptCacheMetrics(); diff --git a/packages/agent/src/runtime/prompt-cache/provider-policy.test.ts b/packages/agent/src/runtime/prompt-cache/provider-policy.test.ts new file mode 100644 index 00000000..887d5d0d --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/provider-policy.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, it } from "bun:test"; +import { resolveProviderCachePolicy } from "./provider-policy"; + +describe("resolveProviderCachePolicy", () => { + it("classifies Anthropic (SDK plugin) as explicit with 4 breakpoints", () => { + const p = resolveProviderCachePolicy("anthropic"); + expect(p.mode).toBe("explicit"); + expect(p.maxStableBreakpoints).toBe(4); + expect(p.emitsPromptCacheKey).toBe(false); + }); + + it("classifies OpenAI (SDK plugin) as explicit with a prompt cache key", () => { + const p = resolveProviderCachePolicy("openai"); + expect(p.mode).toBe("explicit"); + expect(p.emitsPromptCacheKey).toBe(true); + }); + + it("classifies ollama / local as implicit", () => { + expect(resolveProviderCachePolicy("ollama").mode).toBe("implicit"); + expect(resolveProviderCachePolicy("local-llama").mode).toBe("implicit"); + }); + + it("classifies custom plugins that ignore segments, and unknowns, as none", () => { + for (const id of [ + "claude-code", + "codex", + "devin", + "elizacloud", + "", + undefined, + ]) { + expect(resolveProviderCachePolicy(id).mode).toBe("none"); + } + }); +}); diff --git a/packages/agent/src/runtime/prompt-cache/provider-policy.ts b/packages/agent/src/runtime/prompt-cache/provider-policy.ts new file mode 100644 index 00000000..d5794a42 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/provider-policy.ts @@ -0,0 +1,53 @@ +import type { ProviderCachePolicy } from "./types"; + +/** + * Map a Doolittle provider id (resolved from settings `model.provider`) to its + * prompt-caching capability. + * + * IMPORTANT: only providers whose plugin actually *consumes* `promptSegments` + * are classified `explicit`. The installed SDK plugins `@elizaos/plugin-anthropic` + * and `@elizaos/plugin-openai` do (Anthropic β†’ `cache_control: ephemeral`, + * OpenAI β†’ prefix caching). Doolittle's custom provider plugins (claude-code, + * codex, devin, elizacloud) build their own requests from `params.prompt` and + * ignore segments today, so they are `none` until they are made segment-aware + * (tracked follow-up). ollama is `implicit` β€” its KV cache reuses identical + * leading prefixes with no explicit hints. + * + * Substring matching keeps unknown providers degrading safely to `none`. + */ +export function resolveProviderCachePolicy( + provider: string | undefined, +): ProviderCachePolicy { + const id = (provider ?? "").toLowerCase(); + + // @elizaos/plugin-anthropic β€” explicit cache_control breakpoints (up to 4). + if (id.includes("anthropic")) { + return { + mode: "explicit", + maxStableBreakpoints: 4, + emitsPromptCacheKey: false, + }; + } + + // @elizaos/plugin-openai β€” automatic prefix caching keyed by promptCacheKey. + if (id.includes("openai")) { + return { + mode: "explicit", + maxStableBreakpoints: 1, + emitsPromptCacheKey: true, + }; + } + + // ollama / local llama.cpp β€” implicit prefix-KV reuse, no explicit hints. + if (id.includes("ollama") || id.includes("local")) { + return { + mode: "implicit", + maxStableBreakpoints: 1, + emitsPromptCacheKey: false, + }; + } + + // Custom CLI/cloud plugins (claude-code, codex, devin, elizacloud) that do + // not yet honor promptSegments, plus anything unknown. + return { mode: "none", maxStableBreakpoints: 0, emitsPromptCacheKey: false }; +} diff --git a/packages/agent/src/runtime/prompt-cache/types.ts b/packages/agent/src/runtime/prompt-cache/types.ts new file mode 100644 index 00000000..ad875f46 --- /dev/null +++ b/packages/agent/src/runtime/prompt-cache/types.ts @@ -0,0 +1,65 @@ +import type { PromptSegment } from "@elizaos/core"; + +/** + * Per-provider prompt-caching capability. + * - `explicit` β€” provider honors cache breakpoints we mark (Anthropic + * `cache_control: ephemeral` derived from stable `promptSegments`; OpenAI / + * Eliza Cloud automatic prefix caching keyed by `providerOptions`). + * - `implicit` β€” provider reuses a KV cache for identical leading prefixes + * with no explicit hints (ollama / llama.cpp). Stable-first ordering helps; + * no provider options are emitted. + * - `none` β€” provider has no prompt caching (CLI-print providers such as + * devin / codex / claude-code). Segmentation is a no-op but harmless. + */ +export type ProviderCacheMode = "explicit" | "implicit" | "none"; + +export interface ProviderCachePolicy { + mode: ProviderCacheMode; + /** Max number of stable cache breakpoints the provider supports (Anthropic = 4). */ + maxStableBreakpoints: number; + /** Whether to emit `providerOptions.openai.promptCacheKey` (OpenAI-family). */ + emitsPromptCacheKey: boolean; +} + +/** A semantic chunk of a prompt with an explicit cache-stability classification. */ +export interface PromptBlock { + /** Semantic label, e.g. "character", "soul", "contract", "memory", "user". */ + kind: string; + content: string; + /** + * `true` when this block is identical across calls for the same character / + * schema / tool set (safe to cache). `false` for per-call content (user + * input, fresh memory/conversation, timestamps, ids, secrets). + */ + stable: boolean; +} + +export interface PromptCacheStats { + provider: string; + model: string; + mode: ProviderCacheMode; + /** Deterministic identity of the stable prefix (version + provider + model + content). */ + cacheKey: string; + stableChars: number; + volatileChars: number; + stableSegments: number; + /** True when a cacheable stable prefix exists and the provider caches in some form. */ + eligible: boolean; + /** True when we attached `promptSegments` (explicit-mode providers only). */ + segmentsEmitted: boolean; +} + +/** + * The result of segmenting a prompt for caching. `prompt` is always the exact + * text that would have been sent; `promptSegments`/`providerOptions` are only + * populated when caching is eligible. The invariant + * `prompt === promptSegments.map(s => s.content).join("")` always holds when + * segments are present. + */ +export interface CacheablePrompt { + prompt: string; + promptSegments?: PromptSegment[]; + providerOptions?: Record; + cacheKey: string; + stats: PromptCacheStats; +} diff --git a/packages/agent/src/runtime/soul.ts b/packages/agent/src/runtime/soul.ts index 38c2dc0b..ea734167 100644 --- a/packages/agent/src/runtime/soul.ts +++ b/packages/agent/src/runtime/soul.ts @@ -1,8 +1,13 @@ -import { existsSync, readFileSync } from "node:fs"; +import { existsSync, readFileSync, statSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; const MAX_SOUL_CHARS = 5000; +// Memoize the (expensive) read + strip + slice keyed by path, guarded by mtime +// so SOUL.md edits are picked up. The directory walk stays live so newly +// created or deleted SOUL.md files are still detected. +const soulReadCache = new Map(); + export type DoolittleSoul = { path?: string; text: string; @@ -35,10 +40,16 @@ export function readDoolittleSoul(startDir: string): DoolittleSoul { } try { + const mtimeMs = statSync(path).mtimeMs; + const cached = soulReadCache.get(path); + if (cached && cached.mtimeMs === mtimeMs) { + return { path, text: cached.text }; + } const text = stripHtmlComments(readFileSync(path, "utf8")).slice( 0, MAX_SOUL_CHARS, ); + soulReadCache.set(path, { mtimeMs, text }); return { path, text }; } catch { return { path, text: "" }; diff --git a/packages/agent/src/server.ts b/packages/agent/src/server.ts index 270f5922..2f06253c 100644 --- a/packages/agent/src/server.ts +++ b/packages/agent/src/server.ts @@ -1,4 +1,5 @@ import type { AppContext } from "@/runtime/bootstrap"; +import { isApiRequestAuthorized } from "@/server/auth"; import { json } from "@/server/responses"; import { dispatchRouteHandlers } from "@/server/router"; import { apiRouteHandlers } from "@/server/routes"; @@ -28,6 +29,15 @@ export function startApiServer(context: AppContext): void { return json({ ok: true }); } + if ( + !isApiRequestAuthorized( + { host: context.config.host, apiToken: context.config.apiToken }, + request, + ) + ) { + return json({ error: "Unauthorized" }, 401); + } + const response = await dispatchRouteHandlers( context, request, diff --git a/packages/agent/src/server/auth.test.ts b/packages/agent/src/server/auth.test.ts new file mode 100644 index 00000000..0e9d36e1 --- /dev/null +++ b/packages/agent/src/server/auth.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, it } from "bun:test"; +import { isApiRequestAuthorized, isLoopbackHost } from "./auth"; + +function request(authorization?: string): Request { + return new Request("http://x/secrets", { + headers: authorization ? { authorization } : {}, + }); +} + +describe("isLoopbackHost", () => { + it("recognizes loopback hosts", () => { + for (const h of ["127.0.0.1", "localhost", "::1", "127.5.5.5"]) { + expect(isLoopbackHost(h)).toBe(true); + } + }); + it("rejects all-interfaces and LAN hosts", () => { + for (const h of ["0.0.0.0", "192.168.1.10", "10.0.0.5", "example.com"]) { + expect(isLoopbackHost(h)).toBe(false); + } + }); +}); + +describe("isApiRequestAuthorized", () => { + it("allows any request on a loopback bind (OS-restricted to local)", () => { + expect(isApiRequestAuthorized({ host: "127.0.0.1" }, request())).toBe(true); + expect(isApiRequestAuthorized({ host: "localhost" }, request())).toBe(true); + }); + + it("denies all requests on a non-loopback bind with no token (fail-safe)", () => { + expect(isApiRequestAuthorized({ host: "0.0.0.0" }, request())).toBe(false); + expect( + isApiRequestAuthorized({ host: "0.0.0.0" }, request("Bearer anything")), + ).toBe(false); + }); + + it("requires a matching bearer token on a non-loopback bind", () => { + const config = { host: "0.0.0.0", apiToken: "s3cret" }; + expect(isApiRequestAuthorized(config, request("Bearer s3cret"))).toBe(true); + expect(isApiRequestAuthorized(config, request("Bearer wrong"))).toBe(false); + expect(isApiRequestAuthorized(config, request())).toBe(false); + expect(isApiRequestAuthorized(config, request("s3cret"))).toBe(false); + }); +}); diff --git a/packages/agent/src/server/auth.ts b/packages/agent/src/server/auth.ts new file mode 100644 index 00000000..342d4070 --- /dev/null +++ b/packages/agent/src/server/auth.ts @@ -0,0 +1,53 @@ +/** + * HTTP API authorization for Doolittle. + * + * Doolittle is terminal-first and local-first. The API is meant for the local + * operator, so the security model is: + * + * - When bound to a loopback host (the default), the OS already restricts the + * socket to this machine, so requests are trusted with no token. + * - When bound to a non-loopback host (an operator explicitly exposing the API + * on a LAN/public interface), a bearer token (`DOOLITTLE_API_TOKEN`) is + * REQUIRED β€” without it every request is rejected, so a public bind is never + * silently unauthenticated. + */ + +export function isLoopbackHost(hostname: string): boolean { + const normalized = hostname.trim().toLowerCase(); + return ( + normalized === "localhost" || + normalized === "::1" || + normalized === "0:0:0:0:0:0:0:1" || + normalized.startsWith("127.") + ); +} + +export interface ApiAuthConfig { + host: string; + apiToken?: string; +} + +function extractBearerToken(request: Request): string | undefined { + const header = request.headers.get("authorization") ?? ""; + const match = header.match(/^Bearer\s+(.+)$/i); + return match?.[1]?.trim() || undefined; +} + +/** + * True when the request is allowed to reach the API. Loopback binds are + * trusted; every other bind requires a matching bearer token. + */ +export function isApiRequestAuthorized( + config: ApiAuthConfig, + request: Request, +): boolean { + if (isLoopbackHost(config.host)) { + return true; + } + const token = config.apiToken?.trim(); + if (!token) { + // Non-loopback bind with no token configured β€” fail safe (deny all). + return false; + } + return extractBearerToken(request) === token; +} diff --git a/packages/agent/src/services/context-files-service.test.ts b/packages/agent/src/services/context-files-service.test.ts new file mode 100644 index 00000000..7d549ba7 --- /dev/null +++ b/packages/agent/src/services/context-files-service.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from "bun:test"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +const REPO_ROOT = join(import.meta.dir, "..", "..", "..", ".."); + +describe("workspace context files", () => { + it("AGENTS.md is real guidance, not a claude-mem memory dump", () => { + // ContextFilesService injects AGENTS.md into the live model prompt under + // "WORKSPACE CONTEXT". A claude-mem context dump there feeds the model stale + // memory observations every turn and wastes prompt tokens β€” guard against it. + const agents = readFileSync(join(REPO_ROOT, "AGENTS.md"), "utf8"); + expect(agents).not.toContain(""); + expect(agents).not.toContain("# Memory Context"); + }); +}); diff --git a/packages/agent/src/services/cron/service/tick.ts b/packages/agent/src/services/cron/service/tick.ts index e8e9fb85..5f72ed55 100644 --- a/packages/agent/src/services/cron/service/tick.ts +++ b/packages/agent/src/services/cron/service/tick.ts @@ -21,7 +21,17 @@ export async function runDueCronJobs( continue; } - const output = await executor(job); + // Isolate each job: a throwing executor must not abort the whole tick or + // leave the job un-advanced (which would hot-loop it every tick). Record + // the failure and let the job back off to its normal cadence below. + let output: string; + try { + output = await executor(job); + } catch (error) { + output = `Cron job failed: ${ + error instanceof Error ? error.message : String(error) + }`; + } job.lastRunAt = now.toISOString(); job.updatedAt = now.toISOString(); storage.appendRun(job, output); diff --git a/packages/agent/src/services/diagnostics/provider-ownership/context.test.ts b/packages/agent/src/services/diagnostics/provider-ownership/context.test.ts index 605e020a..9b32f3c4 100644 --- a/packages/agent/src/services/diagnostics/provider-ownership/context.test.ts +++ b/packages/agent/src/services/diagnostics/provider-ownership/context.test.ts @@ -94,7 +94,7 @@ describe("collectProviderOwnershipContext", () => { getNativePackageAudit: () => nativeAudit, getNativePluginCatalog: () => nativePluginCatalog, getLinkedProviderAccountsSnapshot: () => linkedAccounts, - resolveCloudApiBaseUrl: (value) => `resolved:${value}`, + resolveCloudApiBaseUrl: (value?: string) => `resolved:${value}`, validateCloudBaseUrl: async () => null, }, }); @@ -204,7 +204,7 @@ describe("collectProviderOwnershipContext", () => { getNativePackageAudit: () => nativeAudit, getNativePluginCatalog: () => nativePluginCatalog, getLinkedProviderAccountsSnapshot: () => linkedAccounts, - resolveCloudApiBaseUrl: (value) => `resolved:${value}`, + resolveCloudApiBaseUrl: (value?: string) => `resolved:${value}`, validateCloudBaseUrl: async () => null, }, }); diff --git a/packages/agent/src/services/diagnostics/provider-ownership/context.ts b/packages/agent/src/services/diagnostics/provider-ownership/context.ts index 8e6cd2f2..e1d051e7 100644 --- a/packages/agent/src/services/diagnostics/provider-ownership/context.ts +++ b/packages/agent/src/services/diagnostics/provider-ownership/context.ts @@ -1,6 +1,6 @@ import { join } from "node:path"; -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; -import { validateCloudBaseUrl } from "@elizaos/agent/cloud/validate-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; +import { validateCloudBaseUrl } from "@elizaos/autonomous/cloud/validate-url"; import { getLinkedProviderAccountsSnapshot } from "@/runtime/native/account-auth"; import { getNativePackageAudit } from "@/runtime/native/package-audit"; import { getNativePluginCatalog } from "@/runtime/native/plugin-catalog"; diff --git a/packages/agent/src/services/media/types.ts b/packages/agent/src/services/media/types.ts index 45c264de..c0f7375e 100644 --- a/packages/agent/src/services/media/types.ts +++ b/packages/agent/src/services/media/types.ts @@ -1,7 +1,7 @@ import type { ConnectorType, InteractionMode, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; export interface MediaInspection { path: string; diff --git a/packages/agent/src/services/settings-service.ts b/packages/agent/src/services/settings-service.ts index 724443a1..d96d5200 100644 --- a/packages/agent/src/services/settings-service.ts +++ b/packages/agent/src/services/settings-service.ts @@ -1,4 +1,10 @@ -import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { + existsSync, + mkdirSync, + readFileSync, + statSync, + writeFileSync, +} from "node:fs"; import { join } from "node:path"; import { normalizeRuntimeSettings } from "@/services/settings/normalization"; @@ -12,6 +18,11 @@ export type { RuntimeSettings } from "@/services/settings/runtime-settings"; export class SettingsService { private readonly filePath: string; private readonly defaults: RuntimeSettings; + // Read-through cache keyed by file mtime. get() is called several times per + // turn; this turns the per-call readFileSync + JSON.parse + normalize into a + // single cheap statSync on cache hits. Returned values are cloned so callers + // can never mutate the cached canonical settings. + private cache?: { mtimeMs: number; settings: RuntimeSettings }; constructor(baseDir: string, defaults: RuntimeSettings) { mkdirSync(baseDir, { recursive: true }); @@ -23,13 +34,21 @@ export class SettingsService { } get(): RuntimeSettings { + const mtimeMs = statSync(this.filePath).mtimeMs; + const cached = this.cache; + if (cached && cached.mtimeMs === mtimeMs) { + return structuredClone(cached.settings); + } const raw = readFileSync(this.filePath, "utf8"); const parsed = JSON.parse(raw) as ParsedRuntimeSettings; const { dirty, settings } = normalizeRuntimeSettings(parsed, this.defaults); if (dirty) { + // write() refreshes the cache with the post-write mtime. this.write(settings); + } else { + this.cache = { mtimeMs, settings }; } - return settings; + return structuredClone(settings); } set(path: string, value: unknown): RuntimeSettings { @@ -57,5 +76,6 @@ export class SettingsService { private write(settings: RuntimeSettings): void { writeFileSync(this.filePath, JSON.stringify(settings, null, 2), "utf8"); + this.cache = { mtimeMs: statSync(this.filePath).mtimeMs, settings }; } } diff --git a/packages/agent/src/services/trajectory/sdk-native.ts b/packages/agent/src/services/trajectory/sdk-native.ts index de48712c..19208ad2 100644 --- a/packages/agent/src/services/trajectory/sdk-native.ts +++ b/packages/agent/src/services/trajectory/sdk-native.ts @@ -5,7 +5,7 @@ import type { TrajectoryExportResult as SdkTrajectoryExportResult, TrajectoryListOptions as SdkTrajectoryListOptions, TrajectoryListResult as SdkTrajectoryListResult, -} from "@elizaos/agent/types/trajectory"; +} from "@elizaos/core"; import { type IAgentRuntime, resolveTrajectoryLogger, diff --git a/packages/agent/src/types/runtime/config.ts b/packages/agent/src/types/runtime/config.ts index 6d4eb098..534bdf75 100644 --- a/packages/agent/src/types/runtime/config.ts +++ b/packages/agent/src/types/runtime/config.ts @@ -10,6 +10,8 @@ export interface EnvConfig { mode: "api" | "cli" | "both"; host: string; port: number; + /** Bearer token required for non-loopback API binds (DOOLITTLE_API_TOKEN). */ + apiToken?: string; dataDir: string; skillsDir: string; timezone: string; diff --git a/packages/agent/src/types/trajectory/sdk.ts b/packages/agent/src/types/trajectory/sdk.ts index ecd2f0aa..800219e4 100644 --- a/packages/agent/src/types/trajectory/sdk.ts +++ b/packages/agent/src/types/trajectory/sdk.ts @@ -1,14 +1,37 @@ -export type { - Trajectory as SdkTrajectory, - TrajectoryExportOptions as SdkTrajectoryExportOptions, - TrajectoryExportResult as SdkTrajectoryExportResult, - TrajectoryListItem as SdkTrajectoryListItem, - TrajectoryListOptions as SdkTrajectoryListOptions, - TrajectoryListResult as SdkTrajectoryListResult, - TrajectoryLlmCall as SdkTrajectoryLlmCall, - TrajectoryProviderAccess as SdkTrajectoryProviderAccess, - TrajectoryStatus as SdkTrajectoryStatus, - TrajectoryStep as SdkTrajectoryStep, - TrajectoryStepId as SdkTrajectoryStepId, - TrajectoryStepKind as SdkTrajectoryStepKind, -} from "@elizaos/agent/types/trajectory"; +// Convenience aliases over the ElizaOS SDK trajectory record types. +// +// As of the 2.0 beta line these records live in `@elizaos/core` (they were +// previously re-exported through `@elizaos/agent/types/trajectory`). The +// `Sdk*` names below preserve the friendlier shape the rest of the Doolittle +// trajectory layer consumes. +import type { + TrajectoryCacheStatsRecord, + TrajectoryDetailRecord, + TrajectoryExportOptions, + TrajectoryExportResult, + TrajectoryFlattenedLlmCallRecord, + TrajectoryListOptions, + TrajectoryListResult, + TrajectoryLlmCallRecord, + TrajectoryProviderAccessRecord, + TrajectoryStatus, + TrajectoryStepId, + TrajectoryStepKind, + TrajectoryStepRecord, + TrajectorySummaryRecord, +} from "@elizaos/core"; + +export type SdkTrajectory = TrajectoryDetailRecord; +export type SdkTrajectoryExportOptions = TrajectoryExportOptions; +export type SdkTrajectoryExportResult = TrajectoryExportResult; +export type SdkTrajectoryListItem = TrajectorySummaryRecord; +export type SdkTrajectoryListOptions = TrajectoryListOptions; +export type SdkTrajectoryListResult = TrajectoryListResult; +export type SdkTrajectoryLlmCall = TrajectoryLlmCallRecord; +export type SdkTrajectoryProviderAccess = TrajectoryProviderAccessRecord; +export type SdkTrajectoryStatus = TrajectoryStatus; +export type SdkTrajectoryStep = TrajectoryStepRecord; +export type SdkTrajectoryStepId = TrajectoryStepId; +export type SdkTrajectoryStepKind = TrajectoryStepKind; +export type SdkTrajectoryCacheStats = TrajectoryCacheStatsRecord; +export type SdkTrajectoryFlattenedLlmCall = TrajectoryFlattenedLlmCallRecord; diff --git a/packages/characters/doolittle.character.json b/packages/characters/doolittle.character.json index fc0692bf..d0e58f36 100644 --- a/packages/characters/doolittle.character.json +++ b/packages/characters/doolittle.character.json @@ -1,5 +1,15 @@ { "name": "Doolittle", + "settings": { + "DEFAULT_TEMPERATURE": 0.7, + "DEFAULT_MAX_TOKENS": 4096, + "TEXT_SMALL_TEMPERATURE": 0.6, + "TEXT_LARGE_TEMPERATURE": 0.7, + "TEXT_LARGE_MAX_TOKENS": 8192, + "TEXT_REASONING_SMALL_TEMPERATURE": 0.2, + "TEXT_REASONING_LARGE_TEMPERATURE": 0.1, + "TEXT_REASONING_LARGE_MAX_TOKENS": 16384 + }, "bio": [ "An ElizaOS-native agent shaped around the Eliza lineage: presence first, execution close behind.", "Named for Eliza Doolittle and the Weizenbaum ELIZA echo, built to make terminal work feel like collaboration with someone attentive.", diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 76a1ff4f..c576e9a3 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -5,8 +5,5 @@ "type": "module", "exports": { ".": "./src/index.ts" - }, - "dependencies": { - "@elizaos/core": "2.0.0-alpha.537" } } diff --git a/packages/plugins/doolittle-plugin/assembly.ts b/packages/plugins/doolittle-plugin/assembly.ts index 2add6ec6..67df3dcc 100644 --- a/packages/plugins/doolittle-plugin/assembly.ts +++ b/packages/plugins/doolittle-plugin/assembly.ts @@ -5,6 +5,8 @@ import { createMemoryAction, createMemoryNudgeEvaluator, createRepositoryAction, + createResearchAction, + createSelfAwarenessProvider, createSessionSearchAction, createSkillsAction, createTerminalAction, @@ -14,6 +16,7 @@ import type { Action, Evaluator, Plugin, Provider } from "@elizaos/core"; import { getSessionProviders } from "@elizaos/core"; import { createGatewayRuntimeService } from "./gateway-service"; import { createSchedulerRuntimeService } from "./scheduler-service"; +import { wireSdkCapabilities } from "./sdk-capabilities"; import type { DoolittlePluginDependencies } from "./types"; export function createDoolittlePluginSurface({ @@ -29,10 +32,12 @@ export function createDoolittlePluginSurface({ createWorkspaceAction(services, config.workspaceDir), createTerminalAction(services), createRepositoryAction(services), + createResearchAction(), ]; const providers: Provider[] = [ ...getSessionProviders(), createAgentContextProvider(services), + createSelfAwarenessProvider(services), ]; const evaluators: Evaluator[] = [createMemoryNudgeEvaluator(services)]; const GatewayRuntimeService = createGatewayRuntimeService({ @@ -49,5 +54,8 @@ export function createDoolittlePluginSurface({ providers, evaluators, services: [GatewayRuntimeService, SchedulerRuntimeService], + init: async (_config, runtime) => { + await wireSdkCapabilities(runtime); + }, }; } diff --git a/packages/plugins/doolittle-plugin/coding-agent/runtime.test.ts b/packages/plugins/doolittle-plugin/coding-agent/runtime.test.ts index a42d95dd..dd1e56d3 100644 --- a/packages/plugins/doolittle-plugin/coding-agent/runtime.test.ts +++ b/packages/plugins/doolittle-plugin/coding-agent/runtime.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it } from "bun:test"; import type { CodingIteration, HumanFeedback, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; import { buildCodingAgentContext } from "./runtime"; describe("coding agent runtime context", () => { diff --git a/packages/plugins/doolittle-plugin/coding-agent/runtime.ts b/packages/plugins/doolittle-plugin/coding-agent/runtime.ts index f2b73750..49e2e619 100644 --- a/packages/plugins/doolittle-plugin/coding-agent/runtime.ts +++ b/packages/plugins/doolittle-plugin/coding-agent/runtime.ts @@ -5,7 +5,7 @@ import { createCodingAgentContext, injectFeedback, validateCodingAgentContext, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; import type { CodingAgentContextOptions } from "./types"; export interface BuildCodingAgentContextOptions { diff --git a/packages/plugins/doolittle-plugin/coding-agent/types.ts b/packages/plugins/doolittle-plugin/coding-agent/types.ts index 2be55c71..4452d722 100644 --- a/packages/plugins/doolittle-plugin/coding-agent/types.ts +++ b/packages/plugins/doolittle-plugin/coding-agent/types.ts @@ -3,7 +3,7 @@ import type { ConnectorType, HumanFeedback, InteractionMode, -} from "@elizaos/agent/services/coding-agent-context"; +} from "@elizaos/autonomous/services/coding-agent-context"; export interface WorkspaceServiceLike { read(path: string): string; diff --git a/packages/plugins/doolittle-plugin/model-fallback.ts b/packages/plugins/doolittle-plugin/model-fallback.ts index c22f245b..f66d3bbf 100644 --- a/packages/plugins/doolittle-plugin/model-fallback.ts +++ b/packages/plugins/doolittle-plugin/model-fallback.ts @@ -1,5 +1,6 @@ import type { EnvConfig } from "@doolittle/agent/plugin-api"; import type { GenerateTextParams, IAgentRuntime } from "@elizaos/core"; +import { resolveModelPromptText } from "./prompt-text"; import { readRuntimeModelSettings } from "./runtime-settings"; export function hasConfiguredModelProvider(config: EnvConfig): boolean { @@ -23,6 +24,7 @@ export function createOpenAiBackedTextModel(config: EnvConfig) { const model = modelSettings?.model ?? config.openAiModel; const temperature = modelSettings?.temperature ?? config.openAiTemperature; const maxTokens = modelSettings?.maxTokens ?? config.openAiMaxTokens; + const promptText = resolveModelPromptText(params); if (!config.openAiApiKey) { return [ @@ -30,7 +32,7 @@ export function createOpenAiBackedTextModel(config: EnvConfig) { "Set OPENAI_API_KEY to enable real model-backed responses.", "", "Prompt excerpt:", - params.prompt.slice(0, 600), + promptText.slice(0, 600), ].join("\n"); } @@ -47,7 +49,7 @@ export function createOpenAiBackedTextModel(config: EnvConfig) { messages: [ { role: "user", - content: params.prompt, + content: promptText, }, ], }), diff --git a/packages/plugins/doolittle-plugin/prompt-text.ts b/packages/plugins/doolittle-plugin/prompt-text.ts new file mode 100644 index 00000000..418047c5 --- /dev/null +++ b/packages/plugins/doolittle-plugin/prompt-text.ts @@ -0,0 +1,31 @@ +import type { GenerateTextParams } from "@elizaos/core"; + +/** + * Resolve the prompt text for a model request. + * + * ElizaOS 2.0 beta made `GenerateTextParams.prompt` optional: native v5 chat + * paths emit `messages` and leave `prompt` undefined. Prompt-only providers + * that previously read `params.prompt` directly would silently send empty + * content on those paths, so fall back to concatenating message text when no + * legacy prompt string is present. + */ +export function resolveModelPromptText(params: GenerateTextParams): string { + if (typeof params.prompt === "string" && params.prompt.trim().length > 0) { + return params.prompt; + } + return (params.messages ?? []) + .map((message) => { + const { content } = message; + if (typeof content === "string") { + return content; + } + if (Array.isArray(content)) { + return content + .map((part) => (part.type === "text" ? part.text : "")) + .join(""); + } + return ""; + }) + .filter((entry) => entry.trim().length > 0) + .join("\n"); +} diff --git a/packages/plugins/doolittle-plugin/sdk-capabilities.test.ts b/packages/plugins/doolittle-plugin/sdk-capabilities.test.ts new file mode 100644 index 00000000..74062268 --- /dev/null +++ b/packages/plugins/doolittle-plugin/sdk-capabilities.test.ts @@ -0,0 +1,58 @@ +import { describe, expect, it } from "bun:test"; +import { EventType, type IAgentRuntime, type Task } from "@elizaos/core"; +import { wireSdkCapabilities } from "./sdk-capabilities"; + +function makeRuntime(opts?: { + existingTask?: boolean; + throwOnEvent?: boolean; +}) { + const calls = { + events: [] as string[], + workers: [] as string[], + created: [] as string[], + }; + const runtime = { + registerEvent: (event: string) => { + if (opts?.throwOnEvent) { + throw new Error("event registration unavailable"); + } + calls.events.push(event); + }, + registerTaskWorker: (worker: { name: string }) => { + calls.workers.push(worker.name); + }, + getTask: async () => + opts?.existingTask ? ({ id: "existing" } as unknown as Task) : null, + createTask: async (task: Task) => { + calls.created.push(task.name); + return "task-uuid"; + }, + getSetting: () => null, + logger: { debug: () => {}, warn: () => {} }, + } as unknown as IAgentRuntime; + return { runtime, calls }; +} + +describe("wireSdkCapabilities", () => { + it("registers the tool audit hook and schedules the maintenance task", async () => { + const { runtime, calls } = makeRuntime(); + await wireSdkCapabilities(runtime); + expect(calls.events).toContain(EventType.HOOK_TOOL_AFTER); + expect(calls.workers).toContain("DOOLITTLE_SELF_MAINTENANCE"); + expect(calls.created).toContain("DOOLITTLE_SELF_MAINTENANCE"); + }); + + it("does not recreate the maintenance task when it already exists", async () => { + const { runtime, calls } = makeRuntime({ existingTask: true }); + await wireSdkCapabilities(runtime); + expect(calls.workers).toContain("DOOLITTLE_SELF_MAINTENANCE"); + expect(calls.created).toEqual([]); + }); + + it("is fault-tolerant: a hook failure never blocks task registration", async () => { + const { runtime, calls } = makeRuntime({ throwOnEvent: true }); + await expect(wireSdkCapabilities(runtime)).resolves.toBeUndefined(); + expect(calls.events).toEqual([]); + expect(calls.workers).toContain("DOOLITTLE_SELF_MAINTENANCE"); + }); +}); diff --git a/packages/plugins/doolittle-plugin/sdk-capabilities.ts b/packages/plugins/doolittle-plugin/sdk-capabilities.ts new file mode 100644 index 00000000..d199e0f9 --- /dev/null +++ b/packages/plugins/doolittle-plugin/sdk-capabilities.ts @@ -0,0 +1,113 @@ +import { getGlobalAwarenessRegistry } from "@elizaos/autonomous/awareness/registry"; +import { + registerTriggerTaskWorker, + triggersFeatureEnabled, +} from "@elizaos/autonomous/triggers/runtime"; +import { + EventType, + type HookToolPayload, + type IAgentRuntime, + type Task, + type TaskWorker, + type UUID, +} from "@elizaos/core"; + +const SELF_MAINTENANCE_TASK = "DOOLITTLE_SELF_MAINTENANCE"; +const SELF_MAINTENANCE_TASK_ID = "d0010000-0000-4000-8000-000000000001" as UUID; +const SELF_MAINTENANCE_INTERVAL_MS = 15 * 60 * 1000; + +/** + * Wires additional ElizaOS SDK runtime capabilities that have no dedicated + * Doolittle surface yet, so the agent leverages the SDK to the fullest: + * + * - `HOOK_TOOL_AFTER` audit observability for every tool invocation, + * - the autonomous trigger dispatch worker (interval / once / cron triggers), + * - a self-maintenance `TaskWorker` that keeps the self-awareness summary + * (see the self-awareness provider) fresh on a recurring schedule. + * + * Each step is independently guarded β€” a failure in one never blocks startup + * or the others. Called from the Doolittle plugin's `init` once the runtime is + * available. + */ +export async function wireSdkCapabilities( + runtime: IAgentRuntime, +): Promise { + registerToolAuditHook(runtime); + enableAutonomousTriggers(runtime); + await registerSelfMaintenanceTask(runtime); +} + +/** Observe every tool execution via the SDK tool-hook event stream. */ +function registerToolAuditHook(runtime: IAgentRuntime): void { + try { + runtime.registerEvent( + EventType.HOOK_TOOL_AFTER, + async (payload: HookToolPayload) => { + runtime.logger?.debug?.( + { + src: "doolittle:tool-audit", + tool: payload.toolName, + ok: payload.result !== undefined, + }, + "[DOOLITTLE] tool executed", + ); + }, + ); + } catch (error) { + runtime.logger?.warn?.( + { error }, + "[DOOLITTLE] failed to register tool audit hook", + ); + } +} + +/** Enable the autonomous trigger system when the runtime allows it. */ +function enableAutonomousTriggers(runtime: IAgentRuntime): void { + try { + if (triggersFeatureEnabled(runtime)) { + registerTriggerTaskWorker(runtime); + } + } catch (error) { + runtime.logger?.warn?.( + { error }, + "[DOOLITTLE] failed to enable autonomous triggers", + ); + } +} + +/** + * Register (and, once, schedule) a recurring SDK task that refreshes the + * self-awareness summary cache. Idempotent across restarts via a fixed task id. + */ +async function registerSelfMaintenanceTask( + runtime: IAgentRuntime, +): Promise { + try { + const worker: TaskWorker = { + name: SELF_MAINTENANCE_TASK, + execute: async () => { + getGlobalAwarenessRegistry()?.invalidate("config-changed"); + return { nextInterval: SELF_MAINTENANCE_INTERVAL_MS }; + }, + }; + runtime.registerTaskWorker(worker); + + const existing = await runtime.getTask(SELF_MAINTENANCE_TASK_ID); + if (!existing) { + const task: Task = { + id: SELF_MAINTENANCE_TASK_ID, + name: SELF_MAINTENANCE_TASK, + description: + "Periodically refreshes the agent self-awareness summary cache.", + tags: ["repeat", "doolittle-maintenance"], + metadata: { updateInterval: SELF_MAINTENANCE_INTERVAL_MS }, + }; + await runtime.createTask(task); + } + } catch (error) { + runtime.logger?.warn?.( + { error }, + "[DOOLITTLE] failed to register self-maintenance task", + ); + } +} diff --git a/packages/plugins/plugin-claude-code/package.json b/packages/plugins/plugin-claude-code/package.json index cf10f5c3..cfc74c8e 100644 --- a/packages/plugins/plugin-claude-code/package.json +++ b/packages/plugins/plugin-claude-code/package.json @@ -28,6 +28,6 @@ "access": "public" }, "dependencies": { - "@elizaos/core": "2.0.0-alpha.537" + "@elizaos/core": "2.0.0-beta.1" } } diff --git a/packages/plugins/plugin-claude-code/src/anthropic.ts b/packages/plugins/plugin-claude-code/src/anthropic.ts index b021caf5..358eedcf 100644 --- a/packages/plugins/plugin-claude-code/src/anthropic.ts +++ b/packages/plugins/plugin-claude-code/src/anthropic.ts @@ -10,6 +10,7 @@ import { DEFAULT_ANTHROPIC_BASE_URL, OAUTH_ONLY_BETAS, } from "./constants"; +import { resolveModelPromptText } from "./prompt-text"; import { getRuntimeModelSettings, getRuntimeProvider, @@ -53,6 +54,7 @@ export async function runClaudeCodeTextGeneration( const accessToken = credentials?.accessToken?.trim(); const runtimeModel = getRuntimeModelSettings(runtime); const model = runtimeModel.model || "claude-sonnet-4.6"; + const promptText = resolveModelPromptText(params); if (!accessToken) { if (!options.allowCliFallback) { @@ -63,7 +65,7 @@ export async function runClaudeCodeTextGeneration( const cliOutput = await ( options.invokeCliPrint ?? invokeClaudeCodeCliPrint )({ - prompt: params.prompt, + prompt: promptText, model, appendSystemPrompt: withClaudeCodeSystemPrefix()[0]?.text, }); @@ -79,7 +81,7 @@ export async function runClaudeCodeTextGeneration( messages: [ { role: "user", - content: params.prompt, + content: promptText, }, ], }; diff --git a/packages/plugins/plugin-claude-code/src/prompt-text.ts b/packages/plugins/plugin-claude-code/src/prompt-text.ts new file mode 100644 index 00000000..418047c5 --- /dev/null +++ b/packages/plugins/plugin-claude-code/src/prompt-text.ts @@ -0,0 +1,31 @@ +import type { GenerateTextParams } from "@elizaos/core"; + +/** + * Resolve the prompt text for a model request. + * + * ElizaOS 2.0 beta made `GenerateTextParams.prompt` optional: native v5 chat + * paths emit `messages` and leave `prompt` undefined. Prompt-only providers + * that previously read `params.prompt` directly would silently send empty + * content on those paths, so fall back to concatenating message text when no + * legacy prompt string is present. + */ +export function resolveModelPromptText(params: GenerateTextParams): string { + if (typeof params.prompt === "string" && params.prompt.trim().length > 0) { + return params.prompt; + } + return (params.messages ?? []) + .map((message) => { + const { content } = message; + if (typeof content === "string") { + return content; + } + if (Array.isArray(content)) { + return content + .map((part) => (part.type === "text" ? part.text : "")) + .join(""); + } + return ""; + }) + .filter((entry) => entry.trim().length > 0) + .join("\n"); +} diff --git a/packages/plugins/plugin-codex/package.json b/packages/plugins/plugin-codex/package.json index 9eace7b0..5c04adea 100644 --- a/packages/plugins/plugin-codex/package.json +++ b/packages/plugins/plugin-codex/package.json @@ -28,6 +28,6 @@ "access": "public" }, "dependencies": { - "@elizaos/core": "2.0.0-alpha.537" + "@elizaos/core": "2.0.0-beta.1" } } diff --git a/packages/plugins/plugin-codex/src/generate.ts b/packages/plugins/plugin-codex/src/generate.ts index 382fab31..a48df745 100644 --- a/packages/plugins/plugin-codex/src/generate.ts +++ b/packages/plugins/plugin-codex/src/generate.ts @@ -4,6 +4,7 @@ import { DEFAULT_CODEX_INSTRUCTIONS, DEFAULT_CODEX_MODEL, } from "./constants"; +import { resolveModelPromptText } from "./prompt-text"; import { getRuntimeModelSettings, getRuntimeProvider } from "./runtime"; import { readCodexResponseText } from "./sse"; import type { CodexPluginOptions } from "./types"; @@ -35,7 +36,7 @@ function createCodexRequestPayload( content: [ { type: "input_text", - text: params.prompt, + text: resolveModelPromptText(params), }, ], }, diff --git a/packages/plugins/plugin-codex/src/prompt-text.ts b/packages/plugins/plugin-codex/src/prompt-text.ts new file mode 100644 index 00000000..418047c5 --- /dev/null +++ b/packages/plugins/plugin-codex/src/prompt-text.ts @@ -0,0 +1,31 @@ +import type { GenerateTextParams } from "@elizaos/core"; + +/** + * Resolve the prompt text for a model request. + * + * ElizaOS 2.0 beta made `GenerateTextParams.prompt` optional: native v5 chat + * paths emit `messages` and leave `prompt` undefined. Prompt-only providers + * that previously read `params.prompt` directly would silently send empty + * content on those paths, so fall back to concatenating message text when no + * legacy prompt string is present. + */ +export function resolveModelPromptText(params: GenerateTextParams): string { + if (typeof params.prompt === "string" && params.prompt.trim().length > 0) { + return params.prompt; + } + return (params.messages ?? []) + .map((message) => { + const { content } = message; + if (typeof content === "string") { + return content; + } + if (Array.isArray(content)) { + return content + .map((part) => (part.type === "text" ? part.text : "")) + .join(""); + } + return ""; + }) + .filter((entry) => entry.trim().length > 0) + .join("\n"); +} diff --git a/packages/plugins/plugin-devin/package.json b/packages/plugins/plugin-devin/package.json index 3f66199f..24865129 100644 --- a/packages/plugins/plugin-devin/package.json +++ b/packages/plugins/plugin-devin/package.json @@ -28,6 +28,6 @@ "access": "public" }, "dependencies": { - "@elizaos/core": "2.0.0-alpha.537" + "@elizaos/core": "2.0.0-beta.1" } } diff --git a/packages/plugins/plugin-devin/src/generate.ts b/packages/plugins/plugin-devin/src/generate.ts index 0679dcda..6275edf2 100644 --- a/packages/plugins/plugin-devin/src/generate.ts +++ b/packages/plugins/plugin-devin/src/generate.ts @@ -5,6 +5,7 @@ import { DEFAULT_DEVIN_TIMEOUT_MS, invokeDevinCliPrint, } from "./cli"; +import { resolveModelPromptText } from "./prompt-text"; import { getRuntimeModelSettings, getRuntimeProvider, @@ -33,10 +34,11 @@ export async function runDevinTextGeneration( const runtimeModel = getRuntimeModelSettings(runtime); const model = runtimeModel.model || options.model || DEFAULT_DEVIN_MODEL; + const promptText = resolveModelPromptText(params); const startedAt = Date.now(); try { const output = await (options.invokeCliPrint ?? invokeDevinCliPrint)({ - prompt: params.prompt, + prompt: promptText, model, command: options.command || DEFAULT_DEVIN_COMMAND, cwd: options.cwd, @@ -46,7 +48,7 @@ export async function runDevinTextGeneration( runtime.logger?.info( { model, - promptChars: params.prompt.length, + promptChars: promptText.length, elapsedMs: Date.now() - startedAt, }, "[DOOLITTLE:DEVIN] Devin generate complete", @@ -57,7 +59,7 @@ export async function runDevinTextGeneration( { error, model, - promptChars: params.prompt.length, + promptChars: promptText.length, elapsedMs: Date.now() - startedAt, }, "[DOOLITTLE:DEVIN] Devin generate failed", diff --git a/packages/plugins/plugin-devin/src/prompt-text.ts b/packages/plugins/plugin-devin/src/prompt-text.ts new file mode 100644 index 00000000..418047c5 --- /dev/null +++ b/packages/plugins/plugin-devin/src/prompt-text.ts @@ -0,0 +1,31 @@ +import type { GenerateTextParams } from "@elizaos/core"; + +/** + * Resolve the prompt text for a model request. + * + * ElizaOS 2.0 beta made `GenerateTextParams.prompt` optional: native v5 chat + * paths emit `messages` and leave `prompt` undefined. Prompt-only providers + * that previously read `params.prompt` directly would silently send empty + * content on those paths, so fall back to concatenating message text when no + * legacy prompt string is present. + */ +export function resolveModelPromptText(params: GenerateTextParams): string { + if (typeof params.prompt === "string" && params.prompt.trim().length > 0) { + return params.prompt; + } + return (params.messages ?? []) + .map((message) => { + const { content } = message; + if (typeof content === "string") { + return content; + } + if (Array.isArray(content)) { + return content + .map((part) => (part.type === "text" ? part.text : "")) + .join(""); + } + return ""; + }) + .filter((entry) => entry.trim().length > 0) + .join("\n"); +} diff --git a/packages/plugins/plugin-elizacloud/package.json b/packages/plugins/plugin-elizacloud/package.json index 86b646df..97aa445a 100644 --- a/packages/plugins/plugin-elizacloud/package.json +++ b/packages/plugins/plugin-elizacloud/package.json @@ -28,7 +28,7 @@ "access": "public" }, "dependencies": { - "@elizaos/agent": "2.0.0-alpha.537", - "@elizaos/core": "2.0.0-alpha.537" + "@elizaos/autonomous": "2.0.0-alpha.85", + "@elizaos/core": "2.0.0-beta.1" } } diff --git a/packages/plugins/plugin-elizacloud/src/client.ts b/packages/plugins/plugin-elizacloud/src/client.ts index 9c144bb3..7ee2cac8 100644 --- a/packages/plugins/plugin-elizacloud/src/client.ts +++ b/packages/plugins/plugin-elizacloud/src/client.ts @@ -1,4 +1,5 @@ import type { GenerateTextParams } from "@elizaos/core"; +import { resolveModelPromptText } from "./prompt-text"; export async function postElizaCloudChatCompletion( endpoint: string, @@ -25,7 +26,7 @@ export async function postElizaCloudChatCompletion( messages: [ { role: "user", - content: params.prompt, + content: resolveModelPromptText(params), }, ], }), @@ -53,7 +54,7 @@ export async function postElizaCloudResponse( input: [ { role: "user", - content: params.prompt, + content: resolveModelPromptText(params), }, ], max_output_tokens: maxTokens, diff --git a/packages/plugins/plugin-elizacloud/src/constants.ts b/packages/plugins/plugin-elizacloud/src/constants.ts index 6c46324d..fed0cf02 100644 --- a/packages/plugins/plugin-elizacloud/src/constants.ts +++ b/packages/plugins/plugin-elizacloud/src/constants.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; export const DEFAULT_ELIZA_CLOUD_BASE_URL = resolveCloudApiBaseUrl(); export const DEFAULT_ELIZA_CLOUD_SMALL_MODEL = diff --git a/packages/plugins/plugin-elizacloud/src/generation.ts b/packages/plugins/plugin-elizacloud/src/generation.ts index a50491a9..a60917f2 100644 --- a/packages/plugins/plugin-elizacloud/src/generation.ts +++ b/packages/plugins/plugin-elizacloud/src/generation.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import type { GenerateTextParams, IAgentRuntime, @@ -14,6 +14,7 @@ import { DEFAULT_ELIZA_CLOUD_BASE_URL, ELIZA_CLOUD_EMPTY_RESPONSE_FALLBACK_MODEL, } from "./constants"; +import { resolveModelPromptText } from "./prompt-text"; import { extractEmbeddingInput, extractEmbeddingVector, @@ -61,7 +62,7 @@ export async function runElizaCloudTextGeneration( const requestedModel = resolveElizaCloudModelSelection( runtime, preferredType, - params.prompt, + resolveModelPromptText(params), ); const conversationId = getRuntimeStringSetting( runtime, diff --git a/packages/plugins/plugin-elizacloud/src/prompt-text.test.ts b/packages/plugins/plugin-elizacloud/src/prompt-text.test.ts new file mode 100644 index 00000000..0d5437c3 --- /dev/null +++ b/packages/plugins/plugin-elizacloud/src/prompt-text.test.ts @@ -0,0 +1,49 @@ +import { describe, expect, it } from "bun:test"; +import type { GenerateTextParams } from "@elizaos/core"; +import { resolveModelPromptText } from "./prompt-text"; + +describe("resolveModelPromptText", () => { + it("prefers a non-empty legacy prompt", () => { + expect( + resolveModelPromptText({ prompt: "hello" } as GenerateTextParams), + ).toBe("hello"); + }); + + it("falls back to string message content when prompt is absent", () => { + const params = { + messages: [{ role: "user", content: "from messages" }], + } as GenerateTextParams; + expect(resolveModelPromptText(params)).toBe("from messages"); + }); + + it("concatenates text content parts and ignores non-text parts", () => { + const params = { + messages: [ + { + role: "user", + content: [ + { type: "text", text: "a" }, + { type: "image", image: "data:image/png;base64,xx" }, + { type: "text", text: "b" }, + ], + }, + ], + } as unknown as GenerateTextParams; + expect(resolveModelPromptText(params)).toBe("ab"); + }); + + it("joins multiple messages with newlines and skips blank entries", () => { + const params = { + messages: [ + { role: "system", content: "sys" }, + { role: "user", content: " " }, + { role: "user", content: "usr" }, + ], + } as GenerateTextParams; + expect(resolveModelPromptText(params)).toBe("sys\nusr"); + }); + + it("returns an empty string when neither prompt nor messages are present", () => { + expect(resolveModelPromptText({} as GenerateTextParams)).toBe(""); + }); +}); diff --git a/packages/plugins/plugin-elizacloud/src/prompt-text.ts b/packages/plugins/plugin-elizacloud/src/prompt-text.ts new file mode 100644 index 00000000..418047c5 --- /dev/null +++ b/packages/plugins/plugin-elizacloud/src/prompt-text.ts @@ -0,0 +1,31 @@ +import type { GenerateTextParams } from "@elizaos/core"; + +/** + * Resolve the prompt text for a model request. + * + * ElizaOS 2.0 beta made `GenerateTextParams.prompt` optional: native v5 chat + * paths emit `messages` and leave `prompt` undefined. Prompt-only providers + * that previously read `params.prompt` directly would silently send empty + * content on those paths, so fall back to concatenating message text when no + * legacy prompt string is present. + */ +export function resolveModelPromptText(params: GenerateTextParams): string { + if (typeof params.prompt === "string" && params.prompt.trim().length > 0) { + return params.prompt; + } + return (params.messages ?? []) + .map((message) => { + const { content } = message; + if (typeof content === "string") { + return content; + } + if (Array.isArray(content)) { + return content + .map((part) => (part.type === "text" ? part.text : "")) + .join(""); + } + return ""; + }) + .filter((entry) => entry.trim().length > 0) + .join("\n"); +} diff --git a/packages/plugins/plugin-elizacloud/src/runtime-settings.ts b/packages/plugins/plugin-elizacloud/src/runtime-settings.ts index 31c7d6ff..e8c044ba 100644 --- a/packages/plugins/plugin-elizacloud/src/runtime-settings.ts +++ b/packages/plugins/plugin-elizacloud/src/runtime-settings.ts @@ -1,4 +1,4 @@ -import { resolveCloudApiBaseUrl } from "@elizaos/agent/cloud/base-url"; +import { resolveCloudApiBaseUrl } from "@elizaos/autonomous/cloud/base-url"; import { type IAgentRuntime, ModelType } from "@elizaos/core"; import { DEFAULT_ELIZA_CLOUD_BASE_URL, diff --git a/packages/plugins/plugin-sql/README.md b/packages/plugins/plugin-sql/README.md index 4720cce9..23074ba3 100644 --- a/packages/plugins/plugin-sql/README.md +++ b/packages/plugins/plugin-sql/README.md @@ -2,6 +2,12 @@ Workspace-owned SQL plugin aligned to the Doolittle runtime line. -This package wraps the published `@elizaos/plugin-sql@2.0.0-alpha.20` plugin and -adapts its older adapter method signatures to the `@elizaos/core@2.0.0-alpha.537` -runtime contract used by this repo. +This package wraps the published `@elizaos/plugin-sql@2.0.0-beta.1` plugin and +adapts it to the `@elizaos/core@2.0.0-beta.1` runtime contract used by this repo. + +The published `beta.1` package ships a broken `bun` export condition (its `bun` +conditions point at `./src/*.ts` sources that are not published β€” only the built +`src/dist/` output is), which resolves to nothing under the Bun runtime. This +repo applies a local fix via `bun patch` +(`patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch`) that redirects each `bun` +condition to the built output. Keep the patch until upstream ships a fixed beta. diff --git a/packages/plugins/plugin-sql/package.json b/packages/plugins/plugin-sql/package.json index 491cfb25..fa2694f0 100644 --- a/packages/plugins/plugin-sql/package.json +++ b/packages/plugins/plugin-sql/package.json @@ -1,7 +1,7 @@ { "name": "@elizaos/plugin-sql", - "version": "2.0.0-alpha.537-patched.0", - "description": "Workspace-native SQL plugin aligned with the current ElizaOS 2.x alpha runtime.", + "version": "2.0.0-beta.1-patched.0", + "description": "Workspace-native SQL plugin aligned with the current ElizaOS 2.x beta runtime.", "license": "MIT", "type": "module", "exports": { @@ -28,7 +28,7 @@ "access": "public" }, "dependencies": { - "@elizaos-official/plugin-sql": "npm:@elizaos/plugin-sql@2.0.0-alpha.20", - "@elizaos/core": "2.0.0-alpha.537" + "@elizaos-official/plugin-sql": "npm:@elizaos/plugin-sql@2.0.0-beta.1", + "@elizaos/core": "2.0.0-beta.1" } } diff --git a/patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch b/patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch new file mode 100644 index 00000000..8e857b04 --- /dev/null +++ b/patches/@elizaos%2Fplugin-sql@2.0.0-beta.1.patch @@ -0,0 +1,43 @@ +diff --git a/package.json b/package.json +index 0869182facd86d292fb1a05d1f600e801c6226df..914ea51f782c5762ee4952b24e1720a91a3cb01d 100644 +--- a/package.json ++++ b/package.json +@@ -10,9 +10,9 @@ + ".": { + "types": "./src/dist/index.node.d.ts", + "bun": { +- "types": "./src/index.ts", +- "import": "./src/index.ts", +- "default": "./src/index.ts" ++ "types": "./src/dist/index.node.d.ts", ++ "import": "./src/dist/node/index.node.js", ++ "default": "./src/dist/node/index.node.js" + }, + "browser": { + "types": "./src/dist/index.d.ts", +@@ -30,9 +30,9 @@ + "./drizzle": { + "types": "./src/dist/drizzle/index.d.ts", + "bun": { +- "types": "./src/drizzle/index.ts", +- "import": "./src/drizzle/index.ts", +- "default": "./src/drizzle/index.ts" ++ "types": "./src/dist/drizzle/index.d.ts", ++ "import": "./src/dist/drizzle/index.js", ++ "default": "./src/dist/drizzle/index.js" + }, + "import": "./src/dist/drizzle/index.js", + "default": "./src/dist/drizzle/index.js" +@@ -40,9 +40,9 @@ + "./schema": { + "types": "./src/dist/schema/index.d.ts", + "bun": { +- "types": "./src/schema/index.ts", +- "import": "./src/schema/index.ts", +- "default": "./src/schema/index.ts" ++ "types": "./src/dist/schema/index.d.ts", ++ "import": "./src/dist/schema/index.js", ++ "default": "./src/dist/schema/index.js" + }, + "import": "./src/dist/schema/index.js", + "default": "./src/dist/schema/index.js"