Skip to content

feat(ai): add Runcrate memory provider preset - #457

Merged
EyJunge1 merged 3 commits into
tickernelz:mainfrom
heydryft:feat/runcrate-provider
Oct 29, 2026
Merged

EyJunge1 merged 3 commits into
tickernelz:mainfrom
heydryft:feat/runcrate-provider

Conversation

@heydryft

Copy link
Copy Markdown
Contributor

Summary

Add an optional Runcrate memory provider preset using the existing OpenAI Chat Completions transport, following the merged presets in #420 and #432. Runcrate serves open models (DeepSeek, GLM, Qwen, Kimi, gpt-oss and others) over an OpenAI-compatible API.

  • memoryProvider: "runcrate": endpoint default https://api.runcrate.ai/v1, model default deepseek-ai/DeepSeek-V4.1-Flash, RUNCRATE_API_KEY fallback, explicit env:// key configuration, and a distinct runcrate session tag.
  • Factory, configuration validation, readiness detection, example/template, and all README languages updated.
  • Tests cover authentication, request serialization (tool_choice: "required"), tool response extraction, overrides, environment-key resolution, and rejection of remote-provider changes from project configuration.
  • No defaults change for existing users. Users opt in with their own key (created at https://www.runcrate.ai/dashboard/api-keys?utm_source=opencode-mem&utm_medium=directory&utm_campaign=gpu_pricing); the docs name the destination for conversation data (https://api.runcrate.ai).

Disclosure: I work on Runcrate.

Test plan

  • Exercised locally: real calls through RuncrateProvider.executeToolCall (config built by buildMemoryProviderConfig({ memoryProvider: "runcrate", memoryApiKey }), forced tool_choice: "required") returned save_memories tool data with success: true on deepseek-ai/DeepSeek-V4.1-Flash (the default), zai-org/GLM-5.3-Flash and Qwen/Qwen3.8-Flash. Example result: {"memories":["Prefers bun over npm as the package manager","Prefers tabs over spaces for indentation"]}. AIProviderFactory.createProvider("runcrate", ...) returned a RuncrateProvider.
  • No known limitations beyond those of other OpenAI-compatible presets.

Checklist

  • Branch is based on main (do not open PRs from commits already on main)
  • bun test passes: 975 pass, 4 skip, 0 fail across 133 files (after bun run build, which the plugin-loader contract tests need)
  • bun run typecheck passes (included in check)
  • bun run check passes (format + lint + typecheck)
  • Docs / README updated when behavior or contribution process changes

This PR was prepared with AI assistance: an AI coding agent wrote the change and ran the checks above.

@EyJunge1

EyJunge1 commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

@heydryft Pls fix the action issues

@heydryft

Copy link
Copy Markdown
Contributor Author

@EyJunge1 Looked into it. The four failures are not from this change. They all fail in npm install of the packed tarball with ETARGET No matching version found for @redis/json@6.3.1.

That package comes in transitively (@opencode/plugin > @opencode/util > @effect/platform-node > redis@6.3.1). redis@6.3.1 was published to npm at 09:18:49Z, but its @redis/json@6.3.1 dependency only at 09:23:16Z. The Linux and macOS jobs ran npm install between 09:22:09Z and 09:22:58Z, inside that gap. The Windows job is slower and installed after 09:23:16Z, which is why it passed. This PR does not touch package.json or bun.lock.

I re-ran the whole package smoke step locally on macOS (arm64, Node 24) against this branch: bun run build, npm pack, npm install --ignore-scripts of the tarball, then native-deps-smoke.mjs, verify-libsql-vector.mjs and smoke-test.mjs. All pass now that @redis/json@6.3.1 is on the registry.

I pushed an empty commit (55ac05f) to trigger a fresh run, since I can't re-run jobs here. The new Quality and Platform Package Smoke runs are waiting for workflow approval. Re-running the failed jobs of run 40820080040 would work too.

@EyJunge1
EyJunge1 merged commit 22d2cda into tickernelz:main Oct 29, 2026
7 checks passed
@EyJunge1 EyJunge1 mentioned this pull request Oct 29, 2026
6 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants