@pellux/goodvibes-tui 0.18.11 → 0.18.13
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/CHANGELOG.md +72 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +1 -138
- package/src/config/subscription-providers.ts +1 -127
- package/src/core/conversation-rendering.ts +5 -5
- package/src/core/conversation.ts +177 -424
- package/src/core/history.ts +45 -0
- package/src/core/orchestrator.ts +3 -733
- package/src/core/system-message-router.ts +19 -58
- package/src/input/command-registry.ts +3 -3
- package/src/input/commands/session-content.ts +2 -2
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed.ts +2 -2
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/search.ts +1 -1
- package/src/input/selection.ts +2 -2
- package/src/input/session-picker-modal.ts +1 -1
- package/src/main.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +3 -3
- package/src/panels/agent-logs-panel.ts +3 -3
- package/src/panels/approval-panel.ts +2 -2
- package/src/panels/automation-control-panel.ts +3 -3
- package/src/panels/base-panel.ts +14 -14
- package/src/panels/builtin/agent.ts +1 -0
- package/src/panels/builtin/operations.ts +2 -1
- package/src/panels/builtin/session.ts +2 -2
- package/src/panels/builtin/shared.ts +5 -5
- package/src/panels/cockpit-panel.ts +2 -2
- package/src/panels/communication-panel.ts +3 -3
- package/src/panels/context-visualizer-panel.ts +6 -3
- package/src/panels/control-plane-panel.ts +3 -3
- package/src/panels/cost-tracker-panel.ts +3 -3
- package/src/panels/debug-panel.ts +2 -2
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/docs-panel.ts +1 -1
- package/src/panels/eval-panel.ts +2 -2
- package/src/panels/file-explorer-panel.ts +3 -3
- package/src/panels/file-preview-panel.ts +3 -3
- package/src/panels/forensics-panel.ts +2 -2
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hooks-panel.ts +3 -3
- package/src/panels/incident-review-panel.ts +1 -1
- package/src/panels/intelligence-panel.ts +2 -2
- package/src/panels/knowledge-panel.ts +1 -1
- package/src/panels/local-auth-panel.ts +2 -2
- package/src/panels/marketplace-panel.ts +1 -1
- package/src/panels/mcp-panel.ts +3 -3
- package/src/panels/memory-panel.ts +1 -1
- package/src/panels/ops-control-panel.ts +3 -3
- package/src/panels/ops-strategy-panel.ts +2 -2
- package/src/panels/orchestration-panel.ts +2 -2
- package/src/panels/panel-list-panel.ts +6 -6
- package/src/panels/plan-dashboard-panel.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/policy-panel.ts +2 -2
- package/src/panels/polish.ts +3 -3
- package/src/panels/provider-accounts-panel.ts +2 -2
- package/src/panels/provider-health-domains.ts +5 -1
- package/src/panels/provider-health-panel.ts +7 -3
- package/src/panels/provider-stats-panel.ts +3 -3
- package/src/panels/remote-panel.ts +3 -3
- package/src/panels/routes-panel.ts +3 -3
- package/src/panels/sandbox-panel.ts +2 -2
- package/src/panels/schedule-panel.ts +1 -1
- package/src/panels/security-panel.ts +2 -2
- package/src/panels/services-panel.ts +2 -2
- package/src/panels/session-browser-panel.ts +3 -3
- package/src/panels/settings-sync-panel.ts +2 -2
- package/src/panels/skills-panel.ts +6 -6
- package/src/panels/subscription-panel.ts +2 -2
- package/src/panels/symbol-outline-panel.ts +3 -3
- package/src/panels/system-messages-panel.ts +4 -4
- package/src/panels/tasks-panel.ts +2 -2
- package/src/panels/thinking-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +7 -3
- package/src/panels/tool-inspector-panel.ts +3 -3
- package/src/panels/types.ts +5 -5
- package/src/panels/watchers-panel.ts +3 -3
- package/src/panels/welcome-panel.ts +1 -1
- package/src/panels/worktree-panel.ts +2 -2
- package/src/panels/wrfc-panel.ts +3 -3
- package/src/permissions/prompt.ts +3 -22
- package/src/plugins/loader.ts +15 -304
- package/src/renderer/agent-detail-modal.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +2 -2
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/bottom-bar.ts +2 -2
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +2 -2
- package/src/renderer/compositor.ts +2 -2
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +2 -2
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/conversation-surface.ts +2 -2
- package/src/renderer/diff-view.ts +2 -2
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +2 -2
- package/src/renderer/file-tree.ts +2 -2
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/live-tail-modal.ts +1 -1
- package/src/renderer/markdown.ts +2 -2
- package/src/renderer/modal-factory.ts +3 -3
- package/src/renderer/model-picker-overlay.ts +2 -2
- package/src/renderer/overlay-box.ts +2 -2
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-picker-overlay.ts +2 -2
- package/src/renderer/panel-tab-bar.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +2 -2
- package/src/renderer/process-modal.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +2 -2
- package/src/renderer/progress.ts +2 -2
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +2 -2
- package/src/renderer/session-picker-modal.ts +2 -2
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +1 -1
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +2 -2
- package/src/renderer/text-layout.ts +1 -1
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/ui-factory.ts +2 -2
- package/src/runtime/bootstrap-command-context.ts +7 -8
- package/src/runtime/bootstrap-command-parts.ts +4 -6
- package/src/runtime/bootstrap-core.ts +5 -4
- package/src/runtime/bootstrap-hook-bridge.ts +16 -175
- package/src/runtime/bootstrap-shell.ts +5 -5
- package/src/runtime/bootstrap.ts +6 -5
- package/src/runtime/context.ts +4 -20
- package/src/runtime/diagnostics/panels/index.ts +1 -1
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/diagnostics/panels/panel-resources.ts +118 -0
- package/src/runtime/perf/panel-contracts.ts +32 -0
- package/src/runtime/perf/panel-health-monitor.ts +18 -0
- package/src/runtime/services.ts +6 -6
- package/src/runtime/store/domains/conversation.ts +1 -181
- package/src/runtime/store/domains/permissions.ts +1 -143
- package/src/runtime/store/helpers/reducers/conversation.ts +1 -228
- package/src/runtime/store/helpers/reducers/lifecycle.ts +1 -440
- package/src/runtime/store/selectors/index.ts +11 -6
- package/src/runtime/store/state.ts +12 -4
- package/src/runtime/ui-read-models-observability-security.ts +2 -2
- package/src/runtime/ui-read-models-observability-system.ts +1 -1
- package/src/runtime/ui-service-queries.ts +1 -1
- package/src/runtime/ui-services.ts +1 -1
- package/src/shell/ui-openers.ts +1 -1
- package/src/tools/index.ts +1 -186
- package/src/types/grid.ts +48 -0
- package/src/utils/clipboard.ts +21 -0
- package/src/utils/splash-lines.ts +1 -1
- package/src/utils/terminal-width.ts +185 -0
- package/src/version.ts +1 -1
- package/src/acp/connection.ts +0 -447
- package/src/acp/index.ts +0 -7
- package/src/acp/manager.ts +0 -1
- package/src/adapters/bluebubbles/index.ts +0 -127
- package/src/adapters/discord/index.ts +0 -297
- package/src/adapters/github/index.ts +0 -73
- package/src/adapters/google-chat/index.ts +0 -119
- package/src/adapters/imessage/index.ts +0 -92
- package/src/adapters/index.ts +0 -15
- package/src/adapters/matrix/index.ts +0 -116
- package/src/adapters/mattermost/index.ts +0 -151
- package/src/adapters/msteams/index.ts +0 -180
- package/src/adapters/ntfy/index.ts +0 -118
- package/src/adapters/signal/index.ts +0 -92
- package/src/adapters/slack/index.ts +0 -323
- package/src/adapters/telegram/index.ts +0 -160
- package/src/adapters/types.ts +0 -97
- package/src/adapters/webhook/index.ts +0 -178
- package/src/adapters/whatsapp/index.ts +0 -135
- package/src/agents/message-bus-core.ts +0 -312
- package/src/agents/message-bus.ts +0 -2
- package/src/agents/orchestrator-prompts.ts +0 -351
- package/src/agents/orchestrator-runner.ts +0 -668
- package/src/agents/orchestrator.ts +0 -438
- package/src/agents/session.ts +0 -108
- package/src/agents/worktree.ts +0 -153
- package/src/agents/wrfc-config.ts +0 -47
- package/src/agents/wrfc-controller.ts +0 -747
- package/src/agents/wrfc-gate-runtime.ts +0 -75
- package/src/agents/wrfc-reporting.ts +0 -284
- package/src/agents/wrfc-runtime-events.ts +0 -150
- package/src/agents/wrfc-types.ts +0 -67
- package/src/automation/delivery-manager.ts +0 -368
- package/src/automation/index.ts +0 -72
- package/src/automation/manager-runtime-delivery.ts +0 -139
- package/src/automation/manager-runtime-events.ts +0 -131
- package/src/automation/manager-runtime-execution.ts +0 -511
- package/src/automation/manager-runtime-helpers.ts +0 -433
- package/src/automation/manager-runtime-job-mutations.ts +0 -175
- package/src/automation/manager-runtime-reconcile.ts +0 -148
- package/src/automation/manager-runtime-scheduling.ts +0 -189
- package/src/automation/manager-runtime-sync.ts +0 -54
- package/src/automation/manager-runtime.ts +0 -721
- package/src/automation/manager.ts +0 -10
- package/src/automation/service.ts +0 -242
- package/src/channels/builtin/account-actions.ts +0 -490
- package/src/channels/builtin/accounts.ts +0 -433
- package/src/channels/builtin/contracts.ts +0 -405
- package/src/channels/builtin/plugins.ts +0 -308
- package/src/channels/builtin/rendering.ts +0 -174
- package/src/channels/builtin/setup-schema.ts +0 -504
- package/src/channels/builtin/shared.ts +0 -96
- package/src/channels/builtin/surfaces.ts +0 -57
- package/src/channels/builtin/targets.ts +0 -693
- package/src/channels/builtin-runtime.ts +0 -443
- package/src/channels/delivery/shared.ts +0 -199
- package/src/channels/delivery/strategies-bridge.ts +0 -246
- package/src/channels/delivery/strategies-core.ts +0 -299
- package/src/channels/delivery/strategies-enterprise.ts +0 -178
- package/src/channels/delivery/types.ts +0 -59
- package/src/channels/delivery-router.ts +0 -127
- package/src/channels/index.ts +0 -77
- package/src/channels/plugin-registry.ts +0 -551
- package/src/channels/provider-runtime.ts +0 -330
- package/src/channels/reply-pipeline.ts +0 -522
- package/src/channels/route-manager.ts +0 -340
- package/src/channels/surface-registry.ts +0 -186
- package/src/config/helper-model.ts +0 -1
- package/src/config/manager.ts +0 -8
- package/src/config/subscription-auth.ts +0 -31
- package/src/config/tool-llm.ts +0 -110
- package/src/control-plane/approval-broker.ts +0 -351
- package/src/control-plane/gateway.ts +0 -1
- package/src/control-plane/index.ts +0 -54
- package/src/control-plane/media-contract-schemas.ts +0 -1
- package/src/control-plane/method-catalog-admin.ts +0 -1
- package/src/control-plane/method-catalog-channels.ts +0 -1
- package/src/control-plane/method-catalog-control-automation.ts +0 -1
- package/src/control-plane/method-catalog-control-core.ts +0 -1
- package/src/control-plane/method-catalog-control.ts +0 -1
- package/src/control-plane/method-catalog-events.ts +0 -1
- package/src/control-plane/method-catalog-knowledge.ts +0 -1
- package/src/control-plane/method-catalog-media.ts +0 -1
- package/src/control-plane/method-catalog-runtime.ts +0 -1
- package/src/control-plane/method-catalog-shared.ts +0 -1
- package/src/control-plane/method-catalog.ts +0 -1
- package/src/control-plane/operator-contract-schemas-admin.ts +0 -1
- package/src/control-plane/operator-contract-schemas-channels.ts +0 -1
- package/src/control-plane/operator-contract-schemas-control.ts +0 -1
- package/src/control-plane/operator-contract-schemas-domains.ts +0 -1
- package/src/control-plane/operator-contract-schemas-knowledge.ts +0 -1
- package/src/control-plane/operator-contract-schemas-media.ts +0 -1
- package/src/control-plane/operator-contract-schemas-permissions.ts +0 -1
- package/src/control-plane/operator-contract-schemas-remote.ts +0 -1
- package/src/control-plane/operator-contract-schemas-runtime.ts +0 -1
- package/src/control-plane/operator-contract-schemas-shared.ts +0 -1
- package/src/control-plane/operator-contract-schemas-telemetry.ts +0 -1
- package/src/control-plane/operator-contract-schemas.ts +0 -1
- package/src/control-plane/operator-contract.ts +0 -165
- package/src/control-plane/session-broker.ts +0 -780
- package/src/core/compaction-sections.ts +0 -492
- package/src/core/compaction-types.ts +0 -147
- package/src/core/context-compaction.ts +0 -542
- package/src/core/conversation-compaction.ts +0 -68
- package/src/core/conversation-diff.ts +0 -55
- package/src/core/conversation-utils.ts +0 -72
- package/src/core/event-replay.ts +0 -287
- package/src/core/orchestrator-context-runtime.ts +0 -407
- package/src/core/orchestrator-follow-up-runtime.ts +0 -134
- package/src/core/orchestrator-runtime.ts +0 -132
- package/src/core/orchestrator-tool-runtime.ts +0 -468
- package/src/core/orchestrator-turn-helpers.ts +0 -355
- package/src/core/orchestrator-turn-loop.ts +0 -443
- package/src/core/plan-command-handler.ts +0 -169
- package/src/core/transcript-events/classify.ts +0 -95
- package/src/core/transcript-events/index.ts +0 -15
- package/src/daemon/control-plane.ts +0 -522
- package/src/daemon/facade-composition.ts +0 -398
- package/src/daemon/facade.ts +0 -638
- package/src/daemon/helpers.ts +0 -74
- package/src/daemon/http/router-route-contexts.ts +0 -370
- package/src/daemon/http/router.ts +0 -531
- package/src/daemon/http-listener.ts +0 -301
- package/src/daemon/index.ts +0 -1
- package/src/daemon/server.ts +0 -1
- package/src/daemon/service-manager.ts +0 -413
- package/src/daemon/surface-actions.ts +0 -183
- package/src/daemon/surface-delivery.ts +0 -530
- package/src/daemon/surface-policy.ts +0 -60
- package/src/daemon/transport-events.ts +0 -110
- package/src/daemon/types.ts +0 -191
- package/src/export/markdown.ts +0 -213
- package/src/export/session-export.ts +0 -1
- package/src/git/index.ts +0 -1
- package/src/git/service.ts +0 -414
- package/src/hooks/chain-engine.ts +0 -414
- package/src/hooks/dispatcher.ts +0 -414
- package/src/hooks/hook-api.ts +0 -170
- package/src/hooks/index.ts +0 -48
- package/src/hooks/runners/agent.ts +0 -93
- package/src/hooks/runners/prompt.ts +0 -69
- package/src/hooks/workbench.ts +0 -360
- package/src/integrations/index.ts +0 -42
- package/src/integrations/notifier.ts +0 -206
- package/src/integrations/webhooks.ts +0 -1
- package/src/knowledge/consolidation.ts +0 -346
- package/src/knowledge/graphql.ts +0 -324
- package/src/knowledge/index.ts +0 -60
- package/src/knowledge/ingest-compile.ts +0 -386
- package/src/knowledge/ingest-context.ts +0 -18
- package/src/knowledge/ingest-inputs.ts +0 -387
- package/src/knowledge/ingest.ts +0 -1
- package/src/knowledge/internal.ts +0 -257
- package/src/knowledge/knowledge-api.ts +0 -432
- package/src/knowledge/lint.ts +0 -121
- package/src/knowledge/memory-sync.ts +0 -62
- package/src/knowledge/packet.ts +0 -370
- package/src/knowledge/scheduling.ts +0 -283
- package/src/knowledge/service.ts +0 -715
- package/src/mcp/client.ts +0 -383
- package/src/mcp/index.ts +0 -12
- package/src/mcp/mcp-api.ts +0 -90
- package/src/mcp/registry.ts +0 -1
- package/src/media/builtin-image-understanding.ts +0 -303
- package/src/media/builtin-providers.ts +0 -26
- package/src/media/index.ts +0 -18
- package/src/multimodal/index.ts +0 -13
- package/src/multimodal/service.ts +0 -492
- package/src/permissions/briefs/build.ts +0 -88
- package/src/permissions/manager.ts +0 -1
- package/src/plugins/api.ts +0 -383
- package/src/plugins/manager.ts +0 -481
- package/src/profiles/shape.ts +0 -58
- package/src/providers/amazon-bedrock-mantle.ts +0 -50
- package/src/providers/amazon-bedrock.ts +0 -61
- package/src/providers/anthropic-compat.ts +0 -373
- package/src/providers/anthropic-sdk-provider.ts +0 -230
- package/src/providers/anthropic-vertex.ts +0 -59
- package/src/providers/anthropic.ts +0 -469
- package/src/providers/auto-register.ts +0 -417
- package/src/providers/builtin-catalog.ts +0 -326
- package/src/providers/builtin-registry.ts +0 -575
- package/src/providers/cache-planner.ts +0 -258
- package/src/providers/capabilities.ts +0 -1
- package/src/providers/custom-loader.ts +0 -425
- package/src/providers/discovered-compat.ts +0 -7
- package/src/providers/discovered-factory.ts +0 -61
- package/src/providers/discovered-traits.ts +0 -138
- package/src/providers/gemini.ts +0 -462
- package/src/providers/github-copilot.ts +0 -254
- package/src/providers/index.ts +0 -1
- package/src/providers/interface.ts +0 -185
- package/src/providers/llama-cpp.ts +0 -402
- package/src/providers/lm-studio-helpers.ts +0 -367
- package/src/providers/lm-studio.ts +0 -484
- package/src/providers/model-catalog-cache.ts +0 -221
- package/src/providers/model-catalog-notifications.ts +0 -97
- package/src/providers/model-catalog-synthetic.ts +0 -202
- package/src/providers/model-catalog.ts +0 -211
- package/src/providers/model-limits.ts +0 -1
- package/src/providers/ollama.ts +0 -469
- package/src/providers/openai-codex.ts +0 -472
- package/src/providers/openai-compat.ts +0 -615
- package/src/providers/openai.ts +0 -231
- package/src/providers/optimizer.ts +0 -1
- package/src/providers/provider-api.ts +0 -1
- package/src/providers/registry-helpers.ts +0 -34
- package/src/providers/registry-models.ts +0 -77
- package/src/providers/registry-types.ts +0 -67
- package/src/providers/registry.ts +0 -1
- package/src/providers/runtime-metadata.ts +0 -149
- package/src/providers/runtime-snapshot.ts +0 -130
- package/src/providers/synthetic.ts +0 -561
- package/src/providers/tier-prompts.ts +0 -84
- package/src/providers/tool-formats.ts +0 -414
- package/src/runtime/auth/inspection.ts +0 -125
- package/src/runtime/bootstrap-background.ts +0 -157
- package/src/runtime/bootstrap-helpers.ts +0 -88
- package/src/runtime/bootstrap-runtime-events.ts +0 -254
- package/src/runtime/bootstrap-services.ts +0 -197
- package/src/runtime/compaction/index.ts +0 -1
- package/src/runtime/compaction/lifecycle.ts +0 -1
- package/src/runtime/compaction/manager.ts +0 -474
- package/src/runtime/compaction/quality-score.ts +0 -1
- package/src/runtime/compaction/resume-repair.ts +0 -1
- package/src/runtime/compaction/strategies/autocompact.ts +0 -1
- package/src/runtime/compaction/strategies/boundary-commit.ts +0 -1
- package/src/runtime/compaction/strategies/collapse.ts +0 -1
- package/src/runtime/compaction/strategies/index.ts +0 -1
- package/src/runtime/compaction/strategies/microcompact.ts +0 -1
- package/src/runtime/compaction/strategies/reactive.ts +0 -1
- package/src/runtime/compaction/types.ts +0 -1
- package/src/runtime/ecosystem/recommendations.ts +0 -117
- package/src/runtime/emitters/agents.ts +0 -96
- package/src/runtime/emitters/automation.ts +0 -112
- package/src/runtime/emitters/communication.ts +0 -53
- package/src/runtime/emitters/compaction.ts +0 -161
- package/src/runtime/emitters/control-plane.ts +0 -65
- package/src/runtime/emitters/deliveries.ts +0 -65
- package/src/runtime/emitters/forensics.ts +0 -17
- package/src/runtime/emitters/index.ts +0 -59
- package/src/runtime/emitters/knowledge.ts +0 -129
- package/src/runtime/emitters/mcp.ts +0 -95
- package/src/runtime/emitters/ops.ts +0 -163
- package/src/runtime/emitters/orchestration.ts +0 -87
- package/src/runtime/emitters/permissions.ts +0 -98
- package/src/runtime/emitters/planner.ts +0 -23
- package/src/runtime/emitters/plugins.ts +0 -78
- package/src/runtime/emitters/providers.ts +0 -30
- package/src/runtime/emitters/routes.ts +0 -57
- package/src/runtime/emitters/security.ts +0 -53
- package/src/runtime/emitters/session.ts +0 -93
- package/src/runtime/emitters/surfaces.ts +0 -57
- package/src/runtime/emitters/tasks.ts +0 -69
- package/src/runtime/emitters/tools.ts +0 -140
- package/src/runtime/emitters/transport.ts +0 -78
- package/src/runtime/emitters/turn.ts +0 -155
- package/src/runtime/emitters/ui.ts +0 -57
- package/src/runtime/emitters/watchers.ts +0 -57
- package/src/runtime/emitters/workflows.ts +0 -79
- package/src/runtime/eval/index.ts +0 -48
- package/src/runtime/eval/runner.ts +0 -163
- package/src/runtime/eval/suites.ts +0 -264
- package/src/runtime/events/domain-map.ts +0 -148
- package/src/runtime/events/index.ts +0 -1
- package/src/runtime/events/turn.ts +0 -1
- package/src/runtime/events/workflows.ts +0 -1
- package/src/runtime/forensics/collector.ts +0 -693
- package/src/runtime/forensics/index.ts +0 -23
- package/src/runtime/foundation-clients.ts +0 -78
- package/src/runtime/foundation-services.ts +0 -96
- package/src/runtime/guidance.ts +0 -183
- package/src/runtime/health/effect-handlers.ts +0 -189
- package/src/runtime/health/index.ts +0 -70
- package/src/runtime/health/wiring.ts +0 -115
- package/src/runtime/integration/helpers.ts +0 -640
- package/src/runtime/lifecycle.ts +0 -107
- package/src/runtime/mcp/index.ts +0 -68
- package/src/runtime/mcp/manager.ts +0 -513
- package/src/runtime/network/inbound.ts +0 -131
- package/src/runtime/network/index.ts +0 -30
- package/src/runtime/network/outbound.ts +0 -292
- package/src/runtime/network/shared.ts +0 -82
- package/src/runtime/operator-client.ts +0 -235
- package/src/runtime/ops/control-plane.ts +0 -363
- package/src/runtime/ops/index.ts +0 -122
- package/src/runtime/ops/playbooks/index.ts +0 -10
- package/src/runtime/ops/playbooks/session-unrecoverable.ts +0 -196
- package/src/runtime/ops/playbooks/stuck-turn.ts +0 -197
- package/src/runtime/ops/runtime-context.ts +0 -100
- package/src/runtime/ops-api.ts +0 -27
- package/src/runtime/orchestration/spawn-policy.ts +0 -83
- package/src/runtime/peer-client.ts +0 -404
- package/src/runtime/perf/index.ts +0 -57
- package/src/runtime/perf/slo-collector.ts +0 -375
- package/src/runtime/permissions/index.ts +0 -190
- package/src/runtime/permissions/policy-runtime.ts +0 -1
- package/src/runtime/permissions/preflight.ts +0 -101
- package/src/runtime/permissions/rule-suggestions.ts +0 -36
- package/src/runtime/plugins/hot-reload.ts +0 -221
- package/src/runtime/plugins/index.ts +0 -84
- package/src/runtime/plugins/lifecycle.ts +0 -95
- package/src/runtime/plugins/manager.ts +0 -474
- package/src/runtime/plugins/manifest.ts +0 -167
- package/src/runtime/plugins/quarantine.ts +0 -202
- package/src/runtime/plugins/trust.ts +0 -291
- package/src/runtime/plugins/types.ts +0 -205
- package/src/runtime/provider-accounts/registry.ts +0 -326
- package/src/runtime/remote/distributed-runtime-contract-schemas.ts +0 -386
- package/src/runtime/remote/index.ts +0 -488
- package/src/runtime/remote/runner-registry.ts +0 -438
- package/src/runtime/remote/supervisor.ts +0 -70
- package/src/runtime/runtime-hook-api.ts +0 -5
- package/src/runtime/runtime-knowledge-api.ts +0 -14
- package/src/runtime/runtime-mcp-api.ts +0 -5
- package/src/runtime/runtime-ops-api.ts +0 -86
- package/src/runtime/runtime-provider-api.ts +0 -18
- package/src/runtime/session-maintenance.ts +0 -188
- package/src/runtime/session-persistence.ts +0 -288
- package/src/runtime/session-return-context.ts +0 -195
- package/src/runtime/settings/control-plane-store.ts +0 -258
- package/src/runtime/settings/control-plane.ts +0 -599
- package/src/runtime/shell-command-extensions.ts +0 -54
- package/src/runtime/shell-command-ops.ts +0 -207
- package/src/runtime/shell-command-platform.ts +0 -47
- package/src/runtime/shell-command-services.ts +0 -143
- package/src/runtime/shell-command-workspace.ts +0 -31
- package/src/runtime/tasks/adapters/acp-adapter.ts +0 -211
- package/src/runtime/tasks/adapters/agent-adapter.ts +0 -208
- package/src/runtime/tasks/adapters/index.ts +0 -16
- package/src/runtime/tasks/adapters/process-adapter.ts +0 -214
- package/src/runtime/tasks/adapters/scheduler-adapter.ts +0 -193
- package/src/runtime/tasks/index.ts +0 -68
- package/src/runtime/tasks/manager.ts +0 -415
- package/src/runtime/telemetry/api-helpers.ts +0 -517
- package/src/runtime/telemetry/api.ts +0 -768
- package/src/runtime/telemetry/index.ts +0 -178
- package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +0 -440
- package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +0 -200
- package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +0 -18
- package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +0 -204
- package/src/runtime/telemetry/instrumentation/domain-bridge.ts +0 -125
- package/src/runtime/telemetry/instrumentation/index.ts +0 -67
- package/src/runtime/tools/context.ts +0 -114
- package/src/runtime/tools/index.ts +0 -46
- package/src/runtime/tools/phased-executor.ts +0 -448
- package/src/runtime/tools/phases/budget.ts +0 -130
- package/src/runtime/tools/phases/execute.ts +0 -69
- package/src/runtime/tools/phases/index.ts +0 -13
- package/src/runtime/tools/phases/map-output.ts +0 -98
- package/src/runtime/tools/phases/permission.ts +0 -133
- package/src/runtime/tools/phases/posthook.ts +0 -57
- package/src/runtime/tools/phases/prehook.ts +0 -68
- package/src/runtime/tools/phases/validate.ts +0 -53
- package/src/runtime/transports/direct.ts +0 -73
- package/src/runtime/transports/http-helpers.ts +0 -218
- package/src/runtime/transports/http-types.ts +0 -364
- package/src/runtime/transports/http.ts +0 -629
- package/src/runtime/transports/realtime.ts +0 -50
- package/src/runtime/transports/remote-events.ts +0 -16
- package/src/runtime/transports/shared.ts +0 -39
- package/src/runtime/transports/ui-runtime-events.ts +0 -35
- package/src/runtime/ui-read-models-core.ts +0 -95
- package/src/runtime/ui-read-models-operations.ts +0 -203
- package/src/runtime/worktree/registry.ts +0 -252
- package/src/sessions/manager.ts +0 -14
- package/src/state/file-watcher.ts +0 -294
- package/src/state/index.ts +0 -56
- package/src/state/knowledge-injection.ts +0 -214
- package/src/state/memory-embedding-http.ts +0 -642
- package/src/state/memory-embeddings.ts +0 -312
- package/src/state/memory-ingest.ts +0 -132
- package/src/state/memory-registry.ts +0 -111
- package/src/state/memory-store-helpers.ts +0 -160
- package/src/state/memory-store.ts +0 -728
- package/src/state/memory-vector-store.ts +0 -418
- package/src/templates/manager.ts +0 -187
- package/src/tools/agent/index.ts +0 -610
- package/src/tools/agent/manager.ts +0 -476
- package/src/tools/analyze/git-modes.ts +0 -380
- package/src/tools/analyze/index.ts +0 -128
- package/src/tools/channel/agent-tools.ts +0 -16
- package/src/tools/channel/index.ts +0 -268
- package/src/tools/control/index.ts +0 -90
- package/src/tools/edit/core.ts +0 -619
- package/src/tools/edit/index.ts +0 -4
- package/src/tools/edit/phased.ts +0 -33
- package/src/tools/fetch/index.ts +0 -3
- package/src/tools/fetch/phased.ts +0 -34
- package/src/tools/fetch/runtime.ts +0 -499
- package/src/tools/mcp/index.ts +0 -190
- package/src/tools/remote-trigger/index.ts +0 -130
- package/src/tools/shared/auto-heal.ts +0 -282
- package/src/tools/state/index.ts +0 -688
- package/src/tools/web-search/index.ts +0 -38
- package/src/tools/write/index.ts +0 -604
- package/src/tools/write/phased.ts +0 -41
- package/src/types/generated/foundation-client-types.ts +0 -22
- package/src/watchers/index.ts +0 -11
- package/src/watchers/registry.ts +0 -517
- package/src/web-search/index.ts +0 -26
- package/src/web-search/provider-registry.ts +0 -64
- package/src/web-search/providers/brave.ts +0 -100
- package/src/web-search/providers/duckduckgo.ts +0 -270
- package/src/web-search/providers/exa.ts +0 -77
- package/src/web-search/providers/firecrawl.ts +0 -90
- package/src/web-search/providers/perplexity.ts +0 -86
- package/src/web-search/providers/searxng.ts +0 -88
- package/src/web-search/providers/shared.ts +0 -249
- package/src/web-search/providers/tavily.ts +0 -90
- package/src/web-search/service.ts +0 -142
package/src/knowledge/service.ts
DELETED
|
@@ -1,715 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
3
|
-
type AutomationScheduleDefinition,
|
|
4
|
-
} from '@pellux/goodvibes-sdk/platform/automation/schedules';
|
|
5
|
-
import { ArtifactStore } from '@pellux/goodvibes-sdk/platform/artifacts/index';
|
|
6
|
-
import type { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state/index';
|
|
7
|
-
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import { createDefaultKnowledgeConnectorRegistry, KnowledgeConnectorRegistry } from '@pellux/goodvibes-sdk/platform/knowledge/connectors';
|
|
9
|
-
import { KnowledgeProjectionService } from '@pellux/goodvibes-sdk/platform/knowledge/projections';
|
|
10
|
-
import { KnowledgeStore } from '@pellux/goodvibes-sdk/platform/knowledge/store';
|
|
11
|
-
import type {
|
|
12
|
-
KnowledgeBatchIngestResult,
|
|
13
|
-
KnowledgeBookmarkSeed,
|
|
14
|
-
KnowledgeConnector,
|
|
15
|
-
KnowledgeConnectorDoctorReport,
|
|
16
|
-
KnowledgeConsolidationCandidateRecord,
|
|
17
|
-
KnowledgeConsolidationReportRecord,
|
|
18
|
-
KnowledgeEdgeRecord,
|
|
19
|
-
KnowledgeExtractionRecord,
|
|
20
|
-
KnowledgeIssueRecord,
|
|
21
|
-
KnowledgeJobMode,
|
|
22
|
-
KnowledgeJobRecord,
|
|
23
|
-
KnowledgeJobRunRecord,
|
|
24
|
-
KnowledgeMaterializedProjection,
|
|
25
|
-
KnowledgeItemView,
|
|
26
|
-
KnowledgeNodeRecord,
|
|
27
|
-
KnowledgePacket,
|
|
28
|
-
KnowledgePacketDetail,
|
|
29
|
-
KnowledgeProjectionBundle,
|
|
30
|
-
KnowledgeProjectionTarget,
|
|
31
|
-
KnowledgeProjectionTargetKind,
|
|
32
|
-
KnowledgeScheduleRecord,
|
|
33
|
-
KnowledgeSearchResult,
|
|
34
|
-
KnowledgeSourceRecord,
|
|
35
|
-
KnowledgeSourceType,
|
|
36
|
-
KnowledgeStatus,
|
|
37
|
-
KnowledgeUsageRecord,
|
|
38
|
-
} from '@pellux/goodvibes-sdk/platform/knowledge/types';
|
|
39
|
-
import {
|
|
40
|
-
buildKnowledgePacket,
|
|
41
|
-
buildKnowledgePacketSync,
|
|
42
|
-
buildKnowledgePromptPacket,
|
|
43
|
-
buildKnowledgePromptPacketSync,
|
|
44
|
-
searchKnowledge,
|
|
45
|
-
} from '@pellux/goodvibes-sdk/platform/knowledge/packet';
|
|
46
|
-
import {
|
|
47
|
-
ingestKnowledgeArtifact,
|
|
48
|
-
ingestKnowledgeBookmarkSeeds,
|
|
49
|
-
ingestKnowledgeConnectorInput,
|
|
50
|
-
ingestKnowledgeUrl,
|
|
51
|
-
ingestKnowledgeWithConnector,
|
|
52
|
-
importKnowledgeBookmarksFromFile,
|
|
53
|
-
importKnowledgeUrlsFromFile,
|
|
54
|
-
refreshKnowledgeSources,
|
|
55
|
-
pickKnowledgeRefreshCandidates,
|
|
56
|
-
recompileKnowledgeSource,
|
|
57
|
-
} from '@pellux/goodvibes-sdk/platform/knowledge/ingest';
|
|
58
|
-
import {
|
|
59
|
-
decideKnowledgeConsolidationCandidate,
|
|
60
|
-
runKnowledgeConsolidation,
|
|
61
|
-
} from '@pellux/goodvibes-sdk/platform/knowledge/consolidation';
|
|
62
|
-
import { KnowledgeScheduleService } from '@pellux/goodvibes-sdk/platform/knowledge/scheduling';
|
|
63
|
-
import { lintKnowledgeStore } from '@pellux/goodvibes-sdk/platform/knowledge/lint';
|
|
64
|
-
import { syncKnowledgeMemoryNodes } from '@pellux/goodvibes-sdk/platform/knowledge/memory-sync';
|
|
65
|
-
import {
|
|
66
|
-
emitKnowledgeExtractionCompleted,
|
|
67
|
-
emitKnowledgeExtractionFailed,
|
|
68
|
-
emitKnowledgeIngestCompleted,
|
|
69
|
-
emitKnowledgeIngestFailed,
|
|
70
|
-
emitKnowledgeIngestStarted,
|
|
71
|
-
emitKnowledgePacketBuilt,
|
|
72
|
-
emitKnowledgeProjectionMaterialized,
|
|
73
|
-
emitKnowledgeProjectionRendered,
|
|
74
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
75
|
-
import { extractKnowledgeArtifact } from '@pellux/goodvibes-sdk/platform/knowledge/extractors';
|
|
76
|
-
import {
|
|
77
|
-
canonicalizeUri as internalCanonicalizeUri,
|
|
78
|
-
DEFAULT_PACKET_BUDGET as internalDefaultPacketBudget,
|
|
79
|
-
DEFAULT_PACKET_LIMIT as internalDefaultPacketLimit,
|
|
80
|
-
isHttpUri as internalIsHttpUri,
|
|
81
|
-
isSourcePastRefreshWindow as internalIsSourcePastRefreshWindow,
|
|
82
|
-
tokenize as internalTokenize,
|
|
83
|
-
} from '@pellux/goodvibes-sdk/platform/knowledge/internal';
|
|
84
|
-
|
|
85
|
-
const DEFAULT_PACKET_LIMIT = internalDefaultPacketLimit;
|
|
86
|
-
const DEFAULT_PACKET_BUDGET = internalDefaultPacketBudget;
|
|
87
|
-
const tokenize = internalTokenize;
|
|
88
|
-
const canonicalizeUri = internalCanonicalizeUri;
|
|
89
|
-
const isHttpUri = internalIsHttpUri;
|
|
90
|
-
|
|
91
|
-
export interface KnowledgeServiceConfig {
|
|
92
|
-
readonly configManager?: {
|
|
93
|
-
getControlPlaneConfigDir?: () => string;
|
|
94
|
-
};
|
|
95
|
-
readonly memoryRegistry: Pick<MemoryRegistry, 'add' | 'getAll' | 'getStore'>;
|
|
96
|
-
readonly runtimeBus?: RuntimeEventBus | null;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export interface KnowledgeServiceStatus extends KnowledgeStatus {
|
|
100
|
-
readonly note: string;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export class KnowledgeService {
|
|
104
|
-
private readonly projectionService: KnowledgeProjectionService;
|
|
105
|
-
private readonly scheduleService: KnowledgeScheduleService;
|
|
106
|
-
private runtimeBus: RuntimeEventBus | null;
|
|
107
|
-
|
|
108
|
-
constructor(
|
|
109
|
-
private readonly store: KnowledgeStore,
|
|
110
|
-
private readonly artifactStore: ArtifactStore,
|
|
111
|
-
private readonly connectorRegistry = createDefaultKnowledgeConnectorRegistry(),
|
|
112
|
-
private readonly options: KnowledgeServiceConfig,
|
|
113
|
-
) {
|
|
114
|
-
this.runtimeBus = options.runtimeBus ?? null;
|
|
115
|
-
void this.store.init();
|
|
116
|
-
this.projectionService = new KnowledgeProjectionService(this.store, this.artifactStore, {
|
|
117
|
-
connectors: () => this.listConnectors(),
|
|
118
|
-
});
|
|
119
|
-
this.scheduleService = new KnowledgeScheduleService({
|
|
120
|
-
store: this.store,
|
|
121
|
-
emitIfReady: this.emitIfReady.bind(this),
|
|
122
|
-
runJobByKind: this.runJobByKind.bind(this),
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
private getIngestContext() {
|
|
127
|
-
return {
|
|
128
|
-
store: this.store,
|
|
129
|
-
artifactStore: this.artifactStore,
|
|
130
|
-
connectorRegistry: this.connectorRegistry,
|
|
131
|
-
emitIfReady: this.emitIfReady.bind(this),
|
|
132
|
-
syncReviewedMemory: this.syncReviewedMemory.bind(this),
|
|
133
|
-
lint: this.lint.bind(this),
|
|
134
|
-
listConnectors: () => this.listConnectors(),
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
private getPacketContext() {
|
|
139
|
-
return {
|
|
140
|
-
store: this.store,
|
|
141
|
-
deferUsage: this.deferUsage.bind(this),
|
|
142
|
-
emitIfReady: this.emitIfReady.bind(this),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
private getConsolidationContext() {
|
|
147
|
-
return {
|
|
148
|
-
store: this.store,
|
|
149
|
-
memoryRegistry: this.options.memoryRegistry,
|
|
150
|
-
syncReviewedMemory: this.syncReviewedMemory.bind(this),
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
attachRuntimeBus(runtimeBus: RuntimeEventBus | null | undefined): void {
|
|
155
|
-
if (runtimeBus) this.runtimeBus = runtimeBus;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
async getStatus(): Promise<KnowledgeServiceStatus> {
|
|
159
|
-
await this.store.init();
|
|
160
|
-
return {
|
|
161
|
-
...this.store.status(),
|
|
162
|
-
note: 'Structured knowledge uses SQL-backed sources, nodes, edges, issues, extractions, and job runs. Markdown is an optional projection, not the source of truth.',
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
listUsageRecords(
|
|
167
|
-
limit = 100,
|
|
168
|
-
input: {
|
|
169
|
-
readonly targetKind?: KnowledgeUsageRecord['targetKind'];
|
|
170
|
-
readonly targetId?: string;
|
|
171
|
-
readonly usageKind?: KnowledgeUsageRecord['usageKind'];
|
|
172
|
-
} = {},
|
|
173
|
-
): readonly KnowledgeUsageRecord[] {
|
|
174
|
-
return this.store.listUsageRecords(limit, input);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
listConsolidationCandidates(
|
|
178
|
-
limit = 100,
|
|
179
|
-
input: {
|
|
180
|
-
readonly status?: KnowledgeConsolidationCandidateRecord['status'];
|
|
181
|
-
readonly subjectKind?: KnowledgeConsolidationCandidateRecord['subjectKind'];
|
|
182
|
-
readonly subjectId?: string;
|
|
183
|
-
} = {},
|
|
184
|
-
): readonly KnowledgeConsolidationCandidateRecord[] {
|
|
185
|
-
return this.store.listConsolidationCandidates(limit, input);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
getConsolidationCandidate(id: string): KnowledgeConsolidationCandidateRecord | null {
|
|
189
|
-
return this.store.getConsolidationCandidate(id);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
listConsolidationReports(limit = 100): readonly KnowledgeConsolidationReportRecord[] {
|
|
193
|
-
return this.store.listConsolidationReports(limit);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
getConsolidationReport(id: string): KnowledgeConsolidationReportRecord | null {
|
|
197
|
-
return this.store.getConsolidationReport(id);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
listSchedules(limit = 100): readonly KnowledgeScheduleRecord[] {
|
|
201
|
-
return this.store.listSchedules(limit);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
getSchedule(id: string): KnowledgeScheduleRecord | null {
|
|
205
|
-
return this.store.getSchedule(id);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
listSources(limit = 100): KnowledgeSourceRecord[] {
|
|
209
|
-
return this.store.listSources(limit);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
querySources(input: {
|
|
213
|
-
readonly limit?: number;
|
|
214
|
-
readonly offset?: number;
|
|
215
|
-
readonly status?: string;
|
|
216
|
-
readonly connectorId?: string;
|
|
217
|
-
readonly sourceType?: string;
|
|
218
|
-
readonly tag?: string;
|
|
219
|
-
readonly query?: string;
|
|
220
|
-
} = {}): { total: number; items: KnowledgeSourceRecord[] } {
|
|
221
|
-
const limit = Math.max(1, input.limit ?? 100);
|
|
222
|
-
const offset = Math.max(0, input.offset ?? 0);
|
|
223
|
-
const queryTokens = tokenize(input.query ?? '');
|
|
224
|
-
const items = this.store.listSources(10_000).filter((source) => {
|
|
225
|
-
if (input.status && source.status !== input.status) return false;
|
|
226
|
-
if (input.connectorId && source.connectorId !== input.connectorId) return false;
|
|
227
|
-
if (input.sourceType && source.sourceType !== input.sourceType) return false;
|
|
228
|
-
if (input.tag && !source.tags.includes(input.tag)) return false;
|
|
229
|
-
if (queryTokens.length === 0) return true;
|
|
230
|
-
const extraction = this.store.getExtractionBySourceId(source.id);
|
|
231
|
-
const haystack = [
|
|
232
|
-
source.title ?? '',
|
|
233
|
-
source.summary ?? '',
|
|
234
|
-
source.description ?? '',
|
|
235
|
-
source.sourceUri ?? '',
|
|
236
|
-
source.canonicalUri ?? '',
|
|
237
|
-
source.folderPath ?? '',
|
|
238
|
-
source.tags.join(' '),
|
|
239
|
-
extraction?.summary ?? '',
|
|
240
|
-
extraction?.excerpt ?? '',
|
|
241
|
-
extraction?.sections.join(' ') ?? '',
|
|
242
|
-
].join(' ').toLowerCase();
|
|
243
|
-
return queryTokens.every((token) => haystack.includes(token));
|
|
244
|
-
});
|
|
245
|
-
return {
|
|
246
|
-
total: items.length,
|
|
247
|
-
items: items.slice(offset, offset + limit),
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
listNodes(limit = 100): KnowledgeNodeRecord[] {
|
|
252
|
-
return this.store.listNodes(limit);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
queryNodes(input: {
|
|
256
|
-
readonly limit?: number;
|
|
257
|
-
readonly offset?: number;
|
|
258
|
-
readonly kind?: string;
|
|
259
|
-
readonly status?: string;
|
|
260
|
-
readonly query?: string;
|
|
261
|
-
} = {}): { total: number; items: KnowledgeNodeRecord[] } {
|
|
262
|
-
const limit = Math.max(1, input.limit ?? 100);
|
|
263
|
-
const offset = Math.max(0, input.offset ?? 0);
|
|
264
|
-
const queryTokens = tokenize(input.query ?? '');
|
|
265
|
-
const items = this.store.listNodes(10_000).filter((node) => {
|
|
266
|
-
if (input.kind && node.kind !== input.kind) return false;
|
|
267
|
-
if (input.status && node.status !== input.status) return false;
|
|
268
|
-
if (queryTokens.length === 0) return true;
|
|
269
|
-
const haystack = [
|
|
270
|
-
node.title,
|
|
271
|
-
node.summary ?? '',
|
|
272
|
-
node.aliases.join(' '),
|
|
273
|
-
JSON.stringify(node.metadata),
|
|
274
|
-
].join(' ').toLowerCase();
|
|
275
|
-
return queryTokens.every((token) => haystack.includes(token));
|
|
276
|
-
});
|
|
277
|
-
return {
|
|
278
|
-
total: items.length,
|
|
279
|
-
items: items.slice(offset, offset + limit),
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
listIssues(limit = 100): KnowledgeIssueRecord[] {
|
|
284
|
-
return this.store.listIssues(limit);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
queryIssues(input: {
|
|
288
|
-
readonly limit?: number;
|
|
289
|
-
readonly offset?: number;
|
|
290
|
-
readonly severity?: string;
|
|
291
|
-
readonly status?: string;
|
|
292
|
-
readonly code?: string;
|
|
293
|
-
readonly query?: string;
|
|
294
|
-
} = {}): { total: number; items: KnowledgeIssueRecord[] } {
|
|
295
|
-
const limit = Math.max(1, input.limit ?? 100);
|
|
296
|
-
const offset = Math.max(0, input.offset ?? 0);
|
|
297
|
-
const queryTokens = tokenize(input.query ?? '');
|
|
298
|
-
const items = this.store.listIssues(10_000).filter((issue) => {
|
|
299
|
-
if (input.severity && issue.severity !== input.severity) return false;
|
|
300
|
-
if (input.status && issue.status !== input.status) return false;
|
|
301
|
-
if (input.code && issue.code !== input.code) return false;
|
|
302
|
-
if (queryTokens.length === 0) return true;
|
|
303
|
-
const haystack = [issue.message, issue.code, JSON.stringify(issue.metadata)].join(' ').toLowerCase();
|
|
304
|
-
return queryTokens.every((token) => haystack.includes(token));
|
|
305
|
-
});
|
|
306
|
-
return {
|
|
307
|
-
total: items.length,
|
|
308
|
-
items: items.slice(offset, offset + limit),
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
listExtractions(limit = 100, sourceId?: string): KnowledgeExtractionRecord[] {
|
|
313
|
-
const records = this.store.listExtractions(sourceId ? 10_000 : limit);
|
|
314
|
-
return sourceId ? records.filter((entry) => entry.sourceId === sourceId).slice(0, Math.max(1, limit)) : records;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
getExtraction(id: string): KnowledgeExtractionRecord | null {
|
|
318
|
-
return this.store.getExtraction(id);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
getSourceExtraction(sourceId: string): KnowledgeExtractionRecord | null {
|
|
322
|
-
return this.store.getExtractionBySourceId(sourceId);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
listConnectors(): readonly KnowledgeConnector[] {
|
|
326
|
-
return this.connectorRegistry.list();
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
getConnector(id: string): KnowledgeConnector | null {
|
|
330
|
-
return this.connectorRegistry.get(id) ?? null;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
async doctorConnector(id: string): Promise<KnowledgeConnectorDoctorReport | null> {
|
|
334
|
-
return this.connectorRegistry.doctor(id);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
registerConnector(connector: KnowledgeConnector, options: { replace?: boolean } = {}): void {
|
|
338
|
-
this.connectorRegistry.register(connector, options);
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
getItem(id: string): KnowledgeItemView | null {
|
|
342
|
-
const item = this.store.getItem(id);
|
|
343
|
-
if (item?.source) this.deferUsage({ targetKind: 'source', targetId: item.source.id, usageKind: 'item-open' });
|
|
344
|
-
if (item?.node) this.deferUsage({ targetKind: 'node', targetId: item.node.id, usageKind: 'item-open' });
|
|
345
|
-
if (item?.issue) this.deferUsage({ targetKind: 'issue', targetId: item.issue.id, usageKind: 'item-open' });
|
|
346
|
-
return item;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
getItems(ids: readonly string[]): KnowledgeItemView[] {
|
|
350
|
-
return ids.map((id) => this.getItem(id)).filter((item): item is KnowledgeItemView => Boolean(item));
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
async recordUsage(input: {
|
|
354
|
-
readonly targetKind: KnowledgeUsageRecord['targetKind'];
|
|
355
|
-
readonly targetId: string;
|
|
356
|
-
readonly usageKind: KnowledgeUsageRecord['usageKind'];
|
|
357
|
-
readonly task?: string;
|
|
358
|
-
readonly sessionId?: string;
|
|
359
|
-
readonly score?: number;
|
|
360
|
-
readonly metadata?: Record<string, unknown>;
|
|
361
|
-
}): Promise<KnowledgeUsageRecord> {
|
|
362
|
-
await this.store.init();
|
|
363
|
-
return this.store.upsertUsageRecord(input);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
getNeighbors(
|
|
367
|
-
kind: 'source' | 'node',
|
|
368
|
-
id: string,
|
|
369
|
-
input: { readonly relation?: string; readonly limit?: number } = {},
|
|
370
|
-
): {
|
|
371
|
-
readonly edges: readonly KnowledgeEdgeRecord[];
|
|
372
|
-
readonly sources: readonly KnowledgeSourceRecord[];
|
|
373
|
-
readonly nodes: readonly KnowledgeNodeRecord[];
|
|
374
|
-
} {
|
|
375
|
-
const limit = Math.max(1, input.limit ?? 20);
|
|
376
|
-
const edges = this.store.edgesFor(kind, id)
|
|
377
|
-
.filter((edge) => !input.relation || edge.relation === input.relation)
|
|
378
|
-
.slice(0, limit);
|
|
379
|
-
this.deferUsage({
|
|
380
|
-
targetKind: kind,
|
|
381
|
-
targetId: id,
|
|
382
|
-
usageKind: 'neighbor-open',
|
|
383
|
-
metadata: input.relation ? { relation: input.relation } : {},
|
|
384
|
-
});
|
|
385
|
-
const sources: KnowledgeSourceRecord[] = [];
|
|
386
|
-
const nodes: KnowledgeNodeRecord[] = [];
|
|
387
|
-
for (const edge of edges) {
|
|
388
|
-
const otherKind = edge.fromKind === kind && edge.fromId === id ? edge.toKind : edge.fromKind;
|
|
389
|
-
const otherId = edge.fromKind === kind && edge.fromId === id ? edge.toId : edge.fromId;
|
|
390
|
-
if (otherKind === 'source') {
|
|
391
|
-
const source = this.store.getSource(otherId);
|
|
392
|
-
if (source) sources.push(source);
|
|
393
|
-
} else if (otherKind === 'node') {
|
|
394
|
-
const node = this.store.getNode(otherId);
|
|
395
|
-
if (node) nodes.push(node);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
return { edges, sources, nodes };
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
async ingestUrl(input: {
|
|
402
|
-
readonly url: string;
|
|
403
|
-
readonly title?: string;
|
|
404
|
-
readonly tags?: readonly string[];
|
|
405
|
-
readonly folderPath?: string;
|
|
406
|
-
readonly sessionId?: string;
|
|
407
|
-
readonly sourceType?: KnowledgeSourceType;
|
|
408
|
-
readonly connectorId?: string;
|
|
409
|
-
readonly allowPrivateHosts?: boolean;
|
|
410
|
-
readonly metadata?: Record<string, unknown>;
|
|
411
|
-
}): Promise<{ source: KnowledgeSourceRecord; artifactId?: string; extraction?: KnowledgeExtractionRecord; issues: readonly KnowledgeIssueRecord[] }> {
|
|
412
|
-
return ingestKnowledgeUrl(this.getIngestContext(), input);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
async ingestArtifact(input: {
|
|
416
|
-
readonly artifactId?: string;
|
|
417
|
-
readonly path?: string;
|
|
418
|
-
readonly uri?: string;
|
|
419
|
-
readonly title?: string;
|
|
420
|
-
readonly tags?: readonly string[];
|
|
421
|
-
readonly folderPath?: string;
|
|
422
|
-
readonly sessionId?: string;
|
|
423
|
-
readonly sourceType?: KnowledgeSourceType;
|
|
424
|
-
readonly connectorId?: string;
|
|
425
|
-
readonly allowPrivateHosts?: boolean;
|
|
426
|
-
readonly metadata?: Record<string, unknown>;
|
|
427
|
-
}): Promise<{ source: KnowledgeSourceRecord; artifactId?: string; extraction?: KnowledgeExtractionRecord; issues: readonly KnowledgeIssueRecord[] }> {
|
|
428
|
-
return ingestKnowledgeArtifact(this.getIngestContext(), input);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
async importBookmarksFromFile(input: {
|
|
432
|
-
readonly path: string;
|
|
433
|
-
readonly sessionId?: string;
|
|
434
|
-
readonly allowPrivateHosts?: boolean;
|
|
435
|
-
}): Promise<KnowledgeBatchIngestResult> {
|
|
436
|
-
return importKnowledgeBookmarksFromFile(this.getIngestContext(), input);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
async importUrlsFromFile(input: {
|
|
440
|
-
readonly path: string;
|
|
441
|
-
readonly sessionId?: string;
|
|
442
|
-
readonly allowPrivateHosts?: boolean;
|
|
443
|
-
}): Promise<KnowledgeBatchIngestResult> {
|
|
444
|
-
return importKnowledgeUrlsFromFile(this.getIngestContext(), input);
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
async ingestBookmarkSeeds(
|
|
448
|
-
seeds: readonly KnowledgeBookmarkSeed[],
|
|
449
|
-
sessionId?: string,
|
|
450
|
-
sourceType: KnowledgeSourceType = 'bookmark',
|
|
451
|
-
connectorId = 'bookmark',
|
|
452
|
-
allowPrivateHosts?: boolean,
|
|
453
|
-
): Promise<KnowledgeBatchIngestResult> {
|
|
454
|
-
return ingestKnowledgeBookmarkSeeds(this.getIngestContext(), seeds, sessionId, sourceType, connectorId, allowPrivateHosts);
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
async ingestWithConnector(
|
|
458
|
-
connectorId: string,
|
|
459
|
-
input: unknown,
|
|
460
|
-
sessionId?: string,
|
|
461
|
-
allowPrivateHosts?: boolean,
|
|
462
|
-
): Promise<KnowledgeBatchIngestResult> {
|
|
463
|
-
return ingestKnowledgeWithConnector(this.getIngestContext(), connectorId, input, sessionId, allowPrivateHosts);
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
async ingestConnectorInput(input: {
|
|
467
|
-
readonly connectorId: string;
|
|
468
|
-
readonly input?: unknown;
|
|
469
|
-
readonly content?: string;
|
|
470
|
-
readonly path?: string;
|
|
471
|
-
readonly sessionId?: string;
|
|
472
|
-
readonly allowPrivateHosts?: boolean;
|
|
473
|
-
}): Promise<KnowledgeBatchIngestResult> {
|
|
474
|
-
return ingestKnowledgeConnectorInput(this.getIngestContext(), input);
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
async listProjectionTargets(limit = 25): Promise<KnowledgeProjectionTarget[]> {
|
|
478
|
-
return this.projectionService.listTargets(limit);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
async renderProjection(input: {
|
|
482
|
-
readonly kind: KnowledgeProjectionTargetKind;
|
|
483
|
-
readonly id?: string;
|
|
484
|
-
readonly limit?: number;
|
|
485
|
-
}): Promise<KnowledgeProjectionBundle> {
|
|
486
|
-
const bundle = await this.projectionService.render(input);
|
|
487
|
-
this.emitIfReady((bus, ctx) => emitKnowledgeProjectionRendered(bus, ctx, {
|
|
488
|
-
targetId: bundle.target.targetId,
|
|
489
|
-
pageCount: bundle.pageCount,
|
|
490
|
-
}));
|
|
491
|
-
return bundle;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
async materializeProjection(input: {
|
|
495
|
-
readonly kind: KnowledgeProjectionTargetKind;
|
|
496
|
-
readonly id?: string;
|
|
497
|
-
readonly limit?: number;
|
|
498
|
-
readonly filename?: string;
|
|
499
|
-
}): Promise<KnowledgeMaterializedProjection> {
|
|
500
|
-
const materialized = await this.projectionService.materialize(input);
|
|
501
|
-
this.emitIfReady((bus, ctx) => emitKnowledgeProjectionMaterialized(bus, ctx, {
|
|
502
|
-
targetId: materialized.bundle.target.targetId,
|
|
503
|
-
artifactId: materialized.artifact.id,
|
|
504
|
-
pageCount: materialized.bundle.pageCount,
|
|
505
|
-
}));
|
|
506
|
-
return materialized;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
async reindex(): Promise<{ status: KnowledgeStatus; issues: readonly KnowledgeIssueRecord[] }> {
|
|
510
|
-
await this.store.init();
|
|
511
|
-
for (const source of this.store.listSources(10_000)) {
|
|
512
|
-
await recompileKnowledgeSource(this.getIngestContext(), source);
|
|
513
|
-
}
|
|
514
|
-
await this.syncReviewedMemory();
|
|
515
|
-
const issues = await lintKnowledgeStore({ store: this.store, emitIfReady: this.emitIfReady.bind(this) });
|
|
516
|
-
return { status: this.store.status(), issues };
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
search(query: string, limit = 10): KnowledgeSearchResult[] {
|
|
520
|
-
return searchKnowledge(this.getPacketContext(), query, limit);
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
async buildPacket(
|
|
524
|
-
task: string,
|
|
525
|
-
writeScope: readonly string[] = [],
|
|
526
|
-
limit = DEFAULT_PACKET_LIMIT,
|
|
527
|
-
options: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number } = {},
|
|
528
|
-
): Promise<KnowledgePacket> {
|
|
529
|
-
return buildKnowledgePacket(this.getPacketContext(), task, writeScope, limit, options);
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
buildPacketSync(
|
|
533
|
-
task: string,
|
|
534
|
-
writeScope: readonly string[] = [],
|
|
535
|
-
limit = DEFAULT_PACKET_LIMIT,
|
|
536
|
-
options: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number } = {},
|
|
537
|
-
): KnowledgePacket | null {
|
|
538
|
-
return buildKnowledgePacketSync(this.getPacketContext(), task, writeScope, limit, options);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
buildPromptPacketSync(
|
|
542
|
-
task: string,
|
|
543
|
-
writeScope: readonly string[] = [],
|
|
544
|
-
limit = DEFAULT_PACKET_LIMIT,
|
|
545
|
-
options: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number } = {},
|
|
546
|
-
): string | null {
|
|
547
|
-
return buildKnowledgePromptPacketSync(this.getPacketContext(), task, writeScope, limit, options);
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
async buildPromptPacket(
|
|
551
|
-
task: string,
|
|
552
|
-
writeScope: readonly string[] = [],
|
|
553
|
-
limit = DEFAULT_PACKET_LIMIT,
|
|
554
|
-
options: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number } = {},
|
|
555
|
-
): Promise<string | null> {
|
|
556
|
-
return buildKnowledgePromptPacket(this.getPacketContext(), task, writeScope, limit, options);
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
listJobs(): readonly KnowledgeJobRecord[] {
|
|
560
|
-
return this.scheduleService.listJobs();
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
getJob(id: string): KnowledgeJobRecord | null {
|
|
564
|
-
return this.scheduleService.getJob(id);
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
async saveSchedule(input: {
|
|
568
|
-
readonly id?: string;
|
|
569
|
-
readonly jobId: string;
|
|
570
|
-
readonly label?: string;
|
|
571
|
-
readonly enabled?: boolean;
|
|
572
|
-
readonly schedule: AutomationScheduleDefinition;
|
|
573
|
-
readonly metadata?: Record<string, unknown>;
|
|
574
|
-
}): Promise<KnowledgeScheduleRecord> {
|
|
575
|
-
return this.scheduleService.saveSchedule(input);
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
async deleteSchedule(id: string): Promise<boolean> {
|
|
579
|
-
return this.scheduleService.deleteSchedule(id);
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
async setScheduleEnabled(id: string, enabled: boolean): Promise<KnowledgeScheduleRecord | null> {
|
|
583
|
-
return this.scheduleService.setScheduleEnabled(id, enabled);
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
async decideConsolidationCandidate(
|
|
587
|
-
id: string,
|
|
588
|
-
decision: 'accept' | 'reject' | 'supersede',
|
|
589
|
-
input: {
|
|
590
|
-
readonly decidedBy?: string;
|
|
591
|
-
readonly memoryClass?: string;
|
|
592
|
-
readonly scope?: string;
|
|
593
|
-
readonly detail?: string;
|
|
594
|
-
} = {},
|
|
595
|
-
): Promise<KnowledgeConsolidationCandidateRecord> {
|
|
596
|
-
return decideKnowledgeConsolidationCandidate(this.getConsolidationContext(), id, decision, input);
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
listJobRuns(limit = 100, jobId?: string): readonly KnowledgeJobRunRecord[] {
|
|
600
|
-
return this.scheduleService.listJobRuns(limit, jobId);
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
async runJob(
|
|
604
|
-
id: string,
|
|
605
|
-
input: {
|
|
606
|
-
readonly mode?: KnowledgeJobMode;
|
|
607
|
-
readonly sourceIds?: readonly string[];
|
|
608
|
-
readonly limit?: number;
|
|
609
|
-
} = {},
|
|
610
|
-
): Promise<KnowledgeJobRunRecord> {
|
|
611
|
-
return this.scheduleService.runJob(id, input);
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
private async runJobByKind(
|
|
615
|
-
kind: KnowledgeJobRecord['kind'],
|
|
616
|
-
input: { readonly sourceIds?: readonly string[]; readonly limit?: number },
|
|
617
|
-
): Promise<Record<string, unknown>> {
|
|
618
|
-
switch (kind) {
|
|
619
|
-
case 'lint': {
|
|
620
|
-
const issues = await lintKnowledgeStore({ store: this.store, emitIfReady: this.emitIfReady.bind(this) });
|
|
621
|
-
return { issueCount: issues.length };
|
|
622
|
-
}
|
|
623
|
-
case 'reindex': {
|
|
624
|
-
const result = await this.reindex();
|
|
625
|
-
return { sourceCount: result.status.sourceCount, issueCount: result.issues.length };
|
|
626
|
-
}
|
|
627
|
-
case 'refresh-stale': {
|
|
628
|
-
const refreshed = await refreshKnowledgeSources(
|
|
629
|
-
this.getIngestContext(),
|
|
630
|
-
pickKnowledgeRefreshCandidates({ store: this.store }, 'stale', input.sourceIds, input.limit),
|
|
631
|
-
);
|
|
632
|
-
return { refreshed };
|
|
633
|
-
}
|
|
634
|
-
case 'refresh-bookmarks': {
|
|
635
|
-
const refreshed = await refreshKnowledgeSources(
|
|
636
|
-
this.getIngestContext(),
|
|
637
|
-
pickKnowledgeRefreshCandidates({ store: this.store }, 'bookmark', input.sourceIds, input.limit),
|
|
638
|
-
);
|
|
639
|
-
return { refreshed };
|
|
640
|
-
}
|
|
641
|
-
case 'rebuild-projections': {
|
|
642
|
-
const overview = await this.materializeProjection({ kind: 'overview', limit: Math.max(8, input.limit ?? 12) });
|
|
643
|
-
const bundle = await this.materializeProjection({ kind: 'bundle', limit: Math.max(12, input.limit ?? 18) });
|
|
644
|
-
return {
|
|
645
|
-
projections: [
|
|
646
|
-
{ targetId: overview.bundle.target.targetId, artifactId: overview.artifact.id },
|
|
647
|
-
{ targetId: bundle.bundle.target.targetId, artifactId: bundle.artifact.id },
|
|
648
|
-
],
|
|
649
|
-
};
|
|
650
|
-
}
|
|
651
|
-
case 'light-consolidation': {
|
|
652
|
-
const report = await runKnowledgeConsolidation(this.getConsolidationContext(), 'light-consolidation', {
|
|
653
|
-
limit: input.limit,
|
|
654
|
-
autoPromote: false,
|
|
655
|
-
});
|
|
656
|
-
return { reportId: report.id, metrics: report.metrics };
|
|
657
|
-
}
|
|
658
|
-
case 'deep-consolidation': {
|
|
659
|
-
const report = await runKnowledgeConsolidation(this.getConsolidationContext(), 'deep-consolidation', {
|
|
660
|
-
limit: input.limit,
|
|
661
|
-
autoPromote: true,
|
|
662
|
-
});
|
|
663
|
-
return { reportId: report.id, metrics: report.metrics };
|
|
664
|
-
}
|
|
665
|
-
default:
|
|
666
|
-
return {};
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
private deferUsage(input: {
|
|
671
|
-
readonly targetKind: KnowledgeUsageRecord['targetKind'];
|
|
672
|
-
readonly targetId: string;
|
|
673
|
-
readonly usageKind: KnowledgeUsageRecord['usageKind'];
|
|
674
|
-
readonly task?: string;
|
|
675
|
-
readonly sessionId?: string;
|
|
676
|
-
readonly score?: number;
|
|
677
|
-
readonly metadata?: Record<string, unknown>;
|
|
678
|
-
}): void {
|
|
679
|
-
queueMicrotask(() => {
|
|
680
|
-
void this.recordUsage(input).catch(() => {});
|
|
681
|
-
});
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
private async syncReviewedMemory(): Promise<void> {
|
|
685
|
-
await syncKnowledgeMemoryNodes(this.store, this.options.memoryRegistry);
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
private dispose(): void {
|
|
689
|
-
this.scheduleService.dispose();
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
async lint(): Promise<readonly KnowledgeIssueRecord[]> {
|
|
693
|
-
return lintKnowledgeStore({ store: this.store, emitIfReady: this.emitIfReady.bind(this) });
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
private emitIfReady(
|
|
697
|
-
fn: (bus: RuntimeEventBus, ctx: { readonly traceId: string; readonly sessionId: string; readonly source: string }) => void,
|
|
698
|
-
sessionId?: string,
|
|
699
|
-
): void {
|
|
700
|
-
if (!this.runtimeBus) return;
|
|
701
|
-
fn(this.runtimeBus, {
|
|
702
|
-
traceId: randomUUID(),
|
|
703
|
-
sessionId: sessionId ?? 'knowledge-runtime',
|
|
704
|
-
source: 'knowledge.service',
|
|
705
|
-
});
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
export function buildCuratedKnowledgePromptSync(
|
|
710
|
-
service: Pick<KnowledgeService, 'buildPromptPacketSync'>,
|
|
711
|
-
task: string,
|
|
712
|
-
writeScope: readonly string[] = [],
|
|
713
|
-
): string | null {
|
|
714
|
-
return service.buildPromptPacketSync(task, writeScope);
|
|
715
|
-
}
|