{
  "interval": {
    "intervalStart": "2026-04-09T00:00:00.000Z",
    "intervalEnd": "2026-04-10T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-04-09 to 2026-04-10, elizaos/eliza had 1 new PRs (1 merged), 0 new issues, and 4 active contributors.",
  "topIssues": [],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs7Qb6X5",
      "title": "Fix/toon action params",
      "author": "NubsCarson",
      "number": 6709,
      "body": "# Relates to\r\n\r\nn/a, found while testing milady's discord connector\r\n\r\n# Risks\r\n\r\nlow. both changes are additive. no api changes, no breaking changes.\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\ntwo related fixes in DefaultMessageService:\r\n\r\n1. **toon action params**: added a `params` field to the response schema so the LLM is asked to output action parameters in toon format. without this, actions with required params (like RUN_IN_TERMINAL's `command`) never get their values from connectors using toon. the xml path already extracts inline params, the toon path didn't because the schema never asked for them. prompts.ts already documents this format, schema field was the missing piece.\r\n\r\n2. **async action terminal set**: added CREATE_TASK, START_CODING_TASK, CODE_TASK, SPAWN_AGENT, and SPAWN_CODING_AGENT to shouldContinueAfterActions. these actions hand off to PTY sessions and complete async, the handler returns fast while real work runs in the background. without this the continuation loop fires repeatedly while the task runs, generating noisy filler responses on top of the actual final result.\r\n\r\n## What kind of change is this?\r\n\r\nbug fixes\r\n\r\n# Documentation changes needed?\r\n\r\nno, schema now matches the existing prompt template docs\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n`packages/typescript/src/services/message.ts`:\r\n- params field in schema (around line 1985)\r\n- terminalActions Set in shouldContinueAfterActions (around line 257)\r\n\r\n## Detailed testing steps\r\n\r\n**toon params bug:**\r\n1. set up an agent with a toon-encapsulation connector (discord, milady)\r\n2. register an action with required params (RUN_IN_TERMINAL)\r\n3. trigger via connector\r\n4. before fix: handler gets no params, action fails silently\r\n5. after fix: toon output includes `params: { RUN_IN_TERMINAL: { command: \"...\" } }`, handler runs\r\n\r\n**continuation loop bug:**\r\n1. trigger CREATE_TASK from plugin-agent-orchestrator via discord\r\n2. before fix: continuation fires every ~30s while PTY runs, spams filler responses\r\n3. after fix: loop terminates after CREATE_TASK, single clean result from synthesis\r\n\r\nend-to-end verified via discord on milady, task completes with one clean message.\r\n\r\n35/35 startup-coordinator tests pass, 9/9 onboarding tests pass.\r\n\r\n## Discord username\r\n\r\n1gig\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nFixes two bugs in `DefaultMessageService`: (1) adds a `params` field to the single-shot TOON schema so LLM responses on non-streaming connectors carry action parameters, and (2) adds `CREATE_TASK`, `START_CODING_TASK`, `CODE_TASK`, `SPAWN_AGENT`, and `SPAWN_CODING_AGENT` to the terminal-action set that suppresses post-action continuation loops. The PR also lands supporting changes: inline attachment handling and sanitization, a new `GenerateTextAttachment` type, deterministic prompt-name generation, a TOON utility module, and a large-scale migration of templates from XML to TOON format.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge; both fixes are additive with no breaking API changes, but a minor indentation defect in the param-repair block is worth cleaning up.\n\nBoth core bug fixes are logically sound and well-tested (tests pass). The `shouldContinueAfterActions` change correctly classifies async task actions as terminal. The `params` schema addition lands on the right path for non-streaming connectors. One P2 indentation issue in the repair code block does not affect runtime behavior. The wider template migration and deterministic-naming refactor are large but orthogonal to the stated fixes.\n\npackages/typescript/src/services/message.ts around lines 2267–2274 (indentation inconsistency in param-repair block)\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| packages/typescript/src/services/message.ts | Core bug fixes: adds `params` field to TOON schema and expands terminal action set; also adds inline attachment support. Minor indentation inconsistency in repair block. |\n| packages/typescript/src/utils/toon.ts | New utility providing TOON encode/decode helpers and `parseToonActionParams` for structured action parameter extraction. |\n| packages/typescript/src/utils/deterministic.ts | New utility replacing Math.random() with a seeded deterministic PRNG for reproducible prompt name generation. |\n| packages/typescript/src/prompts.ts | Refactored from XML to TOON prompt format across all templates; auto-generated from packages/prompts/prompts/*.txt. |\n| packages/typescript/src/actions.ts | Updated `parseActionParams` to accept `unknown` and try TOON format first; action examples switched to deterministic shuffling. |\n| packages/typescript/src/types/model.ts | New `GenerateTextAttachment` interface and `attachments` field on `GenerateTextParams` for multimodal support. |\n| packages/typescript/src/utils.ts | `parseKeyValueXml` now tries TOON before XML fallback; template compilation cached; names generated deterministically. |\n| packages/typescript/src/types/runtime.ts | Added `toon` as valid option for `preferredEncapsulation` and `forceFormat` in `dynamicPromptExecFromState`. |\n\n</details>\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Connector as Discord/Milady Connector\n    participant MsgSvc as DefaultMessageService\n    participant LLM as LLM (TEXT_LARGE)\n    participant Actions as Action Handler\n\n    Connector->>MsgSvc: handleMessage (no onStreamChunk)\n    Note over MsgSvc: preferredEncapsulation = \"toon\"\n    MsgSvc->>LLM: runSingleShotCore (schema includes params field)\n    LLM-->>MsgSvc: TOON response\\nparams: { RUN_IN_TERMINAL: { command: \"...\" } }\n    MsgSvc->>MsgSvc: parseActionParams(responseContent.params)\n    Note over MsgSvc: shouldContinueAfterActions?\n    alt action is CREATE_TASK / SPAWN_AGENT / etc.\n        Note over MsgSvc: terminalActions → return false (no loop)\n        MsgSvc->>Actions: execute action once\n        Actions-->>Connector: single clean result\n    else action is non-terminal\n        MsgSvc->>MsgSvc: continuation loop fires\n    end\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"fix: stop continuation loop after async ...\"](https://github.com/elizaos/eliza/commit/2676b1fc95e3c0bb6fb232ebe5e4e79101fd6ca0) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=27562392)</sub>\n\n> Greptile also left **1 inline comment** on this PR.\n\n<sub>(4/5) You can add custom instructions or style guidelines for the agent [here](https://app.greptile.com/review/github)!</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-07T09:02:10Z",
      "mergedAt": null,
      "additions": 3650,
      "deletions": 3460
    },
    {
      "id": "PR_kwDOMT5cIs7Q_-zH",
      "title": "feat(core): group addressee routing and anti-loop prompt guidance",
      "author": "odilitime",
      "number": 6712,
      "body": "Add NameVariationRegistry and evaluateGroupAddresseeOverride for non-LLM disambiguation in group rooms (reply threads and addressed-to-other).\r\n\r\nExtend shouldRespond flow with parent message author for replies, merge routing metadata from content, and sync basic-capabilities shouldRespond with the same options shape.\r\n\r\nTighten should_respond, should_respond_with_context, message_handler, and post_action_decision prompts for closure, IGNORE-only replies, and multi-party behavior; regenerate bundled prompts for TypeScript, Python, and Rust.\r\n\r\nUpdate DESIGN, README, CORE_CONCEPTS, and providers docs; add tests for registry utilities and message-service addressee paths.\r\n\r\nMade-with: Cursor\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Medium Risk**\n> Changes the core `shouldRespond` decision path and adds deterministic addressee resolution for group replies, which can alter when agents speak or stay silent in multi-party rooms. Prompt-template updates are broad (TS/Python/Rust) and may shift runtime behavior across deployments.\n> \n> **Overview**\n> Improves group-room addressee routing by adding a deterministic, non-LLM layer (`NameVariationRegistry` + `evaluateGroupAddresseeOverride`) that uses participant names plus optional adapter metadata (e.g. `replyToEntityId`) and parent-message author lookup to decide when to respond in reply threads or ignore messages aimed at other agents.\n> \n> Refactors `shouldRespond` to accept `ShouldRespondOptions` (including `parentMessageAuthorEntityId`), updates both the message service and `basic-capabilities` to disambiguate platform replies in group channels, and adds tests covering the new reply-thread and name-resolution behavior.\n> \n> Tightens shared prompt templates (`should_respond*`, `message_handler`, `post_action_decision`) with explicit closure/anti–ping-pong and multi-party brevity rules, updates the “no thinking” instruction wording, regenerates bundled prompts for TypeScript/Python/Rust, and updates docs to document reply/addressee metadata and remove the prior `ANXIETY` provider guidance.\n> \n> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 5ed5b1ec094bc27f7c202e06ac3c72039a7ef365. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR adds non-LLM group-room addressee routing via a new `NameVariationRegistry` and `evaluateGroupAddresseeOverride`, extends the `shouldRespond` flow with parent-message-author disambiguation for reply threads, and tightens all four decision prompts with closure, anti-loop, and multi-party guidance.\n\n- **P1 — `aliasEntity` breaks address resolution for agents with separate `entityId`/`agentId`**: `buildNameRegistryForRoom` calls `aliasEntity(agentId, entityId)` for each such agent, which adds `agentId` to every token's entry in `tokenToEntities`. Because `resolveSingleToken` returns `null` when `set.size > 1`, `checkAddressedTo` can never resolve a name for those agents, silently making `isAddressedToSelf` and `isAddressedToOther` both return `false` — the core feature this PR ships.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge after fixing the aliasEntity ambiguity bug; all other changes are additive prompt and type improvements.\n\nOne P1 logic bug: aliasEntity corrupts tokenToEntities for agents whose entityId ≠ agentId, silently disabling the primary feature this PR ships (non-LLM group addressee routing). The remaining findings are P2 (dead code). Score is 4 pending that fix.\n\npackages/typescript/src/utils/name-variation-registry.ts (aliasEntity + tokenToEntities logic)\n\n<details open><summary><h3>Vulnerabilities</h3></summary>\n\nNo security concerns identified. The new routing logic performs read-only entity lookups and string matching; no user-supplied input is executed or used in privileged operations. Metadata fields used for routing (`replyToEntityId`, `inReplyTo`, etc.) are validated as UUIDs before any lookup is attempted via `resolveUuid`.\n</details>\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| packages/typescript/src/utils/name-variation-registry.ts | New utility for fast addressee resolution; contains a P1 logic bug where aliasEntity adds alternateId to tokenToEntities, causing resolveSingleToken to return null for all agents with a separate entityId/agentId pair. |\n| packages/typescript/src/utils/addressee-resolution.ts | New group-room routing helpers; logic is sound but inherits the aliasEntity bug from the registry when agentId ≠ entityId; mergeMessageRoutingMetadata correctly guards against null values. |\n| packages/typescript/src/services/message.ts | Extends shouldRespond with parent-author disambiguation and evaluateGroupAddresseeOverride; ANXIETY provider removal and reply-to-other deferral to LLM are correct intentional changes. |\n| packages/typescript/src/prompts.ts | Adds closure/addressee/multi-party rules to shouldRespond templates and a new shouldRespondWithContextTemplate that is currently unused dead code. |\n| packages/typescript/src/basic-capabilities/index.ts | Syncs shouldRespond signature with MessageService (adds ShouldRespondOptions, group disambiguation) and adds SHOULD_RESPOND_BYPASS_TYPES/SOURCES as setting aliases. |\n| packages/typescript/src/types/message-service.ts | Adds ShouldRespondOptions interface and updates shouldRespond signature in IMessageService; clean, well-typed additions. |\n| packages/typescript/src/__tests__/name-variation-registry.test.ts | Tests basic registry operations but doesn't cover aliasEntity behaviour — the P1 bug would not be caught by the existing suite. |\n| packages/typescript/src/__tests__/message-service.test.ts | Adds two well-structured unit tests for group-reply disambiguation paths in shouldRespond; covers the happy paths correctly. |\n\n</details>\n\n<h3>Flowchart</h3>\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\nflowchart TD\n    A[Incoming message] --> B{Private channel?}\n    B -- yes --> C[shouldRespond original path]\n    B -- no --> D{mentionContext isReply?}\n\n    D -- yes --> E[fetchParentMessageAuthorEntityId]\n    E --> F[shouldRespondOptions set]\n    F --> G[shouldRespond]\n\n    D -- no --> G2[shouldRespond no options]\n\n    G --> H{parentAuthor == agentId?}\n    H -- yes --> I[skipEval=true respond=true]\n    H -- no key present --> J[skipEval=false respond=false]\n    H -- no options --> K[skipEval=true respond=true]\n\n    J --> L[evaluateGroupAddresseeOverride]\n    G2 --> L\n\n    L --> M[buildNameRegistryForRoom]\n    M --> N{isAddressedToSelf?}\n    N -- yes --> O[override respond=true]\n    N -- no --> P{isAddressedToOther?}\n    P -- yes --> Q[override respond=false]\n    P -- no --> R[no override]\n\n    R --> S{skipEval=false?}\n    S -- yes --> T[LLM evaluation]\n    S -- no --> U[Use decision directly]\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"feat(core): group addressee routing and ...\"](https://github.com/elizaos/eliza/commit/5ed5b1ec094bc27f7c202e06ac3c72039a7ef365) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=27810423)</sub>\n\n> Greptile also left **3 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-09T03:10:58Z",
      "mergedAt": null,
      "additions": 1030,
      "deletions": 79
    },
    {
      "id": "PR_kwDOMT5cIs7PtrTB",
      "title": "feat: add agent/ like starter in develop",
      "author": "odilitime",
      "number": 6702,
      "body": "just something to boot up the repo\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Medium Risk**\n> Medium risk because it introduces a new `agent` workspace and changes core runtime-composition APIs (`loadCharacters` accepts file paths/options; `createRuntimes` adds `checkShouldRespond`), which could affect downstream hosts; plus substantial dependency/lockfile churn from adding plugin submodules and local plugin workspaces.\n> \n> **Overview**\n> Adds a new `agent/` workspace providing a stdin/stdout REPL harness around `@elizaos/core`, including a default character, CLI flags (`--character`, `--log-level`), and a SQL-backed runtime setup via `@elizaos/plugin-sql`’s `createDatabaseAdapter`.\n> \n> Introduces a plugin-submodule local-dev workflow: `.gitmodules` now tracks `plugin-sql`, `plugin-ollama`, and `plugin-local-ai`, root workspaces include their `typescript/` packages, and new scripts (`scripts/dev.mjs`, `scripts/plugin-submodules-dev.mjs`, `plugin-submodules:restore`) automate linking/restoring submodules and workspace dependency rewrites.\n> \n> Extends `@elizaos/core` runtime composition by letting `loadCharacters` accept JSON file paths (with optional `cwd` for relative resolution) and by threading a new `checkShouldRespond` option through `createRuntimes`/`AgentRuntime`; adds tests covering file-path loading behavior. Updates root scripts to start/dev via the new agent harness and adjusts dependencies to use local `workspace:*` plugin builds, with corresponding `bun.lock` updates.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit b05d1ecbca04804f5267dad5c77b4f7ef27f0f81. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR introduces a developer harness (`agent/`) for booting up the elizaOS repo locally — a stdin/stdout REPL that loads a character, connects to a PGLite database via `@elizaos/plugin-sql`, and routes user input through `runtime.messageService`. It also adds three git submodules (`plugin-sql`, `plugin-ollama`, `plugin-local-ai`) under `plugins/`, a suite of workspace-management scripts (`dev.mjs`, `plugin-submodules-dev.mjs`, `fix-workspace-deps.mjs`), and new `runtime-composition` helpers (`loadCharacters`, `createRuntimes`, `getBasicCapabilitiesSettings`, `mergeSettingsInto`) with tests in `packages/typescript`.\n\n**Key issues found:**\n- The root `package.json` was committed with the plugin submodule workspace entries (`plugins/plugin-sql/typescript`, etc.) still present — according to the `plugin-submodules-dev.mjs` workflow these should be stripped before committing (`bun run plugin-submodules:restore`). On a fresh clone without submodules checked out, bun will encounter missing workspace directories.\n- `agent/package.json` declares these plugins as `workspace:*` but `bun.lock` records them as the `alpha` registry dist-tag, indicating the lockfile was generated before the workspace paths resolved — the two are out of sync.\n- In `agent/typescript/index.ts`, if `runtime.messageService` is not ready the code calls `break`, which permanently exits the REPL loop rather than skipping the current message with `continue`.\n- The `line === undefined || line === null` guard on line 279 is unreachable dead code — `readline/promises` either resolves to a `string` or throws, and the throw path is already handled by the inner try/catch above it.\n- A single `sqlAdapter` is constructed from the first (primary) character's settings and shared across all characters in `createRuntimes`; multi-character configs with different DB settings will silently use the primary character's database.\n\n<h3>Confidence Score: 2/5</h3>\n\nNot safe to merge as-is — the committed `package.json` and `bun.lock` are in an inconsistent state that will break fresh clones and CI installs.\n\nTwo P1 infrastructure issues: (1) the root `package.json` has submodule workspace entries that should have been stripped before committing, and (2) `agent/package.json` declares `workspace:*` for the submodule plugins while `bun.lock` records them as `alpha` registry deps — the lockfile and package manifest disagree. Together these will cause `bun install` failures or wrong resolutions on any machine that doesn't have the submodules initialised. The `messageService` break-vs-continue issue is also a behavioural bug in the harness itself.\n\n`package.json` (committed with submodule workspace paths), `agent/package.json` + `bun.lock` (workspace:* vs alpha mismatch), `agent/typescript/index.ts` (messageService break + unreachable null check).\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| agent/typescript/index.ts | New stdin/stdout REPL harness for @elizaos/core; has an unreachable null check on `line`, a breaking `messageService` guard that kills the session permanently, and a single shared adapter for all characters. |\n| agent/package.json | New workspace package for the harness; lists submodule plugins as `workspace:*` but bun.lock records them as the `alpha` registry tag — the lockfile was not regenerated after the workspace references were added. |\n| package.json | Root package.json committed with plugin submodule workspace paths already added; these should normally be stripped before committing (via `plugin-submodules:restore`) since submodules are not checked out on a fresh clone. |\n| scripts/dev.mjs | New root dev script that inits submodules, runs install if needed, builds plugin dist/ if missing, then starts the agent harness in watch mode — logic is clean and idempotent. |\n| scripts/plugin-submodules-dev.mjs | New script managing submodule linking/unlinking and workspace entries; dev/restore modes are well-structured and idempotent, though the restore step was not run before committing this PR. |\n| packages/typescript/src/__tests__/runtime-composition.test.ts | New unit tests for `getBasicCapabilitiesSettings`, `mergeSettingsInto`, `loadCharacters`, and `createRuntimes`; well-structured coverage for the runtime-composition module. |\n| packages/typescript/src/runtime-composition.ts | New exported `loadCharacters`, `getBasicCapabilitiesSettings`, `mergeSettingsInto`, and `createRuntimes` helpers for runtime host composition — well-documented with clear WHY comments. |\n\n</details>\n\n<h3>Flowchart</h3>\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\nflowchart TD\n    A[bun run dev] --> B[scripts/dev.mjs]\n    B --> C[plugin-submodules-dev.mjs]\n    C --> D{submodules present?}\n    D -- No --> E[git submodule update --init]\n    D -- Yes --> F[skip]\n    E --> G[ensureWorkspaces: add plugins to package.json]\n    F --> G\n    G --> H[removeSelfDependencies]\n    H --> I[fix-workspace-deps.mjs]\n    I --> J{bun install needed?}\n    J -- Yes --> K[bun install]\n    J -- No --> L[skip]\n    K --> M[build plugin dist/ if missing]\n    L --> M\n    M --> N[bun run --cwd agent dev]\n    N --> O[agent/typescript/index.ts]\n    O --> P[parseHarnessArgs]\n    P --> Q[loadCharacters]\n    Q --> R[mergeHarnessSqlPlugins]\n    R --> S[createDatabaseAdapter from primary character]\n    S --> T[createRuntimes with shared adapter]\n    T --> U[runtime.ensureConnection]\n    U --> V[stdin REPL loop]\n    V -- user input --> W[runtime.messageService.handleMessage]\n    W -- response --> X[stdout output]\n    X --> V\n    V -- exit/Ctrl+D --> Y[runtime.stop]\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"feat(dev): submodule plugins, idempotent...\"](https://github.com/elizaos/eliza/commit/b05d1ecbca04804f5267dad5c77b4f7ef27f0f81) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=27242938)</sub>\n\n> Greptile also left **6 inline comments** on this PR.\n\n<!-- /greptile_comment -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added a local development agent harness with interactive REPL for testing runtimes.\n  * Added support for loading character definitions from JSON files.\n  * Enhanced plugin management with development workflow scripts.\n\n* **Chores**\n  * Added agent package configuration supporting TypeScript, Python, and Rust.\n  * Updated workspace structure to integrate optional plugins.\n  * Updated plugin submodule references.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-03T03:14:37Z",
      "mergedAt": "2026-04-09T21:13:13Z",
      "additions": 961,
      "deletions": 3286
    }
  ],
  "codeChanges": {
    "additions": 962,
    "deletions": 3287,
    "files": 21,
    "commitCount": 10
  },
  "completedItems": [
    {
      "title": "feat: add agent/ like starter in develop",
      "prNumber": 6702,
      "type": "feature",
      "body": "just something to boot up the repo\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Medium Risk**\n> Medium risk because it introduces a new `agent` workspace and changes core runtime-composition APIs (`loadCharacters` accepts file paths/options;",
      "files": [
        ".gitmodules",
        "agent/.gitignore",
        "agent/package.json",
        "agent/python/__init__.py",
        "agent/rust/Cargo.toml",
        "agent/rust/src/lib.rs",
        "agent/tsconfig.json",
        "agent/typescript/defaultCharacter.ts",
        "agent/typescript/index.ts",
        "bun.lock",
        "package.json",
        "packages/computeruse/packages/computeruse-ts/package.json",
        "packages/typescript/src/__tests__/runtime-composition.test.ts",
        "packages/typescript/src/runtime-composition.ts",
        "plugins/plugin-local-ai",
        "plugins/plugin-ollama",
        "plugins/plugin-sql",
        "scripts/dev.mjs",
        "scripts/fix-workspace-deps.mjs",
        "scripts/plugin-submodules-dev.mjs",
        "scripts/replace-workspace-versions.js"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 43.9817738965761,
      "prScore": 43.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "0xSolace",
      "avatarUrl": "https://avatars.githubusercontent.com/u/257989456?u=e0d4e0c6385403319241eb46ba647b49083d4a05&v=4",
      "totalScore": 43.5437738965761,
      "prScore": 43.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "dutchiono",
      "avatarUrl": "https://avatars.githubusercontent.com/u/86275975?u=0d8badaa81aa47682651f87dc2d363837876de98&v=4",
      "totalScore": 19.333392986961755,
      "prScore": 19.333392986961755,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 9,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "up2itnow0822",
      "avatarUrl": "https://avatars.githubusercontent.com/u/220628848?u=122901ce09c43502713fd75c969aea3a88d5127b&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 1,
  "mergedPRs": 1,
  "newIssues": 0,
  "closedIssues": 0,
  "activeContributors": 4
}