cgraphx 1.2.0 → 1.3.0

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 (136) hide show
  1. package/dist/.claude-template/hooks/precommit-check/precommit-check.cjs +90 -0
  2. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +99 -78
  3. package/dist/.claude-template/skills/precommit-review/SKILL.md +50 -0
  4. package/dist/.claude-template/skills/run-api-test/SKILL.md +187 -0
  5. package/dist/.claude-template/skills/run-api-test/assets/template-test-report.md +103 -0
  6. package/dist/.claude-template/skills/run-api-test/assets/template-test-verify.jsonl +5 -0
  7. package/dist/.claude-template/skills/run-api-test/references/bru-run.md +60 -0
  8. package/dist/.claude-template/skills/run-api-test/references/db-verification.md +81 -0
  9. package/dist/.claude-template/skills/run-api-test/references/report-format.md +104 -0
  10. package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +61 -0
  11. package/dist/.claude-template/skills/run-api-test/references/test-scope.md +64 -0
  12. package/dist/.claude-template/skills/write-api/SKILL.md +150 -0
  13. package/dist/.claude-template/skills/write-api/assets/template-api-spec.md +112 -0
  14. package/dist/.claude-template/skills/write-api/assets/template-request.bru +75 -0
  15. package/dist/.claude-template/skills/write-api/references/ai-prompts.md +133 -0
  16. package/dist/.claude-template/skills/write-api/references/api-spec-format.md +108 -0
  17. package/dist/.claude-template/skills/write-api/references/bru-format.md +144 -0
  18. package/dist/.claude-template/skills/write-api/references/collection-layout.md +81 -0
  19. package/dist/.claude-template/skills/write-api/references/environment-setup.md +105 -0
  20. package/dist/.claude-template/skills/write-api/references/interface-scope.md +74 -0
  21. package/dist/api-test/ai-fields.d.ts +37 -0
  22. package/dist/api-test/ai-fields.d.ts.map +1 -0
  23. package/dist/api-test/ai-fields.js +114 -0
  24. package/dist/api-test/ai-fields.js.map +1 -0
  25. package/dist/api-test/assemble.d.ts +76 -0
  26. package/dist/api-test/assemble.d.ts.map +1 -0
  27. package/dist/api-test/assemble.js +185 -0
  28. package/dist/api-test/assemble.js.map +1 -0
  29. package/dist/api-test/bru-cli-invoker.d.ts +72 -0
  30. package/dist/api-test/bru-cli-invoker.d.ts.map +1 -0
  31. package/dist/api-test/bru-cli-invoker.js +169 -0
  32. package/dist/api-test/bru-cli-invoker.js.map +1 -0
  33. package/dist/api-test/bru-report-parser.d.ts +24 -0
  34. package/dist/api-test/bru-report-parser.d.ts.map +1 -0
  35. package/dist/api-test/bru-report-parser.js +110 -0
  36. package/dist/api-test/bru-report-parser.js.map +1 -0
  37. package/dist/api-test/bru-runner.d.ts +101 -0
  38. package/dist/api-test/bru-runner.d.ts.map +1 -0
  39. package/dist/api-test/bru-runner.js +316 -0
  40. package/dist/api-test/bru-runner.js.map +1 -0
  41. package/dist/api-test/bru-writer.d.ts +52 -0
  42. package/dist/api-test/bru-writer.d.ts.map +1 -0
  43. package/dist/api-test/bru-writer.js +159 -0
  44. package/dist/api-test/bru-writer.js.map +1 -0
  45. package/dist/api-test/call-chain-extractor.d.ts +80 -0
  46. package/dist/api-test/call-chain-extractor.d.ts.map +1 -0
  47. package/dist/api-test/call-chain-extractor.js +179 -0
  48. package/dist/api-test/call-chain-extractor.js.map +1 -0
  49. package/dist/api-test/cli.d.ts +133 -0
  50. package/dist/api-test/cli.d.ts.map +1 -0
  51. package/dist/api-test/cli.js +1009 -0
  52. package/dist/api-test/cli.js.map +1 -0
  53. package/dist/api-test/config.d.ts +75 -0
  54. package/dist/api-test/config.d.ts.map +1 -0
  55. package/dist/api-test/config.js +406 -0
  56. package/dist/api-test/config.js.map +1 -0
  57. package/dist/api-test/db-query-cli.d.ts +51 -0
  58. package/dist/api-test/db-query-cli.d.ts.map +1 -0
  59. package/dist/api-test/db-query-cli.js +119 -0
  60. package/dist/api-test/db-query-cli.js.map +1 -0
  61. package/dist/api-test/enhance-prepare.d.ts +111 -0
  62. package/dist/api-test/enhance-prepare.d.ts.map +1 -0
  63. package/dist/api-test/enhance-prepare.js +425 -0
  64. package/dist/api-test/enhance-prepare.js.map +1 -0
  65. package/dist/api-test/enhance-write.d.ts +28 -0
  66. package/dist/api-test/enhance-write.d.ts.map +1 -0
  67. package/dist/api-test/enhance-write.js +145 -0
  68. package/dist/api-test/enhance-write.js.map +1 -0
  69. package/dist/api-test/errors.d.ts +48 -0
  70. package/dist/api-test/errors.d.ts.map +1 -0
  71. package/dist/api-test/errors.js +76 -0
  72. package/dist/api-test/errors.js.map +1 -0
  73. package/dist/api-test/field-extractor.d.ts +98 -0
  74. package/dist/api-test/field-extractor.d.ts.map +1 -0
  75. package/dist/api-test/field-extractor.js +327 -0
  76. package/dist/api-test/field-extractor.js.map +1 -0
  77. package/dist/api-test/impl-finder.d.ts +37 -0
  78. package/dist/api-test/impl-finder.d.ts.map +1 -0
  79. package/dist/api-test/impl-finder.js +54 -0
  80. package/dist/api-test/impl-finder.js.map +1 -0
  81. package/dist/api-test/index.d.ts +41 -0
  82. package/dist/api-test/index.d.ts.map +1 -0
  83. package/dist/api-test/index.js +124 -0
  84. package/dist/api-test/index.js.map +1 -0
  85. package/dist/api-test/java-parser.d.ts +89 -0
  86. package/dist/api-test/java-parser.d.ts.map +1 -0
  87. package/dist/api-test/java-parser.js +508 -0
  88. package/dist/api-test/java-parser.js.map +1 -0
  89. package/dist/api-test/md-writer.d.ts +49 -0
  90. package/dist/api-test/md-writer.d.ts.map +1 -0
  91. package/dist/api-test/md-writer.js +202 -0
  92. package/dist/api-test/md-writer.js.map +1 -0
  93. package/dist/api-test/parser-httpservice.d.ts +91 -0
  94. package/dist/api-test/parser-httpservice.d.ts.map +1 -0
  95. package/dist/api-test/parser-httpservice.js +271 -0
  96. package/dist/api-test/parser-httpservice.js.map +1 -0
  97. package/dist/api-test/report.d.ts +188 -0
  98. package/dist/api-test/report.d.ts.map +1 -0
  99. package/dist/api-test/report.js +522 -0
  100. package/dist/api-test/report.js.map +1 -0
  101. package/dist/api-test/snapshot.d.ts +26 -0
  102. package/dist/api-test/snapshot.d.ts.map +1 -0
  103. package/dist/api-test/snapshot.js +150 -0
  104. package/dist/api-test/snapshot.js.map +1 -0
  105. package/dist/api-test/test-history.d.ts +48 -0
  106. package/dist/api-test/test-history.d.ts.map +1 -0
  107. package/dist/api-test/test-history.js +122 -0
  108. package/dist/api-test/test-history.js.map +1 -0
  109. package/dist/api-test/types.d.ts +174 -0
  110. package/dist/api-test/types.d.ts.map +1 -0
  111. package/dist/api-test/types.js +13 -0
  112. package/dist/api-test/types.js.map +1 -0
  113. package/dist/api-test/verify-prepare.d.ts +30 -0
  114. package/dist/api-test/verify-prepare.d.ts.map +1 -0
  115. package/dist/api-test/verify-prepare.js +150 -0
  116. package/dist/api-test/verify-prepare.js.map +1 -0
  117. package/dist/api-test/verify-write.d.ts +31 -0
  118. package/dist/api-test/verify-write.d.ts.map +1 -0
  119. package/dist/api-test/verify-write.js +159 -0
  120. package/dist/api-test/verify-write.js.map +1 -0
  121. package/dist/dbquery/dump-schema.d.ts +46 -0
  122. package/dist/dbquery/dump-schema.d.ts.map +1 -0
  123. package/dist/dbquery/dump-schema.js +379 -0
  124. package/dist/dbquery/dump-schema.js.map +1 -0
  125. package/dist/installer/targets/claude.d.ts +15 -0
  126. package/dist/installer/targets/claude.d.ts.map +1 -1
  127. package/dist/installer/targets/claude.js +53 -0
  128. package/dist/installer/targets/claude.js.map +1 -1
  129. package/package.json +1 -1
  130. package/scripts/agent-eval/block-cgraphx-and-gitnexus-cli-hook.sh +0 -43
  131. package/scripts/agent-eval/block-cgraphx-cli-hook.sh +0 -32
  132. package/scripts/agent-eval/block-cgraphx-cli-settings.json +0 -16
  133. package/scripts/agent-eval/cli-vs-mcp-3arm.sh +0 -121
  134. package/scripts/agent-eval/multi-tool-eval.sh +0 -171
  135. package/scripts/agent-eval/parse-cli-vs-mcp.mjs +0 -232
  136. package/scripts/agent-eval/parse-multi-tool.mjs +0 -242
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhance-prepare.js","sourceRoot":"","sources":["../../src/api-test/enhance-prepare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * L-T-20: enhance-write — re-generate a .bru file with AI-produced docs/tests/body,
3
+ * and persist AI-inferred source_table fields to `.cgraphx/api-test/ai-fields/<endpoint>.json`.
4
+ *
5
+ * Reads AI temp files (docs / tests / body / ai-fields) + .md frontmatter (for url/headers/method_attr),
6
+ * writes a full .bru (overwriting Layer 1's scan-stage .bru), and optionally writes ai-fields.json.
7
+ *
8
+ * Mechanical subcommand — no AI logic. The skill passes AI-generated temp files; this command
9
+ * assembles them into the final .bru.
10
+ *
11
+ * Spec: docs/features/2026-07-07-api-test-skill-bruno自动化接口测试/api-test-layer2-spec.md §7.1.2
12
+ */
13
+ export interface EnhanceWriteOptions {
14
+ projectRoot: string;
15
+ endpoint: string;
16
+ docsFile: string;
17
+ testsFile: string;
18
+ bodyFile: string;
19
+ aiFieldsFile?: string | null;
20
+ service?: string;
21
+ }
22
+ export declare function enhanceWrite(opts: EnhanceWriteOptions): Promise<string>;
23
+ export declare const __INTERNAL_ENHANCE_WRITE: {
24
+ DEFAULT_SERVICE: string;
25
+ DEFAULT_DOCS_DIR: string;
26
+ DEFAULT_API_TEST_DIR: string;
27
+ };
28
+ //# sourceMappingURL=enhance-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhance-write.d.ts","sourceRoot":"","sources":["../../src/api-test/enhance-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6E7E;AAiBD,eAAO,MAAM,wBAAwB;;;;CAIpC,CAAC"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * L-T-20: enhance-write — re-generate a .bru file with AI-produced docs/tests/body,
4
+ * and persist AI-inferred source_table fields to `.cgraphx/api-test/ai-fields/<endpoint>.json`.
5
+ *
6
+ * Reads AI temp files (docs / tests / body / ai-fields) + .md frontmatter (for url/headers/method_attr),
7
+ * writes a full .bru (overwriting Layer 1's scan-stage .bru), and optionally writes ai-fields.json.
8
+ *
9
+ * Mechanical subcommand — no AI logic. The skill passes AI-generated temp files; this command
10
+ * assembles them into the final .bru.
11
+ *
12
+ * Spec: docs/features/2026-07-07-api-test-skill-bruno自动化接口测试/api-test-layer2-spec.md §7.1.2
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.__INTERNAL_ENHANCE_WRITE = void 0;
49
+ exports.enhanceWrite = enhanceWrite;
50
+ const fs = __importStar(require("node:fs"));
51
+ const path = __importStar(require("node:path"));
52
+ const report_1 = require("./report");
53
+ const ai_fields_1 = require("./ai-fields");
54
+ const config_1 = require("./config");
55
+ const DEFAULT_DOCS_DIR = 'docs';
56
+ const DEFAULT_API_TEST_DIR = 'api-test';
57
+ const DEFAULT_SERVICE = 'inst-service';
58
+ async function enhanceWrite(opts) {
59
+ const projectRoot = path.resolve(opts.projectRoot);
60
+ const service = opts.service ?? DEFAULT_SERVICE;
61
+ const endpoint = opts.endpoint;
62
+ // 1. Read .md frontmatter for url_pattern / http_method / headers
63
+ const mdPath = path.join(projectRoot, DEFAULT_DOCS_DIR, DEFAULT_API_TEST_DIR, service, `${endpoint}.md`);
64
+ if (!fs.existsSync(mdPath)) {
65
+ throw new Error(`[enhance-write] .md not found: ${mdPath}`);
66
+ }
67
+ const mdContent = fs.readFileSync(mdPath, 'utf8');
68
+ const fm = (0, report_1.parseFrontmatter)(mdContent);
69
+ const urlPattern = fm.url_pattern ?? '{{baseUrl}}/' + service + '/service/' + endpoint;
70
+ const httpMethod = fm.http_method ?? 'POST';
71
+ const methodBlockKey = normalizeHttpMethodKeyLocal(httpMethod) ?? 'post';
72
+ // 2. Read AI temp files
73
+ const docsContent = readFileOrThrow(opts.docsFile, 'docs');
74
+ const testsContent = readFileOrThrow(opts.testsFile, 'tests');
75
+ const bodyContent = readFileOrThrow(opts.bodyFile, 'body');
76
+ // 3. Read config for headers (Layer 1 config.defaultHeaders)
77
+ const config = (0, config_1.loadConfig)(projectRoot);
78
+ const headerLines = Object.entries(config.defaultHeaders).map(([k, v]) => ` ${k}: ${v}`);
79
+ const headersBlock = headerLines.length > 0
80
+ ? `headers {\n${headerLines.join('\n')}\n}`
81
+ : 'headers {}';
82
+ // 4. Assemble full .bru
83
+ const bruContent = `meta {
84
+ name: ${endpoint}
85
+ type: http
86
+ }
87
+
88
+ ${methodBlockKey} {
89
+ url: ${urlPattern}
90
+ body: json
91
+ }
92
+
93
+ ${headersBlock}
94
+
95
+ body:json {
96
+ ${bodyContent.trim()}
97
+ }
98
+
99
+ docs {
100
+ ${docsContent.trim()}
101
+ }
102
+
103
+ tests {
104
+ ${testsContent.trim()}
105
+ }
106
+ `;
107
+ // 5. Write .bru (overwrite Layer 1's scan-stage .bru)
108
+ const bruPath = path.join(projectRoot, DEFAULT_DOCS_DIR, DEFAULT_API_TEST_DIR, service, `${endpoint}.bru`);
109
+ fs.mkdirSync(path.dirname(bruPath), { recursive: true });
110
+ fs.writeFileSync(bruPath, bruContent, 'utf8');
111
+ // 6. Write ai-fields.json if AI provided source_table inferences
112
+ if (opts.aiFieldsFile) {
113
+ const aiFieldsContent = fs.readFileSync(opts.aiFieldsFile, 'utf8');
114
+ let aiFieldsData;
115
+ try {
116
+ aiFieldsData = JSON.parse(aiFieldsContent);
117
+ }
118
+ catch {
119
+ throw new Error(`[enhance-write] ai-fields file is not valid JSON: ${opts.aiFieldsFile}`);
120
+ }
121
+ if (aiFieldsData.fields && Array.isArray(aiFieldsData.fields)) {
122
+ (0, ai_fields_1.writeAiFields)(projectRoot, endpoint, aiFieldsData.fields);
123
+ }
124
+ }
125
+ return bruPath;
126
+ }
127
+ function readFileOrThrow(filePath, label) {
128
+ if (!filePath || !fs.existsSync(filePath)) {
129
+ throw new Error(`[enhance-write] ${label} file required but not found: ${filePath}`);
130
+ }
131
+ return fs.readFileSync(filePath, 'utf8');
132
+ }
133
+ function normalizeHttpMethodKeyLocal(method) {
134
+ const m = method.trim().toLowerCase();
135
+ if (m === 'get' || m === 'post' || m === 'put' || m === 'delete' || m === 'patch') {
136
+ return m;
137
+ }
138
+ return null;
139
+ }
140
+ exports.__INTERNAL_ENHANCE_WRITE = {
141
+ DEFAULT_SERVICE,
142
+ DEFAULT_DOCS_DIR,
143
+ DEFAULT_API_TEST_DIR,
144
+ };
145
+ //# sourceMappingURL=enhance-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhance-write.js","sourceRoot":"","sources":["../../src/api-test/enhance-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Error types for the api-test subsystem.
3
+ *
4
+ * Intentionally independent from the code graph's error types and from the
5
+ * dbquery / markdown subsystems — `src/api-test/` is self-contained (spec §12).
6
+ *
7
+ * `ConfigError` is the only one raised by this task (T-10). The others are
8
+ * declared up-front so T-11+ (parser, bruno runner, report) can reuse the
9
+ * same error surface without re-introducing a new file later.
10
+ */
11
+ /**
12
+ * Raised when `config.json` / `profile.json` / `fixtures.json` is missing
13
+ * (where required) or fails schema validation. Exposed to the CLI as
14
+ * exit code 2 (config error).
15
+ */
16
+ export declare class ConfigError extends Error {
17
+ readonly details?: Record<string, unknown> | undefined;
18
+ constructor(message: string, details?: Record<string, unknown> | undefined);
19
+ }
20
+ /** Raised by the Java parser (T-11) when a `.java` file cannot be parsed. */
21
+ export declare class ParseError extends Error {
22
+ readonly details?: Record<string, unknown> | undefined;
23
+ constructor(message: string, details?: Record<string, unknown> | undefined);
24
+ }
25
+ /** Raised when the `bru` CLI invocation fails or exits non-zero (T-50). */
26
+ export declare class BrunoCliError extends Error {
27
+ readonly details?: Record<string, unknown> | undefined;
28
+ constructor(message: string, details?: Record<string, unknown> | undefined);
29
+ }
30
+ /**
31
+ * Raised when a referenced symbol (service interface, method, table) cannot
32
+ * be located during the analyze/assemble phases (T-30/T-40).
33
+ */
34
+ export declare class ImplNotFoundError extends Error {
35
+ readonly details?: Record<string, unknown> | undefined;
36
+ constructor(message: string, details?: Record<string, unknown> | undefined);
37
+ }
38
+ /**
39
+ * Raised by the report/list phase (T-60) when a required input is missing —
40
+ * e.g. the JSONL run-history file for the requested date doesn't exist.
41
+ * Exposed to the CLI as exit code 2 (treated as a config/data error so CI
42
+ * can distinguish it from a runtime failure).
43
+ */
44
+ export declare class ReportError extends Error {
45
+ readonly details?: Record<string, unknown> | undefined;
46
+ constructor(message: string, details?: Record<string, unknown> | undefined);
47
+ }
48
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api-test/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;aACS,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAlE,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAI/E;AAED,6EAA6E;AAC7E,qBAAa,UAAW,SAAQ,KAAK;aACU,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAlE,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAI/E;AAED,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,KAAK;aACO,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAlE,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAI/E;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aACG,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAlE,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAI/E;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,KAAK;aACS,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAlE,OAAO,EAAE,MAAM,EAAkB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAI/E"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * Error types for the api-test subsystem.
4
+ *
5
+ * Intentionally independent from the code graph's error types and from the
6
+ * dbquery / markdown subsystems — `src/api-test/` is self-contained (spec §12).
7
+ *
8
+ * `ConfigError` is the only one raised by this task (T-10). The others are
9
+ * declared up-front so T-11+ (parser, bruno runner, report) can reuse the
10
+ * same error surface without re-introducing a new file later.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ReportError = exports.ImplNotFoundError = exports.BrunoCliError = exports.ParseError = exports.ConfigError = void 0;
14
+ /**
15
+ * Raised when `config.json` / `profile.json` / `fixtures.json` is missing
16
+ * (where required) or fails schema validation. Exposed to the CLI as
17
+ * exit code 2 (config error).
18
+ */
19
+ class ConfigError extends Error {
20
+ details;
21
+ constructor(message, details) {
22
+ super(message);
23
+ this.details = details;
24
+ this.name = 'ConfigError';
25
+ }
26
+ }
27
+ exports.ConfigError = ConfigError;
28
+ /** Raised by the Java parser (T-11) when a `.java` file cannot be parsed. */
29
+ class ParseError extends Error {
30
+ details;
31
+ constructor(message, details) {
32
+ super(message);
33
+ this.details = details;
34
+ this.name = 'ParseError';
35
+ }
36
+ }
37
+ exports.ParseError = ParseError;
38
+ /** Raised when the `bru` CLI invocation fails or exits non-zero (T-50). */
39
+ class BrunoCliError extends Error {
40
+ details;
41
+ constructor(message, details) {
42
+ super(message);
43
+ this.details = details;
44
+ this.name = 'BrunoCliError';
45
+ }
46
+ }
47
+ exports.BrunoCliError = BrunoCliError;
48
+ /**
49
+ * Raised when a referenced symbol (service interface, method, table) cannot
50
+ * be located during the analyze/assemble phases (T-30/T-40).
51
+ */
52
+ class ImplNotFoundError extends Error {
53
+ details;
54
+ constructor(message, details) {
55
+ super(message);
56
+ this.details = details;
57
+ this.name = 'ImplNotFoundError';
58
+ }
59
+ }
60
+ exports.ImplNotFoundError = ImplNotFoundError;
61
+ /**
62
+ * Raised by the report/list phase (T-60) when a required input is missing —
63
+ * e.g. the JSONL run-history file for the requested date doesn't exist.
64
+ * Exposed to the CLI as exit code 2 (treated as a config/data error so CI
65
+ * can distinguish it from a runtime failure).
66
+ */
67
+ class ReportError extends Error {
68
+ details;
69
+ constructor(message, details) {
70
+ super(message);
71
+ this.details = details;
72
+ this.name = 'ReportError';
73
+ }
74
+ }
75
+ exports.ReportError = ReportError;
76
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/api-test/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH;;;;GAIG;AACH,MAAa,WAAY,SAAQ,KAAK;IACS;IAA7C,YAAY,OAAe,EAAkB,OAAiC;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAA0B;QAE5E,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,6EAA6E;AAC7E,MAAa,UAAW,SAAQ,KAAK;IACU;IAA7C,YAAY,OAAe,EAAkB,OAAiC;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAA0B;QAE5E,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AALD,gCAKC;AAED,2EAA2E;AAC3E,MAAa,aAAc,SAAQ,KAAK;IACO;IAA7C,YAAY,OAAe,EAAkB,OAAiC;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAA0B;QAE5E,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IACG;IAA7C,YAAY,OAAe,EAAkB,OAAiC;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAA0B;QAE5E,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED;;;;;GAKG;AACH,MAAa,WAAY,SAAQ,KAAK;IACS;IAA7C,YAAY,OAAe,EAAkB,OAAiC;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAA0B;QAE5E,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Analyze phase — reverse-engineer request fields from a method parameter.
3
+ *
4
+ * Spec contract (T-30): supports 4 parameter forms:
5
+ * a. Strong-typed VO (concrete class, not Object/Map/String/primitive)
6
+ * → locate VO via `findVoClass(allClasses, simpleName)`, read its fields.
7
+ * b. `Object` param → scan impl method body text for `reqVo.getXxx()` and
8
+ * `((XxxVo) reqVo).getXxx()`, reverse-engineer field names.
9
+ * c. `Map<K,V>` param → scan body text for `param.get("xxx")`,
10
+ * reverse-engineer field names.
11
+ * d. `String jsonString` param → scan body text for
12
+ * `JSON.parseObject(str, XxxVo.class)` (fastjson/fastjson2) or
13
+ * `objectMapper.readValue(str, XxxVo.class)` (Jackson), then walk case a
14
+ * for the discovered VO.
15
+ *
16
+ * Implementation note: extraction uses `method.bodyText` (regex) rather than
17
+ * the AST `body` node. The T-11 parser deletes the tree after extraction to
18
+ * release WASM heap, which would invalidate any retained AST node reference;
19
+ * `bodyText` is captured before the delete and stays valid. The task's
20
+ * "允许局部适配" clause permits this regex-based approach.
21
+ *
22
+ * Failure mode: when a param requires reverse-engineering (b/c/d) but the
23
+ * body yields zero fields, `extractFields` returns `[]` for the WHOLE method
24
+ * — the caller marks the endpoint `status: skip` with
25
+ * `skip_reason: param_no_strong_type`.
26
+ *
27
+ * Self-contained: depends only on `./java-parser` (ClassInfo, MethodSignature,
28
+ * findVoClass) + `./types` (Endpoint, Field). No imports from
29
+ * `src/extraction/` / `src/resolution/` / `src/db/`.
30
+ *
31
+ * Public surface:
32
+ * - `extractFields(endpoint, implInfo, method, allClasses)` — Promise<Field[]>
33
+ */
34
+ import type { ClassInfo, MethodSignature } from './java-parser';
35
+ import type { Endpoint, Field } from './types';
36
+ /**
37
+ * Classify a parameter type into one of the 4 forms (or 'other').
38
+ * - 'vo' : a concrete class name resolvable via findVoClass (case a)
39
+ * - 'object': exactly `Object` (case b)
40
+ * - 'map' : `Map<...>` or bare `Map` (case c)
41
+ * - 'string': exactly `String` (case d) — String is the JSON-string form.
42
+ * - 'other' : primitives, List<X>, arrays, etc. — single field, fixtureOnly.
43
+ */
44
+ type ParamForm = 'vo' | 'object' | 'map' | 'string' | 'other';
45
+ declare function classifyParamType(type: string): ParamForm;
46
+ /**
47
+ * Build Field[] from a VO class's declared fields. Each field becomes a
48
+ * Field with `paramIndex` set, `javaType` from the VO, and `fixtureOnly=true`
49
+ * (the assemble phase will source actual values).
50
+ *
51
+ * Skips `serialVersionUID` (the conventional `static final long` field —
52
+ * T-11's ClassInfo.fields shape doesn't carry modifier info, so we filter
53
+ * by name).
54
+ */
55
+ declare function fieldsFromVoClass(voClass: ClassInfo, paramIndex: number): Field[];
56
+ /**
57
+ * Match `paramName.getXxx()` calls in the body text. Captures the `Xxx` part
58
+ * (camelCase, at least one char after `get`). Handles:
59
+ * - Direct: `reqVo.getCustId()`
60
+ * - Cast: `((XxxVo) reqVo).getRegionId()` or `(XxxVo) reqVo).getRegionId()`
61
+ *
62
+ * The cast form's leading `(` may or may not be doubled depending on whether
63
+ * the cast is wrapped in parens for method-call disambiguation.
64
+ */
65
+ declare function extractFieldsFromObjectParam(bodyText: string, paramName: string, paramIndex: number): Field[];
66
+ /**
67
+ * Match `paramName.get("xxx")` calls. The first argument must be a string
68
+ * literal. Returns deduped field names in document order.
69
+ */
70
+ declare function extractFieldsFromMapParam(bodyText: string, paramName: string, paramIndex: number): Field[];
71
+ /**
72
+ * Scan `bodyText` for fastjson/Jackson calls that target a `.class` arg.
73
+ * Returns the simple names of the discovered VO classes (deduped, in order).
74
+ */
75
+ declare function discoverVoClassesFromJsonParse(bodyText: string): string[];
76
+ /**
77
+ * Extract Field[] for every parameter on `method`, using `implInfo` and
78
+ * `allClasses` to resolve VO classes. Returns `[]` (signaling failure) when
79
+ * any param requires reverse-engineering (Object/Map/String) but yields zero
80
+ * fields — the caller then marks the endpoint `skip` with
81
+ * `param_no_strong_type`.
82
+ *
83
+ * `endpoint` is taken in the signature per spec; it's not mutated.
84
+ */
85
+ export declare function extractFields(endpoint: Endpoint, implInfo: ClassInfo, method: MethodSignature, allClasses: ClassInfo[]): Promise<Field[]>;
86
+ declare function lowercaseFirst(s: string): string;
87
+ declare function escapeRegExp(s: string): string;
88
+ export declare const __INTERNAL_FIELD_EXTRACTOR: {
89
+ classifyParamType: typeof classifyParamType;
90
+ extractFieldsFromObjectParam: typeof extractFieldsFromObjectParam;
91
+ extractFieldsFromMapParam: typeof extractFieldsFromMapParam;
92
+ discoverVoClassesFromJsonParse: typeof discoverVoClassesFromJsonParse;
93
+ fieldsFromVoClass: typeof fieldsFromVoClass;
94
+ lowercaseFirst: typeof lowercaseFirst;
95
+ escapeRegExp: typeof escapeRegExp;
96
+ };
97
+ export {};
98
+ //# sourceMappingURL=field-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-extractor.d.ts","sourceRoot":"","sources":["../../src/api-test/field-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAa/C;;;;;;;GAOG;AACH,KAAK,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9D,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CASlD;AAMD;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,OAAO,EAAE,SAAS,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAiBT;AAMD;;;;;;;;GAQG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAsCT;AAMD;;;GAGG;AACH,iBAAS,yBAAyB,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CA0BT;AAcD;;;GAGG;AACH,iBAAS,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBlE;AAMD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,KAAK,EAAE,CAAC,CA4ElB;AAMD,iBAAS,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzC;AAMD,iBAAS,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvC;AAiBD,eAAO,MAAM,0BAA0B;;;;;;;;CAQtC,CAAC"}