@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
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { PermissionAuditEntry } from '@pellux/goodvibes-sdk/platform/runtime/permissions/policy-runtime';
|
|
2
|
-
|
|
3
|
-
export interface PermissionRuleSuggestion {
|
|
4
|
-
readonly id: string;
|
|
5
|
-
readonly tool: string;
|
|
6
|
-
readonly command: string;
|
|
7
|
-
readonly summary: string;
|
|
8
|
-
readonly reason: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export function buildPermissionRuleSuggestions(
|
|
12
|
-
audit: readonly PermissionAuditEntry[],
|
|
13
|
-
): PermissionRuleSuggestion[] {
|
|
14
|
-
const denied = audit.filter((entry) => entry.approved === false);
|
|
15
|
-
const grouped = new Map<string, PermissionAuditEntry[]>();
|
|
16
|
-
for (const entry of denied) {
|
|
17
|
-
const key = `${entry.tool}:${entry.target ?? entry.host ?? entry.summary}`;
|
|
18
|
-
const list = grouped.get(key) ?? [];
|
|
19
|
-
list.push(entry);
|
|
20
|
-
grouped.set(key, list);
|
|
21
|
-
}
|
|
22
|
-
return [...grouped.entries()]
|
|
23
|
-
.filter(([, entries]) => entries.length >= 2)
|
|
24
|
-
.map(([key, entries]) => {
|
|
25
|
-
const sample = entries[0]!;
|
|
26
|
-
const target = sample.target ?? sample.host ?? sample.summary;
|
|
27
|
-
return {
|
|
28
|
-
id: key,
|
|
29
|
-
tool: sample.tool,
|
|
30
|
-
command: `/policy simulate ${sample.tool}${target ? ` --target ${JSON.stringify(target)}` : ''}`,
|
|
31
|
-
summary: `Repeated denials for ${sample.tool}`,
|
|
32
|
-
reason: `${entries.length} denials suggest a durable scoped rule or policy review may be appropriate.`,
|
|
33
|
-
} satisfies PermissionRuleSuggestion;
|
|
34
|
-
})
|
|
35
|
-
.sort((a, b) => a.tool.localeCompare(b.tool));
|
|
36
|
-
}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Safe hot-reload protocol for plugins.
|
|
3
|
-
*
|
|
4
|
-
* Implements the 6-phase hot-reload sequence:
|
|
5
|
-
* 1. Quiesce — stop accepting new work from the plugin
|
|
6
|
-
* 2. Unregister — remove plugin's registrations (commands, tools, hooks)
|
|
7
|
-
* 3. Unload — deactivate and clean up the old plugin instance
|
|
8
|
-
* 4. Reload — load the new version with a cache-bust timestamp
|
|
9
|
-
* 5. Re-register — new instance calls init/activate (registers naturally)
|
|
10
|
-
* 6. Health check → active (healthy) or degraded (unhealthy)
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
14
|
-
import type { PluginLoaderDeps } from '../../plugins/loader';
|
|
15
|
-
import type { LoadedPlugin } from '../../plugins/loader';
|
|
16
|
-
import type { PluginHealthCheckResult, PluginManifestV2 } from '@pellux/goodvibes-sdk/platform/runtime/plugins/types';
|
|
17
|
-
import type { PluginLifecycleManager } from '@pellux/goodvibes-sdk/platform/runtime/plugins/manager';
|
|
18
|
-
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Options for a single plugin hot-reload operation.
|
|
22
|
-
*/
|
|
23
|
-
export interface HotReloadOptions {
|
|
24
|
-
/**
|
|
25
|
-
* Callback to retrieve the current loaded plugin instance by name.
|
|
26
|
-
* Used to call deactivate() and run cleanup before unloading.
|
|
27
|
-
*/
|
|
28
|
-
getLoadedPlugin: (name: string) => LoadedPlugin | undefined;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Callback to remove a plugin's loaded instance from the host's registry.
|
|
32
|
-
* Called after unload to clean up the host-side reference.
|
|
33
|
-
*/
|
|
34
|
-
removeLoadedPlugin: (name: string) => void;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Callback to store the newly loaded plugin instance in the host's registry.
|
|
38
|
-
* Called after a successful reload.
|
|
39
|
-
*/
|
|
40
|
-
storeLoadedPlugin: (name: string, plugin: LoadedPlugin) => void;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Optional health check callback invoked after re-registration.
|
|
44
|
-
* Return a PluginHealthCheckResult to indicate whether the plugin is healthy.
|
|
45
|
-
* Defaults to a trivial healthy check.
|
|
46
|
-
*/
|
|
47
|
-
healthCheck?: (name: string) => Promise<PluginHealthCheckResult>;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Maximum time (ms) to wait for the health check before timing out.
|
|
51
|
-
* Defaults to 5000ms.
|
|
52
|
-
*/
|
|
53
|
-
healthCheckTimeoutMs?: number;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Result of a hot-reload operation.
|
|
58
|
-
*/
|
|
59
|
-
export interface HotReloadResult {
|
|
60
|
-
/** Whether the reload completed successfully and the plugin is healthy. */
|
|
61
|
-
success: boolean;
|
|
62
|
-
/** Phase that failed (if success === false). */
|
|
63
|
-
failedPhase?: 'quiesce' | 'unregister' | 'unload' | 'reload' | 're-register' | 'health-check';
|
|
64
|
-
/** Error message (if success === false). */
|
|
65
|
-
error?: string;
|
|
66
|
-
/** Duration of the reload in milliseconds. */
|
|
67
|
-
durationMs: number;
|
|
68
|
-
/** Whether the plugin ended in degraded state (partial success). */
|
|
69
|
-
degraded: boolean;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** Default trivial health check — always returns healthy. */
|
|
73
|
-
async function defaultHealthCheck(name: string): Promise<PluginHealthCheckResult> {
|
|
74
|
-
return {
|
|
75
|
-
healthy: true,
|
|
76
|
-
message: `${name}: health check passed (default)`,
|
|
77
|
-
durationMs: 0,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* runHotReload — Execute the safe 6-phase hot-reload protocol for a single
|
|
83
|
-
* plugin.
|
|
84
|
-
*
|
|
85
|
-
* @param name - Plugin name.
|
|
86
|
-
* @param manifest - Current manifest for the plugin.
|
|
87
|
-
* @param pluginDir - Absolute path to the plugin directory.
|
|
88
|
-
* @param deps - Loader dependencies (runtime bus, registries, etc.).
|
|
89
|
-
* @param lcm - PluginLifecycleManager to track state transitions.
|
|
90
|
-
* @param options - Host-side callbacks and configuration.
|
|
91
|
-
* @returns HotReloadResult describing the outcome.
|
|
92
|
-
*/
|
|
93
|
-
export async function runHotReload(
|
|
94
|
-
name: string,
|
|
95
|
-
manifest: PluginManifestV2,
|
|
96
|
-
pluginDir: string,
|
|
97
|
-
deps: PluginLoaderDeps,
|
|
98
|
-
lcm: PluginLifecycleManager,
|
|
99
|
-
options: HotReloadOptions,
|
|
100
|
-
): Promise<HotReloadResult> {
|
|
101
|
-
const startTs = Date.now();
|
|
102
|
-
const healthCheck = options.healthCheck ?? defaultHealthCheck;
|
|
103
|
-
const timeoutMs = options.healthCheckTimeoutMs ?? 5000;
|
|
104
|
-
|
|
105
|
-
const record = lcm.getRecord(name);
|
|
106
|
-
if (!record) {
|
|
107
|
-
return {
|
|
108
|
-
success: false,
|
|
109
|
-
failedPhase: 'quiesce',
|
|
110
|
-
error: `Plugin '${name}' is not tracked by the lifecycle manager`,
|
|
111
|
-
durationMs: Date.now() - startTs,
|
|
112
|
-
degraded: false,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
logger.info(`[plugin-hot-reload] ${name}: starting hot-reload`);
|
|
117
|
-
|
|
118
|
-
// ── Phase 1: Quiesce ────────────────────────────────────────────────────
|
|
119
|
-
// Mark the plugin as reloading to signal to callers to defer new work.
|
|
120
|
-
// (The PluginLifecycleRecord.reloading flag is set, but state is not changed.)
|
|
121
|
-
// In a future implementation this phase could drain in-flight requests.
|
|
122
|
-
try {
|
|
123
|
-
// Access via cast since reloading is a mutable field on the record.
|
|
124
|
-
const mutableRecord = record as { reloading: boolean };
|
|
125
|
-
mutableRecord.reloading = true;
|
|
126
|
-
logger.debug(`[plugin-hot-reload] ${name}: phase 1/6 quiesced`);
|
|
127
|
-
} catch (err) {
|
|
128
|
-
return failure('quiesce', summarizeError(err), startTs);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// ── Phase 2: Prepare unregister ──────────────────────────────────────────
|
|
132
|
-
// The existing plugin's cleanup callbacks handle un-registration during
|
|
133
|
-
// unload, so there is no separate hook dispatch here.
|
|
134
|
-
logger.debug(`[plugin-hot-reload] ${name}: phase 2/6 unregister scheduled with unload cleanup`);
|
|
135
|
-
|
|
136
|
-
// ── Phase 3: Unload ─────────────────────────────────────────────────────
|
|
137
|
-
try {
|
|
138
|
-
const loaded = options.getLoadedPlugin(name);
|
|
139
|
-
if (loaded) {
|
|
140
|
-
const { unloadPlugin } = await import('../../plugins/loader.ts');
|
|
141
|
-
await unloadPlugin(loaded);
|
|
142
|
-
}
|
|
143
|
-
options.removeLoadedPlugin(name);
|
|
144
|
-
logger.debug(`[plugin-hot-reload] ${name}: phase 3/6 unloaded`);
|
|
145
|
-
} catch (err) {
|
|
146
|
-
return failure('unload', summarizeError(err), startTs);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// ── Phase 4 + 5: Reload + Re-register ──────────────────────────────────
|
|
150
|
-
// loadPlugin calls init() and activate() which re-registers everything.
|
|
151
|
-
let reloadedPlugin: import('../../plugins/loader.ts').LoadedPlugin | null = null;
|
|
152
|
-
try {
|
|
153
|
-
const { loadPlugin } = await import('../../plugins/loader.ts');
|
|
154
|
-
const cacheBust = Date.now();
|
|
155
|
-
reloadedPlugin = await loadPlugin({ manifest, pluginDir }, deps, cacheBust);
|
|
156
|
-
if (!reloadedPlugin) {
|
|
157
|
-
return failure('reload', 'loadPlugin returned null', startTs);
|
|
158
|
-
}
|
|
159
|
-
options.storeLoadedPlugin(name, reloadedPlugin);
|
|
160
|
-
logger.debug(`[plugin-hot-reload] ${name}: phases 4+5/6 reloaded + re-registered`);
|
|
161
|
-
} catch (err) {
|
|
162
|
-
return failure('reload', summarizeError(err), startTs);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// ── Phase 6: Health check ────────────────────────────────────────────────
|
|
166
|
-
let healthResult: PluginHealthCheckResult;
|
|
167
|
-
try {
|
|
168
|
-
healthResult = await Promise.race([
|
|
169
|
-
healthCheck(name),
|
|
170
|
-
new Promise<PluginHealthCheckResult>((_, reject) =>
|
|
171
|
-
setTimeout(() => reject(new Error(`health check timed out after ${timeoutMs}ms`)), timeoutMs),
|
|
172
|
-
),
|
|
173
|
-
]);
|
|
174
|
-
} catch (err) {
|
|
175
|
-
healthResult = {
|
|
176
|
-
healthy: false,
|
|
177
|
-
message: summarizeError(err),
|
|
178
|
-
durationMs: Date.now() - startTs,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Clear reloading flag.
|
|
183
|
-
try {
|
|
184
|
-
const mutableRecord = lcm.getRecord(name) as { reloading: boolean } | undefined;
|
|
185
|
-
if (mutableRecord) mutableRecord.reloading = false;
|
|
186
|
-
} catch { /* non-fatal */ }
|
|
187
|
-
|
|
188
|
-
if (healthResult.healthy) {
|
|
189
|
-
logger.info(`[plugin-hot-reload] ${name}: hot-reload complete — active (${Date.now() - startTs}ms)`);
|
|
190
|
-
return {
|
|
191
|
-
success: true,
|
|
192
|
-
durationMs: Date.now() - startTs,
|
|
193
|
-
degraded: false,
|
|
194
|
-
};
|
|
195
|
-
} else {
|
|
196
|
-
// Plugin loaded but health check failed → degraded.
|
|
197
|
-
lcm.degradePlugin(name, `Health check failed: ${healthResult.message}`);
|
|
198
|
-
logger.warn(`[plugin-hot-reload] ${name}: hot-reload complete — degraded (${healthResult.message})`);
|
|
199
|
-
return {
|
|
200
|
-
success: true, // reload succeeded; just in degraded state
|
|
201
|
-
durationMs: Date.now() - startTs,
|
|
202
|
-
degraded: true,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/** Build a failure result for a named phase. */
|
|
208
|
-
function failure(
|
|
209
|
-
phase: HotReloadResult['failedPhase'],
|
|
210
|
-
error: string,
|
|
211
|
-
startTs: number,
|
|
212
|
-
): HotReloadResult {
|
|
213
|
-
logger.error(`[plugin-hot-reload] phase '${String(phase)}' failed: ${error}`);
|
|
214
|
-
return {
|
|
215
|
-
success: false,
|
|
216
|
-
failedPhase: phase,
|
|
217
|
-
error,
|
|
218
|
-
durationMs: Date.now() - startTs,
|
|
219
|
-
degraded: false,
|
|
220
|
-
};
|
|
221
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin lifecycle system — barrel export and factory.
|
|
3
|
-
*
|
|
4
|
-
* Gated by the `plugin-lifecycle` feature flag. Import and call
|
|
5
|
-
* `createPluginLifecycleManager()` at startup after the feature flag
|
|
6
|
-
* manager has been initialised.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { createPluginLifecycleManager } from './src/runtime/plugins/index.ts';
|
|
11
|
-
*
|
|
12
|
-
* const lcm = createPluginLifecycleManager({ sessionId: session.id, runtimeBus });
|
|
13
|
-
* lcm.scanAndRegister();
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
export type {
|
|
18
|
-
PluginCapability,
|
|
19
|
-
PluginCapabilityManifest,
|
|
20
|
-
PluginManifestV2,
|
|
21
|
-
PluginTransition,
|
|
22
|
-
TransitionResult,
|
|
23
|
-
PluginHealthCheckResult,
|
|
24
|
-
PluginLifecycleRecord,
|
|
25
|
-
PluginLifecycleManagerOptions,
|
|
26
|
-
PluginLifecycleState,
|
|
27
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/plugins/types';
|
|
28
|
-
|
|
29
|
-
export { ALL_CAPABILITIES, MAX_TRANSITION_HISTORY } from '@pellux/goodvibes-sdk/platform/runtime/plugins/types';
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
VALID_TRANSITIONS,
|
|
33
|
-
canTransition,
|
|
34
|
-
applyTransition,
|
|
35
|
-
isOperational,
|
|
36
|
-
isReloadable,
|
|
37
|
-
isTerminal,
|
|
38
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/plugins/lifecycle';
|
|
39
|
-
|
|
40
|
-
export {
|
|
41
|
-
resolveCapabilityManifest,
|
|
42
|
-
hasCapability,
|
|
43
|
-
validateManifestV2,
|
|
44
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/plugins/manifest';
|
|
45
|
-
|
|
46
|
-
export { PluginLifecycleManager } from '@pellux/goodvibes-sdk/platform/runtime/plugins/manager';
|
|
47
|
-
import { PluginLifecycleManager } from '@pellux/goodvibes-sdk/platform/runtime/plugins/manager';
|
|
48
|
-
|
|
49
|
-
// Trust framework.
|
|
50
|
-
export type {
|
|
51
|
-
PluginTrustTier,
|
|
52
|
-
PluginTrustRecord,
|
|
53
|
-
SignatureValidationResult,
|
|
54
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/plugins/trust';
|
|
55
|
-
export {
|
|
56
|
-
PluginTrustStore,
|
|
57
|
-
validatePluginSignature,
|
|
58
|
-
filterCapabilitiesByTrust,
|
|
59
|
-
SAFE_CAPABILITIES,
|
|
60
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/plugins/trust';
|
|
61
|
-
|
|
62
|
-
export type { QuarantineRecord } from '@pellux/goodvibes-sdk/platform/runtime/plugins/quarantine';
|
|
63
|
-
export { PluginQuarantineEngine } from '@pellux/goodvibes-sdk/platform/runtime/plugins/quarantine';
|
|
64
|
-
|
|
65
|
-
export { isHighRiskCapability } from '@pellux/goodvibes-sdk/platform/runtime/plugins/manifest';
|
|
66
|
-
|
|
67
|
-
export type { HotReloadOptions, HotReloadResult } from '@pellux/goodvibes-sdk/platform/runtime/plugins/hot-reload';
|
|
68
|
-
export { runHotReload } from '@pellux/goodvibes-sdk/platform/runtime/plugins/hot-reload';
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* createPluginLifecycleManager — Factory function for the PluginLifecycleManager.
|
|
72
|
-
*
|
|
73
|
-
* Intended as the primary entry point for consumers. Respects the
|
|
74
|
-
* `plugin-lifecycle` feature flag — callers should check the flag before
|
|
75
|
-
* invoking if they want to gate the entire system.
|
|
76
|
-
*
|
|
77
|
-
* @param options - Optional manager configuration.
|
|
78
|
-
* @returns A new PluginLifecycleManager instance.
|
|
79
|
-
*/
|
|
80
|
-
export function createPluginLifecycleManager(
|
|
81
|
-
options: import('./types.ts').PluginLifecycleManagerOptions = {},
|
|
82
|
-
): PluginLifecycleManager {
|
|
83
|
-
return new PluginLifecycleManager(options);
|
|
84
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin lifecycle state machine.
|
|
3
|
-
*
|
|
4
|
-
* Defines the valid state transitions for the 8-state plugin lifecycle
|
|
5
|
-
* and provides pure guard/transition functions with no side effects.
|
|
6
|
-
*
|
|
7
|
-
* States:
|
|
8
|
-
* discovered → loading → loaded → active ↔ degraded
|
|
9
|
-
* ↓
|
|
10
|
-
* error → (unloading | disabled)
|
|
11
|
-
* active/loaded/degraded/error → unloading → disabled
|
|
12
|
-
* any → error (non-fatal)
|
|
13
|
-
* disabled → loading (re-enable)
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import type { PluginLifecycleState } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/plugins';
|
|
17
|
-
import type { TransitionResult } from '@pellux/goodvibes-sdk/platform/runtime/plugins/types';
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Adjacency map: from state → set of valid target states.
|
|
21
|
-
*
|
|
22
|
-
* Encoded as a plain Record so it is safe to evaluate at module load time
|
|
23
|
-
* with no external dependencies.
|
|
24
|
-
*/
|
|
25
|
-
export const VALID_TRANSITIONS: Readonly<
|
|
26
|
-
Record<PluginLifecycleState, ReadonlyArray<PluginLifecycleState>>
|
|
27
|
-
> = {
|
|
28
|
-
discovered: ['loading'],
|
|
29
|
-
loading: ['loaded', 'error'],
|
|
30
|
-
loaded: ['active', 'error', 'unloading'],
|
|
31
|
-
active: ['degraded', 'error', 'unloading'],
|
|
32
|
-
degraded: ['active', 'error', 'unloading'],
|
|
33
|
-
error: ['unloading', 'disabled', 'loading'],
|
|
34
|
-
unloading: ['disabled'],
|
|
35
|
-
disabled: ['loading'],
|
|
36
|
-
} as const;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Returns whether a transition from `from` → `to` is permitted by the
|
|
40
|
-
* state machine.
|
|
41
|
-
*/
|
|
42
|
-
export function canTransition(
|
|
43
|
-
from: PluginLifecycleState,
|
|
44
|
-
to: PluginLifecycleState,
|
|
45
|
-
): boolean {
|
|
46
|
-
return (VALID_TRANSITIONS[from] as ReadonlyArray<PluginLifecycleState>).includes(to);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Attempts a state transition and returns a typed result.
|
|
51
|
-
*
|
|
52
|
-
* This is a pure function — it has no side effects. The caller is responsible
|
|
53
|
-
* for updating the plugin record and emitting events.
|
|
54
|
-
*
|
|
55
|
-
* @param from - Current state.
|
|
56
|
-
* @param to - Desired target state.
|
|
57
|
-
* @returns `{ ok: true, from, to }` on success or `{ ok: false, reason }` on
|
|
58
|
-
* invalid transition.
|
|
59
|
-
*/
|
|
60
|
-
export function applyTransition(
|
|
61
|
-
from: PluginLifecycleState,
|
|
62
|
-
to: PluginLifecycleState,
|
|
63
|
-
): TransitionResult {
|
|
64
|
-
if (canTransition(from, to)) {
|
|
65
|
-
return { ok: true, from, to };
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
ok: false,
|
|
69
|
-
reason: `Invalid transition: ${from} → ${to} (allowed from ${from}: [${VALID_TRANSITIONS[from].join(', ')}])`,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Returns whether a plugin in the given state is considered "operational"
|
|
75
|
-
* (i.e. actively servicing requests, possibly in a degraded capacity).
|
|
76
|
-
*/
|
|
77
|
-
export function isOperational(state: PluginLifecycleState): boolean {
|
|
78
|
-
return state === 'active' || state === 'degraded';
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Returns whether a plugin in the given state can be safely hot-reloaded.
|
|
83
|
-
* A hot reload requires the plugin to be quiesceable.
|
|
84
|
-
*/
|
|
85
|
-
export function isReloadable(state: PluginLifecycleState): boolean {
|
|
86
|
-
return state === 'active' || state === 'loaded' || state === 'degraded' || state === 'error';
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Returns whether the plugin's current state represents a terminal failure
|
|
91
|
-
* that requires operator intervention (disabled or persistent error).
|
|
92
|
-
*/
|
|
93
|
-
export function isTerminal(state: PluginLifecycleState): boolean {
|
|
94
|
-
return state === 'disabled';
|
|
95
|
-
}
|