jinzd-ai-cli 0.4.214 → 0.4.216
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 +2 -0
- package/dist/{batch-NPUUDETK.js → batch-C6HCXZIG.js} +2 -2
- package/dist/{chunk-JQC7IATA.js → chunk-6HLKCSB3.js} +1 -1
- package/dist/{chunk-YMFGGCUP.js → chunk-77HDCGTN.js} +1 -1
- package/dist/{chunk-DBYMX2ZC.js → chunk-7YWS3JLU.js} +1 -1
- package/dist/{ci-3TU7WCY4.js → chunk-GY3C3C2Y.js} +40 -46
- package/dist/{chunk-JOJA35RK.js → chunk-OLN7VUZA.js} +1 -1
- package/dist/{chunk-5FG7PSVM.js → chunk-PNTLA3MN.js} +2 -2
- package/dist/{chunk-R5CJD2AB.js → chunk-TCOC4AUI.js} +3 -3
- package/dist/chunk-TJ6GGN4B.js +105 -0
- package/dist/{chunk-TR6MSPSS.js → chunk-VW7Y27WW.js} +1 -1
- package/dist/{chunk-YFHF3PVB.js → chunk-WAI3WPV2.js} +1 -1
- package/dist/ci-6ZTFO3LX.js +19 -0
- package/dist/ci-format-CLZ6QJRL.js +18 -0
- package/dist/{constants-BKR7T3QH.js → constants-APSORFOH.js} +1 -1
- package/dist/{doctor-cli-TGVSWKDB.js → doctor-cli-GUIX4X5F.js} +4 -4
- package/dist/electron-server.js +2 -2
- package/dist/{hub-GURYEW6F.js → hub-ZGHQWNWE.js} +1 -1
- package/dist/index.js +58 -22
- package/dist/pr-JOL3IAGV.js +267 -0
- package/dist/{run-tests-R6FL6CQ3.js → run-tests-4PKSIVK5.js} +1 -1
- package/dist/{run-tests-F44JA2YW.js → run-tests-ZRK4TQUN.js} +2 -2
- package/dist/{server-FXWCSCDZ.js → server-FXUF5P64.js} +7 -7
- package/dist/{server-GQXC46R5.js → server-O3XHT56X.js} +4 -4
- package/dist/{task-orchestrator-6AZD5WSR.js → task-orchestrator-TUMDTOAX.js} +4 -4
- package/dist/{usage-W7J2QA3G.js → usage-X7MJX4YD.js} +2 -2
- package/dist/web/client/actions.js +1 -0
- package/dist/web/client/app.js +182 -13
- package/dist/web/client/index.html +21 -3
- package/dist/web/client/style.css +62 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,8 @@
|
|
|
47
47
|
- **Headless Mode** — `ai-cli -p "prompt"` for CI/CD pipelines and scripting
|
|
48
48
|
- **44 REPL Commands** — Session management, checkpointing, code review, security review/scan, rewind, scaffolding, cross-session history search, chat-memory recall, smart model routing (`/route`), and more
|
|
49
49
|
- **GitHub Actions CI/CD** — Automated testing on Node 20/22 + npm publish on release tags
|
|
50
|
+
- **PR Review CLI** *(v0.4.216+)* — `aicli pr review|security-review|summarize` reviews `main...HEAD`, custom `--base/--head`, or GitHub PR URLs; optional `--agents security,bugs,tests,maintainability`; never posts comments unless `--post` is explicit
|
|
51
|
+
- **CI Review Artifacts** *(v0.4.216+)* — `aicli ci` emits Markdown, JSON, or SARIF and gates on security-high, test-failure, and lint-failure findings in read-only review mode
|
|
50
52
|
- **Cross-Platform** — Windows, macOS, Linux
|
|
51
53
|
|
|
52
54
|
## Installation
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigManager
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WAI3WPV2.js";
|
|
5
5
|
import "./chunk-TZQHYZKT.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-7YWS3JLU.js";
|
|
7
7
|
import {
|
|
8
8
|
atomicWriteFileSync
|
|
9
9
|
} from "./chunk-IW3Q7AE5.js";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
evaluateCiGate,
|
|
4
|
+
normalizeCiThresholds
|
|
5
|
+
} from "./chunk-TJ6GGN4B.js";
|
|
2
6
|
import {
|
|
3
7
|
buildReviewPrompt,
|
|
4
8
|
buildSecurityReviewPrompt,
|
|
@@ -7,19 +11,30 @@ import {
|
|
|
7
11
|
import {
|
|
8
12
|
ProviderRegistry
|
|
9
13
|
} from "./chunk-QMXC327F.js";
|
|
10
|
-
import "./chunk-XPBEJB27.js";
|
|
11
14
|
import {
|
|
12
15
|
ConfigManager
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-TZQHYZKT.js";
|
|
16
|
+
} from "./chunk-WAI3WPV2.js";
|
|
15
17
|
import {
|
|
16
18
|
VERSION
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-IW3Q7AE5.js";
|
|
19
|
+
} from "./chunk-7YWS3JLU.js";
|
|
19
20
|
|
|
20
21
|
// src/cli/ci.ts
|
|
21
22
|
import { execFileSync } from "child_process";
|
|
22
23
|
var CI_COMMENT_MARKER = "<!-- aicli-ci-review -->";
|
|
24
|
+
function zeroSeverity() {
|
|
25
|
+
return { critical: 0, high: 0, warning: 0, info: 0 };
|
|
26
|
+
}
|
|
27
|
+
function earlyResult(exitCode, markdown, thresholds) {
|
|
28
|
+
const gate = evaluateCiGate(markdown, thresholds);
|
|
29
|
+
return {
|
|
30
|
+
exitCode: exitCode === 0 && gate.failed ? 1 : exitCode,
|
|
31
|
+
markdown,
|
|
32
|
+
posted: false,
|
|
33
|
+
severity: zeroSeverity(),
|
|
34
|
+
gate,
|
|
35
|
+
meta: { mode: "read-only", thresholds }
|
|
36
|
+
};
|
|
37
|
+
}
|
|
23
38
|
function fetchDiff(opts) {
|
|
24
39
|
if (opts.diffOverride != null) return opts.diffOverride;
|
|
25
40
|
if (opts.pr != null) {
|
|
@@ -48,9 +63,7 @@ function fetchDiff(opts) {
|
|
|
48
63
|
throw new Error("aicli ci: must supply --pr <num> or --base <ref> to determine the diff source");
|
|
49
64
|
}
|
|
50
65
|
function validateGitRef(ref) {
|
|
51
|
-
if (!/^[A-Za-z0-9._/\-]+$/.test(ref)) {
|
|
52
|
-
throw new Error(`unsafe ref: ${ref}`);
|
|
53
|
-
}
|
|
66
|
+
if (!/^[A-Za-z0-9._/\-]+$/.test(ref)) throw new Error(`unsafe ref: ${ref}`);
|
|
54
67
|
}
|
|
55
68
|
function buildGitContextStr(opts) {
|
|
56
69
|
const parts = [];
|
|
@@ -62,6 +75,7 @@ function buildGitContextStr(opts) {
|
|
|
62
75
|
} catch {
|
|
63
76
|
}
|
|
64
77
|
parts.push(`Reviewer: aicli v${VERSION}`);
|
|
78
|
+
parts.push("Mode: read-only CI review (no tools executed)");
|
|
65
79
|
return parts.join(" | ");
|
|
66
80
|
}
|
|
67
81
|
function countSeverity(md) {
|
|
@@ -118,9 +132,7 @@ ${CI_COMMENT_MARKER}`;
|
|
|
118
132
|
function gqlIdToRest(graphqlId) {
|
|
119
133
|
if (/^\d+$/.test(graphqlId)) return graphqlId;
|
|
120
134
|
const query = `query($id:ID!){ node(id:$id){ ... on IssueComment { databaseId } } }`;
|
|
121
|
-
const out = execFileSync("gh", ["api", "graphql", "-f", `query=${query}`, "-F", `id=${graphqlId}`], {
|
|
122
|
-
encoding: "utf-8"
|
|
123
|
-
});
|
|
135
|
+
const out = execFileSync("gh", ["api", "graphql", "-f", `query=${query}`, "-F", `id=${graphqlId}`], { encoding: "utf-8" });
|
|
124
136
|
const parsed = JSON.parse(out);
|
|
125
137
|
const id = parsed.data?.node?.databaseId;
|
|
126
138
|
if (!id) throw new Error(`could not resolve comment id ${graphqlId}`);
|
|
@@ -128,25 +140,14 @@ function gqlIdToRest(graphqlId) {
|
|
|
128
140
|
}
|
|
129
141
|
async function runCi(opts) {
|
|
130
142
|
const maxDiff = opts.maxDiffChars ?? 3e4;
|
|
143
|
+
const thresholds = normalizeCiThresholds(opts.thresholds);
|
|
131
144
|
let diff;
|
|
132
145
|
try {
|
|
133
146
|
diff = fetchDiff(opts).trim();
|
|
134
147
|
} catch (err) {
|
|
135
|
-
return {
|
|
136
|
-
exitCode: 2,
|
|
137
|
-
markdown: `\u274C ${err.message}`,
|
|
138
|
-
posted: false,
|
|
139
|
-
severity: { critical: 0, high: 0, warning: 0, info: 0 }
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
if (!diff) {
|
|
143
|
-
return {
|
|
144
|
-
exitCode: 0,
|
|
145
|
-
markdown: "\u2705 No changes to review.",
|
|
146
|
-
posted: false,
|
|
147
|
-
severity: { critical: 0, high: 0, warning: 0, info: 0 }
|
|
148
|
-
};
|
|
148
|
+
return earlyResult(2, `\u274C ${err.message}`, thresholds);
|
|
149
149
|
}
|
|
150
|
+
if (!diff) return earlyResult(0, "\u2705 No changes to review.", thresholds);
|
|
150
151
|
const { diff: trimmedDiff, truncated } = truncateDiff(diff, maxDiff);
|
|
151
152
|
const gitCtx = buildGitContextStr(opts);
|
|
152
153
|
const config = new ConfigManager();
|
|
@@ -162,18 +163,14 @@ async function runCi(opts) {
|
|
|
162
163
|
);
|
|
163
164
|
const providerId = opts.provider ?? config.getDefaultProvider();
|
|
164
165
|
if (!registry.has(providerId)) {
|
|
165
|
-
return {
|
|
166
|
-
exitCode: 2,
|
|
167
|
-
markdown: `\u274C Provider '${providerId}' is not configured. Set the right AICLI_API_KEY_* env var or pass --provider.`,
|
|
168
|
-
posted: false,
|
|
169
|
-
severity: { critical: 0, high: 0, warning: 0, info: 0 }
|
|
170
|
-
};
|
|
166
|
+
return earlyResult(2, `\u274C Provider '${providerId}' is not configured. Set the right AICLI_API_KEY_* env var or pass --provider.`, thresholds);
|
|
171
167
|
}
|
|
172
168
|
const providerInfo = registry.get(providerId).info;
|
|
173
169
|
const modelId = opts.model ?? config.get("defaultModels")[providerId] ?? providerInfo.defaultModel;
|
|
170
|
+
const meta = { provider: providerId, model: modelId, mode: "read-only", thresholds };
|
|
174
171
|
const sections = [];
|
|
175
|
-
sections.push(
|
|
176
|
-
sections.push(`*Provider: \`${providerId}\` \xB7 Model: \`${modelId}\` \xB7 aicli v${VERSION}*`);
|
|
172
|
+
sections.push("## \u{1F916} aicli code review");
|
|
173
|
+
sections.push(`*Provider: \`${providerId}\` \xB7 Model: \`${modelId}\` \xB7 Mode: \`read-only CI review\` \xB7 aicli v${VERSION}*`);
|
|
177
174
|
sections.push("");
|
|
178
175
|
try {
|
|
179
176
|
if (!opts.skipCode) {
|
|
@@ -195,14 +192,15 @@ async function runCi(opts) {
|
|
|
195
192
|
exitCode: 2,
|
|
196
193
|
markdown: `\u274C Review call failed: ${err.message}`,
|
|
197
194
|
posted: false,
|
|
198
|
-
severity:
|
|
195
|
+
severity: zeroSeverity(),
|
|
196
|
+
gate: evaluateCiGate("", thresholds),
|
|
197
|
+
meta
|
|
199
198
|
};
|
|
200
199
|
}
|
|
201
|
-
if (truncated) {
|
|
202
|
-
sections.push(`> \u26A0 Diff was truncated to ${maxDiff} chars (original: ${diff.length}). Consider splitting large PRs.`);
|
|
203
|
-
}
|
|
200
|
+
if (truncated) sections.push(`> \u26A0 Diff was truncated to ${maxDiff} chars (original: ${diff.length}). Consider splitting large PRs.`);
|
|
204
201
|
const markdown = sections.join("\n");
|
|
205
202
|
const severity = countSeverity(markdown);
|
|
203
|
+
const gate = evaluateCiGate(markdown, thresholds);
|
|
206
204
|
let posted = false;
|
|
207
205
|
let updatedCommentId;
|
|
208
206
|
if (opts.post && opts.pr != null && !opts.dryRun) {
|
|
@@ -219,19 +217,15 @@ async function runCi(opts) {
|
|
|
219
217
|
|
|
220
218
|
\u274C Failed to post comment: ${err.message}`,
|
|
221
219
|
posted: false,
|
|
222
|
-
severity
|
|
220
|
+
severity,
|
|
221
|
+
gate,
|
|
222
|
+
meta
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
|
-
|
|
227
|
-
return {
|
|
228
|
-
exitCode: hasBlocker ? 1 : 0,
|
|
229
|
-
markdown,
|
|
230
|
-
posted,
|
|
231
|
-
updatedCommentId,
|
|
232
|
-
severity
|
|
233
|
-
};
|
|
226
|
+
return { exitCode: gate.failed ? 1 : 0, markdown, posted, updatedCommentId, severity, gate, meta };
|
|
234
227
|
}
|
|
228
|
+
|
|
235
229
|
export {
|
|
236
230
|
CI_COMMENT_MARKER,
|
|
237
231
|
countSeverity,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
truncateForPersist
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TCOC4AUI.js";
|
|
5
5
|
import {
|
|
6
6
|
APP_NAME,
|
|
7
7
|
CONFIG_DIR_NAME,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
MCP_PROTOCOL_VERSION,
|
|
14
14
|
MCP_TOOL_PREFIX,
|
|
15
15
|
VERSION
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7YWS3JLU.js";
|
|
17
17
|
import {
|
|
18
18
|
atomicWriteFileSync
|
|
19
19
|
} from "./chunk-IW3Q7AE5.js";
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-T2NL5ZIA.js";
|
|
6
6
|
import {
|
|
7
7
|
runTestsTool
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VW7Y27WW.js";
|
|
9
9
|
import {
|
|
10
10
|
runTool
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-77HDCGTN.js";
|
|
12
12
|
import {
|
|
13
13
|
getDangerLevel,
|
|
14
14
|
isFileWriteTool,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
SUBAGENT_ALLOWED_TOOLS,
|
|
27
27
|
SUBAGENT_DEFAULT_MAX_ROUNDS,
|
|
28
28
|
SUBAGENT_MAX_ROUNDS_LIMIT
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-7YWS3JLU.js";
|
|
30
30
|
import {
|
|
31
31
|
fileCheckpoints
|
|
32
32
|
} from "./chunk-4BKXL7SM.js";
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
VERSION
|
|
4
|
+
} from "./chunk-7YWS3JLU.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/ci-format.ts
|
|
7
|
+
var DEFAULT_CI_THRESHOLDS = {
|
|
8
|
+
securityHigh: true,
|
|
9
|
+
testFailure: true,
|
|
10
|
+
lintFailure: true
|
|
11
|
+
};
|
|
12
|
+
function normalizeCiThresholds(input) {
|
|
13
|
+
return {
|
|
14
|
+
securityHigh: input?.securityHigh ?? DEFAULT_CI_THRESHOLDS.securityHigh,
|
|
15
|
+
testFailure: input?.testFailure ?? DEFAULT_CI_THRESHOLDS.testFailure,
|
|
16
|
+
lintFailure: input?.lintFailure ?? DEFAULT_CI_THRESHOLDS.lintFailure
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function extractSection(markdown, heading) {
|
|
20
|
+
const start = markdown.indexOf(heading);
|
|
21
|
+
if (start < 0) return "";
|
|
22
|
+
const rest = markdown.slice(start + heading.length);
|
|
23
|
+
const next = rest.search(/\n###\s+/);
|
|
24
|
+
return next >= 0 ? rest.slice(0, next) : rest;
|
|
25
|
+
}
|
|
26
|
+
function detectCiGateSignals(markdown) {
|
|
27
|
+
const security = extractSection(markdown, "### Security Review");
|
|
28
|
+
const securityHigh = (security.match(/(?:🔴\s*CRITICAL|🔴\s*Critical|🟠\s*HIGH|🟠\s*High)/g) ?? []).length;
|
|
29
|
+
const testFailure = (markdown.match(/(?:test(?:s|ing)?\s+(?:failed|failure|failures)|failing\s+test|npm\s+test\s+failed|pytest\s+failed|vitest\s+failed)/gi) ?? []).length;
|
|
30
|
+
const lintFailure = (markdown.match(/(?:lint\s+(?:failed|failure|failures)|eslint\s+failed|ruff\s+failed|biome\s+failed|typecheck\s+failed|tsc\s+failed)/gi) ?? []).length;
|
|
31
|
+
return { securityHigh, testFailure, lintFailure };
|
|
32
|
+
}
|
|
33
|
+
function evaluateCiGate(markdown, thresholds) {
|
|
34
|
+
const normalized = normalizeCiThresholds(thresholds);
|
|
35
|
+
const signals = detectCiGateSignals(markdown);
|
|
36
|
+
const reasons = [];
|
|
37
|
+
if (normalized.securityHigh && signals.securityHigh > 0) reasons.push(`security-high:${signals.securityHigh}`);
|
|
38
|
+
if (normalized.testFailure && signals.testFailure > 0) reasons.push(`test-failure:${signals.testFailure}`);
|
|
39
|
+
if (normalized.lintFailure && signals.lintFailure > 0) reasons.push(`lint-failure:${signals.lintFailure}`);
|
|
40
|
+
return { thresholds: normalized, signals, failed: reasons.length > 0, reasons };
|
|
41
|
+
}
|
|
42
|
+
function sarifLevel(line) {
|
|
43
|
+
if (/🔴|🟠|CRITICAL|HIGH/i.test(line)) return "error";
|
|
44
|
+
if (/🟡|WARNING|MEDIUM/i.test(line)) return "warning";
|
|
45
|
+
return "note";
|
|
46
|
+
}
|
|
47
|
+
function stripMarkdown(line) {
|
|
48
|
+
return line.replace(/^[\s>*-]+/, "").replace(/[`*_]/g, "").trim();
|
|
49
|
+
}
|
|
50
|
+
function formatCiSarif(result) {
|
|
51
|
+
const lines = result.markdown.split(/\r?\n/);
|
|
52
|
+
const findingLines = lines.map((line, idx) => ({ line, idx })).filter(({ line }) => /🔴|🟠|🟡|🔵|CRITICAL|HIGH|MEDIUM|LOW|WARNING|INFO/i.test(line));
|
|
53
|
+
const results = findingLines.map(({ line, idx }, n) => ({
|
|
54
|
+
ruleId: "aicli-review-finding",
|
|
55
|
+
level: sarifLevel(line),
|
|
56
|
+
message: { text: stripMarkdown(line) || line.trim() },
|
|
57
|
+
locations: [{
|
|
58
|
+
physicalLocation: {
|
|
59
|
+
artifactLocation: { uri: "aicli-review.md" },
|
|
60
|
+
region: { startLine: idx + 1 }
|
|
61
|
+
}
|
|
62
|
+
}],
|
|
63
|
+
partialFingerprints: { aicliLine: String(n + 1) }
|
|
64
|
+
}));
|
|
65
|
+
return JSON.stringify({
|
|
66
|
+
version: "2.1.0",
|
|
67
|
+
$schema: "https://json.schemastore.org/sarif-2.1.0.json",
|
|
68
|
+
runs: [{
|
|
69
|
+
tool: {
|
|
70
|
+
driver: {
|
|
71
|
+
name: "aicli",
|
|
72
|
+
informationUri: "https://github.com/jinzhengdong/ai-cli",
|
|
73
|
+
version: VERSION,
|
|
74
|
+
rules: [{
|
|
75
|
+
id: "aicli-review-finding",
|
|
76
|
+
name: "aicli review finding",
|
|
77
|
+
shortDescription: { text: "Finding emitted by aicli CI review" },
|
|
78
|
+
helpUri: "https://github.com/jinzhengdong/ai-cli"
|
|
79
|
+
}]
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
invocations: [{ executionSuccessful: !result.gate.failed }],
|
|
83
|
+
results,
|
|
84
|
+
properties: {
|
|
85
|
+
severity: result.severity,
|
|
86
|
+
gate: result.gate,
|
|
87
|
+
posted: result.posted
|
|
88
|
+
}
|
|
89
|
+
}]
|
|
90
|
+
}, null, 2);
|
|
91
|
+
}
|
|
92
|
+
function formatCiResult(result, format) {
|
|
93
|
+
if (format === "json") return JSON.stringify(result, null, 2);
|
|
94
|
+
if (format === "sarif") return formatCiSarif(result);
|
|
95
|
+
return result.markdown;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export {
|
|
99
|
+
DEFAULT_CI_THRESHOLDS,
|
|
100
|
+
normalizeCiThresholds,
|
|
101
|
+
detectCiGateSignals,
|
|
102
|
+
evaluateCiGate,
|
|
103
|
+
formatCiSarif,
|
|
104
|
+
formatCiResult
|
|
105
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
CI_COMMENT_MARKER,
|
|
4
|
+
countSeverity,
|
|
5
|
+
runCi
|
|
6
|
+
} from "./chunk-GY3C3C2Y.js";
|
|
7
|
+
import "./chunk-TJ6GGN4B.js";
|
|
8
|
+
import "./chunk-HLWUDRBO.js";
|
|
9
|
+
import "./chunk-QMXC327F.js";
|
|
10
|
+
import "./chunk-XPBEJB27.js";
|
|
11
|
+
import "./chunk-WAI3WPV2.js";
|
|
12
|
+
import "./chunk-TZQHYZKT.js";
|
|
13
|
+
import "./chunk-7YWS3JLU.js";
|
|
14
|
+
import "./chunk-IW3Q7AE5.js";
|
|
15
|
+
export {
|
|
16
|
+
CI_COMMENT_MARKER,
|
|
17
|
+
countSeverity,
|
|
18
|
+
runCi
|
|
19
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
DEFAULT_CI_THRESHOLDS,
|
|
4
|
+
detectCiGateSignals,
|
|
5
|
+
evaluateCiGate,
|
|
6
|
+
formatCiResult,
|
|
7
|
+
formatCiSarif,
|
|
8
|
+
normalizeCiThresholds
|
|
9
|
+
} from "./chunk-TJ6GGN4B.js";
|
|
10
|
+
import "./chunk-7YWS3JLU.js";
|
|
11
|
+
export {
|
|
12
|
+
DEFAULT_CI_THRESHOLDS,
|
|
13
|
+
detectCiGateSignals,
|
|
14
|
+
evaluateCiGate,
|
|
15
|
+
formatCiResult,
|
|
16
|
+
formatCiSarif,
|
|
17
|
+
normalizeCiThresholds
|
|
18
|
+
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getConfigDirUsage,
|
|
4
4
|
listRecentCrashes
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6HLKCSB3.js";
|
|
6
6
|
import {
|
|
7
7
|
ProviderRegistry
|
|
8
8
|
} from "./chunk-QMXC327F.js";
|
|
@@ -11,17 +11,17 @@ import {
|
|
|
11
11
|
getTopFailingTools,
|
|
12
12
|
getTopUsedTools,
|
|
13
13
|
resetStats
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-77HDCGTN.js";
|
|
15
15
|
import "./chunk-XPBEJB27.js";
|
|
16
16
|
import {
|
|
17
17
|
ConfigManager
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-WAI3WPV2.js";
|
|
19
19
|
import "./chunk-TZQHYZKT.js";
|
|
20
20
|
import {
|
|
21
21
|
DEV_STATE_FILE_NAME,
|
|
22
22
|
MEMORY_FILE_NAME,
|
|
23
23
|
VERSION
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-7YWS3JLU.js";
|
|
25
25
|
import "./chunk-IW3Q7AE5.js";
|
|
26
26
|
|
|
27
27
|
// src/diagnostics/doctor-cli.ts
|
package/dist/electron-server.js
CHANGED
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
VERSION,
|
|
38
38
|
buildUserIdentityPrompt,
|
|
39
39
|
runTestsTool
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-OLN7VUZA.js";
|
|
41
41
|
import {
|
|
42
42
|
hasSemanticIndex,
|
|
43
43
|
semanticSearch
|
|
@@ -16070,7 +16070,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
16070
16070
|
case "test": {
|
|
16071
16071
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
16072
16072
|
try {
|
|
16073
|
-
const { executeTests } = await import("./run-tests-
|
|
16073
|
+
const { executeTests } = await import("./run-tests-4PKSIVK5.js");
|
|
16074
16074
|
const argStr = args.join(" ").trim();
|
|
16075
16075
|
let testArgs = {};
|
|
16076
16076
|
if (argStr) {
|
|
@@ -154,7 +154,7 @@ ${content}`);
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
async function runTaskMode(config, providers, configManager, topic) {
|
|
157
|
-
const { TaskOrchestrator } = await import("./task-orchestrator-
|
|
157
|
+
const { TaskOrchestrator } = await import("./task-orchestrator-TUMDTOAX.js");
|
|
158
158
|
const orchestrator = new TaskOrchestrator(config, providers, configManager);
|
|
159
159
|
let interrupted = false;
|
|
160
160
|
const onSigint = () => {
|