Add multi-language logic exploration
This commit is contained in:
parent
9b4258c852
commit
9161889492
18 changed files with 1639 additions and 76 deletions
|
|
@ -309,17 +309,46 @@ graph. The view presents:
|
|||
assertions.
|
||||
- **Action** cards for executable statement blocks and calls.
|
||||
- **Control** cards for loops, `break`, and `continue`.
|
||||
- **Merge** cards where alternate paths converge.
|
||||
- **Convergence** cards where alternate paths rejoin, including decision, case, loop-exit, and
|
||||
exception convergence.
|
||||
- **Terminal** cards for returns and raised exceptions.
|
||||
|
||||
Edges use explicit labels and independent colors for `TRUE`, `FALSE`, `NEXT`, `CASE`, `LOOP`,
|
||||
`EXCEPTION`, `RETURN`, `RAISE`, `BREAK`, and `CONTINUE`. Long predicates wrap on the card. The full
|
||||
expression and source anchor remain available through inspection and source navigation.
|
||||
|
||||
The built-in analyzers cover Python, JavaScript, and C++. Python uses the standard-library AST.
|
||||
JavaScript and C++ use pinned Tree-sitter grammars behind the same language-neutral
|
||||
`LogicProjection` contract. Tree-sitter handles concrete syntax; DocForge keeps a thin
|
||||
language-specific control-flow profile for constructs such as conditions, loops, cases,
|
||||
exceptions, returns, and short-circuit operators. Adding a language therefore requires a grammar
|
||||
and a semantic profile, not a new visualization or database design.
|
||||
|
||||
Logic is static analysis. It shows paths the indexed source permits, not the branch that ran for a
|
||||
particular request or the runtime value of a boolean. Dynamic dispatch, reflection, generated
|
||||
behavior, and values returned by other processes may require runtime tracing to resolve.
|
||||
|
||||
### Finding the right node
|
||||
|
||||
The left panel combines independent filters rather than forcing users to scan the complete node
|
||||
list:
|
||||
|
||||
- **Text** searches indexed titles, summaries, and content.
|
||||
- **Family** selects the project-defined family.
|
||||
- **Node type** selects callables or an exact indexed kind such as function, method, class, route,
|
||||
test, module, or document.
|
||||
- **Language** selects an indexed language tag such as Python, JavaScript, or C++.
|
||||
- **Capability** selects nodes with source navigation or an available Logic projection.
|
||||
|
||||
Quick presets select common combinations for Logic-ready nodes, Python callables, tests, routes,
|
||||
and documentation. Filters compose, so `JavaScript` plus `Logic available` lists only JavaScript
|
||||
functions that can open Logic. Result cards show the readable leaf name, kind, language, path, and
|
||||
source anchor. Full identities remain in the tooltip and inspector.
|
||||
|
||||
Selecting any canvas node highlights its directly connected nodes and the exact edges between
|
||||
them. Other nodes and edges remain visible at reduced opacity. This local trace works in Nodes,
|
||||
Flow, Web, and Logic without changing the root or querying a different graph.
|
||||
|
||||
### Reading graph cards
|
||||
|
||||
The canvas presents nodes as compact semantic cards rather than anonymous circles:
|
||||
|
|
@ -635,7 +664,7 @@ ambiguous adapter evidence.
|
|||
### Full inspector content does not fit
|
||||
|
||||
DocForge 1.0 uses a fixed header and footer with a scrollable inspector body. If an older page is
|
||||
still open, stop and reopen the visualization so it loads the current `graph-browser@16` template.
|
||||
still open, stop and reopen the visualization so it loads the current `graph-browser@17` template.
|
||||
|
||||
### Render output is stale
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue