@provos/ironcurtain 0.10.0 → 0.12.0
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/README.md +68 -14
- package/dist/auth/oauth-provider.js +1 -4
- package/dist/auth/oauth-provider.js.map +1 -1
- package/dist/cli-help.d.ts +12 -0
- package/dist/cli-help.js +21 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +46 -6
- package/dist/cli.js.map +1 -1
- package/dist/config/agent-model-guard.d.ts +14 -0
- package/dist/config/agent-model-guard.js +24 -0
- package/dist/config/agent-model-guard.js.map +1 -0
- package/dist/config/config-command.js +277 -7
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/first-start.js +62 -7
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/generated/compiled-policy.json +528 -161
- package/dist/config/generated/test-scenarios.json +4810 -170
- package/dist/config/generated/tool-annotations.json +34 -47
- package/dist/config/index.d.ts +58 -0
- package/dist/config/index.js +97 -15
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +2 -2
- package/dist/config/model-provider.d.ts +9 -0
- package/dist/config/model-provider.js +13 -0
- package/dist/config/model-provider.js.map +1 -1
- package/dist/config/paths.d.ts +217 -0
- package/dist/config/paths.js +363 -14
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +7 -1
- package/dist/config/user-config.d.ts +101 -6
- package/dist/config/user-config.js +145 -31
- package/dist/config/user-config.js.map +1 -1
- package/dist/config/validate-policy-dir.d.ts +10 -0
- package/dist/config/validate-policy-dir.js +59 -0
- package/dist/config/validate-policy-dir.js.map +1 -0
- package/dist/cron/job-commands.js +22 -2
- package/dist/cron/job-commands.js.map +1 -1
- package/dist/cron/types.d.ts +16 -2
- package/dist/cron/types.js +1 -3
- package/dist/cron/types.js.map +1 -1
- package/dist/daemon/daemon-command.js +30 -7
- package/dist/daemon/daemon-command.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.d.ts +62 -1
- package/dist/daemon/ironcurtain-daemon.js +231 -8
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/daemon-client/daemon-client.d.ts +123 -0
- package/dist/daemon-client/daemon-client.js +324 -0
- package/dist/daemon-client/daemon-client.js.map +1 -0
- package/dist/docker/adapters/claude-code.js +194 -20
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/adapters/codex.d.ts +9 -0
- package/dist/docker/adapters/codex.js +297 -0
- package/dist/docker/adapters/codex.js.map +1 -0
- package/dist/docker/adapters/goose.d.ts +12 -11
- package/dist/docker/adapters/goose.js +80 -27
- package/dist/docker/adapters/goose.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +183 -5
- package/dist/docker/agent-adapter.js +16 -0
- package/dist/docker/agent-adapter.js.map +1 -1
- package/dist/docker/agent-registry.js +5 -0
- package/dist/docker/agent-registry.js.map +1 -1
- package/dist/docker/apple-container-manager.d.ts +49 -0
- package/dist/docker/apple-container-manager.js +464 -0
- package/dist/docker/apple-container-manager.js.map +1 -0
- package/dist/docker/code-mode-proxy.d.ts +38 -0
- package/dist/docker/code-mode-proxy.js +6 -1
- package/dist/docker/code-mode-proxy.js.map +1 -1
- package/dist/docker/container-lifecycle.d.ts +2 -2
- package/dist/docker/container-lifecycle.js.map +1 -1
- package/dist/docker/container-runtime.d.ts +29 -0
- package/dist/docker/container-runtime.js +76 -0
- package/dist/docker/container-runtime.js.map +1 -0
- package/dist/docker/docker-agent-session.d.ts +113 -62
- package/dist/docker/docker-agent-session.js +271 -294
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +428 -26
- package/dist/docker/docker-infrastructure.js +1005 -70
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +58 -3
- package/dist/docker/docker-manager.js +378 -33
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/docker-probe.d.ts +45 -0
- package/dist/docker/docker-probe.js +86 -0
- package/dist/docker/docker-probe.js.map +1 -0
- package/dist/docker/docker-progress-sink.d.ts +43 -0
- package/dist/docker/docker-progress-sink.js +299 -0
- package/dist/docker/docker-progress-sink.js.map +1 -0
- package/dist/docker/mitm-proxy.d.ts +135 -1
- package/dist/docker/mitm-proxy.js +611 -25
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/network-topology.d.ts +81 -0
- package/dist/docker/network-topology.js +160 -0
- package/dist/docker/network-topology.js.map +1 -0
- package/dist/docker/oauth-credentials.d.ts +59 -3
- package/dist/docker/oauth-credentials.js +181 -14
- package/dist/docker/oauth-credentials.js.map +1 -1
- package/dist/docker/oauth-token-manager.js +2 -2
- package/dist/docker/oauth-token-manager.js.map +1 -1
- package/dist/docker/orientation.d.ts +1 -1
- package/dist/docker/package-types.d.ts +1 -1
- package/dist/docker/provider-config.d.ts +78 -3
- package/dist/docker/provider-config.js +295 -31
- package/dist/docker/provider-config.js.map +1 -1
- package/dist/docker/provision-lock.d.ts +46 -0
- package/dist/docker/provision-lock.js +152 -0
- package/dist/docker/provision-lock.js.map +1 -0
- package/dist/docker/proxy-tools.d.ts +0 -2
- package/dist/docker/proxy-tools.js +2 -7
- package/dist/docker/proxy-tools.js.map +1 -1
- package/dist/docker/pty-session.d.ts +64 -1
- package/dist/docker/pty-session.js +306 -104
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +0 -2
- package/dist/docker/pty-types.js +0 -2
- package/dist/docker/pty-types.js.map +1 -1
- package/dist/docker/registry-proxy.d.ts +46 -0
- package/dist/docker/registry-proxy.js +255 -1
- package/dist/docker/registry-proxy.js.map +1 -1
- package/dist/docker/resource-limits.d.ts +134 -0
- package/dist/docker/resource-limits.js +203 -0
- package/dist/docker/resource-limits.js.map +1 -0
- package/dist/docker/spawn-with-idle-timeout.d.ts +39 -0
- package/dist/docker/spawn-with-idle-timeout.js +152 -0
- package/dist/docker/spawn-with-idle-timeout.js.map +1 -0
- package/dist/docker/sse-extractor.d.ts +51 -0
- package/dist/docker/sse-extractor.js +303 -0
- package/dist/docker/sse-extractor.js.map +1 -0
- package/dist/docker/token-stream-bus.d.ts +83 -0
- package/dist/docker/token-stream-bus.js +98 -0
- package/dist/docker/token-stream-bus.js.map +1 -0
- package/dist/docker/token-stream-types.d.ts +71 -0
- package/dist/docker/token-stream-types.js +8 -0
- package/dist/docker/token-stream-types.js.map +1 -0
- package/dist/docker/trajectory-capture.d.ts +79 -0
- package/dist/docker/trajectory-capture.js +521 -0
- package/dist/docker/trajectory-capture.js.map +1 -0
- package/dist/docker/trajectory-reassembler.d.ts +286 -0
- package/dist/docker/trajectory-reassembler.js +990 -0
- package/dist/docker/trajectory-reassembler.js.map +1 -0
- package/dist/docker/trajectory-tap.d.ts +100 -0
- package/dist/docker/trajectory-tap.js +410 -0
- package/dist/docker/trajectory-tap.js.map +1 -0
- package/dist/docker/trajectory-types.d.ts +187 -0
- package/dist/docker/trajectory-types.js +43 -0
- package/dist/docker/trajectory-types.js.map +1 -0
- package/dist/docker/types.d.ts +105 -12
- package/dist/doctor/checks.d.ts +171 -0
- package/dist/doctor/checks.js +598 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/doctor-command.d.ts +29 -0
- package/dist/doctor/doctor-command.js +190 -0
- package/dist/doctor/doctor-command.js.map +1 -0
- package/dist/doctor/mcp-liveness.d.ts +28 -0
- package/dist/doctor/mcp-liveness.js +92 -0
- package/dist/doctor/mcp-liveness.js.map +1 -0
- package/dist/doctor/oauth-checks.d.ts +23 -0
- package/dist/doctor/oauth-checks.js +157 -0
- package/dist/doctor/oauth-checks.js.map +1 -0
- package/dist/doctor/output.d.ts +26 -0
- package/dist/doctor/output.js +82 -0
- package/dist/doctor/output.js.map +1 -0
- package/dist/escalation/listener-command.js +0 -3
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/event-bus/typed-event-bus.d.ts +26 -0
- package/dist/event-bus/typed-event-bus.js +35 -0
- package/dist/event-bus/typed-event-bus.js.map +1 -0
- package/dist/index.js +54 -21
- package/dist/index.js.map +1 -1
- package/dist/logger.js +31 -2
- package/dist/logger.js.map +1 -1
- package/dist/memory/auto-save.d.ts +18 -4
- package/dist/memory/auto-save.js +46 -6
- package/dist/memory/auto-save.js.map +1 -1
- package/dist/memory/memory-policy.d.ts +41 -0
- package/dist/memory/memory-policy.js +36 -0
- package/dist/memory/memory-policy.js.map +1 -0
- package/dist/mux/mux-app.d.ts +2 -0
- package/dist/mux/mux-app.js +1 -0
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +10 -1
- package/dist/mux/mux-command.js +74 -40
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-renderer.js +2 -12
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/pty-bridge.d.ts +2 -0
- package/dist/mux/pty-bridge.js +3 -0
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/session-scanner.js +1 -2
- package/dist/mux/session-scanner.js.map +1 -1
- package/dist/{pipeline → observability}/llm-logger.d.ts +8 -3
- package/dist/{pipeline → observability}/llm-logger.js +8 -3
- package/dist/observability/llm-logger.js.map +1 -0
- package/dist/observe/observe-command.d.ts +12 -0
- package/dist/observe/observe-command.js +285 -0
- package/dist/observe/observe-command.js.map +1 -0
- package/dist/observe/observe-renderer.d.ts +24 -0
- package/dist/observe/observe-renderer.js +87 -0
- package/dist/observe/observe-renderer.js.map +1 -0
- package/dist/observe/observe-tui-rain.d.ts +42 -0
- package/dist/observe/observe-tui-rain.js +531 -0
- package/dist/observe/observe-tui-rain.js.map +1 -0
- package/dist/observe/observe-tui-text-panel.d.ts +46 -0
- package/dist/observe/observe-tui-text-panel.js +525 -0
- package/dist/observe/observe-tui-text-panel.js.map +1 -0
- package/dist/observe/observe-tui-types.d.ts +270 -0
- package/dist/observe/observe-tui-types.js +200 -0
- package/dist/observe/observe-tui-types.js.map +1 -0
- package/dist/observe/observe-tui-word-scorer.d.ts +143 -0
- package/dist/observe/observe-tui-word-scorer.js +572 -0
- package/dist/observe/observe-tui-word-scorer.js.map +1 -0
- package/dist/observe/observe-tui.d.ts +59 -0
- package/dist/observe/observe-tui.js +592 -0
- package/dist/observe/observe-tui.js.map +1 -0
- package/dist/persona/broad-policy-validator.d.ts +95 -0
- package/dist/persona/broad-policy-validator.js +171 -0
- package/dist/persona/broad-policy-validator.js.map +1 -0
- package/dist/persona/compile-persona-policy.d.ts +54 -2
- package/dist/persona/compile-persona-policy.js +29 -4
- package/dist/persona/compile-persona-policy.js.map +1 -1
- package/dist/persona/event-bus-progress-reporter.d.ts +57 -0
- package/dist/persona/event-bus-progress-reporter.js +66 -0
- package/dist/persona/event-bus-progress-reporter.js.map +1 -0
- package/dist/persona/memory-gate.d.ts +19 -0
- package/dist/persona/memory-gate.js +33 -0
- package/dist/persona/memory-gate.js.map +1 -0
- package/dist/persona/persona-command.js +77 -72
- package/dist/persona/persona-command.js.map +1 -1
- package/dist/persona/persona-compile-orchestrator.d.ts +101 -0
- package/dist/persona/persona-compile-orchestrator.js +504 -0
- package/dist/persona/persona-compile-orchestrator.js.map +1 -0
- package/dist/persona/persona-service.d.ts +137 -0
- package/dist/persona/persona-service.js +263 -0
- package/dist/persona/persona-service.js.map +1 -0
- package/dist/persona/policy-mutation-audit.d.ts +109 -0
- package/dist/persona/policy-mutation-audit.js +179 -0
- package/dist/persona/policy-mutation-audit.js.map +1 -0
- package/dist/persona/resolve.d.ts +22 -0
- package/dist/persona/resolve.js +45 -2
- package/dist/persona/resolve.js.map +1 -1
- package/dist/persona/rule-delta.d.ts +30 -0
- package/dist/persona/rule-delta.js +82 -0
- package/dist/persona/rule-delta.js.map +1 -0
- package/dist/persona/types.d.ts +28 -0
- package/dist/pipeline/annotate.js +10 -2
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.js +14 -2
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +25 -14
- package/dist/pipeline/constitution-compiler.js +107 -38
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/dynamic-list-types.d.ts +3 -6
- package/dist/pipeline/dynamic-list-types.js +3 -16
- package/dist/pipeline/dynamic-list-types.js.map +1 -1
- package/dist/pipeline/pipeline-runner.d.ts +63 -4
- package/dist/pipeline/pipeline-runner.js +242 -94
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +33 -4
- package/dist/pipeline/pipeline-shared.js +79 -19
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/policy-verifier.js +16 -3
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/proxy-mcp-connections.js +17 -2
- package/dist/pipeline/proxy-mcp-connections.js.map +1 -1
- package/dist/pipeline/refresh-lists.js +3 -5
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.d.ts +4 -8
- package/dist/pipeline/scenario-generator.js +13 -46
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/sandbox/index.d.ts +29 -0
- package/dist/sandbox/index.js +351 -119
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/ironcurtain-protocol.d.ts +52 -0
- package/dist/sandbox/ironcurtain-protocol.js +185 -0
- package/dist/sandbox/ironcurtain-protocol.js.map +1 -0
- package/dist/session/agent-session.d.ts +6 -0
- package/dist/session/agent-session.js +16 -5
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/cli-transport.js +0 -6
- package/dist/session/cli-transport.js.map +1 -1
- package/dist/session/index.d.ts +35 -14
- package/dist/session/index.js +333 -130
- package/dist/session/index.js.map +1 -1
- package/dist/session/preflight.d.ts +21 -13
- package/dist/session/preflight.js +227 -88
- package/dist/session/preflight.js.map +1 -1
- package/dist/session/prompts.d.ts +2 -5
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +61 -6
- package/dist/session/session-manager.js +72 -10
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/session-metadata.d.ts +21 -5
- package/dist/session/session-metadata.js +34 -12
- package/dist/session/session-metadata.js.map +1 -1
- package/dist/session/types.d.ts +320 -5
- package/dist/session/types.js +57 -1
- package/dist/session/types.js.map +1 -1
- package/dist/signal/bot-command.js +6 -1
- package/dist/signal/bot-command.js.map +1 -1
- package/dist/signal/setup-signal.js +13 -21
- package/dist/signal/setup-signal.js.map +1 -1
- package/dist/signal/signal-bot-daemon.d.ts +16 -1
- package/dist/signal/signal-bot-daemon.js +39 -27
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-container.d.ts +3 -3
- package/dist/signal/signal-container.js +9 -3
- package/dist/signal/signal-container.js.map +1 -1
- package/dist/skills/discovery.d.ts +77 -0
- package/dist/skills/discovery.js +206 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.js +3 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/staging.d.ts +28 -0
- package/dist/skills/staging.js +68 -0
- package/dist/skills/staging.js.map +1 -0
- package/dist/skills/types.d.ts +46 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/trusted-process/approval-whitelist.d.ts +0 -2
- package/dist/trusted-process/approval-whitelist.js +17 -17
- package/dist/trusted-process/approval-whitelist.js.map +1 -1
- package/dist/trusted-process/async-mutex.d.ts +32 -0
- package/dist/trusted-process/async-mutex.js +50 -0
- package/dist/trusted-process/async-mutex.js.map +1 -0
- package/dist/trusted-process/audit-log.d.ts +38 -1
- package/dist/trusted-process/audit-log.js +82 -13
- package/dist/trusted-process/audit-log.js.map +1 -1
- package/dist/trusted-process/call-circuit-breaker.d.ts +6 -0
- package/dist/trusted-process/call-circuit-breaker.js +23 -3
- package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
- package/dist/trusted-process/container-command.d.ts +35 -0
- package/dist/trusted-process/container-command.js +49 -0
- package/dist/trusted-process/container-command.js.map +1 -0
- package/dist/trusted-process/control-server.d.ts +101 -0
- package/dist/trusted-process/control-server.js +282 -0
- package/dist/trusted-process/control-server.js.map +1 -0
- package/dist/trusted-process/domain-utils.d.ts +6 -6
- package/dist/trusted-process/domain-utils.js +7 -23
- package/dist/trusted-process/domain-utils.js.map +1 -1
- package/dist/trusted-process/error-prefixes.d.ts +16 -0
- package/dist/trusted-process/error-prefixes.js +17 -0
- package/dist/trusted-process/error-prefixes.js.map +1 -0
- package/dist/trusted-process/index.d.ts +40 -23
- package/dist/trusted-process/index.js +131 -225
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/list-matcher.d.ts +17 -0
- package/dist/trusted-process/list-matcher.js +31 -0
- package/dist/trusted-process/list-matcher.js.map +1 -0
- package/dist/trusted-process/mcp-client-manager.d.ts +35 -6
- package/dist/trusted-process/mcp-client-manager.js +40 -45
- package/dist/trusted-process/mcp-client-manager.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +31 -120
- package/dist/trusted-process/mcp-proxy-server.js +201 -660
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +16 -4
- package/dist/trusted-process/policy-engine.js +103 -47
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/policy-roots.d.ts +6 -0
- package/dist/trusted-process/policy-roots.js +20 -0
- package/dist/trusted-process/policy-roots.js.map +1 -1
- package/dist/trusted-process/sandbox-integration.d.ts +12 -0
- package/dist/trusted-process/sandbox-integration.js +18 -0
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/tcp-server-transport.d.ts +12 -1
- package/dist/trusted-process/tcp-server-transport.js +9 -1
- package/dist/trusted-process/tcp-server-transport.js.map +1 -1
- package/dist/trusted-process/tool-call-coordinator.d.ts +283 -0
- package/dist/trusted-process/tool-call-coordinator.js +592 -0
- package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
- package/dist/trusted-process/tool-call-pipeline.d.ts +213 -0
- package/dist/trusted-process/tool-call-pipeline.js +832 -0
- package/dist/trusted-process/tool-call-pipeline.js.map +1 -0
- package/dist/trusted-process/tool-description-hints.d.ts +1 -1
- package/dist/types/argument-roles.d.ts +1 -1
- package/dist/types/argument-roles.js +14 -1
- package/dist/types/argument-roles.js.map +1 -1
- package/dist/types/audit.d.ts +9 -0
- package/dist/{session → types}/errors.d.ts +8 -2
- package/dist/{session → types}/errors.js +8 -2
- package/dist/types/errors.js.map +1 -0
- package/dist/types/reserved-servers.d.ts +11 -0
- package/dist/types/reserved-servers.js +12 -0
- package/dist/types/reserved-servers.js.map +1 -0
- package/dist/types/server-listing.d.ts +14 -0
- package/dist/types/server-listing.js +2 -0
- package/dist/types/server-listing.js.map +1 -0
- package/dist/types/slug.d.ts +2 -0
- package/dist/types/slug.js +2 -0
- package/dist/types/slug.js.map +1 -1
- package/dist/types/url-normalize.d.ts +16 -0
- package/dist/types/url-normalize.js +33 -0
- package/dist/types/url-normalize.js.map +1 -0
- package/dist/util/atomic-write.d.ts +31 -0
- package/dist/util/atomic-write.js +43 -0
- package/dist/util/atomic-write.js.map +1 -0
- package/dist/utils/error-message.d.ts +8 -0
- package/dist/utils/error-message.js +11 -0
- package/dist/utils/error-message.js.map +1 -0
- package/dist/utils/exec-error.d.ts +19 -0
- package/dist/utils/exec-error.js +16 -0
- package/dist/utils/exec-error.js.map +1 -0
- package/dist/utils/is-plain-object.d.ts +7 -0
- package/dist/utils/is-plain-object.js +12 -0
- package/dist/utils/is-plain-object.js.map +1 -0
- package/dist/utils/preflight-checks.d.ts +16 -0
- package/dist/utils/preflight-checks.js +178 -0
- package/dist/utils/preflight-checks.js.map +1 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.d.ts +7 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +725 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -0
- package/dist/web-ui/conn-registry.d.ts +14 -0
- package/dist/web-ui/conn-registry.js +25 -0
- package/dist/web-ui/conn-registry.js.map +1 -0
- package/dist/web-ui/dispatch/escalation-dispatch.d.ts +7 -0
- package/dist/web-ui/dispatch/escalation-dispatch.js +52 -0
- package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/job-dispatch.d.ts +8 -0
- package/dist/web-ui/dispatch/job-dispatch.js +83 -0
- package/dist/web-ui/dispatch/job-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/persona-dispatch.d.ts +50 -0
- package/dist/web-ui/dispatch/persona-dispatch.js +269 -0
- package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/session-dispatch.d.ts +9 -0
- package/dist/web-ui/dispatch/session-dispatch.js +219 -0
- package/dist/web-ui/dispatch/session-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.d.ts +15 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.js +55 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/types.d.ts +54 -0
- package/dist/web-ui/dispatch/types.js +72 -0
- package/dist/web-ui/dispatch/types.js.map +1 -0
- package/dist/web-ui/dispatch/workflow-dispatch.d.ts +103 -0
- package/dist/web-ui/dispatch/workflow-dispatch.js +1036 -0
- package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -0
- package/dist/web-ui/json-rpc-dispatch.d.ts +12 -0
- package/dist/web-ui/json-rpc-dispatch.js +34 -0
- package/dist/web-ui/json-rpc-dispatch.js.map +1 -0
- package/dist/web-ui/state-graph.d.ts +13 -0
- package/dist/web-ui/state-graph.js +82 -0
- package/dist/web-ui/state-graph.js.map +1 -0
- package/dist/web-ui/token-stream-bridge.d.ts +76 -0
- package/dist/web-ui/token-stream-bridge.js +265 -0
- package/dist/web-ui/token-stream-bridge.js.map +1 -0
- package/dist/web-ui/web-event-bus.d.ts +176 -0
- package/dist/web-ui/web-event-bus.js +19 -0
- package/dist/web-ui/web-event-bus.js.map +1 -0
- package/dist/web-ui/web-session-transport.d.ts +31 -0
- package/dist/web-ui/web-session-transport.js +109 -0
- package/dist/web-ui/web-session-transport.js.map +1 -0
- package/dist/web-ui/web-ui-server.d.ts +90 -0
- package/dist/web-ui/web-ui-server.js +477 -0
- package/dist/web-ui/web-ui-server.js.map +1 -0
- package/dist/web-ui/web-ui-types.d.ts +418 -0
- package/dist/web-ui/web-ui-types.js +32 -0
- package/dist/web-ui/web-ui-types.js.map +1 -0
- package/dist/web-ui/ws-utils.d.ts +5 -0
- package/dist/web-ui/ws-utils.js +12 -0
- package/dist/web-ui/ws-utils.js.map +1 -0
- package/dist/web-ui-static/assets/index-BD5U6ILh.css +1 -0
- package/dist/web-ui-static/assets/index-FMsHWEfK.js +79 -0
- package/dist/web-ui-static/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
- package/dist/web-ui-static/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
- package/dist/web-ui-static/index.html +14 -0
- package/dist/workflow/artifacts.d.ts +59 -0
- package/dist/workflow/artifacts.js +188 -0
- package/dist/workflow/artifacts.js.map +1 -0
- package/dist/workflow/checkpoint-selection.d.ts +34 -0
- package/dist/workflow/checkpoint-selection.js +48 -0
- package/dist/workflow/checkpoint-selection.js.map +1 -0
- package/dist/workflow/checkpoint.d.ts +35 -0
- package/dist/workflow/checkpoint.js +84 -0
- package/dist/workflow/checkpoint.js.map +1 -0
- package/dist/workflow/cli-shared.d.ts +62 -0
- package/dist/workflow/cli-shared.js +117 -0
- package/dist/workflow/cli-shared.js.map +1 -0
- package/dist/workflow/cli-support.d.ts +92 -0
- package/dist/workflow/cli-support.js +421 -0
- package/dist/workflow/cli-support.js.map +1 -0
- package/dist/workflow/container-snapshots.d.ts +29 -0
- package/dist/workflow/container-snapshots.js +137 -0
- package/dist/workflow/container-snapshots.js.map +1 -0
- package/dist/workflow/daemon-gate-commands.d.ts +21 -0
- package/dist/workflow/daemon-gate-commands.js +599 -0
- package/dist/workflow/daemon-gate-commands.js.map +1 -0
- package/dist/workflow/definition-loader.d.ts +32 -0
- package/dist/workflow/definition-loader.js +56 -0
- package/dist/workflow/definition-loader.js.map +1 -0
- package/dist/workflow/discovery.d.ts +107 -0
- package/dist/workflow/discovery.js +263 -0
- package/dist/workflow/discovery.js.map +1 -0
- package/dist/workflow/errors.d.ts +66 -0
- package/dist/workflow/errors.js +49 -0
- package/dist/workflow/errors.js.map +1 -0
- package/dist/workflow/guards.d.ts +8 -0
- package/dist/workflow/guards.js +38 -0
- package/dist/workflow/guards.js.map +1 -0
- package/dist/workflow/lane-template.d.ts +89 -0
- package/dist/workflow/lane-template.js +141 -0
- package/dist/workflow/lane-template.js.map +1 -0
- package/dist/workflow/lint-integration.d.ts +64 -0
- package/dist/workflow/lint-integration.js +56 -0
- package/dist/workflow/lint-integration.js.map +1 -0
- package/dist/workflow/lint.d.ts +72 -0
- package/dist/workflow/lint.js +593 -0
- package/dist/workflow/lint.js.map +1 -0
- package/dist/workflow/machine-builder.d.ts +178 -0
- package/dist/workflow/machine-builder.js +678 -0
- package/dist/workflow/machine-builder.js.map +1 -0
- package/dist/workflow/message-log.d.ts +99 -0
- package/dist/workflow/message-log.js +40 -0
- package/dist/workflow/message-log.js.map +1 -0
- package/dist/workflow/orchestrator.d.ts +954 -0
- package/dist/workflow/orchestrator.js +3594 -0
- package/dist/workflow/orchestrator.js.map +1 -0
- package/dist/workflow/prompt-builder.d.ts +39 -0
- package/dist/workflow/prompt-builder.js +243 -0
- package/dist/workflow/prompt-builder.js.map +1 -0
- package/dist/workflow/run-state-command.d.ts +9 -0
- package/dist/workflow/run-state-command.js +414 -0
- package/dist/workflow/run-state-command.js.map +1 -0
- package/dist/workflow/run-state-debug-capture.d.ts +40 -0
- package/dist/workflow/run-state-debug-capture.js +101 -0
- package/dist/workflow/run-state-debug-capture.js.map +1 -0
- package/dist/workflow/status-parser.d.ts +68 -0
- package/dist/workflow/status-parser.js +274 -0
- package/dist/workflow/status-parser.js.map +1 -0
- package/dist/workflow/types.d.ts +598 -0
- package/dist/workflow/types.js +85 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow/validate.d.ts +80 -0
- package/dist/workflow/validate.js +788 -0
- package/dist/workflow/validate.js.map +1 -0
- package/dist/workflow/workflow-command.d.ts +9 -0
- package/dist/workflow/workflow-command.js +670 -0
- package/dist/workflow/workflow-command.js.map +1 -0
- package/dist/workflow/workflow-discovery.d.ts +27 -0
- package/dist/workflow/workflow-discovery.js +121 -0
- package/dist/workflow/workflow-discovery.js.map +1 -0
- package/dist/workflow/workflow-manager.d.ts +156 -0
- package/dist/workflow/workflow-manager.js +359 -0
- package/dist/workflow/workflow-manager.js.map +1 -0
- package/dist/workflow/workflows/design-and-code/README.md +50 -0
- package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
- package/dist/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
- package/dist/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
- package/dist/workflow/workflows/evolve/scripts/LICENSE +201 -0
- package/dist/workflow/workflows/evolve/scripts/README.md +314 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-brief +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-db +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-eval +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-files +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-summary +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
- package/dist/workflow/workflows/evolve/scripts/requirements.txt +2 -0
- package/dist/workflow/workflows/evolve/workflow.yaml +646 -0
- package/dist/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
- package/dist/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
- package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
- package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
- package/dist/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
- package/dist/workflow/workflows/test-email-summary/workflow.yaml +90 -0
- package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
- package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
- package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
- package/dist/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
- package/dist/workflow/worktree.d.ts +43 -0
- package/dist/workflow/worktree.js +106 -0
- package/dist/workflow/worktree.js.map +1 -0
- package/docker/Dockerfile.base +31 -0
- package/docker/Dockerfile.base.arm64 +27 -0
- package/docker/Dockerfile.claude-code +3 -1
- package/docker/Dockerfile.codex +17 -0
- package/docker/Dockerfile.goose +3 -1
- package/docker/entrypoint-claude-code.sh +7 -0
- package/docker/entrypoint-codex.sh +42 -0
- package/docker/entrypoint-goose.sh +6 -0
- package/docker/entrypoint-uid-remap.sh +93 -0
- package/package.json +27 -11
- package/packages/web-ui/README.md +113 -0
- package/packages/web-ui/docs/workflow-state-machine.png +0 -0
- package/src/config/generated/compiled-policy.json +528 -161
- package/src/config/generated/test-scenarios.json +4810 -170
- package/src/config/generated/tool-annotations.json +34 -47
- package/src/config/mcp-servers.json +2 -2
- package/src/workflow/workflows/design-and-code/README.md +50 -0
- package/src/workflow/workflows/design-and-code/workflow.yaml +169 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
- package/src/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
- package/src/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
- package/src/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
- package/src/workflow/workflows/evolve/scripts/LICENSE +201 -0
- package/src/workflow/workflows/evolve/scripts/README.md +314 -0
- package/src/workflow/workflows/evolve/scripts/evolve-brief +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-db +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-eval +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-files +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-summary +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
- package/src/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
- package/src/workflow/workflows/evolve/scripts/requirements.txt +2 -0
- package/src/workflow/workflows/evolve/workflow.yaml +646 -0
- package/src/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
- package/src/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
- package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
- package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
- package/src/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
- package/src/workflow/workflows/test-email-summary/workflow.yaml +90 -0
- package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
- package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
- package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
- package/src/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
- package/dist/pipeline/llm-logger.js.map +0 -1
- package/dist/session/errors.js.map +0 -1
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TF-IDF word scorer for the observe TUI rain panel.
|
|
3
|
+
*
|
|
4
|
+
* Maintains a running TF-IDF model over the session, treating each
|
|
5
|
+
* message turn or tool call as a "document" and the full session
|
|
6
|
+
* history as the corpus. Produces top-scoring words for rain panel
|
|
7
|
+
* word drops, with throttle/dedup to avoid repetition.
|
|
8
|
+
*
|
|
9
|
+
* Depends on observe-tui-types.ts only. No external dependencies.
|
|
10
|
+
*/
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Constants
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/** Minimum word length to consider for scoring. */
|
|
15
|
+
const MIN_WORD_LENGTH = 4;
|
|
16
|
+
/** Number of top-scoring words to return per document. */
|
|
17
|
+
const TOP_N_WORDS = 3;
|
|
18
|
+
/** Milliseconds before a recently-shown word can be re-enqueued. */
|
|
19
|
+
const DEDUP_WINDOW_MS = 30_000;
|
|
20
|
+
/** Characters of accumulated text before mid-stream scoring triggers. */
|
|
21
|
+
const MID_STREAM_THRESHOLD = 200;
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Stop words
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/** Common English words that are uninteresting for display. */
|
|
26
|
+
const ENGLISH_STOP_WORDS = new Set([
|
|
27
|
+
'about',
|
|
28
|
+
'after',
|
|
29
|
+
'also',
|
|
30
|
+
'back',
|
|
31
|
+
'been',
|
|
32
|
+
'before',
|
|
33
|
+
'being',
|
|
34
|
+
'between',
|
|
35
|
+
'both',
|
|
36
|
+
'came',
|
|
37
|
+
'come',
|
|
38
|
+
'could',
|
|
39
|
+
'each',
|
|
40
|
+
'does',
|
|
41
|
+
'done',
|
|
42
|
+
'down',
|
|
43
|
+
'even',
|
|
44
|
+
'find',
|
|
45
|
+
'first',
|
|
46
|
+
'from',
|
|
47
|
+
'going',
|
|
48
|
+
'good',
|
|
49
|
+
'great',
|
|
50
|
+
'have',
|
|
51
|
+
'here',
|
|
52
|
+
'into',
|
|
53
|
+
'just',
|
|
54
|
+
'know',
|
|
55
|
+
'like',
|
|
56
|
+
'long',
|
|
57
|
+
'look',
|
|
58
|
+
'made',
|
|
59
|
+
'make',
|
|
60
|
+
'many',
|
|
61
|
+
'more',
|
|
62
|
+
'most',
|
|
63
|
+
'much',
|
|
64
|
+
'must',
|
|
65
|
+
'need',
|
|
66
|
+
'never',
|
|
67
|
+
'next',
|
|
68
|
+
'only',
|
|
69
|
+
'other',
|
|
70
|
+
'over',
|
|
71
|
+
'part',
|
|
72
|
+
'said',
|
|
73
|
+
'same',
|
|
74
|
+
'should',
|
|
75
|
+
'show',
|
|
76
|
+
'some',
|
|
77
|
+
'still',
|
|
78
|
+
'such',
|
|
79
|
+
'sure',
|
|
80
|
+
'take',
|
|
81
|
+
'tell',
|
|
82
|
+
'than',
|
|
83
|
+
'that',
|
|
84
|
+
'them',
|
|
85
|
+
'then',
|
|
86
|
+
'there',
|
|
87
|
+
'these',
|
|
88
|
+
'they',
|
|
89
|
+
'thing',
|
|
90
|
+
'think',
|
|
91
|
+
'this',
|
|
92
|
+
'those',
|
|
93
|
+
'through',
|
|
94
|
+
'time',
|
|
95
|
+
'used',
|
|
96
|
+
'very',
|
|
97
|
+
'want',
|
|
98
|
+
'well',
|
|
99
|
+
'were',
|
|
100
|
+
'what',
|
|
101
|
+
'when',
|
|
102
|
+
'where',
|
|
103
|
+
'which',
|
|
104
|
+
'while',
|
|
105
|
+
'will',
|
|
106
|
+
'with',
|
|
107
|
+
'without',
|
|
108
|
+
'word',
|
|
109
|
+
'work',
|
|
110
|
+
'would',
|
|
111
|
+
'year',
|
|
112
|
+
'your',
|
|
113
|
+
]);
|
|
114
|
+
/** Common code tokens that are uninteresting for display. */
|
|
115
|
+
const CODE_STOP_WORDS = new Set([
|
|
116
|
+
'async',
|
|
117
|
+
'await',
|
|
118
|
+
'boolean',
|
|
119
|
+
'break',
|
|
120
|
+
'case',
|
|
121
|
+
'catch',
|
|
122
|
+
'class',
|
|
123
|
+
'const',
|
|
124
|
+
'constructor',
|
|
125
|
+
'continue',
|
|
126
|
+
'default',
|
|
127
|
+
'delete',
|
|
128
|
+
'else',
|
|
129
|
+
'enum',
|
|
130
|
+
'error',
|
|
131
|
+
'export',
|
|
132
|
+
'extends',
|
|
133
|
+
'false',
|
|
134
|
+
'finally',
|
|
135
|
+
'function',
|
|
136
|
+
'global',
|
|
137
|
+
'implements',
|
|
138
|
+
'import',
|
|
139
|
+
'instanceof',
|
|
140
|
+
'interface',
|
|
141
|
+
'module',
|
|
142
|
+
'null',
|
|
143
|
+
'number',
|
|
144
|
+
'object',
|
|
145
|
+
'package',
|
|
146
|
+
'private',
|
|
147
|
+
'protected',
|
|
148
|
+
'public',
|
|
149
|
+
'readonly',
|
|
150
|
+
'require',
|
|
151
|
+
'return',
|
|
152
|
+
'static',
|
|
153
|
+
'string',
|
|
154
|
+
'super',
|
|
155
|
+
'switch',
|
|
156
|
+
'template',
|
|
157
|
+
'this',
|
|
158
|
+
'throw',
|
|
159
|
+
'true',
|
|
160
|
+
'type',
|
|
161
|
+
'typeof',
|
|
162
|
+
'undefined',
|
|
163
|
+
'unknown',
|
|
164
|
+
'void',
|
|
165
|
+
'while',
|
|
166
|
+
'with',
|
|
167
|
+
'yield',
|
|
168
|
+
'console',
|
|
169
|
+
'process',
|
|
170
|
+
'promise',
|
|
171
|
+
'array',
|
|
172
|
+
]);
|
|
173
|
+
function isStopWord(word) {
|
|
174
|
+
const lower = word.toLowerCase();
|
|
175
|
+
return ENGLISH_STOP_WORDS.has(lower) || CODE_STOP_WORDS.has(lower);
|
|
176
|
+
}
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
178
|
+
// Word extraction
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
/** Pattern for splitting text into word candidates. */
|
|
181
|
+
const WORD_SPLIT_RE = /[\s,.;:!?()[\]{}<>"'`|/\\=+*&#@^~]+/;
|
|
182
|
+
/** Strings that are purely numeric -- always rejected. */
|
|
183
|
+
const PURE_NUMERIC_RE = /^[0-9]+$/;
|
|
184
|
+
/** Strings that contain only hex characters (case-insensitive). */
|
|
185
|
+
const HEX_CHARS_ONLY_RE = /^[0-9a-f]+$/i;
|
|
186
|
+
/** Strings containing at least one digit. */
|
|
187
|
+
const CONTAINS_DIGIT_RE = /[0-9]/;
|
|
188
|
+
/**
|
|
189
|
+
* Minimum length for a hex-looking string to be considered an
|
|
190
|
+
* identifier/hash rather than an English word. Below this we
|
|
191
|
+
* prefer to keep the word (e.g., "face", "cafe", "decade").
|
|
192
|
+
*/
|
|
193
|
+
const MIN_HEX_IDENTIFIER_LENGTH = 8;
|
|
194
|
+
/**
|
|
195
|
+
* Reject strings that are purely numeric or clearly hash/identifier-like.
|
|
196
|
+
*
|
|
197
|
+
* Purely numeric: always rejected.
|
|
198
|
+
* Hex-looking: rejected only when long enough AND containing at least one
|
|
199
|
+
* digit. This catches commit SHAs and content hashes (e.g., `a3f92c1b8d4e`)
|
|
200
|
+
* while preserving real English words that happen to use only hex letters
|
|
201
|
+
* (e.g., `face`, `cafe`, `beef`, `decade`, `feedback`).
|
|
202
|
+
*/
|
|
203
|
+
function isNumericOrHashLike(lower) {
|
|
204
|
+
if (PURE_NUMERIC_RE.test(lower))
|
|
205
|
+
return true;
|
|
206
|
+
if (lower.length < MIN_HEX_IDENTIFIER_LENGTH)
|
|
207
|
+
return false;
|
|
208
|
+
return HEX_CHARS_ONLY_RE.test(lower) && CONTAINS_DIGIT_RE.test(lower);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Extract candidate words from plain text.
|
|
212
|
+
*
|
|
213
|
+
* Returns an array of { original, lower } tuples where `original`
|
|
214
|
+
* preserves the source casing for display and `lower` is used for
|
|
215
|
+
* matching and dedup.
|
|
216
|
+
*/
|
|
217
|
+
export function extractWordsFromText(text) {
|
|
218
|
+
const results = [];
|
|
219
|
+
const parts = text.split(WORD_SPLIT_RE);
|
|
220
|
+
for (const raw of parts) {
|
|
221
|
+
// Strip leading/trailing punctuation and quotes
|
|
222
|
+
const cleaned = raw.replace(/^[^a-zA-Z0-9_]+|[^a-zA-Z0-9_]+$/g, '');
|
|
223
|
+
if (cleaned.length < MIN_WORD_LENGTH)
|
|
224
|
+
continue;
|
|
225
|
+
const lower = cleaned.toLowerCase();
|
|
226
|
+
if (isNumericOrHashLike(lower))
|
|
227
|
+
continue;
|
|
228
|
+
// Skip stop words
|
|
229
|
+
if (isStopWord(cleaned))
|
|
230
|
+
continue;
|
|
231
|
+
results.push({ original: cleaned, lower });
|
|
232
|
+
}
|
|
233
|
+
return results;
|
|
234
|
+
}
|
|
235
|
+
/** Pattern matching function/method calls like `foo.bar()` or `baz()`. */
|
|
236
|
+
const FUNC_CALL_RE = /(?:[\w$]+\.)*?([\w$]+)\s*\(/g;
|
|
237
|
+
/** Pattern matching meaningful string literals (single or double quoted, 4+ chars). */
|
|
238
|
+
const STRING_LITERAL_RE = /(?:"([^"]{4,})"|'([^']{4,})')/g;
|
|
239
|
+
/** Pattern matching MCP-style dotted tool names like `google_workspace.calendar_get_events`. */
|
|
240
|
+
const DOTTED_TOOL_RE = /(\w+)\.(\w{4,})/g;
|
|
241
|
+
/**
|
|
242
|
+
* Extract words from code content (e.g., the `code` field of execute_code).
|
|
243
|
+
*
|
|
244
|
+
* Extracts function/method call names, meaningful string literals,
|
|
245
|
+
* dotted tool names, and also runs the regular word extractor on
|
|
246
|
+
* the full text.
|
|
247
|
+
*/
|
|
248
|
+
export function extractWordsFromCode(code) {
|
|
249
|
+
const results = [];
|
|
250
|
+
const seen = new Set();
|
|
251
|
+
function addIfNew(original) {
|
|
252
|
+
const lower = original.toLowerCase();
|
|
253
|
+
if (lower.length < MIN_WORD_LENGTH)
|
|
254
|
+
return;
|
|
255
|
+
if (seen.has(lower))
|
|
256
|
+
return;
|
|
257
|
+
if (isNumericOrHashLike(lower))
|
|
258
|
+
return;
|
|
259
|
+
if (isStopWord(original))
|
|
260
|
+
return;
|
|
261
|
+
seen.add(lower);
|
|
262
|
+
results.push({ original, lower });
|
|
263
|
+
}
|
|
264
|
+
// Extract function/method call names
|
|
265
|
+
for (const match of code.matchAll(FUNC_CALL_RE)) {
|
|
266
|
+
addIfNew(match[1]);
|
|
267
|
+
}
|
|
268
|
+
// Extract dotted tool names (second segment)
|
|
269
|
+
for (const match of code.matchAll(DOTTED_TOOL_RE)) {
|
|
270
|
+
addIfNew(match[2]);
|
|
271
|
+
}
|
|
272
|
+
// Extract string literals
|
|
273
|
+
for (const match of code.matchAll(STRING_LITERAL_RE)) {
|
|
274
|
+
const literal = match[1] || match[2];
|
|
275
|
+
// Skip path-like strings unless they look like filenames
|
|
276
|
+
if (literal.startsWith('/') && literal.includes('/')) {
|
|
277
|
+
// Extract just the filename
|
|
278
|
+
const segments = literal.split('/');
|
|
279
|
+
const filename = segments[segments.length - 1];
|
|
280
|
+
if (filename && filename.length >= MIN_WORD_LENGTH) {
|
|
281
|
+
addIfNew(filename.replace(/\.[^.]+$/, '')); // strip extension
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Run word extractor on the literal
|
|
286
|
+
for (const w of extractWordsFromText(literal)) {
|
|
287
|
+
addIfNew(w.original);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Also run regular extraction on the full code text
|
|
292
|
+
for (const w of extractWordsFromText(code)) {
|
|
293
|
+
addIfNew(w.original);
|
|
294
|
+
}
|
|
295
|
+
return results;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Try to extract the `code` field from accumulated tool input JSON.
|
|
299
|
+
* Returns the code string, or null if parsing fails or no code field.
|
|
300
|
+
*/
|
|
301
|
+
export function extractCodeFromToolInput(accumulatedJson) {
|
|
302
|
+
try {
|
|
303
|
+
const parsed = JSON.parse(accumulatedJson);
|
|
304
|
+
if (parsed && typeof parsed === 'object' && 'code' in parsed) {
|
|
305
|
+
const code = parsed.code;
|
|
306
|
+
if (typeof code === 'string')
|
|
307
|
+
return code;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
// Incomplete JSON -- expected during streaming
|
|
312
|
+
}
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
// ---------------------------------------------------------------------------
|
|
316
|
+
// TF-IDF scoring
|
|
317
|
+
// ---------------------------------------------------------------------------
|
|
318
|
+
/**
|
|
319
|
+
* Compute term frequency for a list of words.
|
|
320
|
+
* Returns a map from lowercase word to count.
|
|
321
|
+
*/
|
|
322
|
+
function computeTf(words) {
|
|
323
|
+
const tf = new Map();
|
|
324
|
+
for (const { lower } of words) {
|
|
325
|
+
tf.set(lower, (tf.get(lower) ?? 0) + 1);
|
|
326
|
+
}
|
|
327
|
+
return tf;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Create a WordScorer that maintains a running TF-IDF model.
|
|
331
|
+
*
|
|
332
|
+
* @param topN - Number of top-scoring words to return (default: 3)
|
|
333
|
+
* @param dedupWindowMs - Milliseconds before re-showing a word (default: 30s)
|
|
334
|
+
*/
|
|
335
|
+
export function createWordScorer(topN = TOP_N_WORDS, dedupWindowMs = DEDUP_WINDOW_MS) {
|
|
336
|
+
// Corpus: document frequency (how many documents contain each word)
|
|
337
|
+
const df = new Map();
|
|
338
|
+
let docCount = 0;
|
|
339
|
+
// Recently shown words: key -> timestamp
|
|
340
|
+
const recentlyShown = new Map();
|
|
341
|
+
return {
|
|
342
|
+
get documentCount() {
|
|
343
|
+
return docCount;
|
|
344
|
+
},
|
|
345
|
+
scoreDocument(words) {
|
|
346
|
+
if (words.length === 0)
|
|
347
|
+
return [];
|
|
348
|
+
docCount++;
|
|
349
|
+
// Update document frequency: each unique word in this doc increments df
|
|
350
|
+
const uniqueInDoc = new Set();
|
|
351
|
+
for (const { lower } of words) {
|
|
352
|
+
uniqueInDoc.add(lower);
|
|
353
|
+
}
|
|
354
|
+
for (const lower of uniqueInDoc) {
|
|
355
|
+
df.set(lower, (df.get(lower) ?? 0) + 1);
|
|
356
|
+
}
|
|
357
|
+
// Compute TF for this document
|
|
358
|
+
const tf = computeTf(words);
|
|
359
|
+
// Build the best original-cased form for each word
|
|
360
|
+
const bestOriginal = new Map();
|
|
361
|
+
for (const { original, lower } of words) {
|
|
362
|
+
// Prefer the form that appears first
|
|
363
|
+
if (!bestOriginal.has(lower)) {
|
|
364
|
+
bestOriginal.set(lower, original);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// Score each unique word: TF * IDF
|
|
368
|
+
const scored = [];
|
|
369
|
+
for (const [lower, count] of tf) {
|
|
370
|
+
const idf = Math.log((docCount + 1) / ((df.get(lower) ?? 0) + 1));
|
|
371
|
+
const score = count * idf;
|
|
372
|
+
scored.push({
|
|
373
|
+
word: bestOriginal.get(lower) ?? lower,
|
|
374
|
+
key: lower,
|
|
375
|
+
score,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
// Sort by score descending, return top N
|
|
379
|
+
scored.sort((a, b) => b.score - a.score);
|
|
380
|
+
return scored.slice(0, topN);
|
|
381
|
+
},
|
|
382
|
+
tryShow(key, now) {
|
|
383
|
+
const ts = now ?? Date.now();
|
|
384
|
+
// Clean expired entries (amortized, check a few each call)
|
|
385
|
+
let cleanCount = 0;
|
|
386
|
+
for (const [k, t] of recentlyShown) {
|
|
387
|
+
if (ts - t > dedupWindowMs) {
|
|
388
|
+
recentlyShown.delete(k);
|
|
389
|
+
}
|
|
390
|
+
if (++cleanCount >= 5)
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
const lastShown = recentlyShown.get(key);
|
|
394
|
+
if (lastShown !== undefined && ts - lastShown < dedupWindowMs) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
recentlyShown.set(key, ts);
|
|
398
|
+
return true;
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
// ---------------------------------------------------------------------------
|
|
403
|
+
// Tool name cleanup
|
|
404
|
+
// ---------------------------------------------------------------------------
|
|
405
|
+
/**
|
|
406
|
+
* Clean up MCP tool names for display.
|
|
407
|
+
* Strips `mcp__` prefix and server name prefix.
|
|
408
|
+
* e.g., `mcp__ironcurtain__execute_code` -> `execute_code`
|
|
409
|
+
*/
|
|
410
|
+
export function cleanToolName(toolName) {
|
|
411
|
+
// Strip mcp__serverName__ prefix
|
|
412
|
+
const mpcPrefixMatch = toolName.match(/^mcp__[^_]+__(.+)$/);
|
|
413
|
+
if (mpcPrefixMatch)
|
|
414
|
+
return mpcPrefixMatch[1];
|
|
415
|
+
// Strip simpler server__ prefix
|
|
416
|
+
const serverPrefixMatch = toolName.match(/^[^_]+__(.+)$/);
|
|
417
|
+
if (serverPrefixMatch)
|
|
418
|
+
return serverPrefixMatch[1];
|
|
419
|
+
return toolName;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Shorten a model name for display.
|
|
423
|
+
* Strips the "claude-" prefix if present.
|
|
424
|
+
* e.g., "claude-sonnet-4-20250514" -> "sonnet-4-20250514"
|
|
425
|
+
*/
|
|
426
|
+
export function shortenModelName(model) {
|
|
427
|
+
if (model.startsWith('claude-'))
|
|
428
|
+
return model.slice(7);
|
|
429
|
+
return model;
|
|
430
|
+
}
|
|
431
|
+
export function createTextAccumulator(threshold = MID_STREAM_THRESHOLD) {
|
|
432
|
+
let buffer = '';
|
|
433
|
+
let scoredUpTo = 0;
|
|
434
|
+
return {
|
|
435
|
+
get length() {
|
|
436
|
+
return buffer.length;
|
|
437
|
+
},
|
|
438
|
+
append(text) {
|
|
439
|
+
buffer += text;
|
|
440
|
+
if (buffer.length - scoredUpTo >= threshold) {
|
|
441
|
+
const words = extractWordsFromText(buffer.slice(scoredUpTo));
|
|
442
|
+
scoredUpTo = buffer.length;
|
|
443
|
+
return words.length > 0 ? words : null;
|
|
444
|
+
}
|
|
445
|
+
return null;
|
|
446
|
+
},
|
|
447
|
+
flush() {
|
|
448
|
+
const words = extractWordsFromText(buffer);
|
|
449
|
+
buffer = '';
|
|
450
|
+
scoredUpTo = 0;
|
|
451
|
+
return words;
|
|
452
|
+
},
|
|
453
|
+
reset() {
|
|
454
|
+
buffer = '';
|
|
455
|
+
scoredUpTo = 0;
|
|
456
|
+
},
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
export function createToolInputAccumulator() {
|
|
460
|
+
let toolName = null;
|
|
461
|
+
let inputBuffer = '';
|
|
462
|
+
return {
|
|
463
|
+
get active() {
|
|
464
|
+
return toolName !== null;
|
|
465
|
+
},
|
|
466
|
+
start(name) {
|
|
467
|
+
toolName = name;
|
|
468
|
+
inputBuffer = '';
|
|
469
|
+
},
|
|
470
|
+
appendDelta(delta) {
|
|
471
|
+
inputBuffer += delta;
|
|
472
|
+
},
|
|
473
|
+
flush() {
|
|
474
|
+
if (toolName === null)
|
|
475
|
+
return null;
|
|
476
|
+
const name = toolName;
|
|
477
|
+
const accumulated = inputBuffer;
|
|
478
|
+
toolName = null;
|
|
479
|
+
inputBuffer = '';
|
|
480
|
+
const words = [];
|
|
481
|
+
// Try to extract code from execute_code tool input
|
|
482
|
+
const code = extractCodeFromToolInput(accumulated);
|
|
483
|
+
if (code) {
|
|
484
|
+
words.push(...extractWordsFromCode(code));
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
487
|
+
// Fall back to plain text extraction from the raw JSON
|
|
488
|
+
words.push(...extractWordsFromText(accumulated));
|
|
489
|
+
}
|
|
490
|
+
return { toolName: name, words };
|
|
491
|
+
},
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
export function createSessionWordState() {
|
|
495
|
+
return {
|
|
496
|
+
textAccumulator: createTextAccumulator(),
|
|
497
|
+
toolAccumulator: createToolInputAccumulator(),
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Process a token stream event through the word scorer and produce
|
|
502
|
+
* word drop candidates. Returns an array of candidates to enqueue.
|
|
503
|
+
*
|
|
504
|
+
* This is the main integration point between the orchestrator and
|
|
505
|
+
* the word scorer. The caller is responsible for calling
|
|
506
|
+
* `rainEngine.enqueueWord()` for each returned candidate.
|
|
507
|
+
*/
|
|
508
|
+
export function processEventForWords(event, sessionWordState, scorer, now) {
|
|
509
|
+
const candidates = [];
|
|
510
|
+
const ts = now ?? Date.now();
|
|
511
|
+
function addScoredWords(words, source) {
|
|
512
|
+
const scored = scorer.scoreDocument(words);
|
|
513
|
+
for (const s of scored) {
|
|
514
|
+
if (scorer.tryShow(s.key, ts)) {
|
|
515
|
+
candidates.push({ word: s.word, source });
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
switch (event.kind) {
|
|
520
|
+
case 'message_start': {
|
|
521
|
+
sessionWordState.textAccumulator.reset();
|
|
522
|
+
const short = shortenModelName(event.model);
|
|
523
|
+
if (scorer.tryShow(short.toLowerCase(), ts)) {
|
|
524
|
+
candidates.push({ word: short, source: 'model' });
|
|
525
|
+
}
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
case 'text_delta': {
|
|
529
|
+
const midWords = sessionWordState.textAccumulator.append(event.text);
|
|
530
|
+
if (midWords) {
|
|
531
|
+
addScoredWords(midWords, 'text');
|
|
532
|
+
}
|
|
533
|
+
break;
|
|
534
|
+
}
|
|
535
|
+
case 'tool_use': {
|
|
536
|
+
if (event.toolName !== '') {
|
|
537
|
+
// New tool call starting: flush any previous tool accumulator
|
|
538
|
+
const prev = sessionWordState.toolAccumulator.flush();
|
|
539
|
+
if (prev && prev.words.length > 0) {
|
|
540
|
+
addScoredWords(prev.words, 'tool');
|
|
541
|
+
}
|
|
542
|
+
// Start new accumulator
|
|
543
|
+
sessionWordState.toolAccumulator.start(event.toolName);
|
|
544
|
+
// Enqueue cleaned tool name
|
|
545
|
+
const cleaned = cleanToolName(event.toolName);
|
|
546
|
+
if (cleaned.length >= MIN_WORD_LENGTH && scorer.tryShow(cleaned.toLowerCase(), ts)) {
|
|
547
|
+
candidates.push({ word: cleaned, source: 'tool' });
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
else if (event.inputDelta) {
|
|
551
|
+
// input_json_delta fragment
|
|
552
|
+
sessionWordState.toolAccumulator.appendDelta(event.inputDelta);
|
|
553
|
+
}
|
|
554
|
+
break;
|
|
555
|
+
}
|
|
556
|
+
case 'message_end': {
|
|
557
|
+
// Flush text accumulator
|
|
558
|
+
const textWords = sessionWordState.textAccumulator.flush();
|
|
559
|
+
if (textWords.length > 0) {
|
|
560
|
+
addScoredWords(textWords, 'text');
|
|
561
|
+
}
|
|
562
|
+
// Flush tool accumulator (in case the last tool call wasn't followed by another)
|
|
563
|
+
const toolResult = sessionWordState.toolAccumulator.flush();
|
|
564
|
+
if (toolResult && toolResult.words.length > 0) {
|
|
565
|
+
addScoredWords(toolResult.words, 'tool');
|
|
566
|
+
}
|
|
567
|
+
break;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
return candidates;
|
|
571
|
+
}
|
|
572
|
+
//# sourceMappingURL=observe-tui-word-scorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe-tui-word-scorer.js","sourceRoot":"","sources":["../../src/observe/observe-tui-word-scorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI orchestrator for the observe command.
|
|
3
|
+
*
|
|
4
|
+
* Manages the screen lifecycle (alternate buffer, cursor, raw mode),
|
|
5
|
+
* runs the 15fps frame loop, routes token stream events to the rain
|
|
6
|
+
* engine and text panel, and renders the divider and status bar.
|
|
7
|
+
*
|
|
8
|
+
* Computes the dominant agent phase across active sessions and
|
|
9
|
+
* communicates it to the rain engine for phase-driven color shifts.
|
|
10
|
+
* Uses TF-IDF scoring to select interesting words from LLM output
|
|
11
|
+
* and tool calls for rain panel word drops.
|
|
12
|
+
*
|
|
13
|
+
* Depends on observe-tui-types.ts, observe-tui-rain.ts,
|
|
14
|
+
* observe-tui-text-panel.ts, and observe-tui-word-scorer.ts.
|
|
15
|
+
* No external dependencies beyond Node built-ins.
|
|
16
|
+
*/
|
|
17
|
+
import type { TokenStreamEvent } from '../docker/token-stream-types.js';
|
|
18
|
+
import { type AgentPhase, type ObserveEventSink, type ObserveTuiOptions, type RainToken, type SessionState } from './observe-tui-types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Extract rain tokens from a single token stream event.
|
|
21
|
+
*
|
|
22
|
+
* - text_delta: each character -> RainToken kind='text'
|
|
23
|
+
* - tool_use: each character of toolName -> kind='tool'
|
|
24
|
+
* - error: each character of message -> kind='error'
|
|
25
|
+
* - Other event kinds produce no rain tokens.
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractRainTokens(event: TokenStreamEvent): RainToken[];
|
|
28
|
+
/**
|
|
29
|
+
* Update a SessionState from a single event.
|
|
30
|
+
* Mutates the state in place.
|
|
31
|
+
*/
|
|
32
|
+
export declare function updateSessionState(state: SessionState, event: TokenStreamEvent): void;
|
|
33
|
+
/**
|
|
34
|
+
* Compute the dominant agent phase across all active sessions.
|
|
35
|
+
* Priority: error > tool_use > thinking > idle.
|
|
36
|
+
* Error phase is tracked separately via errorFramesRemaining.
|
|
37
|
+
*/
|
|
38
|
+
export declare function computeDominantPhase(sessions: Map<number, SessionState>, errorActive: boolean): AgentPhase;
|
|
39
|
+
/**
|
|
40
|
+
* Sliding window tracker for tokens/sec computation.
|
|
41
|
+
* Records (timestamp, cumulativeTokens) snapshots and computes
|
|
42
|
+
* the rate over the most recent windowMs period.
|
|
43
|
+
*/
|
|
44
|
+
export declare class TokenRateTracker {
|
|
45
|
+
private readonly windowMs;
|
|
46
|
+
private readonly samples;
|
|
47
|
+
constructor(windowMs?: number);
|
|
48
|
+
/** Record a new snapshot of cumulative token count. */
|
|
49
|
+
record(now: number, totalTokens: number): void;
|
|
50
|
+
/** Compute tokens/sec over the sliding window. */
|
|
51
|
+
rate(): number;
|
|
52
|
+
}
|
|
53
|
+
export declare function formatTokenCount(n: number): string;
|
|
54
|
+
/** Return type: ObserveEventSink + start/destroy lifecycle methods. */
|
|
55
|
+
export interface ObserveTui extends ObserveEventSink {
|
|
56
|
+
start(): void;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
}
|
|
59
|
+
export declare function createObserveTui(options: ObserveTuiOptions): ObserveTui;
|