@xopcai/xopc 0.0.95 → 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-CKe2LMnz.js → agents-DmIuSaOE.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-Mi9mMIZ1.js → apps-page-DFcHBxLw.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BrdyC101.js → channels-settings-DDUf55C5.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-status-swr-D55Bu0nn.js → channels-status-swr-BxF-_nzD.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-api-CPpx2l-E.js → cron-api-DylQtnb_.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-Bx2jB0YN.js → cron-page-BO0d9Pf-.js} +1 -1
- package/dist/gateway/static/root/assets/{dist-D_AiG_Kg.js → dist-BskF0qDS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-6ieHsxRE.js → extension-debug-page-BcZdTdjJ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-B8nywHRO.js → extension-page-D2iuDa1D.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DrskdEIV.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--9ooY8Xl.js → field-primitives-2PekrGZF.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DUZ_W1w-.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-Dj9FuxCm.js → index-Db9fd_X4.js} +74 -74
- package/dist/gateway/static/root/assets/{logs-page-CaXqhpKf.js → logs-page-B3I1a26m.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-page-DYzym2B0.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-B-vSi2dR.js → note-time-CjUGtqKr.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-BkhWdGiT.js → notes-page-BB8-I0Of.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-53YFokoe.js → sessions-page-BcH-1K9i.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-advanced-gate-BaZmaklx.js → settings-advanced-gate-Czn8nnjN.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-DIJPKpTR.js → settings-form-section-ZZWDwgVe.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-Dvb230FF.js → settings-page-BX8c_zrN.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CRyjTAG6.js → share-preview-page-Ch3_6Qah.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-C5ZJbfAe.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-lMYoWhqo.js → utils-uTYKh54l.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-Dda2pcUU.js → voice-api-key-field-BIAYHRs-.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-page.utils-KIladUrU.js → workflow-page.utils-BbWhqD36.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-BTis4Z7Y.js → workflows-page-D4RIF7E1.js} +1 -1
- 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/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/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 +2 -2
- package/dist/gateway/static/root/assets/index-Bj_l8QDp.css +0 -1
- 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
|
@@ -2,9 +2,9 @@ import { init_paths, resolveSkillsDir } from "../../config/paths.js";
|
|
|
2
2
|
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
3
3
|
import { fuzzyFindText, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings } from "../tools/edit-diff.js";
|
|
4
4
|
import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
|
|
5
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
5
6
|
import { join, resolve, sep } from "path";
|
|
6
7
|
import { existsSync, realpathSync } from "fs";
|
|
7
|
-
import { mkdir, writeFile } from "fs/promises";
|
|
8
8
|
//#region src/agent/skills/skill-manage-ops.ts
|
|
9
9
|
/**
|
|
10
10
|
* Shared logic for the skill_manage agent tool (create / edit / patch / delete / write_file / remove_file).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { resolveStateDir } from "../../config/paths-state.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { resolveStateDir } from "../../config/paths-state.js";
|
|
4
4
|
import { init_paths, resolveBundledSkillsDir } from "../../config/paths.js";
|
|
5
5
|
import { createSkillConfigManager, isSkillEnabled } from "./config.js";
|
|
6
6
|
import { formatSkillsForPrompt, selectSkillsVisibleInPrompt } from "./format-skills-prompt.js";
|
|
@@ -3,8 +3,8 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { SHORT_TERM_PROMOTION_LOCK_RELATIVE, SHORT_TERM_RECALL_STORE_RELATIVE } from "../memory/dreaming/constants.js";
|
|
4
4
|
import { loadDreamingStore, saveDreamingStore } from "../memory/dreaming/short-term-store.js";
|
|
5
5
|
import { resolveDreamingConfig } from "../memory/dreaming/config.js";
|
|
6
|
-
import path from "node:path";
|
|
7
6
|
import fs from "node:fs/promises";
|
|
7
|
+
import path from "node:path";
|
|
8
8
|
import { Type } from "@sinclair/typebox";
|
|
9
9
|
//#region src/agent/tools/dreaming-tool.ts
|
|
10
10
|
init_logger();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
|
|
4
4
|
import { createReadFileTool } from "./read.js";
|
|
5
5
|
import { createWriteFileTool } from "./write.js";
|
|
6
6
|
import { createEditFileTool } from "./edit.js";
|
|
@@ -4,9 +4,9 @@ import { isFailoverError } from "../failover-error.js";
|
|
|
4
4
|
import { imageAssetFromDataUrl, imageFileExtensionForMimeType, mimeTypeFromFileName, parseImageDataUrl, sniffImageMimeType } from "../image/generation/image-assets.js";
|
|
5
5
|
import { getImageGenerationProvider } from "../image/generation/provider-registry.js";
|
|
6
6
|
import { generateImage, listImageGenerationProvidersSummary } from "../image/generation/runtime.js";
|
|
7
|
-
import path from "node:path";
|
|
8
7
|
import { randomBytes } from "node:crypto";
|
|
9
8
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
9
|
+
import path from "node:path";
|
|
10
10
|
import { Type } from "@sinclair/typebox";
|
|
11
11
|
//#region src/agent/tools/image-generate-tool.ts
|
|
12
12
|
const DEFAULT_COUNT = 1;
|
|
@@ -6,7 +6,6 @@ export { createShellTool } from './shell.js';
|
|
|
6
6
|
export { createMemorySearchTool, createMemoryGetTool, type MemoryToolOptions, } from './memory-tool.js';
|
|
7
7
|
export { createCuratedMemoryTool } from './curated-memory-tool.js';
|
|
8
8
|
export { createSessionSearchTool } from './session-search-tool.js';
|
|
9
|
-
export { invalidateSessionSearchIndexCache } from '../../session/search-index-cache.js';
|
|
10
9
|
export { grepTool, createGrepTool, type GrepToolInput, type GrepToolDetails, } from './grep.js';
|
|
11
10
|
export { findTool, createFindTool, type FindToolInput, type FindToolDetails, } from './find.js';
|
|
12
11
|
export { createWebSearchTool, createWebFetchTool } from './web.js';
|
|
@@ -7,7 +7,6 @@ import { createListDirTool, listDirTool } from "./list-dir.js";
|
|
|
7
7
|
import { createShellTool } from "./shell.js";
|
|
8
8
|
import { createMemoryGetTool, createMemorySearchTool } from "./memory-tool.js";
|
|
9
9
|
import { createCuratedMemoryTool } from "./curated-memory-tool.js";
|
|
10
|
-
import { invalidateSessionSearchIndexCache } from "../../session/search-index-cache.js";
|
|
11
10
|
import { createSessionSearchTool } from "./session-search-tool.js";
|
|
12
11
|
import { createGrepTool, grepTool } from "./grep.js";
|
|
13
12
|
import { createFindTool, findTool } from "./find.js";
|
|
@@ -32,4 +31,4 @@ import { createSkillManageTool } from "./skill-manage-tool.js";
|
|
|
32
31
|
import { resolveImageModelConfigForTool } from "../image/tool-model-config.js";
|
|
33
32
|
import { createImageTool } from "./image-tool.js";
|
|
34
33
|
import { createImageGenerateTool, resolveImageGenerationModelConfigForTool } from "./image-generate-tool.js";
|
|
35
|
-
export { BrowserManager, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, SANDBOX_ALLOWED_TOOLS, TodoStore, assertBrowserUrlAllowed, buildSandboxToolMap, createClarifyTool, createCreateShareTool, createCronjobTool, createCuratedMemoryTool, createDelegateTool, createDreamingTool, createEditFileTool, createExecuteCodeTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createListDirTool, createMemoryGetTool, createMemorySearchTool, createMessageTool, createReadFileTool, createSendMediaTool, createSessionSearchTool, createSessionStatusTool, createShellTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createTodoTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowTool, createWriteFileTool, editFileTool, findTool, formatSize, fuzzyFindText, generateDiffString, grepTool,
|
|
34
|
+
export { BrowserManager, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, SANDBOX_ALLOWED_TOOLS, TodoStore, assertBrowserUrlAllowed, buildSandboxToolMap, createClarifyTool, createCreateShareTool, createCronjobTool, createCuratedMemoryTool, createDelegateTool, createDreamingTool, createEditFileTool, createExecuteCodeTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createListDirTool, createMemoryGetTool, createMemorySearchTool, createMessageTool, createReadFileTool, createSendMediaTool, createSessionSearchTool, createSessionStatusTool, createShellTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createTodoTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowTool, createWriteFileTool, editFileTool, findTool, formatSize, fuzzyFindText, generateDiffString, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, restoreLineEndings, scanCronPrompt, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { checkFileSafety } from "../prompt/safety.js";
|
|
2
2
|
import { resolvePathUnderWorkspace } from "./tool-paths.js";
|
|
3
|
-
import { basename } from "node:path";
|
|
4
3
|
import { readFile } from "fs/promises";
|
|
4
|
+
import { basename } from "node:path";
|
|
5
5
|
import { Type } from "@sinclair/typebox";
|
|
6
6
|
//#region src/agent/tools/send-media.ts
|
|
7
7
|
const SendMediaSchema = Type.Object({
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
2
|
import type { Config } from '../../config/schema.js';
|
|
3
3
|
import type { SessionStore } from '../../session/store.js';
|
|
4
|
-
export { invalidateSessionSearchIndexCache } from '../../session/search-index-cache.js';
|
|
5
4
|
export interface SessionSearchToolDeps {
|
|
6
5
|
getSessionStore: () => SessionStore;
|
|
7
6
|
getConfig?: () => Config | undefined;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { getDefaultModelSync, init_providers, resolveModel } from "../../providers/index.js";
|
|
4
|
-
import { getOrLoadSessionSearchIndex, invalidateSessionSearchIndexCache } from "../../session/search-index-cache.js";
|
|
5
4
|
import { readAgentMessageContent } from "../memory/agent-message-access.js";
|
|
6
5
|
import { complete } from "@earendil-works/pi-ai";
|
|
7
6
|
import { Type } from "@sinclair/typebox";
|
|
@@ -142,14 +141,20 @@ function createSessionSearchTool(deps) {
|
|
|
142
141
|
}
|
|
143
142
|
};
|
|
144
143
|
}
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
let matches = (await store.list({
|
|
145
|
+
search: query,
|
|
146
|
+
limit: limit + 10,
|
|
147
|
+
sortBy: "updatedAt",
|
|
148
|
+
sortOrder: "desc"
|
|
149
|
+
})).items.map((item) => ({
|
|
150
|
+
key: item.key,
|
|
151
|
+
score: 1
|
|
152
|
+
}));
|
|
147
153
|
const exclude = p.excludeSessionKey?.trim() || deps.getCurrentSessionKey?.() || "";
|
|
148
154
|
if (exclude) matches = matches.filter((m) => m.key !== exclude);
|
|
149
155
|
const top = matches.slice(0, limit);
|
|
150
156
|
const summaries = await Promise.all(top.map(async ({ key, score }) => {
|
|
151
|
-
let messages =
|
|
152
|
-
if (messages.length === 0) messages = await store.load(key);
|
|
157
|
+
let messages = await store.load(key);
|
|
153
158
|
if (p.roleFilter) messages = messages.filter((m) => m.role === p.roleFilter);
|
|
154
159
|
return {
|
|
155
160
|
sessionKey: key,
|
|
@@ -187,6 +192,6 @@ function createSessionSearchTool(deps) {
|
|
|
187
192
|
};
|
|
188
193
|
}
|
|
189
194
|
//#endregion
|
|
190
|
-
export { createSessionSearchTool
|
|
195
|
+
export { createSessionSearchTool };
|
|
191
196
|
|
|
192
197
|
//# sourceMappingURL=session-search-tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-search-tool.js","names":[],"sources":["../../../../src/agent/tools/session-search-tool.ts"],"sourcesContent":["// Cross-session transcript search + optional LLM summaries\nimport { Type } from '@sinclair/typebox';\nimport type { AgentMessage, AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { complete, type UserMessage } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport { getDefaultModelSync, resolveModel } from '../../providers/index.js';\nimport { getOrLoadSessionSearchIndex } from '../../session/search-index-cache.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { readAgentMessageContent } from '../memory/agent-message-access.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('Agent:SessionSearch');\n\nconst MAX_SUMMARY_CHARS = 20_000;\n\nexport { invalidateSessionSearchIndexCache } from '../../session/search-index-cache.js';\n\nfunction resolveSummaryModel(getConfig?: () => Config | undefined) {\n const envRef = process.env.XOPC_SESSION_SEARCH_MODEL?.trim();\n const configRef = getConfig?.()?.agents?.defaults?.sessionSearch?.summaryModel?.trim();\n const ref = envRef || configRef;\n if (ref) {\n try {\n return resolveModel(ref);\n } catch (err) {\n log.warn({ err, ref }, 'session_search: summary model resolve failed, using fallback');\n }\n }\n try {\n return resolveModel('openai/gpt-4o-mini');\n } catch {\n const d = getDefaultModelSync(getConfig?.());\n return resolveModel(d);\n }\n}\n\nfunction extractTextFromContent(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\nfunction formatMessagesForSummary(messages: AgentMessage[]): string {\n const lines: string[] = [];\n let total = 0;\n for (const msg of messages) {\n const role = String(msg.role || 'unknown').toUpperCase();\n const text = extractTextFromContent(readAgentMessageContent(msg));\n const line = `${role}: ${text}`;\n if (total + line.length > MAX_SUMMARY_CHARS) {\n lines.push('… [truncated]');\n break;\n }\n lines.push(line);\n total += line.length + 1;\n }\n return lines.join('\\n\\n');\n}\n\nasync function summarizeSession(\n messages: AgentMessage[],\n query: string,\n getConfig: (() => Config | undefined) | undefined,\n signal: AbortSignal | undefined,\n logMeta?: { summarizingSessionKey: string },\n): Promise<string> {\n if (messages.length === 0) {\n return 'No messages in session.';\n }\n\n const formatted = formatMessagesForSummary(messages);\n const prompt = `Summarize this conversation for someone searching with: \"${query}\". Focus on facts, decisions, and names. Max 200 words. Use the same language as the conversation when possible.\n\nConversation:\n${formatted}`;\n\n const userMsg: UserMessage = { role: 'user', content: prompt, timestamp: Date.now() };\n const model = resolveSummaryModel(getConfig);\n\n try {\n const result = await complete(\n model,\n { messages: [userMsg] },\n {\n maxTokens: 400,\n temperature: 0.15,\n signal: signal as AbortSignal,\n },\n );\n\n let text = '';\n if (Array.isArray(result.content)) {\n for (const c of result.content) {\n if (c && typeof c === 'object' && (c as { type?: string }).type === 'text') {\n text += String((c as { text?: string }).text || '');\n }\n }\n }\n return text.trim() || '[Empty summary]';\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n {\n err,\n summarizingSessionKey: logMeta?.summarizingSessionKey,\n queryLength: query.length,\n messageCount: messages.length,\n },\n `session_search LLM summarization failed${logMeta?.summarizingSessionKey ? ` (session ${logMeta.summarizingSessionKey})` : ''}: ${msg}`,\n );\n return `[Summarization failed: ${msg}]`;\n }\n}\n\nconst SessionSearchSchema = Type.Object({\n query: Type.Optional(\n Type.String({ description: 'Keyword search over past sessions. Omit to list recent sessions.' }),\n ),\n roleFilter: Type.Optional(\n Type.Union([\n Type.Literal('user'),\n Type.Literal('assistant'),\n Type.Literal('system'),\n Type.Literal('tool'),\n Type.Literal('toolResult'),\n ]),\n ),\n limit: Type.Optional(Type.Number({ minimum: 1, maximum: 15 })),\n excludeSessionKey: Type.Optional(\n Type.String({ description: 'Exclude this session key from keyword results (default: current chat).' }),\n ),\n});\n\nexport interface SessionSearchToolDeps {\n getSessionStore: () => SessionStore;\n getConfig?: () => Config | undefined;\n getCurrentSessionKey?: () => string | undefined;\n}\n\ntype SessionSearchParams = {\n query?: string;\n roleFilter?: 'user' | 'assistant' | 'system' | 'tool' | 'toolResult';\n limit?: number;\n excludeSessionKey?: string;\n};\n\nexport function createSessionSearchTool(deps: SessionSearchToolDeps): AgentTool {\n return {\n name: 'session_search',\n label: 'Session search',\n description:\n 'Search other chat sessions by keywords and get short summaries, or omit `query` to list recent sessions (no LLM cost). Uses the same session store as the gateway. Narrow with roleFilter if needed.',\n parameters: SessionSearchSchema,\n\n async execute(\n _toolCallId: string,\n params: any,\n signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n const p = params as SessionSearchParams;\n const store = deps.getSessionStore();\n const limit = Math.min(15, Math.max(1, p.limit ?? 5));\n const query = p.query?.trim() ?? '';\n\n try {\n if (!query) {\n const listed = await store.list({\n limit: limit + 5,\n sortBy: 'updatedAt',\n sortOrder: 'desc',\n });\n const items = listed.items.slice(0, limit).map((s) => ({\n key: s.key,\n name: s.name,\n updatedAt: s.updatedAt,\n messageCount: s.messageCount,\n sourceChannel: s.sourceChannel,\n }));\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n { success: true, mode: 'recent', results: items, total: listed.total },\n null,\n 2,\n ),\n },\n ],\n details: { mode: 'recent', items },\n };\n }\n\n const sessionsRoot = store.getSessionsRoot();\n const index = await getOrLoadSessionSearchIndex(sessionsRoot);\n let matches = index.search(query, 80);\n\n const exclude = p.excludeSessionKey?.trim() || deps.getCurrentSessionKey?.() || '';\n if (exclude) {\n matches = matches.filter((m) => m.key !== exclude);\n }\n\n const top = matches.slice(0, limit);\n\n const summaries = await Promise.all(\n top.map(async ({ key, score }) => {\n let messages = index.getSessionMessages(key);\n if (messages.length === 0) {\n messages = await store.load(key);\n }\n\n if (p.roleFilter) {\n messages = messages.filter((m) => m.role === p.roleFilter);\n }\n\n const summary = await summarizeSession(messages, query, deps.getConfig, signal, {\n summarizingSessionKey: key,\n });\n return { sessionKey: key, score, summary };\n }),\n );\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n mode: 'keyword',\n query,\n results: summaries,\n count: summaries.length,\n },\n null,\n 2,\n ),\n },\n ],\n details: { query, summaries },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: 'text', text: `session_search error: ${message}` }],\n details: { error: message },\n };\n }\n },\n } as any;\n}\n"],"mappings":";;;;;;;;gBAM6E;aAIxB;AAErD,MAAM,MAAM,aAAa,sBAAsB;AAE/C,MAAM,oBAAoB;AAI1B,SAAS,oBAAoB,WAAsC;CACjE,MAAM,SAAS,QAAQ,IAAI,2BAA2B,MAAM;CAC5D,MAAM,YAAY,aAAa,EAAE,QAAQ,UAAU,eAAe,cAAc,MAAM;CACtF,MAAM,MAAM,UAAU;AACtB,KAAI,IACF,KAAI;AACF,SAAO,aAAa,IAAI;UACjB,KAAK;AACZ,MAAI,KAAK;GAAE;GAAK;GAAK,EAAE,+DAA+D;;AAG1F,KAAI;AACF,SAAO,aAAa,qBAAqB;SACnC;AAEN,SAAO,aADG,oBAAoB,aAAa,CACtB,CAAC;;;AAI1B,SAAS,uBAAuB,SAA0B;AACxD,KAAI,OAAO,YAAY,SACrB,QAAO;AAET,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,QAAO;CAET,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,QAAQ,SAAS;AAC1B,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,UAAU,MAC3D;EAEF,MAAM,IAAI;AACV,MAAI,EAAE,SAAS,UAAU,OAAO,EAAE,SAAS,SACzC,OAAM,KAAK,EAAE,KAAK;;AAGtB,QAAO,MAAM,KAAK,IAAI;;AAGxB,SAAS,yBAAyB,UAAkC;CAClE,MAAM,QAAkB,EAAE;CAC1B,IAAI,QAAQ;AACZ,MAAK,MAAM,OAAO,UAAU;EAG1B,MAAM,OAAO,GAFA,OAAO,IAAI,QAAQ,UAAU,CAAC,aAEvB,CAAC,IADR,uBAAuB,wBAAwB,IAAI,CACnC;AAC7B,MAAI,QAAQ,KAAK,SAAS,mBAAmB;AAC3C,SAAM,KAAK,gBAAgB;AAC3B;;AAEF,QAAM,KAAK,KAAK;AAChB,WAAS,KAAK,SAAS;;AAEzB,QAAO,MAAM,KAAK,OAAO;;AAG3B,eAAe,iBACb,UACA,OACA,WACA,QACA,SACiB;AACjB,KAAI,SAAS,WAAW,EACtB,QAAO;CAST,MAAM,UAAuB;EAAE,MAAM;EAAQ,SAAS,4DALqB,MAAM;;;EAD/D,yBAAyB,SAIlC;EAEqD,WAAW,KAAK,KAAK;EAAE;CACrF,MAAM,QAAQ,oBAAoB,UAAU;AAE5C,KAAI;EACF,MAAM,SAAS,MAAM,SACnB,OACA,EAAE,UAAU,CAAC,QAAQ,EAAE,EACvB;GACE,WAAW;GACX,aAAa;GACL;GACT,CACF;EAED,IAAI,OAAO;AACX,MAAI,MAAM,QAAQ,OAAO,QAAQ;QAC1B,MAAM,KAAK,OAAO,QACrB,KAAI,KAAK,OAAO,MAAM,YAAa,EAAwB,SAAS,OAClE,SAAQ,OAAQ,EAAwB,QAAQ,GAAG;;AAIzD,SAAO,KAAK,MAAM,IAAI;UACf,KAAK;EACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,MAAI,KACF;GACE;GACA,uBAAuB,SAAS;GAChC,aAAa,MAAM;GACnB,cAAc,SAAS;GACxB,EACD,0CAA0C,SAAS,wBAAwB,aAAa,QAAQ,sBAAsB,KAAK,GAAG,IAAI,MACnI;AACD,SAAO,0BAA0B,IAAI;;;AAIzC,MAAM,sBAAsB,KAAK,OAAO;CACtC,OAAO,KAAK,SACV,KAAK,OAAO,EAAE,aAAa,oEAAoE,CAAC,CACjG;CACD,YAAY,KAAK,SACf,KAAK,MAAM;EACT,KAAK,QAAQ,OAAO;EACpB,KAAK,QAAQ,YAAY;EACzB,KAAK,QAAQ,SAAS;EACtB,KAAK,QAAQ,OAAO;EACpB,KAAK,QAAQ,aAAa;EAC3B,CAAC,CACH;CACD,OAAO,KAAK,SAAS,KAAK,OAAO;EAAE,SAAS;EAAG,SAAS;EAAI,CAAC,CAAC;CAC9D,mBAAmB,KAAK,SACtB,KAAK,OAAO,EAAE,aAAa,0EAA0E,CAAC,CACvG;CACF,CAAC;AAeF,SAAgB,wBAAwB,MAAwC;AAC9E,QAAO;EACL,MAAM;EACN,OAAO;EACP,aACE;EACF,YAAY;EAEZ,MAAM,QACJ,aACA,QACA,QAC8B;GAC9B,MAAM,IAAI;GACV,MAAM,QAAQ,KAAK,iBAAiB;GACpC,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC;GACrD,MAAM,QAAQ,EAAE,OAAO,MAAM,IAAI;AAEjC,OAAI;AACF,QAAI,CAAC,OAAO;KACV,MAAM,SAAS,MAAM,MAAM,KAAK;MAC9B,OAAO,QAAQ;MACf,QAAQ;MACR,WAAW;MACZ,CAAC;KACF,MAAM,QAAQ,OAAO,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,OAAO;MACrD,KAAK,EAAE;MACP,MAAM,EAAE;MACR,WAAW,EAAE;MACb,cAAc,EAAE;MAChB,eAAe,EAAE;MAClB,EAAE;AAEH,YAAO;MACL,SAAS,CACP;OACE,MAAM;OACN,MAAM,KAAK,UACT;QAAE,SAAS;QAAM,MAAM;QAAU,SAAS;QAAO,OAAO,OAAO;QAAO,EACtE,MACA,EACD;OACF,CACF;MACD,SAAS;OAAE,MAAM;OAAU;OAAO;MACnC;;IAIH,MAAM,QAAQ,MAAM,4BADC,MAAM,iBACiC,CAAC;IAC7D,IAAI,UAAU,MAAM,OAAO,OAAO,GAAG;IAErC,MAAM,UAAU,EAAE,mBAAmB,MAAM,IAAI,KAAK,wBAAwB,IAAI;AAChF,QAAI,QACF,WAAU,QAAQ,QAAQ,MAAM,EAAE,QAAQ,QAAQ;IAGpD,MAAM,MAAM,QAAQ,MAAM,GAAG,MAAM;IAEnC,MAAM,YAAY,MAAM,QAAQ,IAC9B,IAAI,IAAI,OAAO,EAAE,KAAK,YAAY;KAChC,IAAI,WAAW,MAAM,mBAAmB,IAAI;AAC5C,SAAI,SAAS,WAAW,EACtB,YAAW,MAAM,MAAM,KAAK,IAAI;AAGlC,SAAI,EAAE,WACJ,YAAW,SAAS,QAAQ,MAAM,EAAE,SAAS,EAAE,WAAW;AAM5D,YAAO;MAAE,YAAY;MAAK;MAAO,SAAA,MAHX,iBAAiB,UAAU,OAAO,KAAK,WAAW,QAAQ,EAC9E,uBAAuB,KACxB,CAAC;MACwC;MAC1C,CACH;AAED,WAAO;KACL,SAAS,CACP;MACE,MAAM;MACN,MAAM,KAAK,UACT;OACE,SAAS;OACT,MAAM;OACN;OACA,SAAS;OACT,OAAO,UAAU;OAClB,EACD,MACA,EACD;MACF,CACF;KACD,SAAS;MAAE;MAAO;MAAW;KAC9B;YACM,KAAK;IACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAChE,WAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,yBAAyB;MAAW,CAAC;KACrE,SAAS,EAAE,OAAO,SAAS;KAC5B;;;EAGN"}
|
|
1
|
+
{"version":3,"file":"session-search-tool.js","names":[],"sources":["../../../../src/agent/tools/session-search-tool.ts"],"sourcesContent":["// Cross-session transcript search + optional LLM summaries\nimport { Type } from '@sinclair/typebox';\nimport type { AgentMessage, AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { complete, type UserMessage } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport { getDefaultModelSync, resolveModel } from '../../providers/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { readAgentMessageContent } from '../memory/agent-message-access.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('Agent:SessionSearch');\n\nconst MAX_SUMMARY_CHARS = 20_000;\n\nfunction resolveSummaryModel(getConfig?: () => Config | undefined) {\n const envRef = process.env.XOPC_SESSION_SEARCH_MODEL?.trim();\n const configRef = getConfig?.()?.agents?.defaults?.sessionSearch?.summaryModel?.trim();\n const ref = envRef || configRef;\n if (ref) {\n try {\n return resolveModel(ref);\n } catch (err) {\n log.warn({ err, ref }, 'session_search: summary model resolve failed, using fallback');\n }\n }\n try {\n return resolveModel('openai/gpt-4o-mini');\n } catch {\n const d = getDefaultModelSync(getConfig?.());\n return resolveModel(d);\n }\n}\n\nfunction extractTextFromContent(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\nfunction formatMessagesForSummary(messages: AgentMessage[]): string {\n const lines: string[] = [];\n let total = 0;\n for (const msg of messages) {\n const role = String(msg.role || 'unknown').toUpperCase();\n const text = extractTextFromContent(readAgentMessageContent(msg));\n const line = `${role}: ${text}`;\n if (total + line.length > MAX_SUMMARY_CHARS) {\n lines.push('… [truncated]');\n break;\n }\n lines.push(line);\n total += line.length + 1;\n }\n return lines.join('\\n\\n');\n}\n\nasync function summarizeSession(\n messages: AgentMessage[],\n query: string,\n getConfig: (() => Config | undefined) | undefined,\n signal: AbortSignal | undefined,\n logMeta?: { summarizingSessionKey: string },\n): Promise<string> {\n if (messages.length === 0) {\n return 'No messages in session.';\n }\n\n const formatted = formatMessagesForSummary(messages);\n const prompt = `Summarize this conversation for someone searching with: \"${query}\". Focus on facts, decisions, and names. Max 200 words. Use the same language as the conversation when possible.\n\nConversation:\n${formatted}`;\n\n const userMsg: UserMessage = { role: 'user', content: prompt, timestamp: Date.now() };\n const model = resolveSummaryModel(getConfig);\n\n try {\n const result = await complete(\n model,\n { messages: [userMsg] },\n {\n maxTokens: 400,\n temperature: 0.15,\n signal: signal as AbortSignal,\n },\n );\n\n let text = '';\n if (Array.isArray(result.content)) {\n for (const c of result.content) {\n if (c && typeof c === 'object' && (c as { type?: string }).type === 'text') {\n text += String((c as { text?: string }).text || '');\n }\n }\n }\n return text.trim() || '[Empty summary]';\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n {\n err,\n summarizingSessionKey: logMeta?.summarizingSessionKey,\n queryLength: query.length,\n messageCount: messages.length,\n },\n `session_search LLM summarization failed${logMeta?.summarizingSessionKey ? ` (session ${logMeta.summarizingSessionKey})` : ''}: ${msg}`,\n );\n return `[Summarization failed: ${msg}]`;\n }\n}\n\nconst SessionSearchSchema = Type.Object({\n query: Type.Optional(\n Type.String({ description: 'Keyword search over past sessions. Omit to list recent sessions.' }),\n ),\n roleFilter: Type.Optional(\n Type.Union([\n Type.Literal('user'),\n Type.Literal('assistant'),\n Type.Literal('system'),\n Type.Literal('tool'),\n Type.Literal('toolResult'),\n ]),\n ),\n limit: Type.Optional(Type.Number({ minimum: 1, maximum: 15 })),\n excludeSessionKey: Type.Optional(\n Type.String({ description: 'Exclude this session key from keyword results (default: current chat).' }),\n ),\n});\n\nexport interface SessionSearchToolDeps {\n getSessionStore: () => SessionStore;\n getConfig?: () => Config | undefined;\n getCurrentSessionKey?: () => string | undefined;\n}\n\ntype SessionSearchParams = {\n query?: string;\n roleFilter?: 'user' | 'assistant' | 'system' | 'tool' | 'toolResult';\n limit?: number;\n excludeSessionKey?: string;\n};\n\nexport function createSessionSearchTool(deps: SessionSearchToolDeps): AgentTool {\n return {\n name: 'session_search',\n label: 'Session search',\n description:\n 'Search other chat sessions by keywords and get short summaries, or omit `query` to list recent sessions (no LLM cost). Uses the same session store as the gateway. Narrow with roleFilter if needed.',\n parameters: SessionSearchSchema,\n\n async execute(\n _toolCallId: string,\n params: any,\n signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n const p = params as SessionSearchParams;\n const store = deps.getSessionStore();\n const limit = Math.min(15, Math.max(1, p.limit ?? 5));\n const query = p.query?.trim() ?? '';\n\n try {\n if (!query) {\n const listed = await store.list({\n limit: limit + 5,\n sortBy: 'updatedAt',\n sortOrder: 'desc',\n });\n const items = listed.items.slice(0, limit).map((s) => ({\n key: s.key,\n name: s.name,\n updatedAt: s.updatedAt,\n messageCount: s.messageCount,\n sourceChannel: s.sourceChannel,\n }));\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n { success: true, mode: 'recent', results: items, total: listed.total },\n null,\n 2,\n ),\n },\n ],\n details: { mode: 'recent', items },\n };\n }\n\n const listed = await store.list({\n search: query,\n limit: limit + 10,\n sortBy: 'updatedAt',\n sortOrder: 'desc',\n });\n let matches = listed.items.map((item) => ({ key: item.key, score: 1 }));\n\n const exclude = p.excludeSessionKey?.trim() || deps.getCurrentSessionKey?.() || '';\n if (exclude) {\n matches = matches.filter((m) => m.key !== exclude);\n }\n\n const top = matches.slice(0, limit);\n\n const summaries = await Promise.all(\n top.map(async ({ key, score }) => {\n let messages = await store.load(key);\n\n if (p.roleFilter) {\n messages = messages.filter((m) => m.role === p.roleFilter);\n }\n\n const summary = await summarizeSession(messages, query, deps.getConfig, signal, {\n summarizingSessionKey: key,\n });\n return { sessionKey: key, score, summary };\n }),\n );\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n mode: 'keyword',\n query,\n results: summaries,\n count: summaries.length,\n },\n null,\n 2,\n ),\n },\n ],\n details: { query, summaries },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: 'text', text: `session_search error: ${message}` }],\n details: { error: message },\n };\n }\n },\n } as any;\n}\n"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { resolveStateDir } from "../../config/paths-state.js";
|
|
|
2
2
|
import { init_paths } from "../../config/paths.js";
|
|
3
3
|
import { createSkillConfigManager } from "../skills/config.js";
|
|
4
4
|
import { applyPatchToContent, atomicWriteUtf8, effectiveAgentWritePolicy, ensureCategorySegment, isPathInsideDir, maxSkillMdChars, maxSupportFileBytes, mutatableSkillOrNull, resolveCreateSkillDir, scanSkillDirOrError, validateSkillMdContent, validateSkillNameSegment, validateSupportingRelativePath } from "../skills/skill-manage-ops.js";
|
|
5
|
+
import { readFile, rm } from "fs/promises";
|
|
5
6
|
import { join } from "path";
|
|
6
7
|
import { existsSync, rmSync } from "fs";
|
|
7
|
-
import { readFile, rm } from "fs/promises";
|
|
8
8
|
import { Type } from "@sinclair/typebox";
|
|
9
9
|
//#region src/agent/tools/skill-manage-tool.ts
|
|
10
10
|
init_paths();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { extractProfileAgentId } from "../../config/agent-profile.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { extractProfileAgentId } from "../../config/agent-profile.js";
|
|
4
4
|
import { parseWorkflowScript } from "../workflow/parser.js";
|
|
5
5
|
import "../workflow/index.js";
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { checkFileSafety } from "../prompt/safety.js";
|
|
2
2
|
import { isBareProfileMarkdownFileName, resolvePathUnderWorkspace, resolveProfileMarkdownPathIfBareName } from "./tool-paths.js";
|
|
3
3
|
import { evaluateFilePolicy } from "../sandbox/exec-policy.js";
|
|
4
|
-
import { dirname } from "path";
|
|
5
4
|
import { mkdir, writeFile } from "fs/promises";
|
|
5
|
+
import { dirname } from "path";
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
7
7
|
//#region src/agent/tools/write.ts
|
|
8
8
|
const MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
|
|
2
2
|
import { BUILTIN_WORKFLOWS } from "./builtins/index.js";
|
|
3
3
|
import { parseWorkflowScript } from "./parser.js";
|
|
4
|
-
import { join } from "node:path";
|
|
5
4
|
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
6
|
//#region src/agent/workflow/catalog.ts
|
|
7
7
|
/**
|
|
8
8
|
* Catalog for named workflows.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
2
3
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
4
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
-
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveCredentialsDir, resolveOAuthPath } from "../config/paths.js";
|
|
5
|
-
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
6
5
|
import { getApiKeyFromEnv, init_env_keys } from "../providers/env-keys.js";
|
|
7
|
-
import {
|
|
6
|
+
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveCredentialsDir, resolveOAuthPath } from "../config/paths.js";
|
|
8
7
|
import { mkdir, readFile, rm } from "fs/promises";
|
|
8
|
+
import { dirname, join } from "path";
|
|
9
9
|
//#region src/auth/credentials.ts
|
|
10
10
|
function getCredentialResolver(options) {
|
|
11
11
|
return new CredentialResolver(options);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
|
|
2
|
-
import path from "node:path";
|
|
3
2
|
import { chmodSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
4
|
import { homedir } from "os";
|
|
5
5
|
//#region src/auth/profiles/store.ts
|
|
6
6
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
3
2
|
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveOAuthPath } from "../config/paths.js";
|
|
4
3
|
import { init_loader, loadConfig } from "../config/loader.js";
|
|
4
|
+
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
5
5
|
import { existsSync, readFileSync } from "node:fs";
|
|
6
6
|
//#region src/auth/sync-provider-auth.ts
|
|
7
7
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
2
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
4
|
//#region src/browser/cache-dir-policy.ts
|
|
5
5
|
function expandHome(input) {
|
|
6
6
|
if (input === "~") return homedir();
|
|
@@ -2,10 +2,10 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { loadPlaywrightCoreModule } from "./providers/playwright-doctor.js";
|
|
4
4
|
import { pickFreePort } from "./free-port.js";
|
|
5
|
-
import { homedir, platform } from "node:os";
|
|
6
|
-
import { join } from "node:path";
|
|
7
5
|
import { existsSync } from "node:fs";
|
|
8
6
|
import { mkdir, rm } from "node:fs/promises";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import { homedir, platform } from "node:os";
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
10
10
|
//#region src/browser/cdp-local-launcher.ts
|
|
11
11
|
/**
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { PACKAGE_VERSION, init_package_version } from "../../package-version.js";
|
|
2
|
-
import {
|
|
2
|
+
import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
|
|
3
3
|
import { createLogger } from "../../utils/logger/index.js";
|
|
4
4
|
import { init_logger } from "../../utils/logger.js";
|
|
5
5
|
import { init_paths, resolveBinDir } from "../../config/paths.js";
|
|
6
|
-
import {
|
|
6
|
+
import { assertCacheDir, init_cache_dir_policy } from "../cache-dir-policy.js";
|
|
7
7
|
import { resolvePackageRoot } from "../../infra/update-check.js";
|
|
8
|
-
import { dirname, join } from "node:path";
|
|
9
8
|
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
10
9
|
import { readFile, readdir, rm } from "node:fs/promises";
|
|
11
|
-
import {
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
12
11
|
import { fileURLToPath } from "node:url";
|
|
12
|
+
import { spawn } from "node:child_process";
|
|
13
13
|
//#region src/browser/providers/browser-ext-install.ts
|
|
14
14
|
/**
|
|
15
15
|
* Install bundled Chrome extension artifacts into {resolveBinDir()}/browser-ext/.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { assertCacheDir, expandHome, init_cache_dir_policy } from "../cache-dir-policy.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
4
3
|
import { init_paths, resolveBinDir } from "../../config/paths.js";
|
|
4
|
+
import { assertCacheDir, expandHome, init_cache_dir_policy } from "../cache-dir-policy.js";
|
|
5
5
|
import { loadPlaywrightCoreModule } from "./playwright-doctor.js";
|
|
6
6
|
import { WEBDRIVER_OVERRIDE_SCRIPT, buildStealthArgs, filterCloakBrowserExtraArgs, generateFingerprintSeed, makeExecutable, removeQuarantineAttr } from "../stealth.js";
|
|
7
7
|
import { pickFreePort } from "../free-port.js";
|
|
8
|
-
import { arch, platform, tmpdir } from "node:os";
|
|
9
|
-
import { join, resolve } from "node:path";
|
|
10
|
-
import { createReadStream, createWriteStream } from "node:fs";
|
|
11
8
|
import { createHash } from "node:crypto";
|
|
9
|
+
import { createReadStream, createWriteStream } from "node:fs";
|
|
12
10
|
import { mkdir, mkdtemp, rm, stat } from "node:fs/promises";
|
|
11
|
+
import { join, resolve } from "node:path";
|
|
12
|
+
import { arch, platform, tmpdir } from "node:os";
|
|
13
13
|
import { spawn } from "node:child_process";
|
|
14
14
|
import { Readable, Transform } from "node:stream";
|
|
15
15
|
import AdmZip from "adm-zip";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
2
|
import { existsSync } from "node:fs";
|
|
4
3
|
import { stat } from "node:fs/promises";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
//#region src/browser/providers/playwright-doctor.ts
|
|
7
7
|
/** Root directory of the `playwright-core` package (Electron extraResources or node_modules). */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
-
import { platform } from "node:os";
|
|
4
3
|
import { chmod, stat } from "node:fs/promises";
|
|
4
|
+
import { platform } from "node:os";
|
|
5
5
|
import { exec } from "node:child_process";
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
7
|
//#region src/browser/stealth.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { join, resolve } from "path";
|
|
4
3
|
import { mkdir, writeFile } from "fs/promises";
|
|
4
|
+
import { join, resolve } from "path";
|
|
5
5
|
import { randomBytes } from "crypto";
|
|
6
6
|
//#region src/channels/attachments/inbound-persist.ts
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { join, resolve } from "path";
|
|
4
3
|
import { mkdir, writeFile } from "fs/promises";
|
|
4
|
+
import { join, resolve } from "path";
|
|
5
5
|
import { randomBytes } from "crypto";
|
|
6
6
|
//#region src/channels/attachments/outbound-tts-persist.ts
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { join } from "path";
|
|
3
4
|
import { existsSync, mkdirSync, readFileSync } from "fs";
|
|
4
|
-
import { randomUUID } from "node:crypto";
|
|
5
5
|
//#region src/channels/outbound/persist-store.ts
|
|
6
6
|
/**
|
|
7
7
|
* Durable outbound queue (crash recovery): JSON file under agent internal dir.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { appendAllowFromIdSync } from "./allow-from-file.js";
|
|
2
2
|
import "./pairing-constants.js";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import fs from "node:fs";
|
|
5
3
|
import crypto from "node:crypto";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
6
|
//#region src/channels/pairing/pairing-store.ts
|
|
7
7
|
const PAIRING_CODE_LENGTH = 8;
|
|
8
8
|
const PAIRING_CODE_ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { init_agent_scope, normalizeAgentId, resolveAgentProfileDir } from "../agent/agent-scope.js";
|
|
2
|
-
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../routing/agent-session-key.js";
|
|
3
2
|
import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
|
|
3
|
+
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../routing/agent-session-key.js";
|
|
4
4
|
import { commandRegistry } from "./registry.js";
|
|
5
|
-
import { join } from "node:path";
|
|
6
5
|
import { readFile } from "node:fs/promises";
|
|
6
|
+
import { join } from "node:path";
|
|
7
7
|
//#region src/chat-commands/agent-edit.ts
|
|
8
8
|
/**
|
|
9
9
|
* /agent-edit — open the current chat as an agent profile editing session.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
2
|
-
import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
|
|
3
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
4
2
|
import { init_logger } from "../../utils/logger.js";
|
|
5
3
|
import { init_paths, resolveConfigPath } from "../../config/paths.js";
|
|
4
|
+
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
6
5
|
import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
|
|
6
|
+
import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
|
|
7
7
|
import { commandRegistry } from "../registry.js";
|
|
8
8
|
import { resolveAllowlistMatchSimple } from "../../channels/security.js";
|
|
9
9
|
import { parseConfigValue } from "../config-value.js";
|
|
@@ -4,8 +4,8 @@ import { init_loader, saveConfig } from "../config/loader.js";
|
|
|
4
4
|
import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
|
|
5
5
|
import { getRoutingInfo, getSessionDisplayName } from "./session-key.js";
|
|
6
6
|
import { wrapMarkdownExportAsHtml } from "../session/chat-export.js";
|
|
7
|
-
import { join } from "path";
|
|
8
7
|
import { mkdir, writeFile } from "fs/promises";
|
|
8
|
+
import { join } from "path";
|
|
9
9
|
//#region src/chat-commands/context.ts
|
|
10
10
|
init_logger();
|
|
11
11
|
init_loader();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
2
1
|
import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
|
|
2
|
+
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
3
3
|
import { resolveGatewayLocalClientHost } from "../../config/gateway-bind.js";
|
|
4
4
|
import { formatExamples, register } from "../registry.js";
|
|
5
5
|
import { existsSync, readFileSync } from "fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConfigSchema, init_schema } from "../../../../config/schema.js";
|
|
2
2
|
import { init_loader, loadConfig, saveConfig } from "../../../../config/loader.js";
|
|
3
|
-
import { dirname } from "node:path";
|
|
4
3
|
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
4
|
+
import { dirname } from "node:path";
|
|
5
5
|
//#region src/cli/commands/doctor/checks/config-health.ts
|
|
6
6
|
init_loader();
|
|
7
7
|
init_schema();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "../../../../providers/env-keys.js";
|
|
1
2
|
import { getAgentDefaultModelRef, init_schema, parseModelRef } from "../../../../config/schema.js";
|
|
2
3
|
import { init_loader, loadConfig } from "../../../../config/loader.js";
|
|
3
|
-
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "../../../../providers/env-keys.js";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
//#region src/cli/commands/doctor/checks/provider-auth.ts
|
|
6
6
|
init_loader();
|