@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,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turn emitters — typed emission wrappers for TurnEvent domain.
|
|
3
|
-
*
|
|
4
|
-
* Import and call these instead of emitting raw strings.
|
|
5
|
-
*/
|
|
6
|
-
import { createEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
7
|
-
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import type { EmitterContext } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
9
|
-
import type { PartialToolCall } from '@pellux/goodvibes-sdk/platform/providers/interface';
|
|
10
|
-
|
|
11
|
-
/** Emit TURN_SUBMITTED when a user prompt is submitted. */
|
|
12
|
-
export function emitTurnSubmitted(
|
|
13
|
-
bus: RuntimeEventBus,
|
|
14
|
-
ctx: EmitterContext,
|
|
15
|
-
data: { turnId: string; prompt: string }
|
|
16
|
-
): void {
|
|
17
|
-
bus.emit('turn', createEventEnvelope('TURN_SUBMITTED', { type: 'TURN_SUBMITTED', ...data }, ctx));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** Emit PREFLIGHT_OK when preflight checks pass. */
|
|
21
|
-
export function emitPreflightOk(
|
|
22
|
-
bus: RuntimeEventBus,
|
|
23
|
-
ctx: EmitterContext,
|
|
24
|
-
data: { turnId: string }
|
|
25
|
-
): void {
|
|
26
|
-
bus.emit('turn', createEventEnvelope('PREFLIGHT_OK', { type: 'PREFLIGHT_OK', ...data }, ctx));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** Emit PREFLIGHT_FAIL when preflight checks fail. */
|
|
30
|
-
export function emitPreflightFail(
|
|
31
|
-
bus: RuntimeEventBus,
|
|
32
|
-
ctx: EmitterContext,
|
|
33
|
-
data: {
|
|
34
|
-
turnId: string;
|
|
35
|
-
reason: string;
|
|
36
|
-
stopReason: 'preflight_failed' | 'context_overflow';
|
|
37
|
-
}
|
|
38
|
-
): void {
|
|
39
|
-
bus.emit('turn', createEventEnvelope('PREFLIGHT_FAIL', { type: 'PREFLIGHT_FAIL', ...data }, ctx));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** Emit STREAM_START when provider streaming begins. */
|
|
43
|
-
export function emitStreamStart(
|
|
44
|
-
bus: RuntimeEventBus,
|
|
45
|
-
ctx: EmitterContext,
|
|
46
|
-
data: { turnId: string }
|
|
47
|
-
): void {
|
|
48
|
-
bus.emit('turn', createEventEnvelope('STREAM_START', { type: 'STREAM_START', ...data }, ctx));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** Emit STREAM_DELTA for each incremental content chunk. */
|
|
52
|
-
export function emitStreamDelta(
|
|
53
|
-
bus: RuntimeEventBus,
|
|
54
|
-
ctx: EmitterContext,
|
|
55
|
-
data: { turnId: string; content: string; accumulated: string; reasoning?: string; toolCalls?: PartialToolCall[] }
|
|
56
|
-
): void {
|
|
57
|
-
bus.emit('turn', createEventEnvelope('STREAM_DELTA', { type: 'STREAM_DELTA', ...data }, ctx));
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** Emit STREAM_END when provider streaming ends. */
|
|
61
|
-
export function emitStreamEnd(
|
|
62
|
-
bus: RuntimeEventBus,
|
|
63
|
-
ctx: EmitterContext,
|
|
64
|
-
data: { turnId: string }
|
|
65
|
-
): void {
|
|
66
|
-
bus.emit('turn', createEventEnvelope('STREAM_END', { type: 'STREAM_END', ...data }, ctx));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** Emit LLM_RESPONSE_RECEIVED when a provider chat call completes within a turn iteration. */
|
|
70
|
-
export function emitLlmResponseReceived(
|
|
71
|
-
bus: RuntimeEventBus,
|
|
72
|
-
ctx: EmitterContext,
|
|
73
|
-
data: {
|
|
74
|
-
turnId: string;
|
|
75
|
-
provider: string;
|
|
76
|
-
model: string;
|
|
77
|
-
content: string;
|
|
78
|
-
toolCallCount: number;
|
|
79
|
-
inputTokens: number;
|
|
80
|
-
outputTokens: number;
|
|
81
|
-
cacheReadTokens?: number;
|
|
82
|
-
cacheWriteTokens?: number;
|
|
83
|
-
}
|
|
84
|
-
): void {
|
|
85
|
-
bus.emit('turn', createEventEnvelope('LLM_RESPONSE_RECEIVED', { type: 'LLM_RESPONSE_RECEIVED', ...data }, ctx));
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/** Emit TOOL_BATCH_READY when a set of tool calls is ready for execution. */
|
|
89
|
-
export function emitToolBatchReady(
|
|
90
|
-
bus: RuntimeEventBus,
|
|
91
|
-
ctx: EmitterContext,
|
|
92
|
-
data: { turnId: string; toolCalls: string[] }
|
|
93
|
-
): void {
|
|
94
|
-
bus.emit('turn', createEventEnvelope('TOOL_BATCH_READY', { type: 'TOOL_BATCH_READY', ...data }, ctx));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** Emit TOOLS_DONE when all tool calls in the current batch have completed. */
|
|
98
|
-
export function emitToolsDone(
|
|
99
|
-
bus: RuntimeEventBus,
|
|
100
|
-
ctx: EmitterContext,
|
|
101
|
-
data: { turnId: string }
|
|
102
|
-
): void {
|
|
103
|
-
bus.emit('turn', createEventEnvelope('TOOLS_DONE', { type: 'TOOLS_DONE', ...data }, ctx));
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** Emit POST_HOOKS_DONE when post-processing hooks have completed. */
|
|
107
|
-
export function emitPostHooksDone(
|
|
108
|
-
bus: RuntimeEventBus,
|
|
109
|
-
ctx: EmitterContext,
|
|
110
|
-
data: { turnId: string }
|
|
111
|
-
): void {
|
|
112
|
-
bus.emit('turn', createEventEnvelope('POST_HOOKS_DONE', { type: 'POST_HOOKS_DONE', ...data }, ctx));
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** Emit TURN_COMPLETED when the turn finishes successfully. */
|
|
116
|
-
export function emitTurnCompleted(
|
|
117
|
-
bus: RuntimeEventBus,
|
|
118
|
-
ctx: EmitterContext,
|
|
119
|
-
data: {
|
|
120
|
-
turnId: string;
|
|
121
|
-
response: string;
|
|
122
|
-
stopReason: 'completed' | 'empty_response';
|
|
123
|
-
}
|
|
124
|
-
): void {
|
|
125
|
-
bus.emit('turn', createEventEnvelope('TURN_COMPLETED', { type: 'TURN_COMPLETED', ...data }, ctx));
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/** Emit TURN_ERROR when the turn fails. */
|
|
129
|
-
export function emitTurnError(
|
|
130
|
-
bus: RuntimeEventBus,
|
|
131
|
-
ctx: EmitterContext,
|
|
132
|
-
data: {
|
|
133
|
-
turnId: string;
|
|
134
|
-
error: string;
|
|
135
|
-
stopReason:
|
|
136
|
-
| 'preflight_failed'
|
|
137
|
-
| 'context_overflow'
|
|
138
|
-
| 'provider_exhausted'
|
|
139
|
-
| 'provider_error'
|
|
140
|
-
| 'hook_denied'
|
|
141
|
-
| 'tool_loop_circuit_breaker'
|
|
142
|
-
| 'unexpected_error';
|
|
143
|
-
}
|
|
144
|
-
): void {
|
|
145
|
-
bus.emit('turn', createEventEnvelope('TURN_ERROR', { type: 'TURN_ERROR', ...data }, ctx));
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/** Emit TURN_CANCEL when the turn is cancelled. */
|
|
149
|
-
export function emitTurnCancel(
|
|
150
|
-
bus: RuntimeEventBus,
|
|
151
|
-
ctx: EmitterContext,
|
|
152
|
-
data: { turnId: string; reason?: string; stopReason: 'cancelled' }
|
|
153
|
-
): void {
|
|
154
|
-
bus.emit('turn', createEventEnvelope('TURN_CANCEL', { type: 'TURN_CANCEL', ...data }, ctx));
|
|
155
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UI emitters — typed wrappers for UIEvent domain.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { createEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
6
|
-
import type { RuntimeEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
7
|
-
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import type { UIEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/ui';
|
|
9
|
-
import type { EmitterContext } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
10
|
-
|
|
11
|
-
function uiEvent<T extends UIEvent['type']>(
|
|
12
|
-
type: T,
|
|
13
|
-
data: Omit<Extract<UIEvent, { type: T }>, 'type'>,
|
|
14
|
-
ctx: EmitterContext,
|
|
15
|
-
): RuntimeEventEnvelope<T, Extract<UIEvent, { type: T }>> {
|
|
16
|
-
return createEventEnvelope(type, { type, ...data } as Extract<UIEvent, { type: T }>, ctx);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function emitUiRenderRequest(bus: RuntimeEventBus, ctx: EmitterContext): void {
|
|
20
|
-
bus.emit('ui', uiEvent('UI_RENDER_REQUEST', {}, ctx));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function emitUiScrollDelta(bus: RuntimeEventBus, ctx: EmitterContext, data: { delta: number }): void {
|
|
24
|
-
bus.emit('ui', uiEvent('UI_SCROLL_DELTA', data, ctx));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function emitUiScrollTo(bus: RuntimeEventBus, ctx: EmitterContext, data: { line: number }): void {
|
|
28
|
-
bus.emit('ui', uiEvent('UI_SCROLL_TO', data, ctx));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function emitUiBlockToggleCollapse(bus: RuntimeEventBus, ctx: EmitterContext, data: { blockIndex: number }): void {
|
|
32
|
-
bus.emit('ui', uiEvent('UI_BLOCK_TOGGLE_COLLAPSE', data, ctx));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function emitUiBlockRerun(bus: RuntimeEventBus, ctx: EmitterContext, data: { blockIndex: number; content: string }): void {
|
|
36
|
-
bus.emit('ui', uiEvent('UI_BLOCK_RERUN', data, ctx));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function emitUiClearScreen(bus: RuntimeEventBus, ctx: EmitterContext): void {
|
|
40
|
-
bus.emit('ui', uiEvent('UI_CLEAR_SCREEN', {}, ctx));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function emitUiPanelOpen(bus: RuntimeEventBus, ctx: EmitterContext, data: { panelId: string }): void {
|
|
44
|
-
bus.emit('ui', uiEvent('UI_PANEL_OPEN', data, ctx));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function emitUiPanelClose(bus: RuntimeEventBus, ctx: EmitterContext, data: { panelId: string }): void {
|
|
48
|
-
bus.emit('ui', uiEvent('UI_PANEL_CLOSE', data, ctx));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function emitUiPanelFocus(bus: RuntimeEventBus, ctx: EmitterContext, data: { panelId: string }): void {
|
|
52
|
-
bus.emit('ui', uiEvent('UI_PANEL_FOCUS', data, ctx));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function emitUiViewChanged(bus: RuntimeEventBus, ctx: EmitterContext, data: { from: string; to: string }): void {
|
|
56
|
-
bus.emit('ui', uiEvent('UI_VIEW_CHANGED', data, ctx));
|
|
57
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Watcher emitters — typed wrappers for WatcherEvent domain.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { createEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
6
|
-
import type { RuntimeEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
7
|
-
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import type { WatcherEvent, WatcherSourceKind } from '@pellux/goodvibes-sdk/platform/runtime/events/watchers';
|
|
9
|
-
import type { EmitterContext } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
10
|
-
|
|
11
|
-
function watcherEvent<T extends WatcherEvent['type']>(
|
|
12
|
-
type: T,
|
|
13
|
-
data: Omit<Extract<WatcherEvent, { type: T }>, 'type'>,
|
|
14
|
-
ctx: EmitterContext,
|
|
15
|
-
): RuntimeEventEnvelope<T, Extract<WatcherEvent, { type: T }>> {
|
|
16
|
-
return createEventEnvelope(type, { type, ...data } as Extract<WatcherEvent, { type: T }>, ctx);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function emitWatcherStarted(
|
|
20
|
-
bus: RuntimeEventBus,
|
|
21
|
-
ctx: EmitterContext,
|
|
22
|
-
data: { watcherId: string; sourceKind: WatcherSourceKind; name: string },
|
|
23
|
-
): void {
|
|
24
|
-
bus.emit('watchers', watcherEvent('WATCHER_STARTED', data, ctx));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function emitWatcherHeartbeat(
|
|
28
|
-
bus: RuntimeEventBus,
|
|
29
|
-
ctx: EmitterContext,
|
|
30
|
-
data: { watcherId: string; sourceKind: WatcherSourceKind; seenAt: number; checkpoint: string },
|
|
31
|
-
): void {
|
|
32
|
-
bus.emit('watchers', watcherEvent('WATCHER_HEARTBEAT', data, ctx));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function emitWatcherCheckpointAdvanced(
|
|
36
|
-
bus: RuntimeEventBus,
|
|
37
|
-
ctx: EmitterContext,
|
|
38
|
-
data: { watcherId: string; sourceKind: WatcherSourceKind; checkpoint: string },
|
|
39
|
-
): void {
|
|
40
|
-
bus.emit('watchers', watcherEvent('WATCHER_CHECKPOINT_ADVANCED', data, ctx));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function emitWatcherFailed(
|
|
44
|
-
bus: RuntimeEventBus,
|
|
45
|
-
ctx: EmitterContext,
|
|
46
|
-
data: { watcherId: string; sourceKind: WatcherSourceKind; error: string; retryable: boolean },
|
|
47
|
-
): void {
|
|
48
|
-
bus.emit('watchers', watcherEvent('WATCHER_FAILED', data, ctx));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function emitWatcherStopped(
|
|
52
|
-
bus: RuntimeEventBus,
|
|
53
|
-
ctx: EmitterContext,
|
|
54
|
-
data: { watcherId: string; sourceKind: WatcherSourceKind; reason: string },
|
|
55
|
-
): void {
|
|
56
|
-
bus.emit('watchers', watcherEvent('WATCHER_STOPPED', data, ctx));
|
|
57
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow emitters — typed emission wrappers for WRFC workflow events.
|
|
3
|
-
*/
|
|
4
|
-
import { createEventEnvelope } from '@pellux/goodvibes-sdk/platform/runtime/events/envelope';
|
|
5
|
-
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
6
|
-
import type { WrfcState } from '@pellux/goodvibes-sdk/platform/agents/wrfc-types';
|
|
7
|
-
import type { EmitterContext } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
8
|
-
|
|
9
|
-
export function emitWorkflowChainCreated(
|
|
10
|
-
bus: RuntimeEventBus,
|
|
11
|
-
ctx: EmitterContext,
|
|
12
|
-
data: { chainId: string; task: string }
|
|
13
|
-
): void {
|
|
14
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_CHAIN_CREATED', { type: 'WORKFLOW_CHAIN_CREATED', ...data }, ctx));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function emitWorkflowStateChanged(
|
|
18
|
-
bus: RuntimeEventBus,
|
|
19
|
-
ctx: EmitterContext,
|
|
20
|
-
data: { chainId: string; from: WrfcState; to: WrfcState }
|
|
21
|
-
): void {
|
|
22
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_STATE_CHANGED', { type: 'WORKFLOW_STATE_CHANGED', ...data }, ctx));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function emitWorkflowReviewCompleted(
|
|
26
|
-
bus: RuntimeEventBus,
|
|
27
|
-
ctx: EmitterContext,
|
|
28
|
-
data: { chainId: string; score: number; passed: boolean }
|
|
29
|
-
): void {
|
|
30
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_REVIEW_COMPLETED', { type: 'WORKFLOW_REVIEW_COMPLETED', ...data }, ctx));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function emitWorkflowFixAttempted(
|
|
34
|
-
bus: RuntimeEventBus,
|
|
35
|
-
ctx: EmitterContext,
|
|
36
|
-
data: { chainId: string; attempt: number; maxAttempts: number }
|
|
37
|
-
): void {
|
|
38
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_FIX_ATTEMPTED', { type: 'WORKFLOW_FIX_ATTEMPTED', ...data }, ctx));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function emitWorkflowGateResult(
|
|
42
|
-
bus: RuntimeEventBus,
|
|
43
|
-
ctx: EmitterContext,
|
|
44
|
-
data: { chainId: string; gate: string; passed: boolean }
|
|
45
|
-
): void {
|
|
46
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_GATE_RESULT', { type: 'WORKFLOW_GATE_RESULT', ...data }, ctx));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function emitWorkflowChainPassed(
|
|
50
|
-
bus: RuntimeEventBus,
|
|
51
|
-
ctx: EmitterContext,
|
|
52
|
-
data: { chainId: string }
|
|
53
|
-
): void {
|
|
54
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_CHAIN_PASSED', { type: 'WORKFLOW_CHAIN_PASSED', ...data }, ctx));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function emitWorkflowChainFailed(
|
|
58
|
-
bus: RuntimeEventBus,
|
|
59
|
-
ctx: EmitterContext,
|
|
60
|
-
data: { chainId: string; reason: string }
|
|
61
|
-
): void {
|
|
62
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_CHAIN_FAILED', { type: 'WORKFLOW_CHAIN_FAILED', ...data }, ctx));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function emitWorkflowAutoCommitted(
|
|
66
|
-
bus: RuntimeEventBus,
|
|
67
|
-
ctx: EmitterContext,
|
|
68
|
-
data: { chainId: string; commitHash?: string }
|
|
69
|
-
): void {
|
|
70
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_AUTO_COMMITTED', { type: 'WORKFLOW_AUTO_COMMITTED', ...data }, ctx));
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function emitWorkflowCascadeAborted(
|
|
74
|
-
bus: RuntimeEventBus,
|
|
75
|
-
ctx: EmitterContext,
|
|
76
|
-
data: { chainId: string; reason: string }
|
|
77
|
-
): void {
|
|
78
|
-
bus.emit('workflows', createEventEnvelope('WORKFLOW_CASCADE_ABORTED', { type: 'WORKFLOW_CASCADE_ABORTED', ...data }, ctx));
|
|
79
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Evaluation Harness — barrel export.
|
|
3
|
-
*
|
|
4
|
-
* Provides the eval runner, scorecard scorer, built-in suites,
|
|
5
|
-
* and baseline persistence utilities.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* import { EvalRunner, BUILTIN_SUITES, captureBaseline, loadBaseline } from './eval/index.ts';
|
|
10
|
-
*
|
|
11
|
-
* const runner = new EvalRunner();
|
|
12
|
-
* const result = await runner.runSuite('core-performance', BUILTIN_SUITES['core-performance']);
|
|
13
|
-
* const gate = runner.evaluateGate(result, await loadBaseline('.goodvibes/eval/baseline.json'));
|
|
14
|
-
* if (!gate.passed) process.exit(1);
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
export type {
|
|
19
|
-
EvalScenario,
|
|
20
|
-
EvalRawResult,
|
|
21
|
-
EvalResult,
|
|
22
|
-
EvalSuiteResult,
|
|
23
|
-
EvalScorecard,
|
|
24
|
-
EvalBaseline,
|
|
25
|
-
EvalGateResult,
|
|
26
|
-
EvalDimension,
|
|
27
|
-
DimensionScore,
|
|
28
|
-
RegressionEntry,
|
|
29
|
-
BaselineSuiteSummary,
|
|
30
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/eval/types';
|
|
31
|
-
|
|
32
|
-
export { EvalRunner } from '@pellux/goodvibes-sdk/platform/runtime/eval/runner';
|
|
33
|
-
export type { EvalRunnerOptions } from '@pellux/goodvibes-sdk/platform/runtime/eval/runner';
|
|
34
|
-
|
|
35
|
-
export { scoreScenario, formatScorecard, DIMENSION_FLOOR } from '@pellux/goodvibes-sdk/platform/runtime/eval/scorecard';
|
|
36
|
-
|
|
37
|
-
export { BUILTIN_SUITES, ALL_SCENARIOS } from '@pellux/goodvibes-sdk/platform/runtime/eval/suites';
|
|
38
|
-
|
|
39
|
-
export {
|
|
40
|
-
captureBaseline,
|
|
41
|
-
serialiseBaseline,
|
|
42
|
-
deserialiseBaseline,
|
|
43
|
-
writeBaseline,
|
|
44
|
-
loadBaseline,
|
|
45
|
-
formatBaselineComparison,
|
|
46
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/eval/baseline';
|
|
47
|
-
|
|
48
|
-
export { formatSuiteResult, formatGateResult } from '@pellux/goodvibes-sdk/platform/runtime/eval/format';
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Evaluation Harness — EvalRunner.
|
|
3
|
-
*
|
|
4
|
-
* Runs eval suites using production runtime paths:
|
|
5
|
-
* - PerfMonitor for budget evaluation
|
|
6
|
-
* - SloCollector for SLO p95 measurements
|
|
7
|
-
* - scoreScenario() for dimension scoring
|
|
8
|
-
*
|
|
9
|
-
* The runner does not mock any dependencies — it exercises the real
|
|
10
|
-
* production code paths that gate CI.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { EvalScenario, EvalRawResult, EvalResult, EvalSuiteResult, EvalGateResult, EvalBaseline, RegressionEntry } from '@pellux/goodvibes-sdk/platform/runtime/eval/types';
|
|
14
|
-
import { scoreScenario } from '@pellux/goodvibes-sdk/platform/runtime/eval/scorecard';
|
|
15
|
-
import { createPerfMonitor } from '@pellux/goodvibes-sdk/platform/runtime/perf/index';
|
|
16
|
-
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
17
|
-
|
|
18
|
-
// ── EvalRunner ────────────────────────────────────────────────────────────────
|
|
19
|
-
|
|
20
|
-
export interface EvalRunnerOptions {
|
|
21
|
-
/**
|
|
22
|
-
* Regression threshold for gate comparisons.
|
|
23
|
-
* A scenario regresses if its composite score drops by more than this amount.
|
|
24
|
-
* Default: 5 (5-point drop).
|
|
25
|
-
*/
|
|
26
|
-
regressionThreshold?: number;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Runs eval suites and produces structured results.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```ts
|
|
34
|
-
* const runner = new EvalRunner();
|
|
35
|
-
* const result = await runner.runSuite(mySuite);
|
|
36
|
-
* if (!result.passed) process.exit(1);
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export class EvalRunner {
|
|
40
|
-
private readonly regressionThreshold: number;
|
|
41
|
-
|
|
42
|
-
constructor(options: EvalRunnerOptions = {}) {
|
|
43
|
-
this.regressionThreshold = options.regressionThreshold ?? 5;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Run all scenarios in a suite sequentially.
|
|
48
|
-
*
|
|
49
|
-
* Each scenario:
|
|
50
|
-
* 1. Calls scenario.run() via the production code path
|
|
51
|
-
* 2. Evaluates the raw result through PerfMonitor (if perfReport is absent)
|
|
52
|
-
* 3. Scores the result via scoreScenario()
|
|
53
|
-
*
|
|
54
|
-
* @param suite - Suite name (used for logging and baseline matching).
|
|
55
|
-
* @param scenarios - Scenarios to run.
|
|
56
|
-
* @returns Aggregated EvalSuiteResult.
|
|
57
|
-
*/
|
|
58
|
-
async runSuite(suite: string, scenarios: EvalScenario[]): Promise<EvalSuiteResult> {
|
|
59
|
-
const startedAt = Date.now();
|
|
60
|
-
const results: EvalResult[] = [];
|
|
61
|
-
|
|
62
|
-
for (const scenario of scenarios) {
|
|
63
|
-
const result = await this._runScenario(scenario);
|
|
64
|
-
results.push(result);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const finishedAt = Date.now();
|
|
68
|
-
const meanScore =
|
|
69
|
-
results.length > 0
|
|
70
|
-
? results.reduce((acc, r) => acc + r.scorecard.compositeScore, 0) / results.length
|
|
71
|
-
: 0;
|
|
72
|
-
|
|
73
|
-
const passed = results.every((r) => r.scorecard.passed);
|
|
74
|
-
|
|
75
|
-
return { suite, startedAt, finishedAt, results, meanScore, passed };
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Compare a fresh suite result against a stored baseline.
|
|
80
|
-
* Produces an EvalGateResult indicating whether CI should pass.
|
|
81
|
-
*
|
|
82
|
-
* @param fresh - Result from a freshly-run suite.
|
|
83
|
-
* @param baseline - Previously stored baseline (may be undefined).
|
|
84
|
-
* @returns Gate result with per-scenario regression entries.
|
|
85
|
-
*/
|
|
86
|
-
evaluateGate(fresh: EvalSuiteResult, baseline: EvalBaseline | undefined): EvalGateResult {
|
|
87
|
-
const regressions: RegressionEntry[] = [];
|
|
88
|
-
|
|
89
|
-
if (baseline) {
|
|
90
|
-
const baselineSuite = baseline.suites[fresh.suite];
|
|
91
|
-
if (baselineSuite) {
|
|
92
|
-
for (const result of fresh.results) {
|
|
93
|
-
const baselineScore = baselineSuite.scenarioScores[result.scenario.id];
|
|
94
|
-
if (baselineScore === undefined) continue;
|
|
95
|
-
const freshScore = result.scorecard.compositeScore;
|
|
96
|
-
const delta = freshScore - baselineScore;
|
|
97
|
-
if (delta < -this.regressionThreshold) {
|
|
98
|
-
regressions.push({
|
|
99
|
-
scenarioId: result.scenario.id,
|
|
100
|
-
scenarioName: result.scenario.name,
|
|
101
|
-
baselineScore,
|
|
102
|
-
freshScore,
|
|
103
|
-
delta,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
suite: fresh.suite,
|
|
112
|
-
passed: regressions.length === 0,
|
|
113
|
-
regressionThreshold: this.regressionThreshold,
|
|
114
|
-
fresh,
|
|
115
|
-
baseline,
|
|
116
|
-
regressions,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// ── Internal ────────────────────────────────────────────────────────────────
|
|
121
|
-
|
|
122
|
-
private async _runScenario(scenario: EvalScenario): Promise<EvalResult> {
|
|
123
|
-
const startedAt = Date.now();
|
|
124
|
-
let raw = await this._executeScenario(scenario);
|
|
125
|
-
|
|
126
|
-
// If the scenario did not include a perfReport, run a minimal PerfMonitor
|
|
127
|
-
// evaluation against an empty snapshot to at least populate the field.
|
|
128
|
-
if (!raw.perfReport) {
|
|
129
|
-
const monitor = createPerfMonitor();
|
|
130
|
-
const { createInitialSurfacePerfState } = await import('@pellux/goodvibes-sdk/platform/runtime/store/domains/surface-perf');
|
|
131
|
-
raw = {
|
|
132
|
-
...raw,
|
|
133
|
-
perfReport: monitor.evaluate({
|
|
134
|
-
surfacePerf: createInitialSurfacePerfState(),
|
|
135
|
-
extraMetrics: {},
|
|
136
|
-
}),
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const scorecard = scoreScenario(scenario.id, scenario.name, raw);
|
|
141
|
-
const finishedAt = Date.now();
|
|
142
|
-
|
|
143
|
-
return { scenario, raw, scorecard, startedAt, finishedAt };
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/** Execute a scenario's run() function, catching and normalising errors. */
|
|
147
|
-
private async _executeScenario(scenario: EvalScenario): Promise<EvalRawResult> {
|
|
148
|
-
const t0 = Date.now();
|
|
149
|
-
try {
|
|
150
|
-
const raw = await scenario.run();
|
|
151
|
-
return raw;
|
|
152
|
-
} catch (err) {
|
|
153
|
-
const durationMs = Date.now() - t0;
|
|
154
|
-
const errorMessage = summarizeError(err);
|
|
155
|
-
return {
|
|
156
|
-
completed: false,
|
|
157
|
-
durationMs,
|
|
158
|
-
errorMessage,
|
|
159
|
-
safetyViolations: 0,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|