goosed stdio MCPs do not inherit Portal env, so scheduled_task_create
always reported worker disabled even when H5_REMINDER_WORKER_ENABLED=1.
Forward worker flags in sandboxMcpEnvs and add a regression test.
Co-authored-by: Cursor <cursoragent@cursor.com>
Cross-repo publish order for memind-analytics, Portal, and memind_adm;
update platform and 105 operations docs for systemd artifact deploy.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prevent publication delivery from crashing when test or proxy requests omit
headers while attaching SEO/GEO discovery metadata.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat hollow requests like「我要做一个定时执行任务」as missing taskSpec so
WeChat preflight asks for both schedule and executable content instead of
accepting「执行」as a deliverable task description.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document Umami as the sole analytics platform, remove Rybbit proxy and
tracker code, and classify public page traffic with discovery_channel for
adm SEO/GEO dashboards.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend live verify wait budget to cover Agent execution timeout, use a
deterministic smoke taskSpec, and accept concise successful replies like
「验证成功」 instead of treating them as non-delivery.
Co-authored-by: Cursor <cursoragent@cursor.com>
Scheduled automations were saved but never executed because the worker
required an explicit env flag. Follow H5_REMINDER_WORKER_ENABLED when unset,
add WeChat preflight to write tasks deterministically, and surface worker
warnings on create.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reconcile now re-adds missing sandbox-fs before reply; update the dedicated
session test to assert add_extension and restart are invoked.
Co-authored-by: Cursor <cursoragent@cursor.com>
Agent runs quiesced stdio MCP extensions including sandbox-fs, but reconcile
skipped re-adding missing stdio extensions and treated absent listings as OK.
Preserve sandbox-fs across quiesce and re-add other required stdio extensions
on the next reconcile so generate_image and write_file stay available.
Co-authored-by: Cursor <cursoragent@cursor.com>
Write h5_usage_records when plan quota fully covers a session bill so
WeChat and H5 consumption stays visible in admin usage history.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow margin/FX/cost-mode knobs to be overridden via h5_billing_admin_config so memind_adm can adjust DeepSeek billing without editing env.
Co-authored-by: Cursor <cursoragent@cursor.com>
Umami creator labels read event_data.username; server events only sent
owner_label, so dashboards fell back to MindSpace UUID path segments.
Co-authored-by: Cursor <cursoragent@cursor.com>
When passive Recognition is empty, convert AMR to mp3 and call WeChat
addvoicetorecofortext before the existing asr.tkmind.cn fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Grant-only bonus adjustments cannot lower capacity below the stored plan
limit; admin set now updates period_images_limit when needed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Goosed GET /sessions/:id returns accumulated_cost null while memind_sessions
PG has the real upstream cost. Fall back to PG before token estimate billing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public generated pages were calling umami.identify(owner_id), collapsing
every visitor into the creator session. Anonymous visits now skip identify;
logged-in viewers identify with their own distinct id.
Co-authored-by: Cursor <cursoragent@cursor.com>
Record closure of feature/billing-session-cost-priority after merge to main
and 103 release 20260805-095542-44121df.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove per-user gray gates so WeChat MP always honors agentReplyTimeoutMs and enables Page Data Aider review when the feature flag is on.
Co-authored-by: Cursor <cursoragent@cursor.com>
103 production uses launchd goosed-native instead of Docker bind mounts;
fall back to kickstarting native services when docker compose is unavailable.
Co-authored-by: Cursor <cursoragent@cursor.com>