Commit Graph
1609 Commits
Author SHA1 Message Date
KolisCode 012be57815 fix(extract): keep decorators separated by a comment
Comments are NAMED tree-sitter nodes, so the prev-sibling walk in
extract_decorators() stopped at one — silently dropping every decorator ABOVE
an interleaved comment:

    @Post('login')                 <-- dropped
    @HttpCode(HttpStatus.OK)       <-- dropped
    // throttled per IP and account
    @Throttle({ ... })             <-- kept
    async login(...)

The route then vanished from decorator/route queries, so documenting a
decorator made the endpoint disappear from the graph. Real-world impact: on a
NestJS backend, 1 of 95 HTTP endpoints was missing — the one whose throttle
policy carried an explanatory comment.

Comments are now transparent to the walk, the same way anonymous tokens
(e.g. TS `export`) already were. Reuses the existing is_comment_node() helper.

Signed-off-by: KolisCode <jhohantma@gmail.com>
2026-07-15 21:01:29 -05:00
Martin Vogel 90d7315cf9 Merge pull request #1108 from DeusData/fix/964-1077-fqn-collision
fix(fqn): preserve full filename in File-node QNs so sibling files don't collide
2026-07-16 02:52:00 +02:00
Martin Vogel 848375912d Merge pull request #1098 from JhohanBustamante/fix/cypher-composite-props
fix(cypher): return whole value for composite and escaped properties
2026-07-16 02:47:38 +02:00
Martin Vogel b0aead257e Merge pull request #991 from harshitaajoshi/fix/cypher-coalesce-where-874
fix(cypher): support coalesce() and other multi-arg scalar functions in WHERE (#874)
2026-07-16 02:44:33 +02:00
Martin Vogel e2d41d9cd4 Merge pull request #1094 from harshitaajoshi/fix/utf8-docstring-truncation-1017
fix(extract): snap docstring truncation to UTF-8 codepoint boundary (#1017)
2026-07-16 02:16:11 +02:00
Martin Vogel 2308ae084e Merge pull request #940 from WarGloom/codex/fix-sqlite-writer-atomic-publish
Fix SQLite writer atomic cache publish
2026-07-16 02:11:27 +02:00
Martin Vogel 812af348bb Merge pull request #1002 from halindrome/p913-glr-recursion
fix(ts-runtime): bound GLR stack-merge recursion to prevent stack overflow
2026-07-16 02:11:10 +02:00
Martin Vogel 91d1a23161 Merge pull request #1043 from WarGloom/agent/fix-mcp-structured-content
fix(mcp): return structured compact results
2026-07-16 02:01:41 +02:00
Martin Vogel 6c5795b245 Merge pull request #985 from ShiroKSH/agent/fix-adr-delete
fix(graph-ui): clear ADR content on delete
2026-07-16 01:52:52 +02:00
Martin Vogel 2080d82100 Merge pull request #1060 from isc-tdyar/fix/semantic-body-tokens
fix(extract): populate body_tokens before MinHash gate; add OS/TS identifier node types
2026-07-16 01:50:34 +02:00
Martin Vogel bb9677f3a9 Merge pull request #1067 from tmonestudio/codex/test-isolate-cache
fix(tests): isolate integration caches from user state
2026-07-16 01:41:52 +02:00
Martin Vogel 751752bd21 fix(fqn): preserve full filename in File-node QNs so sibling files don't collide
cbm_pipeline_fqn_compute stripped the file extension for EVERY qualified
name, including File-node QNs (name=="__file__"). Two different files
whose names share a stem therefore collided on the File QN and the
graph kept only one node per stem:

- .env / .env.local / .env.production all strip to ".env" — only one
  survives per directory (#1077).
- a C/C++ header and its same-stem source (NodeController.h vs .cpp)
  strip to the same stem, so the header got no File node of its own,
  leaving it disconnected (#964's remaining half after #983 fixed the
  include→Class resolution).

File-node QNs now keep the full filename (tokenize_path splits on '/'
only, so the extension rides in the last segment and stays unique).
Extension stripping is retained for MODULE/symbol QNs (name==NULL or a
symbol name) — that stem unification is load-bearing for C/C++
declaration↔definition cross-file resolution, and is left untouched.
All 26 __file__ QN sites route through this one function, so node
creation and every lookup stay consistent.

Reproduce-first:
- fqn_file_qn_preserves_dotfile_variants_issue1077 and
  fqn_file_qn_distinguishes_same_stem_header_source_issue964 assert the
  distinct File QNs (RED before: both collide to the stripped stem).
- fqn_module_qn_still_strips_extension guards that module QNs are
  unaffected.
- repro_issue964 now asserts the header keeps its own File node AND is
  connected (CONTAINS_FILE + DEFINES the class it declares), matching
  the reporter's zero-inbound disconnection metric — GREEN.

Closes #1077
Closes #964

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 01:21:45 +02:00
Martin Vogel 548927a849 Merge pull request #1106 from DeusData/fix/1085-jsx-alias-calls
fix(pipeline): restore parallel CALLS resolution for LSP-unresolvable targets
2026-07-16 01:14:09 +02:00
Martin Vogel 86c19720a2 docs(third-party): record the ts_runtime stack-merge bound as a local modification
The #913 GLR recursion cap patches vendored ts_runtime/src/stack.c;
document it in THIRD_PARTY.md so the vendored modification is on record
and re-applied on the next ts_runtime re-vendor (Stage 4: 0.26.x). The
patch is marked inline; this adds the provenance-level note the policy
requires for any change to vendored code.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-16 00:18:41 +02:00
Martin Vogel ef1482245f Merge pull request #949 from blankanswer/agent/fix-cpp-preproc-signature-gap
fix(cpp): remap recovered definitions to original lines
2026-07-16 00:05:49 +02:00
Harshita Joshi 57cd3f9e78 Merge branch 'main' into fix/cypher-coalesce-where-874 2026-07-15 16:59:09 -05:00
Martin Vogel 4c60111beb Merge pull request #983 from Sinjan-Debnath/main
fix: resolve C/C++ includes to header file targets by matching stems
2026-07-15 23:54:27 +02:00
Martin Vogel 8c394658b9 fix(pipeline): restore parallel CALLS resolution for LSP-unresolvable targets
The parallel resolver dropped a CALLS edge whenever the LSP produced a
resolution whose callee_qn was not a node in the graph buffer: the
registry fallback lived in an else that ran only when NO LSP resolution
existed, so an LSP-with-unresolvable-target left res empty and the edge
was discarded outright. The sequential pass falls THROUGH to the
registry resolver in the same situation.

This diverged the two pipelines on the exact intersection the reporter
identified (#1085): a JSX component imported through a tsconfig paths
alias. The TS LSP resolves the element ref to an alias-path QN that
never matches a def node, so lsp_target is NULL and the parallel path
dropped it — while sequential resolved it via the import_map /
unique_name registry path. On a Next.js repo this silently removed
~21% of the call graph (every alias-imported JSX composition edge), and
the parallel path is the default above 50 files, so the default index
was the broken one.

The fix runs the registry fallback whenever the LSP did not yield a
gbuf-resolvable target, matching the sequential fall-through and
restoring seq/parallel parity.

Reproduce-first: calls_jsx_component_via_tsconfig_alias_parallel_issue1085
indexes the alias+JSX shape through the parallel path (et_index_parallel
pads past the 50-file threshold) and asserts the CALLS edges land on the
component. RED before (0 edges), GREEN after.

Closes #1085

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-15 23:43:52 +02:00
Harshita Joshi 4ce04f2d03 Merge branch 'main' into fix/utf8-docstring-truncation-1017 2026-07-15 16:28:54 -05:00
Harshita Joshi 3ebcf48a46 fix(extract): snap docstring truncation to UTF-8 codepoint boundary (#1017)
Signed-off-by: Harshita Joshi <j.harshitaa06@gmail.com>
2026-07-15 16:27:34 -05:00
Martin Vogel 23f262c4b8 Merge pull request #995 from spde/fix/incremental-file-node-basename
fix(incremental): name File nodes by basename, matching the full pipeline
2026-07-15 22:59:44 +02:00
Martin Vogel 807a4a3129 Merge pull request #1046 from metehanulusoy/fix/missed-shadow-project-listing
fix(mcp): ignore ::missed shadow rows when resolving a db's project name
2026-07-15 22:38:07 +02:00
Martin Vogel 34867d9b34 Merge pull request #1007 from CharlesQueiroz/fix/jaxrs-path-composition
fix: compose JAX-RS method-level @Path with class-level prefix
2026-07-15 22:21:38 +02:00
KolisCode 48fa9cbc03 fix(cypher): return whole value for composite and escaped properties
json_extract_prop() scanned a non-string property up to the first ',' and a
string property up to the first '"', ignoring nesting and backslash escapes.
Any array/object property was therefore truncated at its first INTERNAL comma,
and any string containing an escaped quote was cut short.

    decorators: ["@Roles('OWNER', 'ADMIN')","@Get()"]
    projected as: ["@Roles('OWNER'

This makes decorator/route/authz queries unusable on frameworks whose
decorators take multiple arguments (NestJS, Angular, Spring). Values are now
copied as balanced constructs, honoring string state and escape pairs; scalar
and plain-string paths are unchanged.

Signed-off-by: KolisCode <jhohantma@gmail.com>
2026-07-14 22:31:44 -05:00
Thomas Dyar b9797ecd44 fix(extract): populate body_tokens before MinHash gate; add OS/TS identifier node types
Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
2026-07-14 20:53:58 -04:00
Harshita Joshi feae294c82 Merge branch 'main' into fix/cypher-coalesce-where-874 2026-07-14 18:42:59 -05:00
Martin Vogel feadbe1955 Merge pull request #467 from isc-tdyar/pr/objectscript-language-support
feat(objectscript): InterSystems IRIS ObjectScript language support
2026-07-15 01:33:19 +02:00
Harshita Joshi 755ffe57a5 fix(cypher): support coalesce() and other multi-arg scalar functions in WHERE (#874)
Signed-off-by: Harshita Joshi <j.harshitaa06@gmail.com>
2026-07-14 17:27:00 -05:00
Martin Vogel 6207d16fdf fix(review): keep vendored scanners byte-identical; wide-safe XML sniff
Two review items applied maintainer-side to save a roundtrip:

1. Restore both vendored ObjectScript scanner.c files to the pristine
   upstream bytes (a formatter pass had rewritten indentation/braces).
   Vendored grammar files stay byte-for-byte upstream except for the
   include repoint documented in MANIFEST.md - style churn breaks
   upstream diffability on re-vendor.
2. The Studio Export XML sniff in detect_file_language used a raw
   fopen on a repository path; cbm_fopen keeps it working on
   non-ASCII Windows paths (project rule, same class as #996).

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-15 00:04:05 +02:00
Martin Vogel 37ef5b5d47 Merge pull request #1069 from DeusData/feat/agent-installations
feat: expand coverage-aware agent integrations
2026-07-14 22:47:01 +02:00
Martin Vogel aa2366811b fix: eliminate installer filesystem races
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 21:13:52 +02:00
Martin Vogel 50df0997cf fix: scope legacy shim cleanup to Windows
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 19:25:45 +02:00
Martin Vogel 5ae6ef7875 fix: migrate Windows Claude hook scripts safely
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 19:08:54 +02:00
Martin Vogel c22020d18d test: cover Windows hook migration safety
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-14 18:50:35 +02:00
Charles Queiroz 041eb99c11 fix: compose JAX-RS method-level @Path with class-level prefix (#1005)
JAX-RS splits a route across two annotations: the verb comes from a bare
@GET/@POST/... and the path from a sibling @Path. The annotation scan
returned on the first mapping annotation, so the @GET matched, defaulted
the path to "/" and the sibling @Path was never read. Class-level @Path
was never recognized as a prefix either, because a lone @Path carries no
verb and the scan reported no route.

scan_route_annotations() now collects the whole annotation set (mapping
verb + optional inline path, and a separate JAX-RS @Path), then:
- method-level: verb required; path = inline mapping path, else @Path,
  else "/"
- class-level prefix: inline mapping path, else @Path
Also recognizes bare @HEAD/@OPTIONS verbs.

Spring behavior is unchanged (mapping annotations keep their inline
path); covered by the existing test suite plus a new regression test.

Signed-off-by: Charles Queiroz <fcqueiroz@liquibase.com>
2026-07-13 23:17:08 -03:00
Nikita Bige 45b9a5c5e1 fix(sqlite_writer): publish rebuilt db atomically
Keep the live database visible until a synced temporary generation can
replace it. Preserve destination sidecars on replacement failure and use
UTF-8-safe Windows file operations.

Signed-off-by: Nikita Bige <wargloom@gmail.com>
2026-07-13 11:43:00 +03:00
Blank_Answer 99d39192cd fix(cpp): remap preprocessed recovery lines
Signed-off-by: Blank_Answer <97771966+blankanswer@users.noreply.github.com>
2026-07-13 05:21:54 +00:00
Martin Vogel 9cda693acb fix: converge exact-owned hook updates
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 06:28:17 +02:00
Martin Vogel 90fab0844a test: model Windows agent hook contracts
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 05:21:55 +02:00
Martin Vogel ecc6a5fdcd fix: migrate legacy Windows hook commands
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 05:21:36 +02:00
Martin Vogel be1e98fd99 test: write Windows fixtures byte-exactly
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 04:17:58 +02:00
Martin Vogel eb203ff6fa test: guard POSIX filesystem checks on Windows
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 03:31:31 +02:00
Martin Vogel 2a6a49246f test: make path extraction newline-safe
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 03:08:29 +02:00
Martin Vogel e93f19d7fb test: normalize Windows instruction paths
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:57:34 +02:00
Martin Vogel 62d191b6d1 fix: restore cross-platform lint and builds
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:46:04 +02:00
Martin Vogel 978baaa2f7 fix(ci): classify large pull requests safely
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:21:25 +02:00
Martin Vogel 75aaf417aa test(cli): expand tiered agent smoke coverage
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:18:33 +02:00
Martin Vogel a537d3bd84 fix(cli): make Windows Claude hooks shell portable
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:18:10 +02:00
Martin Vogel 2040488cf4 fix(cli): preserve hook compatibility after rebase
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:00:44 +02:00
Martin Vogel d6c9d28bf5 style: apply current C formatting
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-07-13 02:00:32 +02:00