Skip to content

Releases: equationalapplications/curated-thoughts-integrations

hermes v0.4.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:22
6ec6fe9
  • Fixed: scripts/install.sh honors a pre-set HERMES_HOME instead of
    silently resetting it to ~/.hermes. Profile-scoped installs
    (HERMES_HOME=~/.hermes/profiles/ct-test bash install.sh) previously
    overwrote the live default profile's plugin.

hermes v0.3.3

Choose a tag to compare

@github-actions github-actions released this 07 Oct 01:07
62b8760

First release since 0.2.2. It includes all changes from 0.3.0 through 0.3.3 (0.3.0–0.3.2 were never published separately).

0.3.3 — 2026-10-06

  • Fixed: the doctor's bundled-fallback spawn gate (issue #28). When a
    caller's env overrides PATH but that override fails to resolve the
    sidecar, discovery used to fall back to the ambient install locations and
    the probe then EXECUTED that ambient binary under the caller's env — on a
    test machine, the real installed sidecar ran against the fixture brain
    (the residual risk named in 0.3.1). run_checks now detects that
    combination (raw caller env has a PATH key; discovery reports the
    bundled source), warns on sidecar-binary, refuses to spawn
    (sidecar-mcp WARN), and withholds the path from the import-preflight
    engine lookup. A caller that overrides PATH deliberately and accepts the
    ambient install being probed under its env can opt out with
    CT_DOCTOR_ALLOW_BUNDLED=1 in the env. Callers that do not override
    PATH — including the real user with a bundled install and no PATH
    entry — are unaffected.
    Test-suite hardening in the same change: the mock sidecar fixture now has
    an absolute shebang, the shared helpers put ONLY the mock dir on PATH, and
    a setUp precondition asserts discovery resolves the mock (realpath
    check), so a broken fixture fails the suite instead of silently probing
    the real binary. ct_env gained SOURCE_PATH/SOURCE_BUNDLED/
    SOURCE_NONE constants; the issue #28 resolution rationale is at
    docs/superpowers/open-questions/2026-10-06-issue28-bundled-fallback-resolution.md.
  • Hardened the gate against the /code-review r4 findings (4 applied):
    the discriminator is now env.get("PATH") is not None (not "PATH" in env),
    aligning with _merged_env's documented None=ambient semantics — a caller
    that passes env={"PATH": None} (per _merged_env, "caller did not
    specify") no longer falsely trips the gate; bool(env) collapsed to
    env is not None to match the gate's own view; find_sidecar is now
    called with the raw caller env (its wrapper re-merges), removing one
    redundant dict copy + filter pass per check; and check_version_compat
    short-circuits to a single PASS line when gated so a third WARN cannot
    dilute the actionable hint on a PATH-override defect. Pinned by three
    new tests (PATH=None no-gate; gated version-compat stays PASS; caller-env
    HERMES_CONFIG cannot override the import-time module constant).

0.3.2 — 2026-10-06

  • Fixed: the doctor's env-reading checks (check_brain_dir,
    check_vault, check_embedding, check_import_preflight) read ambient
    os.environ even when the caller passed an env — a caller using the
    merged env view got brain directories, embedding-key verdicts, and the
    engine-manifest lookup resolved from a different environment than the
    one it asked about (issue #29; follow-up to the #14 fix). Every
    env-reading check now accepts env and resolves through the same merged
    view, and run_checks threads its merged env into all of them.
    Ambient-only callers (ct_doctor check) see no behavior change.
  • Changed: the MCP probe's clientInfo version is now derived from
    plugin.yaml at call time instead of a hard-coded literal that had
    drifted to 0.2.0; a missing manifest degrades to 0.0.0-unknown rather
    than crashing. Ambient-only reading of HERMES_CONFIG in check 7 is now
    documented as deliberate (the Hermes config is a property of the host
    install, not of the probed environment). (GLM 5.3 independent review of
    this PR, 2026-10-06 — all findings adjudicated, none Critical/Important.)

0.3.1 — 2026-10-06

  • Fixed: run_checks discovered the sidecar from the ambient os.environ
    PATH even when callers passed an env whose PATH pointed elsewhere — so
    on machines with a real installed sidecar, the real binary was probed (and
    its startup migration ran) against whatever brain the caller's environment
    pointed at, including test fixture brains (issue #14; the read-only and
    self-test failures on sidecar-equipped machines). Discovery, brain-path
    resolution, and the spawn now all use the same merged env view
    (os.environ overlaid with the caller's env, matching
    subprocess.run(env=...)). Regression test: poison sidecar on the ambient
    PATH must never run when an env PATH override is supplied. Residual risk
    (bundled-path fallback reaching a real sidecar when the env-PATH mock is
    absent) is tracked in issue #28.

0.3.0 — 2026-09-30

  • New system-prompt section curated-thoughts-wisdom that recalls the wisdom
    layer at session start and injects a short (max 2500 chars) digest of
    relevant procedures and facts, alongside the existing health section. The
    recall runs through the installed ct CLI with a seed query widened by the
    session's working directory; results are memoized per session id (LRU,
    256 sessions) in the ct_wisdom module so re-renders within a session are
    byte-identical and free.
  • Known v1 limitations: (1) a restored session — including an in-process
    /branch, and /resume after the Hermes process restarted — receives its
    persisted prompt bytes back without a recall and its new id starts with an
    empty memo, so the first compression afterwards re-recalls and the block may
    change; (2) legacy non-in-place compression rotates the session id, which
    can trigger one extra recall after compaction; (3) live sessions beyond the
    256-slot memo window evict each other and re-recall.
  • Graceful no-op: when Curated Thoughts is not installed or the brain is
    unreachable, the section silently renders empty — no errors, no prompt
    noise, sessions never block on it.

deepseek v0.3.0

Choose a tag to compare

@equationalapplications equationalapplications released this 01 Oct 02:14
886d469

New system-prompt section: wisdom auto-inclusion. Once per agent, the
plugin recalls the brain's wisdom layer via the standalone ct CLI
(ct recall --json --k 3) and renders a sanitized digest (max 2500 chars) as
a curated-thoughts-wisdom prompt section. Memoized per agent id, so host
re-renders at compression boundaries are byte-identical.

The section is a no-op when the ct binary is absent or not identifiable,
when the brain has no wiki wisdom, or when the backend times out. Failure
handling is budgeted: two recall attempts per agent (≥ 60 s apart), then the
agent's block stays absent for the process; a process-wide circuit breaker
(four consecutive failures → five-minute open, one half-open probe) bounds
the worst case.

Limitations (v1): (1) after a harness restart on a resumed session the
memo is cold — the first step re-recalls and the block may change bytes once;
(2) the same one-time cost applies if the first recall attempt fails
transiently and a later render succeeds; (3) memo eviction beyond 256 live
agents per process; (4) when the ct backend is down, a session stops trying
after two failed attempts (its block stays absent for the session's life in
that process); (5) while the backend is down, the harness may pause briefly
(seconds) on recall attempts, bounded per process by the retry budget +
circuit breaker. Set CT_WISDOM_DEBUG=1 to emit a per-render diagnostic line
on stderr.

opencode v0.1.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:26
2e3ecb1

Initial release. OpenCode plugin wires the Curated Thoughts MCP sidecar,
registers a bounded health snapshot in the system prompt (refreshed once per
session via the system transform), and ships three skills ported from Hermes
(curated-thoughts-usage, curated-thoughts-ops, curated-thoughts-sidecar).
Ships a ct_doctor.ts, a provenance pre-flight (ct_preflight.ts), and a
preview-first POSIX install.sh that stages the payload, loader file, skills,
and the mcp entry in opencode.json. Delivered as a GitHub release tarball
(opencode-v<version>); no npm publish.

deepseek v0.2.2

Choose a tag to compare

@github-actions github-actions released this 18 Sep 23:05
de9c666

Fix empty-string fallback in brain-dir resolution. ?? operators in
cordis.patch.yml treated an empty HOME or USERPROFILE as a set value,
producing /.brain at the filesystem root. Both environment rows now use
?? with a literal ~ fallback so the sidecar refuses the path explicitly
rather than silently opening /.brain.

deepseek v0.2.1

Choose a tag to compare

@github-actions github-actions released this 18 Sep 20:16
2353032

Restore executable bits on shell scripts; fix empty HOME/USERPROFILE handling in
bundle patch and expandHome; update test to assert actual homedir() fallback.

deepseek v0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 18:12
059d806

Fixed against DeepSeek Harness 0.1.5-rc.2 (container-verified end to end —
see the e2e harness below). 0.1.2 was never tagged or released because its
plugin could not load on current DSH at all; this release supersedes it, and
0.1.2's census change is included here. Minor bump: the install procedure
changed.

  • Load failure fixed. The plugin used ctx.plugin(string, ...), which
    cordis rejects (invalid plugin ... received string), never declared the
    inject services (crash: cannot get property "systemPrompt" without inject), and passed a non-finite prompt-context order (crash: prompt context "undefined" order must be a finite number). The MCP client is now
    mounted declaratively via a shipped bundle patch; the plugin declares
    inject = ['systemPrompt', 'skills']; the prompt context is registered as
    { name, order: 130, text }.
  • Install rewritten. The old installer appended blocks to
    $DSH_HOME/cordis.yml, which DSH never reads, and DSH ignores bare
    - name: rows in patch files — so installing did nothing. The package now
    ships cordis.patch.yml declared via package.json dsh.bundle.patch, and
    install.sh --profile <name> packs the package and installs it with
    dsh plugin --profile <name> add <tarball>. --profile is required;
    DSH composes per profile and has no global plugin list.
  • Doctor no longer crashes from the release tarball. ct_preflight.ts
    imported better-sqlite3 statically; the tarball ships no node_modules, so
    ct_doctor check died at import. It now loads lazily and degrades the
    census check to WARN, mirroring the OpenCode integration.
  • The doctor's dsh-registration check now inspects profile installs.
    It scanned $DSH_HOME/cordis.yml, which DSH never reads, and so failed
    every correct install. It now reports which profiles have the package
    installed — installation being what activates the bundle patch.
  • Brain path handling. The sidecar does not expand a leading ~
    (verified: it treats ~/.brain as a relative path and exits), so the MCP
    row resolves CURATED_BRAIN_DIR at composition time (ambient value wins,
    else $HOME/.brain), and the plugin expands ~ itself before probing.
  • New e2e harness (tests/e2e/): Docker-based, container-verified
    against DSH 0.1.5-rc.2 (pinned in tests/host/compatibility.json), sharing
    its base image with the OpenCode harness.

hermes v0.2.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 20:44
7083706
  • import-preflight no longer counts soft-deleted llm_wiki_entries rows as
    live damage. The census is now scoped to rows with deleted_at IS NULL when
    that column exists, so retained issue-#186 corpses can no longer flip a
    healthy brain to FAIL. Soft-deleted rows are reported separately in the
    PASS/WARN detail as informational context. On brains with no deleted_at
    column the behavior is unchanged.

hermes v0.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Sep 23:06
dc327c0
  • Clarify the import pre-flight damage detection rule in the ops skill:
    detection applies to non-NULL source_ref values only, which the
    previous wording did not make explicit.

deepseek v0.1.1

Choose a tag to compare

@github-actions github-actions released this 09 Sep 23:06
dc327c0

Security: bump devDependencies to clear 9 Dependabot alerts in
integrations/deepseek/ (vitest 2.1.9 → 4.1.11, vite 5.4.21 → 6.4.3,
esbuild 0.21.5 → 0.25.0). No shipped-code behaviour changes — tests,
build, and typecheck all still pass. See PR #11 for the full advisory
mapping.