Commit Graph

762 Commits

Author SHA1 Message Date
Youzini-afk
d1c76787bb Merge remote-tracking branch 'origin/main' into dev 2026-04-12 22:31:04 +08:00
github-actions[bot]
88c2703b87 chore: bump manifest version [skip ci] 2026-04-12 14:31:00 +00:00
Youzini-afk
5deea0705b Merge branch 'main' into dev 2026-04-12 22:30:48 +08:00
Youzini-afk
6045c4fa0d feat(ui): redesign task monitor workspace 2026-04-12 22:30:41 +08:00
github-actions[bot]
76a282727d chore: bump manifest version [skip ci] 2026-04-12 12:36:22 +00:00
Youzini-afk
5bd29c99d5 fix: orphan accepted commit marker self-healing — auto-clear stale marker when no recoverable graph source exists
- Add maybeResolveOrphanAcceptedCommitMarker() for conservative orphan detection:
  - Chat-state sidecar rescue first (preserves marker, keeps mismatch diagnostic)
  - Only clears marker when ALL local sources confirmed absent
  - Guards: shadow-available, migration-failed, chat-switched all block clearing
- Enhance clearCurrentChatCommitMarker() with resetAcceptedRevision option
  - Resets lastAcceptedRevision and acceptedStorageTier when marker is orphan
- Integrate orphan resolution into loadGraphFromIndexedDb() empty+mismatch branch
- Update onDeleteCurrentIdbController/onDeleteAllIdbController to resetAcceptedRevision
- Update graph-persistence regressions:
  - Orphan marker scenario now auto-heals to EMPTY_CONFIRMED (was: permanently BLOCKED)
  - Add chat-state rescue guard test: sidecar data prevents marker clearing
2026-04-12 20:36:03 +08:00
github-actions[bot]
648a7a1741 chore: bump manifest version [skip ci] 2026-04-12 12:07:21 +00:00
Youzini-afk
05083ef5f0 fix: clear stale accepted commit marker after deleting local IndexedDB caches
When users delete local BME IndexedDB via UI actions (delete current/all
IDB), the chat metadata's st_bme_commit_marker was not cleared. This left
an accepted high-revision promise with no local DB backing, causing
persist-mismatch:indexeddb-behind-commit-marker and blocking graph load
indefinitely.

- index.js: add clearCurrentChatCommitMarker() helper and expose via runtime
- ui-actions-controller.js: call clearCurrentChatCommitMarker before
  syncGraphLoadFromLiveContext after IDB deletion
- p0-regressions.mjs: regression test asserting marker is cleared before
  reload after current-IDB deletion
2026-04-12 20:07:05 +08:00
github-actions[bot]
4643e0ad75 chore: bump manifest version [skip ci] 2026-04-12 11:43:01 +00:00
Youzini-afk
913a102b39 fix: backend vector state marked dirty on sync/restore import and query failure
- sync/bme-sync.js: conservatively clear backend hash mappings and mark
  vectorIndexState dirty before importing remote snapshots via download,
  merge, and cloud backup restore, preventing stale clean-looking state
  after cross-device sync or restore
- vector/vector-index.js: mark backend vector state dirty on real backend
  query failures (HTTP/network) instead of silently returning empty results
- regression: indexeddb-sync.mjs covers download/restore/merge import
  dirty marking; p0-regressions.mjs covers backend query failure dirtying
2026-04-12 19:42:45 +08:00
github-actions[bot]
d350de809e chore: bump manifest version [skip ci] 2026-04-12 11:00:52 +00:00
Youzini-afk
de7e598490 fix: graph load stuck in LOADING after IndexedDB cache deletion or commit-marker mismatch
- reconcileIndexedDbProbeFailureState now handles persist-mismatch:indexeddb-* reasons, ensuring bounded retries and transition to BLOCKED instead of hanging forever in LOADING
- expose clearCachedIndexedDbSnapshot, clearAllCachedIndexedDbSnapshots, closeBmeDb, closeAllBmeDbs, syncGraphLoadFromLiveContext in runtime context for UI actions
- onDeleteCurrentIdbController / onDeleteAllIdbController now clear in-memory caches, close DB handles, and force a fresh graph load sync after deletion
- humanize persist-mismatch:indexeddb-behind-commit-marker panel messages into user-friendly Chinese text
- add regression test for empty IndexedDB + accepted commit marker mismatch fallback-to-blocked scenario
2026-04-12 19:00:30 +08:00
github-actions[bot]
44d71da13d chore: bump manifest version [skip ci] 2026-04-12 09:58:26 +00:00
Youzini-afk
47ffd5413d refactor(terminology): 层级总结为主路径,synopsis 标记为旧式全局概要
- README: 明确 summaryState 为主总结体系,legacy synopsis 为兼容兜底
- prompt-profiles: synopsis 任务标签改为「小总结」
- schema/task-graph-stats/panel: synopsis 节点显示为「全局概要(旧)」
- index.js: fallback 状态文案改为「旧式全局概要生成/更新中」
- p0-regressions: 同步更新断言字符串
2026-04-12 17:58:05 +08:00
github-actions[bot]
2646dc0962 chore: bump manifest version [skip ci] 2026-04-12 09:28:51 +00:00
Youzini-afk
4c768f5485 docs: 全面更新 README,反映当前架构与功能 2026-04-12 17:28:40 +08:00
github-actions[bot]
c798308ca0 chore: bump manifest version [skip ci] 2026-04-12 09:00:16 +00:00
Youzini-afk
ea105104a5 chore: 提取默认预设 event.title 字数要求从 6-18 改为 6-10 字
- prompting/prompt-profiles.js: FALLBACK_DEFAULT_TASK_BLOCKS extract role/rules
- prompting/default-task-profile-templates.js: extract default-role / default-rules 模板
- maintenance/extractor.js: buildDefaultExtractPrompt 规则说明
- graph/schema.js: event.title hint
2026-04-12 17:00:03 +08:00
youzini
c34b49490a Merge pull request #33 from Hao19911125/main
悬浮按钮对于手动存储操作的提示修正
2026-04-12 16:50:44 +08:00
github-actions[bot]
362911c930 chore: bump manifest version [skip ci] 2026-04-12 08:50:21 +00:00
Youzini-afk
b31088cc35 fix: IndexedDB probe 失败后不再永久卡在 loading,重试耗尽后回退到 blocked
- index.js: 新增 reconcileIndexedDbProbeFailureState,后台 probe 失败时先有限重试,耗尽后切到 blocked
- index.js: scheduleIndexedDbGraphProbe 的 .then/.catch 均接入 reconcile 逻辑
- index.js: createGraphLoadUiStatus blocked 文案更新
- ui/panel.js: _getGraphLoadLabel blocked 文案更新,不再误导为元数据未就绪
- tests/graph-persistence.mjs: 新增 manager-unavailable / read-failed 回归
- tests/graph-persistence.mjs: harness 支持 __indexedDbExportSnapshotShouldThrow / __indexedDbGetCurrentDbShouldThrow
2026-04-12 16:50:02 +08:00
Hao19911125
d51795a627 Merge branch 'Youzini-afk:main' into main 2026-04-12 16:45:06 +08:00
github-actions[bot]
f192a7d23a chore: bump manifest version [skip ci] 2026-04-12 08:35:21 +00:00
Youzini-afk
5a53d010af fix: reconcile stale manualBackupBatchJournalCoverage when contiguous earlier journal coverage is rebuilt
- Add hasContiguousJournalCoverageThroughFloor to check if current
  batchJournal contiguously covers back through the old retained floor
- Add reconcileManualBackupBatchJournalCoverage that clears stale
  coverage when actual journals have bridged the gap
- Self-clean during normalizeGraphRuntimeState (load-time) and
  appendBatchJournal (write-time)
- findJournalRecoveryPoint now uses reconciled coverage so stale
  manual backup floors no longer block valid reverse-journal recovery
- Add regression tests for gap-not-yet-bridged and bridged scenarios
2026-04-12 16:35:04 +08:00
Hao19911125
a7e632df1e Merge branch 'Youzini-afk:main' into main 2026-04-12 16:22:42 +08:00
Hao19911125
1945dd3ec9 Refine manual cloud backup FAB feedback 2026-04-12 16:21:26 +08:00
youzini
a4a11bb6d2 Merge pull request #31 from Hao19911125/main
手动存储的大小修剪
2026-04-12 16:16:35 +08:00
github-actions[bot]
117e45c781 chore: bump manifest version [skip ci] 2026-04-12 08:16:15 +00:00
Youzini-afk
22f75e9660 tests: stub recall prompt headers in retrieval-config harness 2026-04-12 16:16:02 +08:00
Youzini-afk
8a6cad7778 tests: stub recall prompt headers in retrieval-config harness 2026-04-12 16:15:55 +08:00
youzini
db7da1c27d Merge pull request #32 from Youzini-afk/dev
Dev
2026-04-12 16:09:02 +08:00
github-actions[bot]
9ecd0e8b00 chore: bump manifest version [skip ci] 2026-04-12 08:07:56 +00:00
Youzini-afk
64dec0df2b recall: sectioned recentMessages with context/target split for LLM prompt
- prompt-builder.js: add RECALL_TARGET_CONTENT_HEADER, update splitSectionedTranscriptPayloadMessage to recognize recall-specific target header
- retriever.js: add buildRecallSectionedTranscript helper, format recentMessages as sectioned transcript with context-review and recall-target headers for prompt building while keeping flat string[] for ranking
- p0-regressions.mjs: add testRecallUsesSectionedPromptMessagesForContextAndTarget regression asserting two system messages with correct transcriptSection and headers
2026-04-12 16:07:38 +08:00
github-actions[bot]
79f5f618b4 chore: bump manifest version [skip ci] 2026-04-12 07:27:38 +00:00
Youzini-afk
96b43c7860 feat: migrate compress/consolidation/reflection graphStats to shared ranking core + prompt node refs
- New maintenance/task-graph-stats.js: shared helper wrapping rankNodesForTaskContext + createPromptNodeReferenceMap
- extractor.js: extract and reflection graphStats now use buildTaskGraphStats
- compressor.js: compression graphStats uses shared helper, excludes current batch from relevant ranking
- consolidator.js: consolidation graphStats uses shared helper, excludes new nodes from relevant ranking
- index.js: passes schema + embeddingConfig into generateReflection
- p0-regressions.mjs: added graphStats assertions for compress/consolidation/reflection (prompt-facing refs, no raw UUIDs)
2026-04-12 15:27:22 +08:00
Hao19911125
4b9668fdc5 Clear restored backup dirty history markers 2026-04-12 15:09:11 +08:00
github-actions[bot]
9c6f0954a1 chore: bump manifest version [skip ci] 2026-04-12 06:59:52 +00:00
Youzini-afk
dc5051f2ef feat: shared ranking core + prompt node references; recall reuses shared core for base query/vector/diffusion; remove retriever-local duplicate helpers; add regression tests 2026-04-12 14:59:37 +08:00
github-actions[bot]
4b4f77caff chore: bump manifest version [skip ci] 2026-04-12 05:33:52 +00:00
Youzini-afk
f40b03c306 feat: hide assistant card names in extraction transcript, split sectioned recentMessages into 2 system messages 2026-04-12 13:33:41 +08:00
github-actions[bot]
433e62e084 chore: bump manifest version [skip ci] 2026-04-12 05:04:17 +00:00
Youzini-afk
559312c1b6 fix: preserve isContextOnly context/target dividers in final prompt transcript rendering
Root cause: formatPromptMessageTranscript in prompt-builder.js ignored
isContextOnly, so context review and extraction target sections were
flattened into plain transcript even though the flag was correctly set
in intermediate layers. Additionally, userPromptSections (which
contained the dividers) was only a fallback that never reached the
final prompt when block-based profiles had user blocks.

Fix:
- getPromptMessageLikeDescriptor now preserves isContextOnly flag
- formatPromptMessageTranscript now inserts context/target section
  dividers when messages carry isContextOnly, ensuring the final
  LLM prompt always shows the distinction regardless of which
  rendering path (recentMessages, chatMessages, dialogueText) is used

Regression tests:
- prompt-builder-mixed-transcript: verify recentMessages block content
  includes context review and extraction target dividers
- extractor-phase3-layered-context: end-to-end test proving default
  extract profile + default structured mode produces final promptMessages
  with context/target section dividers
2026-04-12 13:04:04 +08:00
github-actions[bot]
270ceba78f chore: bump manifest version [skip ci] 2026-04-12 04:53:26 +00:00
Youzini-afk
3f7dd0d727 feat: persist extract action mode selection across panel sessions
- Add extractActionMode setting (default: pending) to settings-defaults.js
- Panel refresh restores dropdown from settings.extractActionMode
- Dropdown change event persists selection via _patchSettings
- Extract button reads settings as fallback when DOM value missing
- Add default value assertion in tests/default-settings.mjs
2026-04-12 12:53:08 +08:00
github-actions[bot]
46bd0bf6c5 chore: bump manifest version [skip ci] 2026-04-12 04:46:21 +00:00
Youzini-afk
a8e3169002 feat: add isContextOnly flag to extraction messages to prevent repeated extraction
- buildExtractionMessages marks messages with isContextOnly (seq < startIdx)
- formatExtractionTranscript inserts section dividers for mixed context/target
- extractor.js Layer 1 prompt splits context review vs extraction target with guidance
- Add tests/extraction-context-only-flag.mjs (7 test cases)
2026-04-12 12:46:05 +08:00
Hao19911125
288c33f3c3 Rebind restored backup history hashes locally 2026-04-12 11:49:34 +08:00
Hao19911125
580a049442 Slim manual cloud backups and guard truncated journal rollback 2026-04-12 10:43:38 +08:00
Hao19911125
aec756f180 Merge branch 'main' of https://github.com/Hao19911125/ST-Bionic-Memory-Ecology 2026-04-12 09:49:08 +08:00
Hao19911125
c60720acb5 Update .gitignore 2026-04-12 09:48:43 +08:00