The self-hosted macOS runner cannot run apt-get or install Linux-only Sharp
packages; gate CI on sqlite availability and platform-specific Sharp setup.
Also wait for ephemeral Express listen before fetch to avoid AUTH-08 flakes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop optional cover meta from the fixture and scope UI-08 console errors to
the final public-page view so chat /api/goals polling does not fail the gate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add period_images_bonus and ledger tracking, gate image_make on remaining quota,
expose admin image-quota routes, show remaining image quota in the balance popover,
and document that admin UI must live in memind_adm (5174) not ops.
Co-authored-by: Cursor <cursoragent@cursor.com>
Record that the branch core LLM router work is already on main and production,
and mark the stale branch as read-only to prevent merge or release reuse.
Co-authored-by: Cursor <cursoragent@cursor.com>
Collect request-scoped tool messages in the WeChat SSE stream, infer this
turn Page Data HTML via mtime when messages lack writes, and limit bind and
delivery smoke to those paths so historical already_bound pages cannot block new surveys.
Co-authored-by: Cursor <cursoragent@cursor.com>
Include already_bound auto-bind skips and request-scoped relative paths
when building Page Data delivery artifacts, so pre-bound survey pages are
verified and linked instead of failing the finish guard.
Co-authored-by: Cursor <cursoragent@cursor.com>
Tunnel agents can report spawn scheduled while the SSH forward is already
healthy; treating that as failure caused successful releases to roll back.
Co-authored-by: Cursor <cursoragent@cursor.com>
Historical workspace Page Data HTML was failing delivery smoke checks and
blocking new survey links from reaching WeChat users. Add a webhook scenario
test script for 103 regression runs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prevent chat-to-page flows like writing a poem then saying "做成页面吧" from opening
a fresh session without carried content, failing with a vague error, or letting Memory
page-template preferences replace the immediate topic.
Co-authored-by: Cursor <cursoragent@cursor.com>
Generate SVG/PNG sidecars at HTML delivery and after share-preview repair so
forwarded service-account links get a raster og:image when only meta exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Intent routing and reply content now both trigger HTML delivery: public links,
public/*.html paths, or html writes in the agent reply enable artifact recovery,
link attachment, and fail-closed when the claimed page is missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist formal replies when WeChat customer-service quota is exhausted,
claim them once on the next passive response, skip progress notices for
page generation, and suppress failure notices while a formal reply is pending.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip share-preview repair for tiny HTML fragments so sandbox write tests
and partial tool outputs stay unchanged while real pages still get metadata.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production WeChat delivery strips localPath from artifacts, so share-preview
auto-repair never wrote back to HTML. Resolve paths via publishDir +
relativePath, repair at materialize and delivery prep, and pass h5Root from
Portal so page.generate can patch missing meta before sending links.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pages with real HTML content but missing description, mindspace-cover, or
platform brand markers are patched in-place so WeChat link delivery no longer
fails after successful generation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip memory injection for short filler messages, demote page-workflow memory
pollution, keep scheduled automation off page.generate, and fail scheduled
tasks that only return clarification instead of deliverables.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add keyword fallback and dedupe for pgvector resolve, score personal vs episodic memories by relevance, record WeChat recall product events, and disable broken chatrecall on Postgres session storage.
Co-authored-by: Cursor <cursoragent@cursor.com>
Schedule LLM now binds an explicit provider key and fails closed on network errors so dead relay endpoints cannot block ordinary chat; relay bootstrap is opt-in only.
Co-authored-by: Cursor <cursoragent@cursor.com>
The admin page treated every section as enabled via section.enabled, but runtimeControl has no such field; derive status from agent resolve/injection/lifecycle flags and proxy runtime status from Portal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Give WeChat MP its own chat.general→page.generate LLM refinement layer with memindadm toggles, shadow mode, and canary openids so service account routing stays independent of the H5 chatIntentRouter.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip hot-adding stdio extensions goosed omits from /extensions, stabilize MCP
scope during session start, and wire chat intent routing into the agent-run worker.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist goal runs in MySQL, bind agent runs to checkpoints, expose awaiting-approval
UX in chat, and add admin inspection routes with local verify scripts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Finalize page delivery contracts after worker execution, fetch session messages via tkmindProxy, and append public page URLs to WeChat notifications.
Co-authored-by: Cursor <cursoragent@cursor.com>
Preserve local MindSpace URLs in assistant replies during architecture term redaction, and map db.mjs and skills-registry.mjs for impact selection.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce scheduled-task-automation for H5 and WeChat, persist tasks in h5_scheduled_tasks, and run due jobs via a dedicated worker that executes agent tasks and delivers results.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bundle vendored imgproxy with Mach-O dylibs for 103 launchd, fix install to exec the binary directly with launchctl enable, and document the live native release in the runtime topology.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document the completed Docker-to-native goosed pool cutover on 103, add the production migrate script with backup/rollback paths, and extend local native pool soak/metrics helpers used as migration gates.
Co-authored-by: Cursor <cursoragent@cursor.com>