gitnexus 1.6.13-rc.32 → 1.6.13-rc.34

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.
Files changed (44) hide show
  1. package/dist/mcp/local/query-process-attaches.d.ts +2 -0
  2. package/dist/mcp/local/query-process-attaches.js +15 -1
  3. package/dist/mcp/server.js +1 -1
  4. package/dist/mcp/tools.js +3 -3
  5. package/package.json +1 -1
  6. package/web/assets/{abnfDiagram-PAR5IXJI-CEquxYBT.js → abnfDiagram-PAR5IXJI-nRjsvWp-.js} +1 -1
  7. package/web/assets/agent-Bv5z78CW.js +661 -0
  8. package/web/assets/{architectureDiagram-2PNWDENW-Cf0lyGLK.js → architectureDiagram-2PNWDENW-56fl8SSH.js} +1 -1
  9. package/web/assets/{chunk-32MCUW2P-EygOwohh.js → chunk-32MCUW2P-xLjc0mcF.js} +1 -1
  10. package/web/assets/{chunk-CLS4B6BI-BzVEC32d.js → chunk-CLS4B6BI-DPDLP81t.js} +1 -1
  11. package/web/assets/{chunk-NF366YI6-TsziVz0e.js → chunk-NF366YI6-D2OzsNXY.js} +1 -1
  12. package/web/assets/{chunk-SLDQ463B-CFa4EG_5.js → chunk-SLDQ463B-DUcQswS-.js} +1 -1
  13. package/web/assets/{classDiagram-FGAMPOII-wKYYZBX6.js → classDiagram-FGAMPOII-q43g3Dpn.js} +1 -1
  14. package/web/assets/{classDiagram-v2-AI5RJEK4-wKYYZBX6.js → classDiagram-v2-AI5RJEK4-q43g3Dpn.js} +1 -1
  15. package/web/assets/{cynefinDiagram-2OOWUY4M-C8p2owv_.js → cynefinDiagram-2OOWUY4M-Cfoko1Ws.js} +1 -1
  16. package/web/assets/{dagre-MPVFI544-u2XdhdAA.js → dagre-MPVFI544-CTob3D2r.js} +1 -1
  17. package/web/assets/{diagram-AE4NWXFW-CzK0r5Ey.js → diagram-AE4NWXFW-Dt2xfADa.js} +1 -1
  18. package/web/assets/{diagram-BUJID5UG-BQ6kCQ18.js → diagram-BUJID5UG-D-RUCl07.js} +1 -1
  19. package/web/assets/{diagram-C44CZ5NI-Dm2ZgEt_.js → diagram-C44CZ5NI-B9gPH4Gl.js} +1 -1
  20. package/web/assets/{diagram-EYOLEXXS-EHupnFtc.js → diagram-EYOLEXXS-wR__cI23.js} +1 -1
  21. package/web/assets/{ebnfDiagram-FTPZ3PV6-BokQKfeC.js → ebnfDiagram-FTPZ3PV6-uw79FGz3.js} +1 -1
  22. package/web/assets/{erDiagram-H3ERR26V-ISc5wa62.js → erDiagram-H3ERR26V-ZP_VIa5d.js} +1 -1
  23. package/web/assets/{flowDiagram-YHGXBVSY-Ci_VEN2N.js → flowDiagram-YHGXBVSY-DEsmG3vH.js} +1 -1
  24. package/web/assets/{index-KP8c37v_.js → index-DofRiYRj.js} +5 -5
  25. package/web/assets/{infoDiagram-LV547AFH-C3_YrX-s.js → infoDiagram-LV547AFH-D1JPzJlf.js} +1 -1
  26. package/web/assets/{ishikawaDiagram-PUJQGNDS-DteccaAl.js → ishikawaDiagram-PUJQGNDS-DxWZMRPX.js} +1 -1
  27. package/web/assets/{kanban-definition-JSQERAZB-CEkpRKim.js → kanban-definition-JSQERAZB-S1lKJN_M.js} +1 -1
  28. package/web/assets/{mindmap-definition-VBJCLQLM-CZ2j1Sxa.js → mindmap-definition-VBJCLQLM-JwX0Gc3J.js} +1 -1
  29. package/web/assets/{node.browser-CvPQBkIh.js → node.browser-C9G7Ehhe.js} +1 -1
  30. package/web/assets/{pegDiagram-7WILOQTJ-aCKOTya8.js → pegDiagram-7WILOQTJ-DJWiAJJM.js} +1 -1
  31. package/web/assets/{pieDiagram-EFA7CBSB-BYDQy_vg.js → pieDiagram-EFA7CBSB-3i7IEboS.js} +1 -1
  32. package/web/assets/{railroadDiagram-5NIQVNLQ-DoNWuRU8.js → railroadDiagram-5NIQVNLQ-CQGcjlaN.js} +1 -1
  33. package/web/assets/{requirementDiagram-SXREGOKZ-khk5oGY9.js → requirementDiagram-SXREGOKZ-DH-LMk5X.js} +1 -1
  34. package/web/assets/{sequenceDiagram-52ZFIFDL-BsW2m7Mm.js → sequenceDiagram-52ZFIFDL-CrUW-Kdw.js} +1 -1
  35. package/web/assets/{stateDiagram-3QAKPIVI-POKiuiuV.js → stateDiagram-3QAKPIVI-BuvX8wUJ.js} +1 -1
  36. package/web/assets/{stateDiagram-v2-HN2P4RDZ-BRxKM3Jm.js → stateDiagram-v2-HN2P4RDZ-N7DodpOh.js} +1 -1
  37. package/web/assets/{swimlanes-QLVP42QD-DJ0zrlzS.js → swimlanes-QLVP42QD-DpvGI6UP.js} +1 -1
  38. package/web/assets/{swimlanesDiagram-JKPDBFCN-znissWRa.js → swimlanesDiagram-JKPDBFCN-Rd-o-as4.js} +1 -1
  39. package/web/assets/{timeline-definition-GS45XAXW-DhJfNv3O.js → timeline-definition-GS45XAXW-B9Rw1d9t.js} +1 -1
  40. package/web/assets/{vennDiagram-QIQU2ZRJ-D_6OpoXC.js → vennDiagram-QIQU2ZRJ-CGo08RCI.js} +1 -1
  41. package/web/assets/{wardleyDiagram-U6YNM66N-BUjega_O.js → wardleyDiagram-U6YNM66N-Dk7T5hBn.js} +1 -1
  42. package/web/assets/{xychartDiagram-XJAZEDNM-BUHwaFBv.js → xychartDiagram-XJAZEDNM-BJr5UGSi.js} +1 -1
  43. package/web/index.html +1 -1
  44. package/web/assets/agent-qPCd93oc.js +0 -656
@@ -5,6 +5,8 @@
5
5
  * Aggregation already pushes a hub onto every owning process. This helper
6
6
  * is the last shaping step: slice each process to `max_symbols`, keep one
7
7
  * row per `(id, process_id)`, then set `symbol_count` from those rows.
8
+ * `content` stays only on the first row for each symbol id so a hub in
9
+ * many flows does not repeat its source text.
8
10
  */
9
11
  export type QueryProcessAttach = {
10
12
  id: string;
@@ -5,6 +5,8 @@
5
5
  * Aggregation already pushes a hub onto every owning process. This helper
6
6
  * is the last shaping step: slice each process to `max_symbols`, keep one
7
7
  * row per `(id, process_id)`, then set `symbol_count` from those rows.
8
+ * `content` stays only on the first row for each symbol id so a hub in
9
+ * many flows does not repeat its source text.
8
10
  */
9
11
  /**
10
12
  * Pair key for attach rows. Both `id` and `process_id` routinely contain
@@ -16,6 +18,7 @@ function attachPairKey(id, processId) {
16
18
  export function shapeQueryProcessAttaches(rankedProcesses, options) {
17
19
  const { maxSymbolsPerProcess, chainByProcessId } = options;
18
20
  const seen = new Set();
21
+ const contentSeen = new Set();
19
22
  const process_symbols = [];
20
23
  const countByProcess = new Map();
21
24
  for (const p of rankedProcesses) {
@@ -24,7 +27,18 @@ export function shapeQueryProcessAttaches(rankedProcesses, options) {
24
27
  if (seen.has(key))
25
28
  continue;
26
29
  seen.add(key);
27
- const row = p.entryPointId && s.id === p.entryPointId ? { ...s, is_entry_point: true } : s;
30
+ let row = s;
31
+ if (s.content !== undefined) {
32
+ if (contentSeen.has(s.id)) {
33
+ const { content: _content, ...rest } = s;
34
+ row = rest;
35
+ }
36
+ else {
37
+ contentSeen.add(s.id);
38
+ }
39
+ }
40
+ if (p.entryPointId && s.id === p.entryPointId)
41
+ row = { ...row, is_entry_point: true };
28
42
  process_symbols.push(row);
29
43
  countByProcess.set(s.process_id, (countByProcess.get(s.process_id) ?? 0) + 1);
30
44
  }
@@ -38,7 +38,7 @@ function getNextStepHint(toolName, args) {
38
38
  case 'list_repos':
39
39
  return `\n\n---\n**Next:** READ gitnexus://repo/{name}/context for any repo above to get its overview and check staleness. If pagination.hasMore is true, call list_repos again with offset set to pagination.nextOffset to fetch the rest.`;
40
40
  case 'query':
41
- return `\n\n---\n**Next:** To understand a specific symbol in depth, use context({name: "<symbol_name>"${repoParam}}) to see categorized refs and process participation.`;
41
+ return `\n\n---\n**Next:** To understand a specific symbol in depth, use context({name: "<symbol_name>"${repoParam}}) to see categorized refs and process participation.${args?.include_content === true ? ` For source of a process_symbols row without content, use context({uid: "<id>", include_content: true${repoParam}}).` : ''}`;
42
42
  case 'context':
43
43
  return `\n\n---\n**Next:** If planning changes, use impact({target: "${args?.name || '<name>'}", direction: "upstream"${repoParam}}) to check blast radius. To see execution flows, READ gitnexus://repo/${repoPath}/processes.`;
44
44
  case 'impact':
package/dist/mcp/tools.js CHANGED
@@ -103,11 +103,11 @@ specify the "repo" parameter explicitly.`,
103
103
  Returns ranked processes plus a flat process_symbols list. Join processes[].id to process_symbols[].process_id.
104
104
 
105
105
  WHEN TO USE: Understanding how code works together. Use this when you need execution flows and relationships, not just file matches. Complements grep/IDE search.
106
- AFTER THIS: Use context() on a specific symbol for 360-degree view (callers, callees, categorized refs).
106
+ AFTER THIS: Use context() on a specific symbol for 360-degree view (callers, callees, categorized refs). With include_content, context() also returns that symbol's source.
107
107
 
108
108
  Returns results grouped by process (execution flow):
109
109
  - processes: ranked execution flows with relevance priority. When a process has an HTTP endpoint, each item includes route and method string aliases plus routes: [{ url, method? }] (same shape as context). When chain_depth > 0, each item also includes chain — layered upstream callers + downstream callees from the process entry symbol (same BFS as context({chain_depth})).
110
- - process_symbols: search-hit symbols in those flows with file locations and module (functional area). On the single-repo envelope { processes, process_symbols, definitions }: One row per (id, process_id) — the same symbol id may appear under more than one process. Join a process to its rows by process_id; symbol_count is the number of those rows. When the process entry is among those hits, it is marked is_entry_point: true. A repo of "@<group>" returns { group, query, results, per_repo } and does not include process_symbols. results[].symbol_count is the member's post-slice attach count; when service is set, it counts only attaches under that prefix. To get process_symbols for one member, query again with repo "@<group>/<memberPath>" (member path from group.yaml, or results[]._repo).
110
+ - process_symbols: search-hit symbols in those flows with file locations and module (functional area). On the single-repo envelope { processes, process_symbols, definitions }: One row per (id, process_id) — the same symbol id may appear under more than one process. Join a process to its rows by process_id; symbol_count is the number of those rows. When the process entry is among those hits, it is marked is_entry_point: true. With include_content, content appears only on the first row for each symbol id across the whole process_symbols array, not per process; later rows for that id omit it, even under a different process_id. To get content for a row without it, find the earlier row with the same id, or call context({uid: "<id>", include_content: true}). A repo of "@<group>" returns { group, query, results, per_repo } and does not include process_symbols. results[].symbol_count is the member's post-slice attach count; when service is set, it counts only attaches under that prefix. To get process_symbols for one member, query again with repo "@<group>/<memberPath>" (member path from group.yaml, or results[]._repo).
111
111
  - definitions: standalone types/interfaces not in any process. Keyword hits on Route URLs (route_fts) are bridged to their handler via HANDLES_ROUTE (handlerSymbolId, routes) when the edge exists; use route_map({route}) for the full HTTP surface.
112
112
 
113
113
  Hybrid ranking: BM25 keyword + semantic vector search, ranked by Reciprocal Rank Fusion.
@@ -153,7 +153,7 @@ ${HOT_READ_STALENESS_NOTE}`,
153
153
  },
154
154
  include_content: {
155
155
  type: 'boolean',
156
- description: 'Include source text retained for matching symbols (default: false). The response reports contentAvailability; indexes built with content retention "none" explicitly report unavailable content.',
156
+ description: 'Include source text retained for matching symbols (default: false). The response reports contentAvailability; indexes built with content retention "none" explicitly report unavailable content. Content is sent once per symbol id, on its first process_symbols row; context({uid: "<id>", include_content: true}) returns it for any row.',
157
157
  default: false,
158
158
  },
159
159
  chain_depth: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitnexus",
3
- "version": "1.6.13-rc.32",
3
+ "version": "1.6.13-rc.34",
4
4
  "description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
5
5
  "author": "Abhigyan Patwari",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -1 +1 @@
1
- import{t as e}from"./chunk-AQ6EADP3-CZhslHi-.js";import{q as t}from"./chunk-H7VHZCWX-DeYY8PhK.js";import"./chunk-QJSWEUOL-Z1JC3KaI.js";import"./index-KP8c37v_.js";import{n,r,t as i}from"./chunk-SLDQ463B-CFa4EG_5.js";import{t as a}from"./chunk-JQRUD6KW-Dbva2Z17.js";import{M as o,b as s}from"./chunk-ZUNWM646-DK-0GkFY.js";var c=s().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{a(e,r),e.title&&r.setTitle(e.title),e.rules.map(e=>r.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{r.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new o(n);let i=n.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:r}},db:r,renderer:n,styles:i};export{g as diagram};
1
+ import{t as e}from"./chunk-AQ6EADP3-CZhslHi-.js";import{q as t}from"./chunk-H7VHZCWX-DeYY8PhK.js";import"./chunk-QJSWEUOL-Z1JC3KaI.js";import"./index-DofRiYRj.js";import{n,r,t as i}from"./chunk-SLDQ463B-DUcQswS-.js";import{t as a}from"./chunk-JQRUD6KW-Dbva2Z17.js";import{M as o,b as s}from"./chunk-ZUNWM646-DK-0GkFY.js";var c=s().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{a(e,r),e.title&&r.setTitle(e.title),e.rules.map(e=>r.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{r.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new o(n);let i=n.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:r}},db:r,renderer:n,styles:i};export{g as diagram};