12 Commits
Author SHA1 Message Date
John Smith 8de5c45dd5 0.1.1 v0.1.1 2026-10-10 18:27:25 -04:00
John Smith 1447e5080f fix(release): bin path without ./ prefix so npm keeps the c4o binary
npm strips bin entries in ./ form ('bin[c4o] was invalid and removed').
Verified with npm publish --dry-run: zero warnings.
2026-10-10 18:27:02 -04:00
John Smith ee1944f0d4 chore(release): scope package as @heretek-ai/claude-4-opencode for org publishing 2026-10-10 18:23:14 -04:00
John Smith 99bb5930bf chore(release): 0.1.0, MIT license, OIDC trusted-publishing workflow
- version 0.0.1 -> 0.1.0, license MIT
- release.yml on v* tags with id-token:write, pinned actions
v0.1.0
2026-10-10 18:20:28 -04:00
BillyOutlast 82c73a224b Merge pull request #1 from Heretek-AI/plugin-compat-layer
feat: run Claude Code plugins and marketplaces on opencode v2
2026-10-10 17:16:34 -04:00
John Smith 370714248a fix(e2e): expect collision-free data dir encoding for probe plugin
probe@inline now maps to probe-40-inline via encodeDataName.
Derive expectation from dataDirectory() instead of hardcoding.
2026-10-10 17:12:36 -04:00
John Smith 2416c40405 fix: surgical remediation for review findings (command injection, git/install traversal, collisions, loader, hooks, workflows)
- commands: scan interpolations before args, shell-quote args, suffix after splice, backslash escapes
- git/marketplaces: ref/sha/url allowlists, -- separator, ext:: reject, shorthand guards
- installs/marketplace: version fallback + base containment, git-subdir validation + staging check
- marketplaces/paths/components: rename rejection, collision-free encodings, consistent MCP names
- plugin/installs: file-input handling, symlink skip + realpath check, per-plugin isolation
- hooks: failure feedback, shared SessionStart promise, transcript pre-check, allowedEnvVars, group kill
- tests/workflows: awaited rejects, sandbox kill, unique temps, pinned actions, drift concurrency
2026-10-10 17:10:43 -04:00
John SmithandClaude Opus 5.5 2f5266518c docs: add README, research notes and the compatibility report
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 16:46:28 -04:00
John SmithandClaude Opus 5.5 8b9f7b88fc ci: add unit, end-to-end, nightly and drift workflows
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 16:46:28 -04:00
John SmithandClaude Opus 5.5 f2e4c0f3f3 test(e2e): drive the real opencode binary with pinned marketplaces
Every tier runs opencode in a throwaway home directory against marketplaces pinned
in e2e/targets.lock.json.

- conformance: every entry of six marketplaces resolves and loads, and opencode
  lists every component
- golden: component names match what real Claude Code lists for the same plugins
  at the same commits (captured by e2e/oracle/capture.ts)
- scripted: a stub model exercises skills, commands, agents, MCP and hooks on a
  fixture plugin and on unmodified official plugins
- live: the same plugins with a real model, skipped without a provider key

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 16:46:28 -04:00
John SmithandClaude Opus 5.5 cbcf742755 feat: load Claude Code plugins and marketplaces into opencode v2
Adds the c4o CLI and the opencode plugin behind it.

- spec: readers for plugin.json, the standard plugin layout and marketplace.json,
  following the manifest and marketplace references
- store: marketplace add/update/remove and plugin install/enable/disable/uninstall,
  with git, git-subdir and marketplace.json-URL sources and Claude Code's naming rules
- translate: skills, commands, agents and MCP servers as opencode values, plus a
  report of what a plugin contributes and what cannot be carried over
- runtime: registers those with opencode v2 and runs command and http hooks for
  PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, Stop, SubagentStop and SessionEnd

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 16:46:28 -04:00
John SmithandClaude Opus 5.5 b8d6449bee chore: initialize repository
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 16:46:27 -04:00