Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d175b31207 |
@@ -11,6 +11,43 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## v1.2.2 — 2026-06-24
|
||||||
|
|
||||||
|
Patch release: pick up **pi `0.80.2`** (npm `latest`) and **mempalace `3.5.0`**,
|
||||||
|
and drop the now-obsolete `diary_write` schema workaround — the upstream fix
|
||||||
|
shipped.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- **mempalace pin `3.4.0` → `3.5.0`.** mempalace 3.5.0 carries the upstream
|
||||||
|
fix for the top-level-`anyOf` `diary_write` schema
|
||||||
|
([issue #1728](https://github.com/MemPalace/mempalace/issues/1728) /
|
||||||
|
[PR #1717](https://github.com/MemPalace/mempalace/pull/1717), merged
|
||||||
|
2026-06-14). The advertised schema is now `"required": ["agent_name"]` with
|
||||||
|
`entry`/`content` enforced at dispatch instead of via a root-level `anyOf`,
|
||||||
|
which Anthropic's tools API accepts. Verified against the published 3.5.0
|
||||||
|
wheel's `mcp_server.py` before removing the workaround.
|
||||||
|
- **pi `0.79.10` → `0.80.2`**, auto-resolved from npm `latest` at build time
|
||||||
|
(no pin in the repo; CI's `resolve-versions` job fetches it).
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- **The `diary_write` top-level-`anyOf` workaround in `Dockerfile.base`.** The
|
||||||
|
`perl` patch that rewrote the installed `mcp_server.py` (needed while
|
||||||
|
mempalace 3.3.x/3.4.0 advertised a top-level `anyOf` that Anthropic rejects,
|
||||||
|
failing tool registration at session start) is gone, since 3.5.0 fixes it at
|
||||||
|
the source. Keep `MEMPALACE_VERSION` in lockstep with opencode-devbox.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
- Unrelated to this release: a *stalled* `mempalace-mcp` (e.g. a slow virtiofs
|
||||||
|
cold-open of `chroma.sqlite3`) surfaces as `mempalace-mcp not available`
|
||||||
|
because the `mempalace.ts` extension's per-request timeout kills the child
|
||||||
|
and flips `available=false` until pi is restarted — this is the 2026-06-13
|
||||||
|
stall-protection behaving as designed, not the `anyOf` bug.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v1.2.1 — 2026-06-22
|
## v1.2.1 — 2026-06-22
|
||||||
|
|
||||||
Patch release: close the fork/recall + mempalace **under-utilisation gap** in
|
Patch release: close the fork/recall + mempalace **under-utilisation gap** in
|
||||||
|
|||||||
+13
-38
@@ -301,9 +301,16 @@ RUN ARCH=$(case "${TARGETARCH}" in amd64) echo "x86_64" ;; arm64) echo "aarch64"
|
|||||||
ARG INSTALL_MEMPALACE=true
|
ARG INSTALL_MEMPALACE=true
|
||||||
# Pin to a known-good version. Bump deliberately, not implicitly: an
|
# Pin to a known-good version. Bump deliberately, not implicitly: an
|
||||||
# unpinned install silently swept in mempalace 3.3.x/3.4.0 with a broken
|
# unpinned install silently swept in mempalace 3.3.x/3.4.0 with a broken
|
||||||
# diary_write schema (see workaround RUN below + issue #1728). Pinning
|
# diary_write schema. Pinning makes mempalace upgrades a reviewable diff
|
||||||
# makes mempalace upgrades a reviewable diff rather than a surprise.
|
# rather than a surprise.
|
||||||
ARG MEMPALACE_VERSION=3.4.0
|
#
|
||||||
|
# 3.5.0 (2026-06) ships the upstream fix for the top-level-anyOf diary_write
|
||||||
|
# schema (issue #1728 / PR #1717, merged 2026-06-14): the advertised schema
|
||||||
|
# is now `"required": ["agent_name"]` with entry/content enforced at dispatch,
|
||||||
|
# which Anthropic's tools API accepts — so the old mcp_server.py perl
|
||||||
|
# workaround that used to live below is gone. Keep in lockstep with
|
||||||
|
# opencode-devbox when bumping.
|
||||||
|
ARG MEMPALACE_VERSION=3.5.0
|
||||||
ENV UV_TOOL_DIR=/opt/uv-tools
|
ENV UV_TOOL_DIR=/opt/uv-tools
|
||||||
ENV UV_TOOL_BIN_DIR=/usr/local/bin
|
ENV UV_TOOL_BIN_DIR=/usr/local/bin
|
||||||
RUN if [ "${INSTALL_MEMPALACE}" = "true" ]; then \
|
RUN if [ "${INSTALL_MEMPALACE}" = "true" ]; then \
|
||||||
@@ -312,41 +319,9 @@ RUN if [ "${INSTALL_MEMPALACE}" = "true" ]; then \
|
|||||||
/opt/uv-tools/mempalace/bin/python -c "import mempalace; print('mempalace', mempalace.__version__ if hasattr(mempalace, '__version__') else 'installed')" ; \
|
/opt/uv-tools/mempalace/bin/python -c "import mempalace; print('mempalace', mempalace.__version__ if hasattr(mempalace, '__version__') else 'installed')" ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── workaround: strip top-level anyOf from mempalace_diary_write schema ──
|
# (The mempalace diary_write top-level-anyOf workaround that patched
|
||||||
# Mempalace 3.3.x/3.4.0 advertise diary_write's input_schema with a
|
# mcp_server.py here was removed in v1.2.2 — fixed upstream in mempalace
|
||||||
# top-level `anyOf: [{required:[entry]}, {required:[content]}]` to express
|
# 3.5.0 via issue #1728 / PR #1717 (merged 2026-06-14). See CHANGELOG.md.)
|
||||||
# "either entry or content must be supplied". Anthropic's tools API rejects
|
|
||||||
# top-level anyOf/oneOf/allOf, so pi/Claude fail at session start with
|
|
||||||
# `tools.<n>.custom.input_schema: input_schema does not support oneOf,
|
|
||||||
# allOf, or anyOf at the top level`.
|
|
||||||
#
|
|
||||||
# Patch the advertised schema to require ["agent_name", "entry"] and remove
|
|
||||||
# the anyOf block. The handler keeps accepting `content` server-side as a
|
|
||||||
# kwarg alias so existing callers still work.
|
|
||||||
#
|
|
||||||
# Idempotent and self-deactivating: once upstream releases the fix the
|
|
||||||
# regex no longer matches (and the WARN below fires) — that's the signal
|
|
||||||
# to delete this RUN.
|
|
||||||
# Upstream status (last checked 2026-06-14):
|
|
||||||
# issue #1728 — STILL OPEN (root-level anyOf rejected by Anthropic/Codex)
|
|
||||||
# PR #1735 — CLOSED UNMERGED 2026-06-11; do NOT watch it (dead)
|
|
||||||
# PR #1717 — open; the current live fix candidate to watch
|
|
||||||
# mempalace PyPI latest = 3.4.0 (== our pin) → no release contains the fix yet
|
|
||||||
# https://github.com/MemPalace/mempalace/issues/1728
|
|
||||||
# https://github.com/MemPalace/mempalace/pull/1717
|
|
||||||
# TODO: remove this RUN once a mempalace release > 3.4.0 that actually strips
|
|
||||||
# the root-level anyOf ships on PyPI and is installed by the line above.
|
|
||||||
# Keep MEMPALACE_VERSION in lockstep with opencode-devbox when bumping.
|
|
||||||
RUN if [ "${INSTALL_MEMPALACE}" = "true" ]; then \
|
|
||||||
MP_FILE="$(find /opt/uv-tools/mempalace -path '*/mempalace/mcp_server.py' | head -n1)" && \
|
|
||||||
if [ -z "$MP_FILE" ]; then echo "mempalace mcp_server.py not found" >&2; exit 1; fi && \
|
|
||||||
perl -0777 -i -pe 's/(?:[ \t]*\#[^\n]*\n)*[ \t]*"required":\s*\[\s*"agent_name"\s*\]\s*,\s*\n[ \t]*"anyOf":\s*\[\s*\n[ \t]*\{\s*"required":\s*\[\s*"entry"\s*\]\s*\}\s*,\s*\n[ \t]*\{\s*"required":\s*\[\s*"content"\s*\]\s*\}\s*,?\s*\n[ \t]*\]\s*,\s*\n/ "required": ["agent_name", "entry"],\n/s' "$MP_FILE" && \
|
|
||||||
if grep -q '"required": \["agent_name", "entry"\]' "$MP_FILE"; then \
|
|
||||||
echo "mempalace diary_write anyOf workaround: applied (or already clean)"; \
|
|
||||||
else \
|
|
||||||
echo "WARN: mempalace diary_write anyOf workaround did not match expected schema — upstream may have changed shape" >&2; \
|
|
||||||
fi ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ── mempalace-toolkit — bash wrappers for session/docs mining ────────
|
# ── mempalace-toolkit — bash wrappers for session/docs mining ────────
|
||||||
ARG INSTALL_MEMPALACE_TOOLKIT=true
|
ARG INSTALL_MEMPALACE_TOOLKIT=true
|
||||||
|
|||||||
Reference in New Issue
Block a user