Skip to content

fix(build): rebuild bridge.cjs when any TypeScript source is newer#1850

Open
chiefmojo wants to merge 8 commits into
MemTensor:mainfrom
chiefmojo:pr/build-migration-fixes
Open

fix(build): rebuild bridge.cjs when any TypeScript source is newer#1850
chiefmojo wants to merge 8 commits into
MemTensor:mainfrom
chiefmojo:pr/build-migration-fixes

Conversation

@chiefmojo

Copy link
Copy Markdown

Summary

Two independent fixes: stale-build detection and a migration 008 idempotency correction.

1. Rebuild dist/bridge.cjs when any .ts source is newer

Previously the rebuild check in daemon_manager.py only compared bridge.cts mtime against dist/bridge.cjs. Changes to core/**/*.ts (e.g. memory-core.ts, reward.ts) did not trigger an auto-rebuild on gateway restart, so a plugin update that only touched core files would silently run stale compiled output until manually rebuilt.

Fix: _rebuild_if_stale() now walks all .ts files under the plugin root and compares the newest mtime against the compiled binary.

2. Remove duplicate ALTER TABLE statements from migration 008

All columns added by 008-feedback-experience-metadata were backported into 001-initial.sql. The ALTER TABLE statements in 008 now fail with "column already exists" on fresh database installs. Keeps only the idempotent CREATE INDEX lines which are safe to re-run.

Test plan

  • Fresh install: migration 008 runs without error on a new database
  • Modified core/reward/reward.ts then gateway restart: _rebuild_if_stale() detects the newer source and triggers npm run build
  • No source changes: _rebuild_if_stale() returns True without rebuilding

🤖 Generated with Claude Code

chiefmojo and others added 2 commits May 31, 2026 18:38
All columns added by 008-feedback-experience-metadata were backported into
001-initial.sql; the ALTER TABLE statements now fail on fresh DBs. Keeps
only the idempotent CREATE INDEX lines.

Also fix scripts/replay.py bridge_client import path (adapters/ is under
apps/memos-local-plugin/, not the repo root) and add
scripts/export-state-sessions.py for exporting state.db sessions to JSON
files compatible with replay.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
_rebuild_if_stale() only checked bridge.cts mtime, so changes to
core/**/*.ts (e.g. memory-core.ts) didn't trigger an auto-rebuild on
gateway restart. Walk all .ts files under plugin_root and compare the
newest mtime against the compiled binary instead.
@Memtensor-AI Memtensor-AI changed the base branch from main to dev-20260604-v2.0.19 June 10, 2026 15:43
Memtensor-AI and others added 5 commits June 14, 2026 17:24
docs(memos-local-plugin): clarify install path and stale dir names (MemTensor#1540)

The README's 'Quick start' section told users to use install.sh instead
of npm install, but the warning was buried and users still tried
'npm install -g @memtensor/memos-local-plugin' first. The reporter in
MemTensor#1540 encountered this on a Hermes deployment.

This change:

- Promotes the 'do not run npm install -g' notice to a prominent
  IMPORTANT callout explaining why global install is wrong (no
  agent-home deploy, no config.yaml, no bridge/viewer) and that the
  tarball intentionally ships built artifacts only.
- Adds a Troubleshooting subsection covering the two specific symptoms
  in the bug report: the 'package not found' misread, and the stale
  web/ and site/ directory names (web/ is now viewer/, site/ was
  removed by commit 26e7e3d).
- Mentions install.ps1 for Windows alongside install.sh.
- CHANGELOG: record the docs fix and reference MemTensor#1540.

Documentation-only change; no code or runtime behavior touched.

Co-authored-by: MemOS AutoDev <autodev@memtensor.ai>
Co-authored-by: Matthew <heimixiaozhuang@zju.edu.cn>
…_() got an unexpected keyword a (MemTensor#1889)

fix: remove invalid chunker parameter from SystemParser test instantiation

- SystemParser.__init__() signature changed to (embedder, llm=None)
- Test was still passing chunker=None causing TypeError
- Fixes all 5 failing tests in test_system_parser.py

Fixes MemTensor#1888

Co-authored-by: MemOS AutoDev <autodev@memos.ai>
Co-authored-by: Matthew <heimixiaozhuang@zju.edu.cn>
…tributeError when given None (MemTensor#1884)

* test: add comprehensive tests for clean_json_response (issue MemTensor#1525)

- Add test suite in tests/mem_os/test_format_utils.py
- Cover None input ValueError with diagnostic message
- Cover markdown removal, whitespace stripping, edge cases
- Verify fix for AttributeError when LLM returns None

* style: format clean_json_response tests

---------

Co-authored-by: MemOS AutoDev <autodev@memos.ai>
Co-authored-by: Matthew <heimixiaozhuang@zju.edu.cn>
…date_cube_access — fails for ev (MemTensor#1903)

fix: validate current user not target in share_cube_with_user (MemTensor#1901)

share_cube_with_user(cube_id, target_user_id) called
_validate_cube_access(cube_id, target_user_id), but the validator
signature is (user_id, cube_id). The cube_id therefore landed in the
user_id slot and _validate_user_exists raised
"User '<cube_id>' does not exist or is inactive" for every well-formed
call, making the API unusable.

The in-code comment "Validate current user has access to this cube"
already documented the correct intent: the sharing user (self.user_id)
must have access to the cube being shared, not the target. Switch the
call to self._validate_cube_access(self.user_id, cube_id). The target
user's existence is independently checked on the next line via
validate_user(target_user_id), so that path is unchanged.

Add regression tests in tests/mem_os/test_memos_core.py that pin down:
- validate_user_cube_access is consulted with (self.user_id, cube_id),
- add_user_to_cube is called with (target_user_id, cube_id) on success,
- a missing target raises "Target user '<id>' does not exist".

Closes MemTensor#1901

Co-authored-by: MemOS AutoDev Bot <autodev@memtensor.local>
Co-authored-by: Matthew <heimixiaozhuang@zju.edu.cn>
@Memtensor-AI Memtensor-AI changed the base branch from dev-20260604-v2.0.19 to dev-v2.0.22 July 1, 2026 13:16
@Memtensor-AI

Copy link
Copy Markdown
Collaborator

Automated Test Results: PASSED

Cloud test-engine rerun against dev-v2.0.22 completed successfully.

  • Run: tr-9c5d8cca-17b on cloud test-engine 10010
  • memos_local_plugin/changed-python-source: 2 passed, 0 failed, 0 skipped

Manual code review is still required before merge.

@CarltonXiang CarltonXiang deleted the branch MemTensor:main July 3, 2026 07:25
@syzsunshine219 syzsunshine219 reopened this Jul 3, 2026
@syzsunshine219 syzsunshine219 added the needs-audit Requires manual audit before merge label Jul 3, 2026
@syzsunshine219 syzsunshine219 changed the base branch from dev-v2.0.22 to main July 3, 2026 08:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-audit Requires manual audit before merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants