@c4a/extract-go 0.7.0 → 0.7.4

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 CHANGED
@@ -7,11 +7,9 @@ knowledge projects. It extracts declarations, signatures, documentation,
7
7
  imports, calls, and common HTTP route registrations without assigning
8
8
  product-specific meaning.
9
9
 
10
- This is an optional structural package. The Context runtime does not bundle it
11
- or add a Go lifecycle phase automatically. A knowledge project opts in through
12
- its own `extractCustom()` adapter, maps the returned facts to project-owned
13
- candidates, and keeps review, evidence, freshness, close, and build under the
14
- normal Context workflow.
10
+ This is an optional structural package used by a Code Indexer Provider. The
11
+ Provider maps its facts into the current Indexer result; Context owns Candidate
12
+ state, Review, freshness, close, and build.
15
13
 
16
14
  ## Place in the knowledge workflow
17
15
 
@@ -20,7 +18,7 @@ confirmed Go repository boundary
20
18
  ↓
21
19
  Go structural index
22
20
  ↓
23
- project-owned extractCustom() mapping
21
+ selected Code Indexer Provider
24
22
  ↓
25
23
  Context candidates → review → approved knowledge
26
24
  ```
@@ -52,10 +50,9 @@ knowledge project and its Agent workflow.
52
50
 
53
51
  ## When to use it
54
52
 
55
- Use this package when a Context workspace needs Go symbols or relationships and
56
- the project can define how those structures should become knowledge. Do not add
57
- a generic Go phase solely to avoid writing the project mapping: a language
58
- parser cannot know the audience, product boundaries, or useful knowledge shape.
53
+ Use this package when a Code Indexer Provider needs Go symbols or relationships.
54
+ A language parser cannot decide the audience, product boundaries, or useful
55
+ knowledge shape; those remain Provider responsibilities.
59
56
 
60
57
  ## Development
61
58
 
package/README.zh-CN.md CHANGED
@@ -5,9 +5,9 @@
5
5
  `@c4a/extract-go` 为 Context 知识项目提供确定性的 Go 结构事实。它提取声明、签名、
6
6
  源码文档、导入、调用关系和常见 HTTP 路由注册,但不赋予产品专属含义。
7
7
 
8
- 这是可选结构包。Context 运行时不会内置它,也不会自动增加 Go 生命周期阶段。知识
9
- 项目通过自己的 `extractCustom()` Adapter 显式使用,把结构事实映射成项目候选;
10
- 审核、证据、新鲜度、close 和构建继续由标准 Context 工作流负责。
8
+ 这是 Code Indexer Provider 按需使用的可选结构包。Provider 把结构事实映射到
9
+ 当前 Indexer Result;Candidate 状态、审核、新鲜度、close 和构建继续由 Context
10
+ 负责。
11
11
 
12
12
  ## 在知识生产链中的位置
13
13
 
@@ -16,7 +16,7 @@
16
16
  ↓
17
17
  Go 结构索引
18
18
  ↓
19
- 项目自有 extractCustom() 映射
19
+ 选中的 Code Indexer Provider
20
20
  ↓
21
21
  Context 候选 → 审核 → 正式知识
22
22
  ```
@@ -45,9 +45,8 @@ import {
45
45
 
46
46
  ## 适用场景
47
47
 
48
- 当 Context 工作区需要 Go 符号或关系,并且项目能够说明这些结构应该如何转化为知识
49
- 时使用本包。不要仅为了省去项目映射就添加通用 Go phase:语言解析器无法知道目标
50
- 读者、产品边界或有价值的知识形态。
48
+ 当 Code Indexer Provider 需要 Go 符号或关系时使用本包。语言解析器无法决定目标
49
+ 读者、产品边界或有价值的知识形态,这些仍由 Provider 负责。
51
50
 
52
51
  ## 开发
53
52
 
package/index.js CHANGED
@@ -11404,6 +11404,8 @@ function keyTokens(key) {
11404
11404
  return key.replace(/([a-z0-9])([A-Z])/gu, "$1-$2").replace(/[^A-Za-z0-9]+/gu, "-").toLowerCase().split("-").filter(Boolean);
11405
11405
  }
11406
11406
  function sensitiveKey(key, value) {
11407
+ if (value === INDEXER_OUTPUT_REDACTION_MARKER)
11408
+ return false;
11407
11409
  const tokens = keyTokens(key);
11408
11410
  if (tokens.length === 0)
11409
11411
  return false;
@@ -11445,12 +11447,12 @@ function replaceWithCount(value, pattern, replacement, count) {
11445
11447
  function redactKnownText(value, count) {
11446
11448
  let output = value;
11447
11449
  output = replaceWithCount(output, /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/gu, INDEXER_OUTPUT_REDACTION_MARKER, count);
11448
- output = replaceWithCount(output, /(\bauthorization\s*:\s*(?:bearer|basic)\s+)[^\s,;]+/giu, (_match, prefix) => `${prefix}${INDEXER_OUTPUT_REDACTION_MARKER}`, count);
11450
+ output = replaceWithCount(output, new RegExp(`(\\bauthorization\\s*:\\s*(?:bearer|basic)\\s+)` + `(?!${escapeRegExp(INDEXER_OUTPUT_REDACTION_MARKER)})[^\\s,;]+`, "giu"), (_match, prefix) => `${prefix}${INDEXER_OUTPUT_REDACTION_MARKER}`, count);
11449
11451
  output = replaceWithCount(output, /([a-z][a-z0-9+.-]*:\/\/)[^\s/@:]+:[^\s/@]+@/giu, (_match, prefix) => `${prefix}${INDEXER_OUTPUT_REDACTION_MARKER}@`, count);
11450
- output = replaceWithCount(output, /([?&](?:access_token|refresh_token|api_key|password|secret)=)[^&#\s]+/giu, (_match, prefix) => `${prefix}${INDEXER_OUTPUT_REDACTION_MARKER}`, count);
11452
+ output = replaceWithCount(output, new RegExp(`([?&](?:access_token|refresh_token|api_key|password|secret)=)` + `(?!${escapeRegExp(INDEXER_OUTPUT_REDACTION_MARKER)})[^&#\\s]+`, "giu"), (_match, prefix) => `${prefix}${INDEXER_OUTPUT_REDACTION_MARKER}`, count);
11451
11453
  const key = "(?:[A-Za-z0-9_.-]*(?:password|passwd|pwd|secret|token|credential|cookie)[A-Za-z0-9_.-]*|api[-_]?key|access[-_]?(?:key|token)|private[-_]?key|client[-_]?secret|authorization)";
11452
11454
  const assignment = `(?:=\\s*|:\\s+(?=\\S)|:\\s*(?=["']))`;
11453
- output = replaceWithCount(output, new RegExp(`((?:["']?${key}["']?)\\s*${assignment})(?:"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|[^\\s,;}\\]]+)`, "giu"), (_match, prefix) => `${prefix}"${INDEXER_OUTPUT_REDACTION_MARKER}"`, count);
11455
+ output = replaceWithCount(output, new RegExp(`((?:["']?${key}["']?)\\s*${assignment})` + `(?!["']?${escapeRegExp(INDEXER_OUTPUT_REDACTION_MARKER)})` + `(?:"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|[^\\s,;}\\]]+)`, "giu"), (_match, prefix) => `${prefix}"${INDEXER_OUTPUT_REDACTION_MARKER}"`, count);
11454
11456
  return output;
11455
11457
  }
11456
11458
  function redactBlockedText(value, blocked, count) {
@@ -11718,6 +11720,25 @@ function createIndexerEvidenceAdapterFact(input) {
11718
11720
  FACT_PAYLOADS.set(fact2, payload);
11719
11721
  return fact2;
11720
11722
  }
11723
+ function indexerEvidenceAdapterFactPayloads(result) {
11724
+ const payloads = result.files.flatMap((file) => file.facts.map((fact2) => {
11725
+ const payload = FACT_PAYLOADS.get(fact2);
11726
+ if (payload === undefined) {
11727
+ throw new TypeError(`Evidence Adapter fact payload ${fact2.fact_ref} is no longer materialized in this process`);
11728
+ }
11729
+ if (indexerEvidenceAdapterProtocolDigest(payload) !== fact2.payload_digest) {
11730
+ throw new TypeError(`Evidence Adapter fact payload ${fact2.fact_ref} is stale`);
11731
+ }
11732
+ return { fact_ref: fact2.fact_ref, payload };
11733
+ })).sort((left, right) => compareCanonicalText(left.fact_ref, right.fact_ref));
11734
+ return assertIndexerOutputSafe({ channel: "ipc-envelope", value: payloads });
11735
+ }
11736
+ function materializeIndexerEvidenceAdapterResult(result) {
11737
+ return {
11738
+ result,
11739
+ fact_payloads: indexerEvidenceAdapterFactPayloads(result)
11740
+ };
11741
+ }
11721
11742
  function indexerEvidenceAdapterOutputDigest(value) {
11722
11743
  return indexerEvidenceAdapterProtocolDigest(value);
11723
11744
  }
@@ -12215,6 +12236,8 @@ function extractCallsAndRoutes(root, filePath, imports) {
12215
12236
  const args = call.childForFieldName("arguments")?.namedChildren ?? [];
12216
12237
  if (!functionNode)
12217
12238
  continue;
12239
+ if (functionNode.type === "func_literal")
12240
+ continue;
12218
12241
  const functionText = compact(functionNode.text);
12219
12242
  const selectorPath = [...functionText.matchAll(/[A-Za-z_]\w*/gu)].map((match) => match[0]);
12220
12243
  const selector = /^[A-Za-z_]\w*(?:\.|\()/u.test(functionText) && selectorPath.length >= 2 ? selectorPath : undefined;
@@ -12834,6 +12857,10 @@ var codeExtractRunnerInputSchema = exports_external.object({
12834
12857
  });
12835
12858
  // ../extract/src/evidenceAdapter.ts
12836
12859
  function fact2(input) {
12860
+ const payload = redactIndexerOutput({
12861
+ channel: "success-payload",
12862
+ value: input.payload
12863
+ }).value;
12837
12864
  return createIndexerEvidenceAdapterFact({
12838
12865
  source_ref: input.sourceRef,
12839
12866
  module_ref: input.moduleRef,
@@ -12841,10 +12868,21 @@ function fact2(input) {
12841
12868
  qualified_item_path: input.qualifiedItemPath,
12842
12869
  kind: input.kind,
12843
12870
  signature: input.signature,
12844
- payload: input.payload,
12871
+ payload,
12845
12872
  denominator: input.denominator
12846
12873
  });
12847
12874
  }
12875
+ function uniqueFacts(facts) {
12876
+ const byRef = new Map;
12877
+ for (const value of facts) {
12878
+ const previous = byRef.get(value.fact_ref);
12879
+ if (previous !== undefined && indexerEvidenceAdapterProtocolDigest(previous) !== indexerEvidenceAdapterProtocolDigest(value)) {
12880
+ throw new TypeError(`ExtractionResult emits conflicting facts for ${value.fact_ref}`);
12881
+ }
12882
+ byRef.set(value.fact_ref, previous ?? value);
12883
+ }
12884
+ return [...byRef.values()];
12885
+ }
12848
12886
  function semanticExtractionPayload(extraction) {
12849
12887
  return {
12850
12888
  version: extraction.version,
@@ -12861,7 +12899,9 @@ function semanticExtractionPayload(extraction) {
12861
12899
  stats: extraction.stats
12862
12900
  };
12863
12901
  }
12864
- function relationSourceFile(relation, symbols) {
12902
+ function relationSourceFile(relation, symbols, filePaths) {
12903
+ if (filePaths.has(relation.from))
12904
+ return relation.from;
12865
12905
  const candidates = symbols.filter((symbol) => symbol.name === relation.from);
12866
12906
  if (candidates.length === 1)
12867
12907
  return candidates[0].file;
@@ -12872,6 +12912,13 @@ function relationSourceFile(relation, symbols) {
12872
12912
  }
12873
12913
  return null;
12874
12914
  }
12915
+ function relationQualifiedItemPath(relation) {
12916
+ const identityDigest = indexerEvidenceAdapterProtocolDigest({
12917
+ from: relation.from,
12918
+ to: relation.to
12919
+ });
12920
+ return `relation:${relation.type}@${relation.line ?? 0}#${identityDigest}`;
12921
+ }
12875
12922
  function diagnosticPayload(diagnostic) {
12876
12923
  return {
12877
12924
  code: diagnostic.code,
@@ -12891,6 +12938,7 @@ function extractionResultToEvidenceAdapterResult(extraction, invocation) {
12891
12938
  }
12892
12939
  const coverageByPath = new Map(coverage.files.map((file) => [file.path, file]));
12893
12940
  const fileInfoByPath = new Map(extraction.files.map((file) => [file.path, file]));
12941
+ const filePaths = new Set([...coverageByPath.keys(), ...fileInfoByPath.keys()]);
12894
12942
  for (const file of extraction.files) {
12895
12943
  if (!coverageByPath.has(file.path)) {
12896
12944
  throw new TypeError(`ExtractionResult file ${file.path} has no coverage disposition`);
@@ -12907,7 +12955,7 @@ function extractionResultToEvidenceAdapterResult(extraction, invocation) {
12907
12955
  const generatedDiagnostics = [];
12908
12956
  const relationsByFile = new Map;
12909
12957
  for (const relation of extraction.relations) {
12910
- const file = relationSourceFile(relation, extraction.symbols);
12958
+ const file = relationSourceFile(relation, extraction.symbols, filePaths);
12911
12959
  if (file === null || coverageByPath.get(file)?.disposition !== "analyzed") {
12912
12960
  generatedDiagnostics.push({
12913
12961
  code: "relation-locator-unresolved",
@@ -12977,7 +13025,7 @@ function extractionResultToEvidenceAdapterResult(extraction, invocation) {
12977
13025
  sourceRef: invocation.authorized_scope.source_ref,
12978
13026
  moduleRef: invocation.module_ref,
12979
13027
  normalizedPath,
12980
- qualifiedItemPath: `relation:${relation.type}:${relation.from}->${relation.to}@${relation.line ?? 0}`,
13028
+ qualifiedItemPath: relationQualifiedItemPath(relation),
12981
13029
  kind: "code-relation",
12982
13030
  signature: relation,
12983
13031
  payload: relation,
@@ -12993,7 +13041,7 @@ function extractionResultToEvidenceAdapterResult(extraction, invocation) {
12993
13041
  role,
12994
13042
  coverage_tier: coverage.tier,
12995
13043
  disposition: coverageFile.disposition,
12996
- facts
13044
+ facts: uniqueFacts(facts)
12997
13045
  };
12998
13046
  });
12999
13047
  const diagnostics = [
@@ -13034,6 +13082,184 @@ function extractionResultToEvidenceAdapterResult(extraction, invocation) {
13034
13082
  }]
13035
13083
  });
13036
13084
  }
13085
+ // ../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
13086
+ var CharacterCodes;
13087
+ (function(CharacterCodes2) {
13088
+ CharacterCodes2[CharacterCodes2["lineFeed"] = 10] = "lineFeed";
13089
+ CharacterCodes2[CharacterCodes2["carriageReturn"] = 13] = "carriageReturn";
13090
+ CharacterCodes2[CharacterCodes2["space"] = 32] = "space";
13091
+ CharacterCodes2[CharacterCodes2["_0"] = 48] = "_0";
13092
+ CharacterCodes2[CharacterCodes2["_1"] = 49] = "_1";
13093
+ CharacterCodes2[CharacterCodes2["_2"] = 50] = "_2";
13094
+ CharacterCodes2[CharacterCodes2["_3"] = 51] = "_3";
13095
+ CharacterCodes2[CharacterCodes2["_4"] = 52] = "_4";
13096
+ CharacterCodes2[CharacterCodes2["_5"] = 53] = "_5";
13097
+ CharacterCodes2[CharacterCodes2["_6"] = 54] = "_6";
13098
+ CharacterCodes2[CharacterCodes2["_7"] = 55] = "_7";
13099
+ CharacterCodes2[CharacterCodes2["_8"] = 56] = "_8";
13100
+ CharacterCodes2[CharacterCodes2["_9"] = 57] = "_9";
13101
+ CharacterCodes2[CharacterCodes2["a"] = 97] = "a";
13102
+ CharacterCodes2[CharacterCodes2["b"] = 98] = "b";
13103
+ CharacterCodes2[CharacterCodes2["c"] = 99] = "c";
13104
+ CharacterCodes2[CharacterCodes2["d"] = 100] = "d";
13105
+ CharacterCodes2[CharacterCodes2["e"] = 101] = "e";
13106
+ CharacterCodes2[CharacterCodes2["f"] = 102] = "f";
13107
+ CharacterCodes2[CharacterCodes2["g"] = 103] = "g";
13108
+ CharacterCodes2[CharacterCodes2["h"] = 104] = "h";
13109
+ CharacterCodes2[CharacterCodes2["i"] = 105] = "i";
13110
+ CharacterCodes2[CharacterCodes2["j"] = 106] = "j";
13111
+ CharacterCodes2[CharacterCodes2["k"] = 107] = "k";
13112
+ CharacterCodes2[CharacterCodes2["l"] = 108] = "l";
13113
+ CharacterCodes2[CharacterCodes2["m"] = 109] = "m";
13114
+ CharacterCodes2[CharacterCodes2["n"] = 110] = "n";
13115
+ CharacterCodes2[CharacterCodes2["o"] = 111] = "o";
13116
+ CharacterCodes2[CharacterCodes2["p"] = 112] = "p";
13117
+ CharacterCodes2[CharacterCodes2["q"] = 113] = "q";
13118
+ CharacterCodes2[CharacterCodes2["r"] = 114] = "r";
13119
+ CharacterCodes2[CharacterCodes2["s"] = 115] = "s";
13120
+ CharacterCodes2[CharacterCodes2["t"] = 116] = "t";
13121
+ CharacterCodes2[CharacterCodes2["u"] = 117] = "u";
13122
+ CharacterCodes2[CharacterCodes2["v"] = 118] = "v";
13123
+ CharacterCodes2[CharacterCodes2["w"] = 119] = "w";
13124
+ CharacterCodes2[CharacterCodes2["x"] = 120] = "x";
13125
+ CharacterCodes2[CharacterCodes2["y"] = 121] = "y";
13126
+ CharacterCodes2[CharacterCodes2["z"] = 122] = "z";
13127
+ CharacterCodes2[CharacterCodes2["A"] = 65] = "A";
13128
+ CharacterCodes2[CharacterCodes2["B"] = 66] = "B";
13129
+ CharacterCodes2[CharacterCodes2["C"] = 67] = "C";
13130
+ CharacterCodes2[CharacterCodes2["D"] = 68] = "D";
13131
+ CharacterCodes2[CharacterCodes2["E"] = 69] = "E";
13132
+ CharacterCodes2[CharacterCodes2["F"] = 70] = "F";
13133
+ CharacterCodes2[CharacterCodes2["G"] = 71] = "G";
13134
+ CharacterCodes2[CharacterCodes2["H"] = 72] = "H";
13135
+ CharacterCodes2[CharacterCodes2["I"] = 73] = "I";
13136
+ CharacterCodes2[CharacterCodes2["J"] = 74] = "J";
13137
+ CharacterCodes2[CharacterCodes2["K"] = 75] = "K";
13138
+ CharacterCodes2[CharacterCodes2["L"] = 76] = "L";
13139
+ CharacterCodes2[CharacterCodes2["M"] = 77] = "M";
13140
+ CharacterCodes2[CharacterCodes2["N"] = 78] = "N";
13141
+ CharacterCodes2[CharacterCodes2["O"] = 79] = "O";
13142
+ CharacterCodes2[CharacterCodes2["P"] = 80] = "P";
13143
+ CharacterCodes2[CharacterCodes2["Q"] = 81] = "Q";
13144
+ CharacterCodes2[CharacterCodes2["R"] = 82] = "R";
13145
+ CharacterCodes2[CharacterCodes2["S"] = 83] = "S";
13146
+ CharacterCodes2[CharacterCodes2["T"] = 84] = "T";
13147
+ CharacterCodes2[CharacterCodes2["U"] = 85] = "U";
13148
+ CharacterCodes2[CharacterCodes2["V"] = 86] = "V";
13149
+ CharacterCodes2[CharacterCodes2["W"] = 87] = "W";
13150
+ CharacterCodes2[CharacterCodes2["X"] = 88] = "X";
13151
+ CharacterCodes2[CharacterCodes2["Y"] = 89] = "Y";
13152
+ CharacterCodes2[CharacterCodes2["Z"] = 90] = "Z";
13153
+ CharacterCodes2[CharacterCodes2["asterisk"] = 42] = "asterisk";
13154
+ CharacterCodes2[CharacterCodes2["backslash"] = 92] = "backslash";
13155
+ CharacterCodes2[CharacterCodes2["closeBrace"] = 125] = "closeBrace";
13156
+ CharacterCodes2[CharacterCodes2["closeBracket"] = 93] = "closeBracket";
13157
+ CharacterCodes2[CharacterCodes2["colon"] = 58] = "colon";
13158
+ CharacterCodes2[CharacterCodes2["comma"] = 44] = "comma";
13159
+ CharacterCodes2[CharacterCodes2["dot"] = 46] = "dot";
13160
+ CharacterCodes2[CharacterCodes2["doubleQuote"] = 34] = "doubleQuote";
13161
+ CharacterCodes2[CharacterCodes2["minus"] = 45] = "minus";
13162
+ CharacterCodes2[CharacterCodes2["openBrace"] = 123] = "openBrace";
13163
+ CharacterCodes2[CharacterCodes2["openBracket"] = 91] = "openBracket";
13164
+ CharacterCodes2[CharacterCodes2["plus"] = 43] = "plus";
13165
+ CharacterCodes2[CharacterCodes2["slash"] = 47] = "slash";
13166
+ CharacterCodes2[CharacterCodes2["formFeed"] = 12] = "formFeed";
13167
+ CharacterCodes2[CharacterCodes2["tab"] = 9] = "tab";
13168
+ })(CharacterCodes || (CharacterCodes = {}));
13169
+
13170
+ // ../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js
13171
+ var cachedSpaces = new Array(20).fill(0).map((_, index) => {
13172
+ return " ".repeat(index);
13173
+ });
13174
+ var maxCachedValues = 200;
13175
+ var cachedBreakLinesWithSpaces = {
13176
+ " ": {
13177
+ "\n": new Array(maxCachedValues).fill(0).map((_, index) => {
13178
+ return `
13179
+ ` + " ".repeat(index);
13180
+ }),
13181
+ "\r": new Array(maxCachedValues).fill(0).map((_, index) => {
13182
+ return "\r" + " ".repeat(index);
13183
+ }),
13184
+ "\r\n": new Array(maxCachedValues).fill(0).map((_, index) => {
13185
+ return `\r
13186
+ ` + " ".repeat(index);
13187
+ })
13188
+ },
13189
+ "\t": {
13190
+ "\n": new Array(maxCachedValues).fill(0).map((_, index) => {
13191
+ return `
13192
+ ` + "\t".repeat(index);
13193
+ }),
13194
+ "\r": new Array(maxCachedValues).fill(0).map((_, index) => {
13195
+ return "\r" + "\t".repeat(index);
13196
+ }),
13197
+ "\r\n": new Array(maxCachedValues).fill(0).map((_, index) => {
13198
+ return `\r
13199
+ ` + "\t".repeat(index);
13200
+ })
13201
+ }
13202
+ };
13203
+
13204
+ // ../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js
13205
+ var ParseOptions;
13206
+ (function(ParseOptions2) {
13207
+ ParseOptions2.DEFAULT = {
13208
+ allowTrailingComma: false
13209
+ };
13210
+ })(ParseOptions || (ParseOptions = {}));
13211
+
13212
+ // ../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js
13213
+ var ScanError;
13214
+ (function(ScanError2) {
13215
+ ScanError2[ScanError2["None"] = 0] = "None";
13216
+ ScanError2[ScanError2["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
13217
+ ScanError2[ScanError2["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
13218
+ ScanError2[ScanError2["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
13219
+ ScanError2[ScanError2["InvalidUnicode"] = 4] = "InvalidUnicode";
13220
+ ScanError2[ScanError2["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
13221
+ ScanError2[ScanError2["InvalidCharacter"] = 6] = "InvalidCharacter";
13222
+ })(ScanError || (ScanError = {}));
13223
+ var SyntaxKind;
13224
+ (function(SyntaxKind2) {
13225
+ SyntaxKind2[SyntaxKind2["OpenBraceToken"] = 1] = "OpenBraceToken";
13226
+ SyntaxKind2[SyntaxKind2["CloseBraceToken"] = 2] = "CloseBraceToken";
13227
+ SyntaxKind2[SyntaxKind2["OpenBracketToken"] = 3] = "OpenBracketToken";
13228
+ SyntaxKind2[SyntaxKind2["CloseBracketToken"] = 4] = "CloseBracketToken";
13229
+ SyntaxKind2[SyntaxKind2["CommaToken"] = 5] = "CommaToken";
13230
+ SyntaxKind2[SyntaxKind2["ColonToken"] = 6] = "ColonToken";
13231
+ SyntaxKind2[SyntaxKind2["NullKeyword"] = 7] = "NullKeyword";
13232
+ SyntaxKind2[SyntaxKind2["TrueKeyword"] = 8] = "TrueKeyword";
13233
+ SyntaxKind2[SyntaxKind2["FalseKeyword"] = 9] = "FalseKeyword";
13234
+ SyntaxKind2[SyntaxKind2["StringLiteral"] = 10] = "StringLiteral";
13235
+ SyntaxKind2[SyntaxKind2["NumericLiteral"] = 11] = "NumericLiteral";
13236
+ SyntaxKind2[SyntaxKind2["LineCommentTrivia"] = 12] = "LineCommentTrivia";
13237
+ SyntaxKind2[SyntaxKind2["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
13238
+ SyntaxKind2[SyntaxKind2["LineBreakTrivia"] = 14] = "LineBreakTrivia";
13239
+ SyntaxKind2[SyntaxKind2["Trivia"] = 15] = "Trivia";
13240
+ SyntaxKind2[SyntaxKind2["Unknown"] = 16] = "Unknown";
13241
+ SyntaxKind2[SyntaxKind2["EOF"] = 17] = "EOF";
13242
+ })(SyntaxKind || (SyntaxKind = {}));
13243
+ var ParseErrorCode;
13244
+ (function(ParseErrorCode2) {
13245
+ ParseErrorCode2[ParseErrorCode2["InvalidSymbol"] = 1] = "InvalidSymbol";
13246
+ ParseErrorCode2[ParseErrorCode2["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
13247
+ ParseErrorCode2[ParseErrorCode2["PropertyNameExpected"] = 3] = "PropertyNameExpected";
13248
+ ParseErrorCode2[ParseErrorCode2["ValueExpected"] = 4] = "ValueExpected";
13249
+ ParseErrorCode2[ParseErrorCode2["ColonExpected"] = 5] = "ColonExpected";
13250
+ ParseErrorCode2[ParseErrorCode2["CommaExpected"] = 6] = "CommaExpected";
13251
+ ParseErrorCode2[ParseErrorCode2["CloseBraceExpected"] = 7] = "CloseBraceExpected";
13252
+ ParseErrorCode2[ParseErrorCode2["CloseBracketExpected"] = 8] = "CloseBracketExpected";
13253
+ ParseErrorCode2[ParseErrorCode2["EndOfFileExpected"] = 9] = "EndOfFileExpected";
13254
+ ParseErrorCode2[ParseErrorCode2["InvalidCommentToken"] = 10] = "InvalidCommentToken";
13255
+ ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
13256
+ ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
13257
+ ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
13258
+ ParseErrorCode2[ParseErrorCode2["InvalidUnicode"] = 14] = "InvalidUnicode";
13259
+ ParseErrorCode2[ParseErrorCode2["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
13260
+ ParseErrorCode2[ParseErrorCode2["InvalidCharacter"] = 16] = "InvalidCharacter";
13261
+ })(ParseErrorCode || (ParseErrorCode = {}));
13262
+
13037
13263
  // ../../node_modules/.bun/eslint-visitor-keys@5.0.1/node_modules/eslint-visitor-keys/lib/visitor-keys.js
13038
13264
  var KEYS = {
13039
13265
  ArrayExpression: ["elements"],
@@ -13445,9 +13671,13 @@ function goExtractionToEvidenceAdapterResult(extraction, invocation) {
13445
13671
  }
13446
13672
  return extractionResultToEvidenceAdapterResult(extraction, invocation);
13447
13673
  }
13674
+ function goExtractionToEvidenceAdapterMaterialization(extraction, invocation) {
13675
+ return materializeIndexerEvidenceAdapterResult(goExtractionToEvidenceAdapterResult(extraction, invocation));
13676
+ }
13448
13677
  export {
13449
13678
  indexGoSource,
13450
13679
  indexGoRepository,
13451
13680
  goExtractionToEvidenceAdapterResult,
13681
+ goExtractionToEvidenceAdapterMaterialization,
13452
13682
  GoPlugin
13453
13683
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c4a/extract-go",
3
- "version": "0.7.0",
3
+ "version": "0.7.4",
4
4
  "type": "module",
5
5
  "description": "Go extraction plugin and structural index for Context",
6
6
  "license": "MIT",