@pellux/goodvibes-tui 0.18.10 → 0.18.12
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 +56 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/core/conversation-rendering.ts +2 -2
- package/src/core/conversation.ts +5 -5
- package/src/core/orchestrator.ts +13 -11
- package/src/daemon/facade-composition.ts +8 -8
- package/src/daemon/facade.ts +8 -8
- package/src/daemon/types.ts +3 -3
- 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-feed.ts +1 -1
- package/src/input/session-picker-modal.ts +1 -1
- package/src/panels/builtin/agent.ts +1 -0
- package/src/panels/builtin/operations.ts +1 -0
- package/src/panels/builtin/session.ts +1 -1
- package/src/panels/builtin/shared.ts +2 -2
- package/src/panels/context-visualizer-panel.ts +4 -1
- package/src/panels/provider-health-domains.ts +5 -1
- package/src/panels/provider-health-panel.ts +5 -1
- package/src/panels/session-browser-panel.ts +1 -1
- package/src/panels/token-budget-panel.ts +6 -2
- package/src/plugins/loader.ts +2 -2
- package/src/runtime/bootstrap-command-context.ts +3 -3
- package/src/runtime/bootstrap-command-parts.ts +3 -3
- package/src/runtime/bootstrap-core.ts +2 -2
- package/src/runtime/bootstrap-hook-bridge.ts +1 -1
- package/src/runtime/bootstrap-shell.ts +1 -1
- package/src/runtime/bootstrap.ts +5 -4
- package/src/runtime/services.ts +2 -2
- 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/tools/index.ts +1 -1
- 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/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/transport-events.ts +0 -110
- 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-events.ts +0 -46
- 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
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
import { ConfigManager, getConfiguredEmbeddingProviderId } from '../config/index.ts';
|
|
2
|
-
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
3
|
-
import { createBuiltinMemoryEmbeddingProviders } from '@pellux/goodvibes-sdk/platform/state/memory-embedding-http';
|
|
4
|
-
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
5
|
-
|
|
6
|
-
export const DEFAULT_MEMORY_EMBEDDING_DIMS = 384;
|
|
7
|
-
|
|
8
|
-
export type MemoryEmbeddingProviderState = 'healthy' | 'degraded' | 'disabled' | 'unconfigured';
|
|
9
|
-
export type MemoryEmbeddingUsage = 'record' | 'query' | 'doctor';
|
|
10
|
-
|
|
11
|
-
export interface MemoryEmbeddingRequest {
|
|
12
|
-
readonly text: string;
|
|
13
|
-
readonly dimensions: number;
|
|
14
|
-
readonly usage: MemoryEmbeddingUsage;
|
|
15
|
-
readonly recordId?: string;
|
|
16
|
-
readonly metadata?: Record<string, unknown>;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface MemoryEmbeddingResult {
|
|
20
|
-
readonly vector: Float32Array | readonly number[];
|
|
21
|
-
readonly dimensions: number;
|
|
22
|
-
readonly modelId?: string;
|
|
23
|
-
readonly metadata?: Record<string, unknown>;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface MemoryEmbeddingProviderStatus {
|
|
27
|
-
readonly id: string;
|
|
28
|
-
readonly label: string;
|
|
29
|
-
readonly state: MemoryEmbeddingProviderState;
|
|
30
|
-
readonly dimensions: number;
|
|
31
|
-
readonly configured: boolean;
|
|
32
|
-
readonly deterministic?: boolean;
|
|
33
|
-
readonly detail?: string;
|
|
34
|
-
readonly metadata: Record<string, unknown>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface MemoryEmbeddingProvider {
|
|
38
|
-
readonly id: string;
|
|
39
|
-
readonly label: string;
|
|
40
|
-
readonly dimensions: number;
|
|
41
|
-
readonly deterministic?: boolean;
|
|
42
|
-
readonly local?: boolean;
|
|
43
|
-
embedSync?(request: MemoryEmbeddingRequest): MemoryEmbeddingResult;
|
|
44
|
-
embed?(request: MemoryEmbeddingRequest): Promise<MemoryEmbeddingResult>;
|
|
45
|
-
status?(): MemoryEmbeddingProviderStatus | Promise<MemoryEmbeddingProviderStatus>;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export interface MemoryEmbeddingDoctorReport {
|
|
49
|
-
readonly activeProviderId: string;
|
|
50
|
-
readonly providers: readonly MemoryEmbeddingProviderStatus[];
|
|
51
|
-
readonly asyncProviders: readonly string[];
|
|
52
|
-
readonly syncProviders: readonly string[];
|
|
53
|
-
readonly warnings: readonly string[];
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface MemoryEmbeddingProviderRegistryOptions {
|
|
57
|
-
readonly configManager: ConfigManager;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function embedMemoryText(text: string, dims = DEFAULT_MEMORY_EMBEDDING_DIMS): Float32Array {
|
|
61
|
-
const vector = new Float32Array(dims);
|
|
62
|
-
const normalized = text.toLowerCase();
|
|
63
|
-
const tokens = normalized
|
|
64
|
-
.split(/[^a-z0-9_./-]+/)
|
|
65
|
-
.map((token) => token.trim())
|
|
66
|
-
.filter((token) => token.length >= 2);
|
|
67
|
-
|
|
68
|
-
for (const token of tokens) {
|
|
69
|
-
addHashedFeature(vector, `tok:${token}`, 1.2);
|
|
70
|
-
if (token.includes('/') || token.includes('.') || token.includes('-') || token.includes('_')) {
|
|
71
|
-
for (const part of token.split(/[./_-]+/).filter((entry) => entry.length >= 2)) {
|
|
72
|
-
addHashedFeature(vector, `part:${part}`, 0.8);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
for (let i = 0; i < tokens.length - 1; i++) {
|
|
78
|
-
addHashedFeature(vector, `bigram:${tokens[i]} ${tokens[i + 1]}`, 0.9);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const compact = normalized.replace(/\s+/g, ' ').trim();
|
|
82
|
-
for (let i = 0; i < compact.length - 2; i++) {
|
|
83
|
-
const tri = compact.slice(i, i + 3);
|
|
84
|
-
if (/\s{2,}/.test(tri)) continue;
|
|
85
|
-
addHashedFeature(vector, `tri:${tri}`, 0.18);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
normalizeVector(vector);
|
|
89
|
-
return vector;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export function normalizeMemoryEmbeddingVector(vector: Float32Array | readonly number[], dimensions: number): Float32Array {
|
|
93
|
-
if (vector instanceof Float32Array && vector.length === dimensions) return vector;
|
|
94
|
-
const normalized = new Float32Array(dimensions);
|
|
95
|
-
const limit = Math.min(vector.length, dimensions);
|
|
96
|
-
for (let i = 0; i < limit; i++) {
|
|
97
|
-
const value = Number(vector[i]);
|
|
98
|
-
normalized[i] = Number.isFinite(value) ? value : 0;
|
|
99
|
-
}
|
|
100
|
-
normalizeVector(normalized);
|
|
101
|
-
return normalized;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export class MemoryEmbeddingProviderRegistry {
|
|
105
|
-
private readonly providers = new Map<string, MemoryEmbeddingProvider>();
|
|
106
|
-
private activeProviderId = HASHED_MEMORY_EMBEDDING_PROVIDER.id;
|
|
107
|
-
private readonly configManager: ConfigManager;
|
|
108
|
-
|
|
109
|
-
constructor(options: MemoryEmbeddingProviderRegistryOptions) {
|
|
110
|
-
this.configManager = options.configManager;
|
|
111
|
-
this.register(HASHED_MEMORY_EMBEDDING_PROVIDER, { replace: true });
|
|
112
|
-
for (const provider of createBuiltinMemoryEmbeddingProviders()) {
|
|
113
|
-
this.register(provider, { replace: true });
|
|
114
|
-
}
|
|
115
|
-
const configuredDefault = getConfiguredEmbeddingProviderId(this.configManager).trim();
|
|
116
|
-
if (configuredDefault) {
|
|
117
|
-
this.activeProviderId = configuredDefault;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
register(provider: MemoryEmbeddingProvider, options: { readonly replace?: boolean; readonly makeDefault?: boolean } = {}): () => void {
|
|
122
|
-
const id = provider.id.trim();
|
|
123
|
-
if (!id) throw new Error('Memory embedding provider id is required');
|
|
124
|
-
if (this.providers.has(id) && !options.replace) {
|
|
125
|
-
throw new Error(`Memory embedding provider already registered: ${id}`);
|
|
126
|
-
}
|
|
127
|
-
const registered = { ...provider, id };
|
|
128
|
-
this.providers.set(id, registered);
|
|
129
|
-
if (options.makeDefault) {
|
|
130
|
-
this.activeProviderId = id;
|
|
131
|
-
persistDefaultEmbeddingProviderId(this.configManager, id);
|
|
132
|
-
}
|
|
133
|
-
return () => {
|
|
134
|
-
if (this.providers.get(id) === registered) this.unregister(id);
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
unregister(id: string): boolean {
|
|
139
|
-
if (id === HASHED_MEMORY_EMBEDDING_PROVIDER.id) return false;
|
|
140
|
-
return this.providers.delete(id);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
setDefaultProvider(id: string): void {
|
|
144
|
-
if (!this.providers.has(id)) throw new Error(`Unknown memory embedding provider: ${id}`);
|
|
145
|
-
this.activeProviderId = id;
|
|
146
|
-
persistDefaultEmbeddingProviderId(this.configManager, id);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
getDefaultProvider(): MemoryEmbeddingProvider {
|
|
150
|
-
return this.providers.get(this.activeProviderId) ?? HASHED_MEMORY_EMBEDDING_PROVIDER;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
get(id: string): MemoryEmbeddingProvider | null {
|
|
154
|
-
return this.providers.get(id) ?? null;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
list(): MemoryEmbeddingProvider[] {
|
|
158
|
-
return [...this.providers.values()].sort((a, b) => a.label.localeCompare(b.label) || a.id.localeCompare(b.id));
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
embedSync(request: MemoryEmbeddingRequest): MemoryEmbeddingResult {
|
|
162
|
-
const provider = this.getDefaultProvider();
|
|
163
|
-
if (provider.embedSync) return provider.embedSync(request);
|
|
164
|
-
return HASHED_MEMORY_EMBEDDING_PROVIDER.embedSync!(request);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
async embedAsync(request: MemoryEmbeddingRequest): Promise<MemoryEmbeddingResult> {
|
|
168
|
-
const provider = this.getDefaultProvider();
|
|
169
|
-
if (provider.embed) {
|
|
170
|
-
try {
|
|
171
|
-
return await provider.embed(request);
|
|
172
|
-
} catch (error) {
|
|
173
|
-
logger.warn('Memory embedding provider failed; falling back to hashed local embeddings', {
|
|
174
|
-
providerId: provider.id,
|
|
175
|
-
error: summarizeError(error),
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (provider.embedSync) {
|
|
180
|
-
return provider.embedSync(request);
|
|
181
|
-
}
|
|
182
|
-
return HASHED_MEMORY_EMBEDDING_PROVIDER.embedSync!(request);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
async status(): Promise<MemoryEmbeddingProviderStatus[]> {
|
|
186
|
-
const statuses: MemoryEmbeddingProviderStatus[] = [];
|
|
187
|
-
for (const provider of this.providers.values()) {
|
|
188
|
-
if (provider.status) {
|
|
189
|
-
statuses.push(await provider.status());
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
statuses.push({
|
|
193
|
-
id: provider.id,
|
|
194
|
-
label: provider.label,
|
|
195
|
-
state: 'healthy',
|
|
196
|
-
dimensions: provider.dimensions,
|
|
197
|
-
configured: true,
|
|
198
|
-
deterministic: provider.deterministic,
|
|
199
|
-
metadata: {
|
|
200
|
-
local: provider.local === true,
|
|
201
|
-
hasSyncEmbed: typeof provider.embedSync === 'function',
|
|
202
|
-
hasAsyncEmbed: typeof provider.embed === 'function',
|
|
203
|
-
},
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
if (this.activeProviderId !== HASHED_MEMORY_EMBEDDING_PROVIDER.id && !this.providers.has(this.activeProviderId)) {
|
|
207
|
-
statuses.push({
|
|
208
|
-
id: this.activeProviderId,
|
|
209
|
-
label: `Persisted default (${this.activeProviderId})`,
|
|
210
|
-
state: 'unconfigured',
|
|
211
|
-
dimensions: DEFAULT_MEMORY_EMBEDDING_DIMS,
|
|
212
|
-
configured: false,
|
|
213
|
-
detail: `Persisted embedding provider '${this.activeProviderId}' is not registered; sqlite-vec will use '${HASHED_MEMORY_EMBEDDING_PROVIDER.id}' until it returns.`,
|
|
214
|
-
metadata: {
|
|
215
|
-
local: true,
|
|
216
|
-
hasSyncEmbed: false,
|
|
217
|
-
hasAsyncEmbed: false,
|
|
218
|
-
persistedDefault: true,
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
return statuses.sort((a, b) => a.label.localeCompare(b.label) || a.id.localeCompare(b.id));
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
async doctor(): Promise<MemoryEmbeddingDoctorReport> {
|
|
226
|
-
const providers = await this.status();
|
|
227
|
-
const syncProviders = this.list().filter((provider) => typeof provider.embedSync === 'function').map((provider) => provider.id);
|
|
228
|
-
const asyncProviders = this.list().filter((provider) => typeof provider.embed === 'function').map((provider) => provider.id);
|
|
229
|
-
const active = this.getDefaultProvider();
|
|
230
|
-
const activeStatus = providers.find((provider) => provider.id === active.id);
|
|
231
|
-
const warnings: string[] = [];
|
|
232
|
-
if (!this.providers.has(this.activeProviderId)) {
|
|
233
|
-
warnings.push(`Persisted embedding provider '${this.activeProviderId}' is not currently registered; falling back to '${HASHED_MEMORY_EMBEDDING_PROVIDER.id}'.`);
|
|
234
|
-
}
|
|
235
|
-
if (activeStatus && !activeStatus.configured) {
|
|
236
|
-
warnings.push(`Active embedding provider '${active.id}' is not fully configured: ${activeStatus.detail ?? 'configuration is incomplete'}`);
|
|
237
|
-
}
|
|
238
|
-
if (!active.embedSync) {
|
|
239
|
-
if (active.embed) {
|
|
240
|
-
warnings.push(`Active embedding provider '${active.id}' is async-only; sqlite-vec indexing will fall back to '${HASHED_MEMORY_EMBEDDING_PROVIDER.id}' for live writes and can be rebuilt asynchronously.`);
|
|
241
|
-
} else {
|
|
242
|
-
warnings.push(`Active embedding provider '${active.id}' has no sync embed path; sqlite-vec indexing will fall back to '${HASHED_MEMORY_EMBEDDING_PROVIDER.id}'.`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
const activeDimensions = active.dimensions;
|
|
246
|
-
if (activeDimensions !== DEFAULT_MEMORY_EMBEDDING_DIMS) {
|
|
247
|
-
warnings.push(`Active embedding provider '${active.id}' advertises ${active.dimensions} dimensions; vectors are normalized to ${DEFAULT_MEMORY_EMBEDDING_DIMS} dimensions for sqlite-vec storage.`);
|
|
248
|
-
}
|
|
249
|
-
return {
|
|
250
|
-
activeProviderId: this.activeProviderId,
|
|
251
|
-
providers,
|
|
252
|
-
asyncProviders,
|
|
253
|
-
syncProviders,
|
|
254
|
-
warnings,
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function persistDefaultEmbeddingProviderId(configManager: ConfigManager, providerId: string): void {
|
|
260
|
-
try {
|
|
261
|
-
configManager.set('provider.embeddingProvider', providerId, { bypassManagedLock: true });
|
|
262
|
-
} catch {
|
|
263
|
-
// Persistence is best-effort; runtime selection still takes effect immediately.
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
export const HASHED_MEMORY_EMBEDDING_PROVIDER: MemoryEmbeddingProvider = {
|
|
268
|
-
id: 'hashed-local',
|
|
269
|
-
label: 'Hashed Local Embeddings',
|
|
270
|
-
dimensions: DEFAULT_MEMORY_EMBEDDING_DIMS,
|
|
271
|
-
deterministic: true,
|
|
272
|
-
local: true,
|
|
273
|
-
embedSync(request) {
|
|
274
|
-
return {
|
|
275
|
-
vector: embedMemoryText(request.text, request.dimensions),
|
|
276
|
-
dimensions: request.dimensions,
|
|
277
|
-
modelId: 'goodvibes-hashed-local',
|
|
278
|
-
metadata: {
|
|
279
|
-
usage: request.usage,
|
|
280
|
-
deterministic: true,
|
|
281
|
-
},
|
|
282
|
-
};
|
|
283
|
-
},
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
function normalizeVector(vector: Float32Array): void {
|
|
287
|
-
let sum = 0;
|
|
288
|
-
for (const value of vector) {
|
|
289
|
-
sum += value * value;
|
|
290
|
-
}
|
|
291
|
-
const norm = Math.sqrt(sum);
|
|
292
|
-
if (norm === 0) return;
|
|
293
|
-
for (let i = 0; i < vector.length; i++) {
|
|
294
|
-
vector[i] = vector[i]! / norm;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
function addHashedFeature(vector: Float32Array, feature: string, weight: number): void {
|
|
299
|
-
const hash = fnv1a(feature);
|
|
300
|
-
const index = hash % vector.length;
|
|
301
|
-
const sign = (hash & 0x80000000) === 0 ? 1 : -1;
|
|
302
|
-
vector[index] += sign * weight;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function fnv1a(value: string): number {
|
|
306
|
-
let hash = 0x811c9dc5;
|
|
307
|
-
for (let i = 0; i < value.length; i++) {
|
|
308
|
-
hash ^= value.charCodeAt(i);
|
|
309
|
-
hash = Math.imul(hash, 0x01000193);
|
|
310
|
-
}
|
|
311
|
-
return hash >>> 0;
|
|
312
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import type { MemoryAddOptions, ProvenanceLink } from '@pellux/goodvibes-sdk/platform/state/memory-store';
|
|
2
|
-
import type { ForensicsBundle } from '@pellux/goodvibes-sdk/platform/runtime/forensics/types';
|
|
3
|
-
import type { PolicyPreflightReview } from '@pellux/goodvibes-sdk/platform/runtime/permissions/preflight';
|
|
4
|
-
import type { PluginStatus } from '@pellux/goodvibes-sdk/platform/plugins/manager';
|
|
5
|
-
|
|
6
|
-
export interface McpSecurityCapture {
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly role: string;
|
|
9
|
-
readonly trustMode: string;
|
|
10
|
-
readonly connected: boolean;
|
|
11
|
-
readonly allowedPaths: readonly string[];
|
|
12
|
-
readonly allowedHosts: readonly string[];
|
|
13
|
-
readonly schemaFreshness: string;
|
|
14
|
-
readonly quarantineReason?: string;
|
|
15
|
-
readonly quarantineDetail?: string;
|
|
16
|
-
readonly quarantineApprovedBy?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function buildIncidentMemoryAddOptions(bundle: ForensicsBundle): MemoryAddOptions {
|
|
20
|
-
const provenance: ProvenanceLink[] = [];
|
|
21
|
-
if (bundle.report.sessionId) provenance.push({ kind: 'session', ref: bundle.report.sessionId });
|
|
22
|
-
if (bundle.report.turnId) provenance.push({ kind: 'turn', ref: bundle.report.turnId });
|
|
23
|
-
if (bundle.report.taskId) provenance.push({ kind: 'task', ref: bundle.report.taskId });
|
|
24
|
-
|
|
25
|
-
const details = [
|
|
26
|
-
`classification=${bundle.report.classification}`,
|
|
27
|
-
bundle.evidence.rootCause ? `rootCause=${bundle.evidence.rootCause}` : undefined,
|
|
28
|
-
bundle.evidence.terminalPhase ? `terminalPhase=${bundle.evidence.terminalPhase}` : undefined,
|
|
29
|
-
bundle.evidence.terminalOutcome ? `terminalOutcome=${bundle.evidence.terminalOutcome}` : undefined,
|
|
30
|
-
`deniedPermissions=${bundle.evidence.deniedPermissionCount}`,
|
|
31
|
-
`budgetBreaches=${bundle.evidence.budgetBreachCount}`,
|
|
32
|
-
`replayMismatches=${bundle.replay.mismatchCount}`,
|
|
33
|
-
].filter((value): value is string => Boolean(value));
|
|
34
|
-
|
|
35
|
-
const tags = [
|
|
36
|
-
'forensics',
|
|
37
|
-
bundle.report.classification,
|
|
38
|
-
...(bundle.report.stopReason ? [bundle.report.stopReason] : []),
|
|
39
|
-
...(bundle.evidence.slowPhases.length > 0 ? ['slow-phase'] : []),
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
return {
|
|
43
|
-
cls: 'incident',
|
|
44
|
-
summary: bundle.report.summary,
|
|
45
|
-
detail: details.join('\n'),
|
|
46
|
-
tags,
|
|
47
|
-
provenance,
|
|
48
|
-
review: {
|
|
49
|
-
state: 'fresh',
|
|
50
|
-
confidence: 90,
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function buildPolicyPreflightMemoryAddOptions(review: PolicyPreflightReview): MemoryAddOptions {
|
|
56
|
-
return {
|
|
57
|
-
cls: review.status === 'pass' ? 'fact' : 'risk',
|
|
58
|
-
summary: `Policy preflight: ${review.summary}`,
|
|
59
|
-
detail: review.issues
|
|
60
|
-
.map((issue) => `${issue.severity}:${issue.source}${issue.serverName ? `:${issue.serverName}` : ''} ${issue.message}`)
|
|
61
|
-
.join('\n'),
|
|
62
|
-
tags: [
|
|
63
|
-
'security',
|
|
64
|
-
'policy',
|
|
65
|
-
'preflight',
|
|
66
|
-
review.status,
|
|
67
|
-
],
|
|
68
|
-
provenance: [],
|
|
69
|
-
review: {
|
|
70
|
-
state: 'fresh',
|
|
71
|
-
confidence: review.status === 'pass' ? 80 : 75,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function buildMcpSecurityMemoryAddOptions(server: McpSecurityCapture): MemoryAddOptions {
|
|
77
|
-
const isRisk = server.schemaFreshness === 'quarantined' || server.trustMode === 'allow-all';
|
|
78
|
-
return {
|
|
79
|
-
cls: isRisk ? 'risk' : 'fact',
|
|
80
|
-
summary: `MCP security posture: ${server.name} (${server.role}) ${server.trustMode}`,
|
|
81
|
-
detail: [
|
|
82
|
-
`connected=${server.connected}`,
|
|
83
|
-
`schemaFreshness=${server.schemaFreshness}`,
|
|
84
|
-
`allowedPaths=${server.allowedPaths.length > 0 ? server.allowedPaths.join(',') : 'unbounded'}`,
|
|
85
|
-
`allowedHosts=${server.allowedHosts.length > 0 ? server.allowedHosts.join(',') : 'unbounded'}`,
|
|
86
|
-
server.quarantineReason ? `quarantineReason=${server.quarantineReason}` : undefined,
|
|
87
|
-
server.quarantineDetail ? `quarantineDetail=${server.quarantineDetail}` : undefined,
|
|
88
|
-
server.quarantineApprovedBy ? `quarantineApprovedBy=${server.quarantineApprovedBy}` : undefined,
|
|
89
|
-
].filter((value): value is string => Boolean(value)).join('\n'),
|
|
90
|
-
tags: [
|
|
91
|
-
'security',
|
|
92
|
-
'mcp',
|
|
93
|
-
server.role,
|
|
94
|
-
server.trustMode,
|
|
95
|
-
server.schemaFreshness,
|
|
96
|
-
],
|
|
97
|
-
provenance: [],
|
|
98
|
-
review: {
|
|
99
|
-
state: 'fresh',
|
|
100
|
-
confidence: isRisk ? 65 : 75,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export function buildPluginSecurityMemoryAddOptions(
|
|
106
|
-
plugin: PluginStatus,
|
|
107
|
-
quarantineReason?: string,
|
|
108
|
-
): MemoryAddOptions {
|
|
109
|
-
const isRisk = plugin.quarantined || plugin.trustTier === 'untrusted';
|
|
110
|
-
return {
|
|
111
|
-
cls: isRisk ? 'risk' : 'fact',
|
|
112
|
-
summary: `Plugin security posture: ${plugin.name} ${plugin.trustTier}${plugin.quarantined ? ' quarantined' : ''}`,
|
|
113
|
-
detail: [
|
|
114
|
-
`enabled=${plugin.enabled}`,
|
|
115
|
-
`active=${plugin.active}`,
|
|
116
|
-
`trustTier=${plugin.trustTier}`,
|
|
117
|
-
`quarantined=${plugin.quarantined}`,
|
|
118
|
-
quarantineReason ? `quarantineReason=${quarantineReason}` : undefined,
|
|
119
|
-
].filter((value): value is string => Boolean(value)).join('\n'),
|
|
120
|
-
tags: [
|
|
121
|
-
'security',
|
|
122
|
-
'plugin',
|
|
123
|
-
plugin.trustTier,
|
|
124
|
-
...(plugin.quarantined ? ['quarantined'] : []),
|
|
125
|
-
],
|
|
126
|
-
provenance: [],
|
|
127
|
-
review: {
|
|
128
|
-
state: 'fresh',
|
|
129
|
-
confidence: isRisk ? 60 : 70,
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import type { MemoryAddOptions, MemoryBundle, MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewPatch, MemoryScope, MemorySearchFilter, MemorySemanticSearchResult, MemoryStore } from '@pellux/goodvibes-sdk/platform/state/memory-store';
|
|
2
|
-
import type { MemoryVectorStats } from '@pellux/goodvibes-sdk/platform/state/memory-vector-store';
|
|
3
|
-
import type { MemoryImportResult } from '@pellux/goodvibes-sdk/platform/state/memory-store';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* MemoryRegistry — thin observable wrapper around the MemoryStore.
|
|
7
|
-
* Panels subscribe via listeners; commands push/retrieve through this.
|
|
8
|
-
*/
|
|
9
|
-
export class MemoryRegistry {
|
|
10
|
-
private store: MemoryStore;
|
|
11
|
-
private listeners: Array<() => void> = [];
|
|
12
|
-
|
|
13
|
-
constructor(store: MemoryStore) {
|
|
14
|
-
this.store = store;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getStore(): MemoryStore {
|
|
18
|
-
return this.store;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
subscribe(fn: () => void): () => void {
|
|
22
|
-
this.listeners.push(fn);
|
|
23
|
-
return () => {
|
|
24
|
-
this.listeners = this.listeners.filter(l => l !== fn);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
private notify(): void {
|
|
29
|
-
for (const fn of this.listeners) fn();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async add(opts: MemoryAddOptions): Promise<MemoryRecord> {
|
|
33
|
-
const record = await this.store.add(opts);
|
|
34
|
-
this.notify();
|
|
35
|
-
return record;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
search(filter: MemorySearchFilter = {}): MemoryRecord[] {
|
|
39
|
-
return this.store.search(filter);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
searchSemantic(filter: MemorySearchFilter = {}): MemorySemanticSearchResult[] {
|
|
43
|
-
return this.store.searchSemantic(filter);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
rebuildVectors(): MemoryVectorStats {
|
|
47
|
-
return this.store.rebuildVectorIndex();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async rebuildVectorsAsync(): Promise<MemoryVectorStats> {
|
|
51
|
-
return this.store.rebuildVectorIndexAsync();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
vectorStats(): MemoryVectorStats {
|
|
55
|
-
return this.store.vectorStats();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async doctor(): Promise<MemoryDoctorReport> {
|
|
59
|
-
return this.store.doctor();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
reviewQueue(limit = 10): MemoryRecord[] {
|
|
63
|
-
return this.store.reviewQueue(limit);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
exportBundle(filter: MemorySearchFilter = {}): MemoryBundle {
|
|
67
|
-
return this.store.exportBundle(filter);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async importBundle(bundle: MemoryBundle): Promise<MemoryImportResult> {
|
|
71
|
-
const result = await this.store.importBundle(bundle);
|
|
72
|
-
this.notify();
|
|
73
|
-
return result;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
get(id: string): MemoryRecord | null {
|
|
77
|
-
return this.store.get(id);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
async link(fromId: string, toId: string, relation: string): Promise<MemoryLink | null> {
|
|
81
|
-
const link = await this.store.link(fromId, toId, relation);
|
|
82
|
-
if (link) this.notify();
|
|
83
|
-
return link;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
linksFor(id: string): MemoryLink[] {
|
|
87
|
-
return this.store.linksFor(id);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
update(id: string, patch: { scope?: MemoryScope; summary?: string; detail?: string; tags?: string[] }): MemoryRecord | null {
|
|
91
|
-
const record = this.store.update(id, patch);
|
|
92
|
-
if (record) this.notify();
|
|
93
|
-
return record;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
review(id: string, patch: MemoryReviewPatch): MemoryRecord | null {
|
|
97
|
-
const record = this.store.review(id, patch);
|
|
98
|
-
if (record) this.notify();
|
|
99
|
-
return record;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
delete(id: string): boolean {
|
|
103
|
-
const removed = this.store.delete(id);
|
|
104
|
-
if (removed) this.notify();
|
|
105
|
-
return removed;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
getAll(): MemoryRecord[] {
|
|
109
|
-
return this.store.search({});
|
|
110
|
-
}
|
|
111
|
-
}
|