Feat/non pausing logpoints#3
Merged
Merged
Conversation
…he VM Breakpoints are now armed as logpoints (a conditional breakpoint whose condition captures state and returns false), so a hit ships its stack + in-scope locals + exprs out via a Runtime binding without ever pausing execution. The traced app runs at full speed, hot paths are cheap, and there is no human-style stop-and-wait — built for an agent that reads the trace and re-aims breakpoints. Locals are still captured automatically: ScopeExtractor statically reads the generated source and lists the in-scope names (function-body scopes, matching the old local/block/catch filter), which the condition gathers defensively. --expr adds computed/derived values on top. The call stack arrives as new Error().stack and is source-mapped via SourceMaps. The TraceEvent shape is unchanged, so Renderer, lineage, the recording's trace panel, the collector and the schema are all untouched — Chrome video recording included. - new: ScopeExtractor (TS-based in-scope name extraction), Logpoint (condition builder + in-page serializer + payload→TraceEvent capturer) - Tracer/TabTracer: replace the pause→capture→resume loop with binding-driven collection; instrumentation pause kept only for binding before first-run code - remove: EventCapturer and the dead pause-queue machinery (waitForStop/hasQueued/interrupt, renderRemoteObject, step over/into/out) - --max-hits default 25/30 → 100 (cheap to raise without per-hit pause cost) Validated end-to-end against the node-api (plain JS) and react-app (sourcemapped TS) fixtures: full locals + exprs + stack + lineage, video intact, no pauses. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sweep of unused surface left after the logpoint migration: - remove TraceOptions.url/shot/record and DynamicRequest.record — all declared but never read (--url becomes a goto step; recording is gated by isChrome, not a flag) - traceNode: add a safety Debugger.paused→resume so a stray `debugger;` in the traced app can't stall the drain loop Note: the beforeScriptExecution instrumentation pause was evaluated for removal and kept — it's the bind-before-first-run mechanism, not pause bloat. Removing it dropped on-mount capture from 3 hits to 0 in the react-app fixture (logpoint hits never pause regardless). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The bind-before-first-run instrumentation pause was scattered as a bare `instrument` boolean + a CDP call buried in #onPause, with no signpost — easy to mistake for leftover pause-tracer code. Make it unmissable: - rename instrument/instrumentFirst → bindBeforeFirstRun everywhere (TabTracer.arm, JourneyRunner #connect/start/#waitNewTab, Tracer) - extract TabTracer.#armFirstRunBindPause(); rename #instrId → #firstRunPauseId - one canonical doc block on TabTracer + a greppable "THE ONE PAUSE" marker at every touchpoint (incl. README), stating it's bind-only, never on a hit, self-dropping, and load-bearing (3→0 on-mount hits without it) No behavior change — Chrome on-mount still 3 hits, 37 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Added ShellAnalysisCommand as an abstract base class for running external analysis tools and normalizing their output into a Trace. - Introduced ToolInvocation and AnalysisOutcome interfaces to standardize tool invocation parameters and results. - Updated SymbolsCommand to extend ShellAnalysisCommand, encapsulating the logic for invoking tree-sitter and interpreting its output. - Refactored runTool function to use spawn instead of execFile for better handling of large outputs, capturing stdout and stderr to temporary files. - Created graphView module for rendering call graphs in both text and HTML formats, separating concerns from GraphCommand. - Added shared empty/error guard in TraceCommand for consistent rendering of error messages across commands.
…base - Renamed `sleep` parameter from `ms` to `milliseconds` for clarity. - Updated command descriptions in trace.schema.json to reflect accurate terminology. - Changed `Loc` to `SourceLocation` and `col` to `column` in trace.schema.json for consistency. - Refactored validation.ts to improve variable naming for better readability. - Updated version.ts to use `moduleDirectory` instead of `here` for clarity. - Improved S3ArtifactStore.ts by enhancing variable names and error logging. - Refactored CdpDriver.ts for better parameter naming and error handling. - Updated ProtocolDriver.ts to use consistent callback naming. - Adjusted test cases to reflect changes in schema and naming conventions. - Added output tests for envelope transformations and code registry. - Updated README and configuration files to reflect command changes from `dynamic` to `run`. - Enhanced UI components to use updated naming conventions for event attributes. - Refactored types.ts to improve clarity and consistency in interface definitions.
burrows99
added a commit
that referenced
this pull request
Jun 18, 2026
…engine) Re-applies the dashboard/ingestion work on top of the merged non-pausing logpoint engine (PR #3). Engine-side changes from the original local commit are dropped as superseded by that rewrite (which already captures console output). - Ingestion route POST /v1/traces in the standalone Next.js dashboard, with validation + error handling. - OpenTelemetry self-observability (auto-instrumentation: request + error logging). - `trace serve` launches the standalone Next.js dashboard (UI + same-origin API + SSE), backed by Postgres; Collector reduced to the client-side emit() helper. - Same-origin UI API calls (no base URL); lazy session store; standalone Next output with security headers + CSP; OTel deps added. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request updates the documentation and supporting files to reflect a major renaming and simplification of the CLI command structure, replacing the previous
dynamicandstaticsubcommands with more intuitive, top-level commands such asrun,graph,deps,complexity, andsymbols. The changes clarify the native-first philosophy, improve flag and argument consistency, and update all examples, migration guides, and schema references accordingly.CLI Command Renaming and Unification:
trace-cli dynamicandtrace-cli staticwithtrace-cli run,trace-cli graph,trace-cli deps,trace-cli complexity, andtrace-cli symbolsthroughout the documentation, examples, and migration guides. This includes updates to sample commands, envelope JSON output, and migration instructions. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]Flag and Argument Consistency:
--bp→--breakpoint,--expr→--expression,--out→--output, and--db→--database-urlfor improved clarity and usability. [1] [2] [3]Native-First Model Clarification:
Supporting Documentation and Migration Updates:
Sample Usage and Output Updates:
These changes modernize the CLI's interface, making it more intuitive and easier to use, while ensuring all documentation and supporting files are up to date with the latest design decisions.