@xopcai/xopc 0.0.94 → 0.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/{agents-OqhbJkMf.js → agents-DmIuSaOE.js} +3 -3
- package/dist/gateway/static/root/assets/{apps-page-OHXW9XP8.js → apps-page-DFcHBxLw.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-4N2R-jof.js → channels-settings-DDUf55C5.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-status-swr-Bv6f9kDq.js → channels-status-swr-BxF-_nzD.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-api-BtaQaHJq.js → cron-api-DylQtnb_.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-Dah32HJK.js → cron-page-BO0d9Pf-.js} +1 -1
- package/dist/gateway/static/root/assets/{dist-BJfD9Qvs.js → dist-BskF0qDS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DnYuMzmH.js → extension-debug-page-BcZdTdjJ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CJfc-6XV.js → extension-page-D2iuDa1D.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BxdfYQMG.js → extension-settings-page-BKpQCgLc.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-B0aeeY0q.js → fetch-CtNDpjij.js} +1 -1
- package/dist/gateway/static/root/assets/{field-primitives-DOLHwowi.js → field-primitives-2PekrGZF.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-Bj2INAf5.js → heartbeat-config-api-D3D7SW8A.js} +1 -1
- package/dist/gateway/static/root/assets/index-BvEhL9RQ.css +1 -0
- package/dist/gateway/static/root/assets/{index-DuQ1XPoA.js → index-Db9fd_X4.js} +74 -74
- package/dist/gateway/static/root/assets/{logs-page-AsOgLNJE.js → logs-page-B3I1a26m.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-page-24J4mVP-.js → note-detail-page-BOizhtJ8.js} +54 -53
- package/dist/gateway/static/root/assets/{note-detail-page-B91pLkEI.css → note-detail-page-D4ZIVQbk.css} +1 -1
- package/dist/gateway/static/root/assets/{note-time-JBszYV3s.js → note-time-CjUGtqKr.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-BB8-I0Of.js +1 -0
- package/dist/gateway/static/root/assets/{sessions-page-DX9huWsA.js → sessions-page-BcH-1K9i.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-advanced-gate-DWvhsTuz.js → settings-advanced-gate-Czn8nnjN.js} +2 -2
- package/dist/gateway/static/root/assets/{settings-form-section-CxMjaMiy.js → settings-form-section-ZZWDwgVe.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-BX8c_zrN.js +3 -0
- package/dist/gateway/static/root/assets/share-preview-page-Ch3_6Qah.js +2 -0
- package/dist/gateway/static/root/assets/{skills-page-CGKGKfwe.js → skills-page-WO0bbJ54.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-Cg_SuBw0.js → theme-store-XxRFRZDX.js} +1 -1
- package/dist/gateway/static/root/assets/url-6zpynn1R.js +3 -0
- package/dist/gateway/static/root/assets/{utils-BmlcxR2j.js → utils-uTYKh54l.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-DaGm2N4J.js → voice-api-key-field-BIAYHRs-.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-page.utils-D0vsIGHD.js → workflow-page.utils-BbWhqD36.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-BFCrD3nw.js → workflows-page-D4RIF7E1.js} +2 -2
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +15 -9
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/agent-scope.d.ts +0 -1
- package/dist/src/agent/agent-scope.js +2 -5
- package/dist/src/agent/agent-scope.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +3 -0
- package/dist/src/agent/bootstrap/bootstrap-cache.js +13 -3
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +6 -0
- package/dist/src/agent/bootstrap/bootstrap-files.js +35 -12
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +5 -2
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +12 -3
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +1 -1
- package/dist/src/agent/context/workspace-seed.js +8 -4
- package/dist/src/agent/context/workspace-seed.js.map +1 -1
- package/dist/src/agent/context/workspace-state.d.ts +52 -0
- package/dist/src/agent/context/workspace-state.js +101 -0
- package/dist/src/agent/context/workspace-state.js.map +1 -0
- package/dist/src/agent/embedded/index.d.ts +2 -2
- package/dist/src/agent/embedded/index.js +3 -3
- package/dist/src/agent/embedded/run-turn.js +0 -3
- package/dist/src/agent/embedded/run-turn.js.map +1 -1
- package/dist/src/agent/embedded/session-manager-init.d.ts +0 -17
- package/dist/src/agent/embedded/session-manager-init.js +1 -36
- package/dist/src/agent/embedded/session-manager-init.js.map +1 -1
- package/dist/src/agent/embedded/session-runner.d.ts +3 -12
- package/dist/src/agent/embedded/session-runner.js +12 -26
- package/dist/src/agent/embedded/session-runner.js.map +1 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js +2 -4
- package/dist/src/agent/embedded/session-tool-result-guard.js.map +1 -1
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.d.ts +10 -0
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +34 -0
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +1 -0
- package/dist/src/agent/goals/goal-run-store.js +4 -4
- package/dist/src/agent/goals/persistent-goal-service.js +8 -15
- package/dist/src/agent/goals/persistent-goal-service.js.map +1 -1
- package/dist/src/agent/goals/post-turn.js +2 -2
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/ipc/bus.js +1 -1
- package/dist/src/agent/ipc/inbox.js +2 -2
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +2 -2
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/prompt/memory/index.d.ts +1 -0
- package/dist/src/agent/prompt/memory/index.js +34 -80
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
- package/dist/src/agent/reply/post-compaction-context.js +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/build-direct-message-content.js +1 -1
- package/dist/src/agent/service/process-direct-one-shot.js +8 -17
- package/dist/src/agent/service/process-direct-one-shot.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.js +14 -23
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service.js +7 -11
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/config.js +1 -1
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +3 -3
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/scanner.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +1 -1
- package/dist/src/agent/tools/index.d.ts +0 -1
- package/dist/src/agent/tools/index.js +1 -2
- package/dist/src/agent/tools/send-media.js +1 -1
- package/dist/src/agent/tools/session-search-tool.d.ts +0 -1
- package/dist/src/agent/tools/session-search-tool.js +11 -6
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/tools/write.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/auth/credentials.js +3 -3
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +4 -4
- package/dist/src/browser/providers/cloakbrowser.js +4 -4
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/attachments/inbound-persist.js +1 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/chat-commands/agent-edit.js +2 -2
- package/dist/src/chat-commands/builtins/config.js +2 -2
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +32 -95
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension-pack.js +1 -1
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/image.js +1 -1
- package/dist/src/cli/commands/init.js +5 -7
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +2 -2
- package/dist/src/commands/agents.config.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +7 -8
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.d.ts +3 -0
- package/dist/src/config/paths-state.js +7 -3
- package/dist/src/config/paths-state.js.map +1 -1
- package/dist/src/config/paths.d.ts +5 -35
- package/dist/src/config/paths.js +6 -50
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +2 -2
- package/dist/src/config/schema.d.ts +15 -0
- package/dist/src/config/schema.js +11 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/cron/execution-types.d.ts +42 -0
- package/dist/src/cron/executor.js +2 -2
- package/dist/src/cron/persistence.js +1 -1
- package/dist/src/cron/run-log-store.d.ts +4 -8
- package/dist/src/cron/run-log-store.js +26 -78
- package/dist/src/cron/run-log-store.js.map +1 -1
- package/dist/src/cron/service.d.ts +3 -3
- package/dist/src/cron/service.js +2 -2
- package/dist/src/cron/service.js.map +1 -1
- package/dist/src/cron/types.d.ts +1 -42
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +1 -1
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/loader.js +1 -1
- package/dist/src/extensions/lockfile.js +2 -2
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agents-admin.js +8 -3
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/file-path-classifier.d.ts +0 -1
- package/dist/src/gateway/file-path-classifier.js +2 -8
- package/dist/src/gateway/file-path-classifier.js.map +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/oauth.js +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +1 -1
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +2 -2
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service.js +5 -1
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/session-reset-service.d.ts +1 -1
- package/dist/src/gateway/session-reset-service.js +1 -1
- package/dist/src/gateway/session-reset-service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/node-sqlite.d.ts +1 -0
- package/dist/src/infra/node-sqlite.js +17 -0
- package/dist/src/infra/node-sqlite.js.map +1 -0
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +2 -2
- package/dist/src/infra/sqlite-errors.d.ts +1 -0
- package/dist/src/infra/sqlite-errors.js +77 -0
- package/dist/src/infra/sqlite-errors.js.map +1 -0
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/unhandled-rejections.d.ts +1 -0
- package/dist/src/infra/unhandled-rejections.js +25 -0
- package/dist/src/infra/unhandled-rejections.js.map +1 -0
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +3 -3
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +2 -2
- package/dist/src/infra/warning-filter.d.ts +7 -0
- package/dist/src/infra/warning-filter.js +59 -0
- package/dist/src/infra/warning-filter.js.map +1 -0
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/notes/store.d.ts +3 -9
- package/dist/src/notes/store.js +22 -196
- package/dist/src/notes/store.js.map +1 -1
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/session/config-store.d.ts +6 -75
- package/dist/src/session/config-store.js +38 -144
- package/dist/src/session/config-store.js.map +1 -1
- package/dist/src/session/config-types.d.ts +15 -0
- package/dist/src/session/config-types.js +1 -0
- package/dist/src/session/index.d.ts +1 -3
- package/dist/src/session/index.js +3 -5
- package/dist/src/session/init-session-turn.d.ts +0 -6
- package/dist/src/session/init-session-turn.js +18 -18
- package/dist/src/session/init-session-turn.js.map +1 -1
- package/dist/src/session/lifecycle-timestamps.d.ts +5 -2
- package/dist/src/session/lifecycle-timestamps.js.map +1 -1
- package/dist/src/session/{parity/load-jsonl-entries.js → load-jsonl-entries.js} +1 -1
- package/dist/src/session/load-jsonl-entries.js.map +1 -0
- package/dist/src/session/manager.d.ts +5 -3
- package/dist/src/session/manager.js +1 -5
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/resolve-session.d.ts +3 -6
- package/dist/src/session/resolve-session.js +26 -31
- package/dist/src/session/resolve-session.js.map +1 -1
- package/dist/src/session/session-context-for-llm.js +5 -1
- package/dist/src/session/session-context-for-llm.js.map +1 -1
- package/dist/src/session/session-id.js +12 -0
- package/dist/src/session/session-id.js.map +1 -0
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/session-workspace.d.ts +1 -1
- package/dist/src/session/session-workspace.js.map +1 -1
- package/dist/src/session/store.d.ts +14 -63
- package/dist/src/session/store.js +172 -847
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/stored-rows-to-file-entries.d.ts +11 -0
- package/dist/src/session/stored-rows-to-file-entries.js +95 -0
- package/dist/src/session/stored-rows-to-file-entries.js.map +1 -0
- package/dist/src/session/transcript-events.d.ts +1 -2
- package/dist/src/session/transcript-events.js +5 -12
- package/dist/src/session/transcript-events.js.map +1 -1
- package/dist/src/session/transcript-format.d.ts +1 -1
- package/dist/src/session/transcript-format.js.map +1 -1
- package/dist/src/session/transcript-stats.d.ts +1 -0
- package/dist/src/session/transcript-stats.js +10 -0
- package/dist/src/session/transcript-stats.js.map +1 -0
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/storage/sqlite/config-repository.d.ts +6 -0
- package/dist/src/storage/sqlite/config-repository.js +56 -0
- package/dist/src/storage/sqlite/config-repository.js.map +1 -0
- package/dist/src/storage/sqlite/connection.d.ts +38 -0
- package/dist/src/storage/sqlite/connection.js +258 -0
- package/dist/src/storage/sqlite/connection.js.map +1 -0
- package/dist/src/storage/sqlite/cron-run-repository.d.ts +5 -0
- package/dist/src/storage/sqlite/cron-run-repository.js +97 -0
- package/dist/src/storage/sqlite/cron-run-repository.js.map +1 -0
- package/dist/src/storage/sqlite/fts.d.ts +2 -0
- package/dist/src/storage/sqlite/fts.js +11 -0
- package/dist/src/storage/sqlite/fts.js.map +1 -0
- package/dist/src/storage/sqlite/index.d.ts +12 -0
- package/dist/src/storage/sqlite/index.js +13 -0
- package/dist/src/storage/sqlite/memory-index-repository.d.ts +18 -0
- package/dist/src/storage/sqlite/memory-index-repository.js +132 -0
- package/dist/src/storage/sqlite/memory-index-repository.js.map +1 -0
- package/dist/src/storage/sqlite/notes-repository.d.ts +11 -0
- package/dist/src/storage/sqlite/notes-repository.js +191 -0
- package/dist/src/storage/sqlite/notes-repository.js.map +1 -0
- package/dist/src/storage/sqlite/paths.d.ts +1 -0
- package/dist/src/storage/sqlite/paths.js +7 -0
- package/dist/src/storage/sqlite/paths.js.map +1 -0
- package/dist/src/storage/sqlite/row-mappers.d.ts +82 -0
- package/dist/src/storage/sqlite/row-mappers.js +164 -0
- package/dist/src/storage/sqlite/row-mappers.js.map +1 -0
- package/dist/src/storage/sqlite/schema.d.ts +5 -0
- package/dist/src/storage/sqlite/schema.js +43 -0
- package/dist/src/storage/sqlite/schema.js.map +1 -0
- package/dist/src/storage/sqlite/schema.sql +195 -0
- package/dist/src/storage/sqlite/session-metadata.d.ts +8 -0
- package/dist/src/storage/sqlite/session-metadata.js +83 -0
- package/dist/src/storage/sqlite/session-metadata.js.map +1 -0
- package/dist/src/storage/sqlite/session-repository.d.ts +29 -0
- package/dist/src/storage/sqlite/session-repository.js +268 -0
- package/dist/src/storage/sqlite/session-repository.js.map +1 -0
- package/dist/src/storage/sqlite/transaction.d.ts +11 -0
- package/dist/src/storage/sqlite/transaction.js +115 -0
- package/dist/src/storage/sqlite/transaction.js.map +1 -0
- package/dist/src/storage/sqlite/transcript-repository.d.ts +34 -0
- package/dist/src/storage/sqlite/transcript-repository.js +241 -0
- package/dist/src/storage/sqlite/transcript-repository.js.map +1 -0
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui.js +3 -3
- package/dist/src/tunnel/frpc-binary.js +3 -3
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.js +41 -64
- package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/index-Bj_l8QDp.css +0 -1
- package/dist/gateway/static/root/assets/notes-page-BApAirFB.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-4VmUTzQs.js +0 -3
- package/dist/gateway/static/root/assets/share-preview-page-IX0TJvRd.js +0 -2
- package/dist/gateway/static/root/assets/url-BHHmdJYc.js +0 -3
- package/dist/src/agent/embedded/session-manager-cache.d.ts +0 -19
- package/dist/src/agent/embedded/session-manager-cache.js +0 -48
- package/dist/src/agent/embedded/session-manager-cache.js.map +0 -1
- package/dist/src/session/parity/artifacts.d.ts +0 -16
- package/dist/src/session/parity/artifacts.js +0 -80
- package/dist/src/session/parity/artifacts.js.map +0 -1
- package/dist/src/session/parity/jsonl-transcript-io.d.ts +0 -54
- package/dist/src/session/parity/jsonl-transcript-io.js +0 -236
- package/dist/src/session/parity/jsonl-transcript-io.js.map +0 -1
- package/dist/src/session/parity/load-jsonl-entries.js.map +0 -1
- package/dist/src/session/parity/session-id.js +0 -18
- package/dist/src/session/parity/session-id.js.map +0 -1
- package/dist/src/session/parity/sessions-json-cache.d.ts +0 -14
- package/dist/src/session/parity/sessions-json-cache.js +0 -98
- package/dist/src/session/parity/sessions-json-cache.js.map +0 -1
- package/dist/src/session/parity/sessions-json-file-read.d.ts +0 -6
- package/dist/src/session/parity/sessions-json-file-read.js +0 -19
- package/dist/src/session/parity/sessions-json-file-read.js.map +0 -1
- package/dist/src/session/parity/sessions-json-file.d.ts +0 -11
- package/dist/src/session/parity/sessions-json-file.js +0 -52
- package/dist/src/session/parity/sessions-json-file.js.map +0 -1
- package/dist/src/session/parity/sessions-json-patch.d.ts +0 -14
- package/dist/src/session/parity/sessions-json-patch.js +0 -40
- package/dist/src/session/parity/sessions-json-patch.js.map +0 -1
- package/dist/src/session/parity/transcript-file-lock.d.ts +0 -22
- package/dist/src/session/parity/transcript-file-lock.js +0 -142
- package/dist/src/session/parity/transcript-file-lock.js.map +0 -1
- package/dist/src/session/parity/transcript-pagination.d.ts +0 -29
- package/dist/src/session/parity/transcript-pagination.js +0 -132
- package/dist/src/session/parity/transcript-pagination.js.map +0 -1
- package/dist/src/session/parity/transcript-paths.d.ts +0 -13
- package/dist/src/session/parity/transcript-paths.js +0 -64
- package/dist/src/session/parity/transcript-paths.js.map +0 -1
- package/dist/src/session/parity/xopc-session-disk-entry.d.ts +0 -22
- package/dist/src/session/search-index-cache.d.ts +0 -6
- package/dist/src/session/search-index-cache.js +0 -44
- package/dist/src/session/search-index-cache.js.map +0 -1
- package/dist/src/session/search-index.d.ts +0 -20
- package/dist/src/session/search-index.js +0 -124
- package/dist/src/session/search-index.js.map +0 -1
- /package/dist/src/{session/parity/xopc-session-disk-entry.js → cron/execution-types.js} +0 -0
- /package/dist/src/session/{parity/load-jsonl-entries.d.ts → load-jsonl-entries.d.ts} +0 -0
- /package/dist/src/session/{parity/session-id.d.ts → session-id.d.ts} +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { SessionMetadata } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* One value in `sessions.json` (OpenClaw SessionEntry–shaped subset + xopc metadata bag).
|
|
4
|
-
*/
|
|
5
|
-
export interface XopcSessionDiskEntry extends Record<string, unknown> {
|
|
6
|
-
sessionId: string;
|
|
7
|
-
updatedAt: number;
|
|
8
|
-
sessionStartedAt?: number;
|
|
9
|
-
/** Last user/channel interaction (ms) — extends idle reset lifetime. */
|
|
10
|
-
lastInteractionAt?: number;
|
|
11
|
-
/** Persisted thinking level (OpenClaw SessionEntry parity). */
|
|
12
|
-
thinkingLevel?: string;
|
|
13
|
-
/** Persisted verbose level (OpenClaw SessionEntry parity). */
|
|
14
|
-
verboseLevel?: string;
|
|
15
|
-
sessionFile?: string;
|
|
16
|
-
pluginExtensions?: {
|
|
17
|
-
xopc?: {
|
|
18
|
-
/** Full {@link SessionMetadata} including `key`. */
|
|
19
|
-
metadata: SessionMetadata;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared cache for {@link SessionSearchIndex} builds (invalidated on session writes).
|
|
3
|
-
*/
|
|
4
|
-
import { SessionSearchIndex } from './search-index.js';
|
|
5
|
-
export declare function invalidateSessionSearchIndexCache(): void;
|
|
6
|
-
export declare function getOrLoadSessionSearchIndex(sessionsRoot: string): Promise<SessionSearchIndex>;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { FILENAMES, init_paths } from "../config/paths.js";
|
|
2
|
-
import { SessionSearchIndex } from "./search-index.js";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { stat } from "node:fs/promises";
|
|
5
|
-
//#region src/session/search-index-cache.ts
|
|
6
|
-
/**
|
|
7
|
-
* Shared cache for {@link SessionSearchIndex} builds (invalidated on session writes).
|
|
8
|
-
*/
|
|
9
|
-
init_paths();
|
|
10
|
-
const INDEX_CACHE_TTL_MS = 9e4;
|
|
11
|
-
let indexCache = null;
|
|
12
|
-
function invalidateSessionSearchIndexCache() {
|
|
13
|
-
indexCache = null;
|
|
14
|
-
}
|
|
15
|
-
async function getOrLoadSessionSearchIndex(sessionsRoot) {
|
|
16
|
-
const indexPath = join(sessionsRoot, FILENAMES.SESSIONS_MAP);
|
|
17
|
-
let mtime = 0;
|
|
18
|
-
try {
|
|
19
|
-
mtime = (await stat(indexPath)).mtimeMs;
|
|
20
|
-
} catch {
|
|
21
|
-
mtime = 0;
|
|
22
|
-
}
|
|
23
|
-
const now = Date.now();
|
|
24
|
-
if (indexCache && indexCache.root === sessionsRoot && indexCache.indexFileMtime === mtime && now - indexCache.builtAt < INDEX_CACHE_TTL_MS) return indexCache.index;
|
|
25
|
-
const idx = new SessionSearchIndex();
|
|
26
|
-
await idx.buildIndex(sessionsRoot);
|
|
27
|
-
let m2 = mtime;
|
|
28
|
-
try {
|
|
29
|
-
m2 = (await stat(indexPath)).mtimeMs;
|
|
30
|
-
} catch {
|
|
31
|
-
m2 = Date.now();
|
|
32
|
-
}
|
|
33
|
-
indexCache = {
|
|
34
|
-
root: sessionsRoot,
|
|
35
|
-
index: idx,
|
|
36
|
-
indexFileMtime: m2,
|
|
37
|
-
builtAt: Date.now()
|
|
38
|
-
};
|
|
39
|
-
return idx;
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
42
|
-
export { getOrLoadSessionSearchIndex, invalidateSessionSearchIndexCache };
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=search-index-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-index-cache.js","names":[],"sources":["../../../src/session/search-index-cache.ts"],"sourcesContent":["/**\n * Shared cache for {@link SessionSearchIndex} builds (invalidated on session writes).\n */\n\nimport { stat } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport { FILENAMES } from '../config/paths.js';\nimport { SessionSearchIndex } from './search-index.js';\n\nconst INDEX_CACHE_TTL_MS = 90_000;\n\nlet indexCache: {\n root: string;\n index: SessionSearchIndex;\n indexFileMtime: number;\n builtAt: number;\n} | null = null;\n\nexport function invalidateSessionSearchIndexCache(): void {\n indexCache = null;\n}\n\nexport async function getOrLoadSessionSearchIndex(sessionsRoot: string): Promise<SessionSearchIndex> {\n const indexPath = join(sessionsRoot, FILENAMES.SESSIONS_MAP);\n let mtime = 0;\n try {\n mtime = (await stat(indexPath)).mtimeMs;\n } catch {\n mtime = 0;\n }\n const now = Date.now();\n if (\n indexCache &&\n indexCache.root === sessionsRoot &&\n indexCache.indexFileMtime === mtime &&\n now - indexCache.builtAt < INDEX_CACHE_TTL_MS\n ) {\n return indexCache.index;\n }\n\n const idx = new SessionSearchIndex();\n await idx.buildIndex(sessionsRoot);\n\n let m2 = mtime;\n try {\n m2 = (await stat(indexPath)).mtimeMs;\n } catch {\n m2 = Date.now();\n }\n\n indexCache = {\n root: sessionsRoot,\n index: idx,\n indexFileMtime: m2,\n builtAt: Date.now(),\n };\n return idx;\n}\n"],"mappings":";;;;;;;;YAO+C;AAG/C,MAAM,qBAAqB;AAE3B,IAAI,aAKO;AAEX,SAAgB,oCAA0C;AACxD,cAAa;;AAGf,eAAsB,4BAA4B,cAAmD;CACnG,MAAM,YAAY,KAAK,cAAc,UAAU,aAAa;CAC5D,IAAI,QAAQ;AACZ,KAAI;AACF,WAAS,MAAM,KAAK,UAAU,EAAE;SAC1B;AACN,UAAQ;;CAEV,MAAM,MAAM,KAAK,KAAK;AACtB,KACE,cACA,WAAW,SAAS,gBACpB,WAAW,mBAAmB,SAC9B,MAAM,WAAW,UAAU,mBAE3B,QAAO,WAAW;CAGpB,MAAM,MAAM,IAAI,oBAAoB;AACpC,OAAM,IAAI,WAAW,aAAa;CAElC,IAAI,KAAK;AACT,KAAI;AACF,QAAM,MAAM,KAAK,UAAU,EAAE;SACvB;AACN,OAAK,KAAK,KAAK;;AAGjB,cAAa;EACX,MAAM;EACN,OAAO;EACP,gBAAgB;EAChB,SAAS,KAAK,KAAK;EACpB;AACD,QAAO"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-memory inverted index over session transcripts (`sessions.json` + JSONL).
|
|
3
|
-
*/
|
|
4
|
-
import type { AgentMessage } from '@earendil-works/pi-agent-core';
|
|
5
|
-
export declare class SessionSearchIndex {
|
|
6
|
-
private sessions;
|
|
7
|
-
private globalWordIndex;
|
|
8
|
-
/**
|
|
9
|
-
* Scan `sessionsRoot` (flat `sessions.json` + per-session `.jsonl` transcripts).
|
|
10
|
-
*/
|
|
11
|
-
buildIndex(sessionsRoot: string): Promise<void>;
|
|
12
|
-
search(query: string, limit?: number): Array<{
|
|
13
|
-
key: string;
|
|
14
|
-
score: number;
|
|
15
|
-
}>;
|
|
16
|
-
getSessionMessages(key: string): AgentMessage[];
|
|
17
|
-
private buildWordIndex;
|
|
18
|
-
private mergeContextTextIntoWordIndex;
|
|
19
|
-
private mergeIntoGlobalIndex;
|
|
20
|
-
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { init_transcript_paths, resolveSessionFilePath } from "./parity/transcript-paths.js";
|
|
2
|
-
import { FILENAMES, init_paths } from "../config/paths.js";
|
|
3
|
-
import { isTranscriptContextEntry } from "./session-context-for-llm.js";
|
|
4
|
-
import { readTranscriptRowsFromFile, rowsToLlmMessages } from "./parity/jsonl-transcript-io.js";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { readFile } from "node:fs/promises";
|
|
7
|
-
//#region src/session/search-index.ts
|
|
8
|
-
/**
|
|
9
|
-
* In-memory inverted index over session transcripts (`sessions.json` + JSONL).
|
|
10
|
-
*/
|
|
11
|
-
init_paths();
|
|
12
|
-
init_transcript_paths();
|
|
13
|
-
var SessionSearchIndex = class {
|
|
14
|
-
sessions = /* @__PURE__ */ new Map();
|
|
15
|
-
globalWordIndex = /* @__PURE__ */ new Map();
|
|
16
|
-
/**
|
|
17
|
-
* Scan `sessionsRoot` (flat `sessions.json` + per-session `.jsonl` transcripts).
|
|
18
|
-
*/
|
|
19
|
-
async buildIndex(sessionsRoot) {
|
|
20
|
-
this.sessions.clear();
|
|
21
|
-
this.globalWordIndex.clear();
|
|
22
|
-
const mapPath = join(sessionsRoot, FILENAMES.SESSIONS_MAP);
|
|
23
|
-
let raw;
|
|
24
|
-
try {
|
|
25
|
-
raw = await readFile(mapPath, "utf-8");
|
|
26
|
-
} catch {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
let map;
|
|
30
|
-
try {
|
|
31
|
-
const parsed = JSON.parse(raw);
|
|
32
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return;
|
|
33
|
-
map = parsed;
|
|
34
|
-
} catch {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
for (const [sessionKey, entry] of Object.entries(map)) {
|
|
38
|
-
if (!entry?.sessionId) continue;
|
|
39
|
-
try {
|
|
40
|
-
const rows = await readTranscriptRowsFromFile(resolveSessionFilePath(entry.sessionId, entry, { sessionsDir: sessionsRoot }));
|
|
41
|
-
const messages = rowsToLlmMessages(rows);
|
|
42
|
-
const wordIndex = this.buildWordIndex(messages);
|
|
43
|
-
this.mergeContextTextIntoWordIndex(wordIndex, rows, messages.length);
|
|
44
|
-
const indexed = {
|
|
45
|
-
key: sessionKey,
|
|
46
|
-
messages,
|
|
47
|
-
wordIndex
|
|
48
|
-
};
|
|
49
|
-
this.sessions.set(sessionKey, indexed);
|
|
50
|
-
this.mergeIntoGlobalIndex(sessionKey, wordIndex);
|
|
51
|
-
} catch {}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
search(query, limit = 10) {
|
|
55
|
-
const queryWords = tokenizeWords(query);
|
|
56
|
-
if (queryWords.length === 0) return [];
|
|
57
|
-
const scores = /* @__PURE__ */ new Map();
|
|
58
|
-
for (const word of queryWords) {
|
|
59
|
-
const matchingSessions = this.globalWordIndex.get(word);
|
|
60
|
-
if (!matchingSessions) continue;
|
|
61
|
-
for (const sessionKey of matchingSessions) scores.set(sessionKey, (scores.get(sessionKey) || 0) + 1);
|
|
62
|
-
}
|
|
63
|
-
return Array.from(scores.entries()).map(([key, score]) => ({
|
|
64
|
-
key,
|
|
65
|
-
score: score / queryWords.length
|
|
66
|
-
})).sort((a, b) => b.score - a.score).slice(0, limit);
|
|
67
|
-
}
|
|
68
|
-
getSessionMessages(key) {
|
|
69
|
-
return this.sessions.get(key)?.messages ?? [];
|
|
70
|
-
}
|
|
71
|
-
buildWordIndex(messages) {
|
|
72
|
-
const index = /* @__PURE__ */ new Map();
|
|
73
|
-
for (let i = 0; i < messages.length; i++) {
|
|
74
|
-
const words = tokenizeWords(extractIndexableText(messages[i].content));
|
|
75
|
-
for (const word of words) {
|
|
76
|
-
if (!index.has(word)) index.set(word, /* @__PURE__ */ new Set());
|
|
77
|
-
index.get(word).add(i);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return index;
|
|
81
|
-
}
|
|
82
|
-
mergeContextTextIntoWordIndex(wordIndex, rows, llmMessageCount) {
|
|
83
|
-
let slot = 0;
|
|
84
|
-
for (const r of rows) {
|
|
85
|
-
if (!isTranscriptContextEntry(r)) continue;
|
|
86
|
-
const parts = [];
|
|
87
|
-
if (typeof r.text === "string" && r.text.trim()) parts.push(r.text);
|
|
88
|
-
if (typeof r.id === "string" && r.id.trim()) parts.push(r.id);
|
|
89
|
-
const blob = parts.join(" ");
|
|
90
|
-
if (!blob.trim()) continue;
|
|
91
|
-
const words = tokenizeWords(blob);
|
|
92
|
-
const idx = llmMessageCount + slot;
|
|
93
|
-
slot += 1;
|
|
94
|
-
for (const word of words) {
|
|
95
|
-
if (!wordIndex.has(word)) wordIndex.set(word, /* @__PURE__ */ new Set());
|
|
96
|
-
wordIndex.get(word).add(idx);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
mergeIntoGlobalIndex(sessionKey, wordIndex) {
|
|
101
|
-
for (const word of wordIndex.keys()) {
|
|
102
|
-
if (!this.globalWordIndex.has(word)) this.globalWordIndex.set(word, /* @__PURE__ */ new Set());
|
|
103
|
-
this.globalWordIndex.get(word).add(sessionKey);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
function tokenizeWords(text) {
|
|
108
|
-
return text.toLowerCase().split(/[\W_]+/).map((w) => w.trim()).filter(Boolean);
|
|
109
|
-
}
|
|
110
|
-
function extractIndexableText(content) {
|
|
111
|
-
if (typeof content === "string") return content;
|
|
112
|
-
if (!Array.isArray(content)) return "";
|
|
113
|
-
const parts = [];
|
|
114
|
-
for (const item of content) {
|
|
115
|
-
if (typeof item !== "object" || item === null || !("type" in item)) continue;
|
|
116
|
-
const c = item;
|
|
117
|
-
if (c.type === "text" && typeof c.text === "string") parts.push(c.text);
|
|
118
|
-
}
|
|
119
|
-
return parts.join(" ");
|
|
120
|
-
}
|
|
121
|
-
//#endregion
|
|
122
|
-
export { SessionSearchIndex };
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=search-index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-index.js","names":[],"sources":["../../../src/session/search-index.ts"],"sourcesContent":["/**\n * In-memory inverted index over session transcripts (`sessions.json` + JSONL).\n */\n\nimport { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport { FILENAMES } from '../config/paths.js';\nimport { resolveSessionFilePath } from './parity/transcript-paths.js';\nimport { readTranscriptRowsFromFile, rowsToLlmMessages } from './parity/jsonl-transcript-io.js';\nimport { isTranscriptContextEntry, type TranscriptStoredRow } from './session-context-for-llm.js';\nimport type { XopcSessionDiskEntry } from './parity/xopc-session-disk-entry.js';\n\ninterface IndexedSession {\n key: string;\n messages: AgentMessage[];\n wordIndex: Map<string, Set<number>>;\n}\n\nexport class SessionSearchIndex {\n private sessions = new Map<string, IndexedSession>();\n private globalWordIndex = new Map<string, Set<string>>();\n\n /**\n * Scan `sessionsRoot` (flat `sessions.json` + per-session `.jsonl` transcripts).\n */\n async buildIndex(sessionsRoot: string): Promise<void> {\n this.sessions.clear();\n this.globalWordIndex.clear();\n\n const mapPath = join(sessionsRoot, FILENAMES.SESSIONS_MAP);\n let raw: string;\n try {\n raw = await readFile(mapPath, 'utf-8');\n } catch {\n return;\n }\n let map: Record<string, XopcSessionDiskEntry>;\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return;\n }\n map = parsed as Record<string, XopcSessionDiskEntry>;\n } catch {\n return;\n }\n\n for (const [sessionKey, entry] of Object.entries(map)) {\n if (!entry?.sessionId) {\n continue;\n }\n try {\n const transcriptPath = resolveSessionFilePath(entry.sessionId, entry, { sessionsDir: sessionsRoot });\n const rows = await readTranscriptRowsFromFile(transcriptPath);\n const messages = rowsToLlmMessages(rows);\n const wordIndex = this.buildWordIndex(messages);\n this.mergeContextTextIntoWordIndex(wordIndex, rows, messages.length);\n const indexed: IndexedSession = { key: sessionKey, messages, wordIndex };\n this.sessions.set(sessionKey, indexed);\n this.mergeIntoGlobalIndex(sessionKey, wordIndex);\n } catch {\n /* skip */\n }\n }\n }\n\n search(query: string, limit = 10): Array<{ key: string; score: number }> {\n const queryWords = tokenizeWords(query);\n if (queryWords.length === 0) {\n return [];\n }\n const scores = new Map<string, number>();\n for (const word of queryWords) {\n const matchingSessions = this.globalWordIndex.get(word);\n if (!matchingSessions) {\n continue;\n }\n for (const sessionKey of matchingSessions) {\n scores.set(sessionKey, (scores.get(sessionKey) || 0) + 1);\n }\n }\n return Array.from(scores.entries())\n .map(([key, score]) => ({ key, score: score / queryWords.length }))\n .sort((a, b) => b.score - a.score)\n .slice(0, limit);\n }\n\n getSessionMessages(key: string): AgentMessage[] {\n return this.sessions.get(key)?.messages ?? [];\n }\n\n private buildWordIndex(messages: AgentMessage[]): Map<string, Set<number>> {\n const index = new Map<string, Set<number>>();\n for (let i = 0; i < messages.length; i++) {\n const text = extractIndexableText((messages[i] as { content?: unknown }).content);\n const words = tokenizeWords(text);\n for (const word of words) {\n if (!index.has(word)) {\n index.set(word, new Set());\n }\n index.get(word)!.add(i);\n }\n }\n return index;\n }\n\n private mergeContextTextIntoWordIndex(\n wordIndex: Map<string, Set<number>>,\n rows: TranscriptStoredRow[],\n llmMessageCount: number,\n ): void {\n let slot = 0;\n for (const r of rows) {\n if (!isTranscriptContextEntry(r)) {\n continue;\n }\n const parts: string[] = [];\n if (typeof r.text === 'string' && r.text.trim()) {\n parts.push(r.text);\n }\n if (typeof r.id === 'string' && r.id.trim()) {\n parts.push(r.id);\n }\n const blob = parts.join(' ');\n if (!blob.trim()) {\n continue;\n }\n const words = tokenizeWords(blob);\n const idx = llmMessageCount + slot;\n slot += 1;\n for (const word of words) {\n if (!wordIndex.has(word)) {\n wordIndex.set(word, new Set());\n }\n wordIndex.get(word)!.add(idx);\n }\n }\n }\n\n private mergeIntoGlobalIndex(sessionKey: string, wordIndex: Map<string, Set<number>>): void {\n for (const word of wordIndex.keys()) {\n if (!this.globalWordIndex.has(word)) {\n this.globalWordIndex.set(word, new Set());\n }\n this.globalWordIndex.get(word)!.add(sessionKey);\n }\n }\n}\n\nfunction tokenizeWords(text: string): string[] {\n return text\n .toLowerCase()\n .split(/[\\W_]+/)\n .map((w) => w.trim())\n .filter(Boolean);\n}\n\nfunction extractIndexableText(content: unknown): string {\n if (typeof content === 'string') {\n return content;\n }\n if (!Array.isArray(content)) {\n return '';\n }\n const parts: string[] = [];\n for (const item of content) {\n if (typeof item !== 'object' || item === null || !('type' in item)) {\n continue;\n }\n const c = item as { type?: string; text?: string };\n if (c.type === 'text' && typeof c.text === 'string') {\n parts.push(c.text);\n }\n }\n return parts.join(' ');\n}\n"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|