@wrongstack/tools 0.313.0 → 0.313.1
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/dist/audit.js +10 -4055
- package/dist/bash.js +9 -2308
- package/dist/batch-tool-use.js +2 -187
- package/dist/browser/index.js +25 -1339
- package/dist/builtin.js +69 -33949
- package/dist/chunk-2CTB3UK5.js +197 -0
- package/dist/chunk-2ME7ZWDD.js +1272 -0
- package/dist/chunk-2TFQDEPU.js +113 -0
- package/dist/chunk-2ZCJNKFE.js +315 -0
- package/dist/chunk-3PVYQFRQ.js +472 -0
- package/dist/chunk-3QMQBO5Z.js +89 -0
- package/dist/chunk-42AKKX7O.js +385 -0
- package/dist/chunk-42SKEETB.js +113 -0
- package/dist/chunk-4BHUSMNL.js +104 -0
- package/dist/chunk-4I4LWFOO.js +431 -0
- package/dist/chunk-553IQUMO.js +478 -0
- package/dist/chunk-55KF77OK.js +1944 -0
- package/dist/chunk-6HLZK37X.js +359 -0
- package/dist/chunk-6RNIFLG4.js +305 -0
- package/dist/chunk-A6BRWIXN.js +317 -0
- package/dist/chunk-AHHDWNXC.js +200 -0
- package/dist/chunk-B2CIOKWP.js +899 -0
- package/dist/chunk-BTSFTGIL.js +7 -0
- package/dist/chunk-D33S4RQG.js +222 -0
- package/dist/chunk-DIJKHSUO.js +134 -0
- package/dist/chunk-DPL47QGS.js +3515 -0
- package/dist/chunk-EMRGN4KM.js +170 -0
- package/dist/chunk-FGOABE4Z.js +955 -0
- package/dist/chunk-FW65TP4G.js +520 -0
- package/dist/chunk-GOIZNNOA.js +221 -0
- package/dist/chunk-H5MJUAA6.js +295 -0
- package/dist/chunk-H5OHH6F4.js +223 -0
- package/dist/chunk-HC5RM4WY.js +199 -0
- package/dist/chunk-HEQFMLZ7.js +190 -0
- package/dist/chunk-HFXSNKCV.js +196 -0
- package/dist/chunk-HXSBQ2SE.js +1723 -0
- package/dist/chunk-ILESNGNM.js +163 -0
- package/dist/chunk-INF5CGAO.js +137 -0
- package/dist/chunk-IWDFZ6XR.js +337 -0
- package/dist/chunk-IXMNTNW5.js +238 -0
- package/dist/chunk-J4SRJKBW.js +428 -0
- package/dist/chunk-J5SKD6LN.js +235 -0
- package/dist/chunk-JRJJX3L5.js +424 -0
- package/dist/chunk-KXNDHMUB.js +366 -0
- package/dist/chunk-LIJQMYYX.js +59 -0
- package/dist/chunk-MAN26PZ5.js +260 -0
- package/dist/chunk-MKRQMLZA.js +474 -0
- package/dist/chunk-NBDZMMG2.js +169 -0
- package/dist/chunk-NHA6BEIH.js +101 -0
- package/dist/chunk-OA6YJIWL.js +4412 -0
- package/dist/chunk-OZC255IC.js +2830 -0
- package/dist/chunk-PUR6WU2B.js +154 -0
- package/dist/chunk-Q5JPPCZC.js +12 -0
- package/dist/chunk-QBV725YG.js +128 -0
- package/dist/chunk-QHVW4AAM.js +892 -0
- package/dist/chunk-QNJ7AQ4B.js +1000 -0
- package/dist/chunk-RGISBZBD.js +231 -0
- package/dist/chunk-RJZQWEMS.js +84 -0
- package/dist/chunk-RP2ZA47V.js +15 -0
- package/dist/chunk-RXISBFR5.js +315 -0
- package/dist/chunk-S5CCLZL3.js +99 -0
- package/dist/chunk-TVTCSBJF.js +122 -0
- package/dist/chunk-U4D5S3VQ.js +21 -0
- package/dist/chunk-U4VAATKP.js +193 -0
- package/dist/chunk-UKU2ZX4C.js +203 -0
- package/dist/chunk-UNSKG6DC.js +159 -0
- package/dist/chunk-URFKEIHM.js +1091 -0
- package/dist/chunk-UTV7YAW7.js +178 -0
- package/dist/chunk-V43EQ6VR.js +68 -0
- package/dist/chunk-VB3MJGCV.js +610 -0
- package/dist/chunk-WHIIIREL.js +223 -0
- package/dist/chunk-XMIFYKUT.js +1371 -0
- package/dist/chunk-YF2RSV34.js +54 -0
- package/dist/chunk-Z6DAKQ3U.js +1 -0
- package/dist/chunk-ZIGAZFWE.js +522 -0
- package/dist/circuit-breaker.js +3 -191
- package/dist/codebase-index/index.js +84 -13688
- package/dist/codebase-index/parser-worker-script.js +8 -3995
- package/dist/codebase-index/project-server.js +60 -8548
- package/dist/codebase-index/worker.js +20 -8416
- package/dist/design.js +2 -299
- package/dist/diff.js +4 -256
- package/dist/document.js +4 -222
- package/dist/e2e.js +5 -476
- package/dist/edit.js +14 -10200
- package/dist/exec.js +16 -3131
- package/dist/fetch.js +8 -398
- package/dist/format.js +10 -3750
- package/dist/generic-parser-VUXDIAOZ.js +13 -0
- package/dist/git.js +4 -380
- package/dist/glob.js +6 -280
- package/dist/go-parser-6CA77WZ4.js +469 -0
- package/dist/grep.js +7 -604
- package/dist/index.js +318 -35387
- package/dist/install.js +10 -4091
- package/dist/json-parser-7YMDJSBJ.js +213 -0
- package/dist/json.js +4 -665
- package/dist/kanban.js +3 -2096
- package/dist/languages/index.js +23 -4664
- package/dist/legacy-bridge-7UKZT46G.js +18 -0
- package/dist/lint.js +10 -3706
- package/dist/logs.js +4 -287
- package/dist/memory.js +6 -215
- package/dist/mode.js +3 -99
- package/dist/outdated.js +4 -5170
- package/dist/pack.js +65 -33897
- package/dist/parser-dispatch-VPOFDO2U.js +14 -0
- package/dist/patch.js +13 -9935
- package/dist/plan.js +5 -3286
- package/dist/process-registry.js +8 -651
- package/dist/ps-slash.js +12 -1439
- package/dist/py-parser-GPM5VYRG.js +16 -0
- package/dist/read.js +13 -9816
- package/dist/replace.js +15 -10014
- package/dist/rs-parser-WVQ4KYCX.js +81 -0
- package/dist/scaffold.js +4 -253
- package/dist/search.js +5 -585
- package/dist/session-kanban.js +30 -972
- package/dist/skill.js +2 -215
- package/dist/task.js +5 -3410
- package/dist/test.js +10 -3773
- package/dist/todo.js +4 -2891
- package/dist/tool-help.js +3 -123
- package/dist/tool-search.js +3 -79
- package/dist/tool-tier.js +68 -33984
- package/dist/tool-use.js +2 -93
- package/dist/tree-sitter-parser-YCILHGZD.js +17 -0
- package/dist/tree.js +4 -288
- package/dist/ts-parser-YH4ZMWMH.js +232 -0
- package/dist/typecheck.js +10 -3753
- package/dist/win32.js +6 -60
- package/dist/write.js +14 -9882
- package/dist/yaml-parser-GFAOKV53.js +157 -0
- package/package.json +5 -5
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import {
|
|
2
|
+
detectLang
|
|
3
|
+
} from "./chunk-ILESNGNM.js";
|
|
4
|
+
|
|
5
|
+
// src/codebase-index/json-parser.ts
|
|
6
|
+
import { expectDefined } from "@wrongstack/core/utils";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
function parseSymbols(opts) {
|
|
9
|
+
const { file, content, lang } = opts;
|
|
10
|
+
try {
|
|
11
|
+
return regexParse({ file, content, lang });
|
|
12
|
+
} catch {
|
|
13
|
+
return { file, lang, symbols: [], mtimeMs: Date.now() };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function regexParse(opts) {
|
|
17
|
+
const { file, content, lang } = opts;
|
|
18
|
+
const symbols = [];
|
|
19
|
+
const basename2 = path.basename(file).toLowerCase();
|
|
20
|
+
const isPackageJson = basename2 === "package.json";
|
|
21
|
+
const isTsconfig = basename2 === "tsconfig.json" || basename2 === "tsconfig.build.json";
|
|
22
|
+
const isJsonSchema = content.includes("$schema") || content.includes("$id") || content.includes("$ref");
|
|
23
|
+
const isOpenApi = content.includes("openapi") || content.includes("swagger");
|
|
24
|
+
const lines = content.split("\n");
|
|
25
|
+
const lineOffsets = [0];
|
|
26
|
+
for (let i = 0; i < lines.length; i++) {
|
|
27
|
+
lineOffsets.push((lineOffsets[i] ?? 0) + (lines[i]?.length ?? 0) + 1);
|
|
28
|
+
}
|
|
29
|
+
function lineFromOffset(offset) {
|
|
30
|
+
let lo = 0;
|
|
31
|
+
let hi = lineOffsets.length - 1;
|
|
32
|
+
while (lo < hi) {
|
|
33
|
+
const mid = lo + hi + 1 >>> 1;
|
|
34
|
+
if (expectDefined(lineOffsets[mid]) <= offset) lo = mid;
|
|
35
|
+
else hi = mid - 1;
|
|
36
|
+
}
|
|
37
|
+
return lo + 1;
|
|
38
|
+
}
|
|
39
|
+
const rootMatch = content.match(/^\s*\{/m);
|
|
40
|
+
if (rootMatch) {
|
|
41
|
+
const offset = expectDefined(rootMatch.index);
|
|
42
|
+
const line = lineFromOffset(offset);
|
|
43
|
+
symbols.push(
|
|
44
|
+
makeSymbol({
|
|
45
|
+
name: path.basename(file),
|
|
46
|
+
kind: "object",
|
|
47
|
+
line,
|
|
48
|
+
col: 0,
|
|
49
|
+
signature: `"${path.basename(file)}" = { ... }`,
|
|
50
|
+
file,
|
|
51
|
+
lang
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const topLevelKeyRegex = /^\s*"([^"]+)"\s*:/gm;
|
|
56
|
+
for (let match = topLevelKeyRegex.exec(content); match !== null; match = topLevelKeyRegex.exec(content)) {
|
|
57
|
+
const key = expectDefined(match[1]);
|
|
58
|
+
const offset = match.index ?? 0;
|
|
59
|
+
const line = lineFromOffset(offset);
|
|
60
|
+
const col = offset - (lineOffsets[line - 1] ?? 0);
|
|
61
|
+
let kind = "property";
|
|
62
|
+
let signature = `"${key}": ..."`;
|
|
63
|
+
if (isPackageJson) {
|
|
64
|
+
if (key === "scripts" || key === "dependencies" || key === "devDependencies" || key === "peerDependencies" || key === "optionalDependencies") {
|
|
65
|
+
kind = "const";
|
|
66
|
+
signature = `"${key}": { ... }`;
|
|
67
|
+
}
|
|
68
|
+
} else if (isTsconfig) {
|
|
69
|
+
if (key === "compilerOptions") {
|
|
70
|
+
kind = "property";
|
|
71
|
+
signature = `"compilerOptions": { ... }`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (isJsonSchema || isOpenApi) {
|
|
75
|
+
if (key === "$schema" || key === "$id") {
|
|
76
|
+
kind = "schema";
|
|
77
|
+
signature = `"${key}": "..."`;
|
|
78
|
+
} else if (key === "$ref") {
|
|
79
|
+
kind = "schema";
|
|
80
|
+
signature = `"$ref": "..."`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
symbols.push(
|
|
84
|
+
makeSymbol({
|
|
85
|
+
name: key,
|
|
86
|
+
kind,
|
|
87
|
+
line,
|
|
88
|
+
col,
|
|
89
|
+
signature,
|
|
90
|
+
file,
|
|
91
|
+
lang
|
|
92
|
+
})
|
|
93
|
+
);
|
|
94
|
+
if (isPackageJson && key === "scripts") {
|
|
95
|
+
extractPackageScripts(content, symbols, file, lang, lineOffsets, lineFromOffset);
|
|
96
|
+
}
|
|
97
|
+
if (isTsconfig && key === "compilerOptions") {
|
|
98
|
+
extractCompilerOptions(content, symbols, file, lang, lineOffsets, line, lineFromOffset);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const defsRegex = /"\$defs"\s*:|"\$defs"\s*:/g;
|
|
102
|
+
const defsMatch = defsRegex.exec(content);
|
|
103
|
+
if (defsMatch !== null) {
|
|
104
|
+
const offset = expectDefined(defsMatch.index);
|
|
105
|
+
const line = lineFromOffset(offset);
|
|
106
|
+
symbols.push(
|
|
107
|
+
makeSymbol({
|
|
108
|
+
name: "$defs",
|
|
109
|
+
kind: "property",
|
|
110
|
+
line,
|
|
111
|
+
col: offset - (lineOffsets[line - 1] ?? 0),
|
|
112
|
+
signature: '"$defs": { ... }',
|
|
113
|
+
file,
|
|
114
|
+
lang
|
|
115
|
+
})
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
const defsPatterns = [
|
|
119
|
+
/"\$defs"\s*:/g,
|
|
120
|
+
/"definitions"\s*:/g,
|
|
121
|
+
/"components"\s*:/g,
|
|
122
|
+
/"schemas"\s*:/g
|
|
123
|
+
];
|
|
124
|
+
for (const pat of defsPatterns) {
|
|
125
|
+
pat.lastIndex = 0;
|
|
126
|
+
for (let match = pat.exec(content); match !== null; match = pat.exec(content)) {
|
|
127
|
+
const offset = match.index ?? 0;
|
|
128
|
+
const line = lineFromOffset(offset);
|
|
129
|
+
const key = match[0]?.match(/"([^"]+)"/)?.[1] ?? expectDefined(match[0]);
|
|
130
|
+
symbols.push(
|
|
131
|
+
makeSymbol({
|
|
132
|
+
name: key,
|
|
133
|
+
kind: "property",
|
|
134
|
+
line,
|
|
135
|
+
col: offset - (lineOffsets[line - 1] ?? 0),
|
|
136
|
+
signature: `"${key}": { ... }`,
|
|
137
|
+
file,
|
|
138
|
+
lang
|
|
139
|
+
})
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { file, lang, symbols, mtimeMs: Date.now() };
|
|
144
|
+
}
|
|
145
|
+
function extractPackageScripts(content, symbols, file, lang, lineOffsets, lineFromOffset) {
|
|
146
|
+
const scriptsBlockRegex = /"scripts"\s*:\s*\{([^}]+)\}/g;
|
|
147
|
+
for (let match = scriptsBlockRegex.exec(content); match !== null; match = scriptsBlockRegex.exec(content)) {
|
|
148
|
+
const blockContent = expectDefined(match[0]);
|
|
149
|
+
const blockOffset = match.index ?? 0;
|
|
150
|
+
const scriptKeyRegex = /"(\w[\w-]*)"\s*:/g;
|
|
151
|
+
for (let scriptMatch = scriptKeyRegex.exec(blockContent); scriptMatch !== null; scriptMatch = scriptKeyRegex.exec(blockContent)) {
|
|
152
|
+
const key = expectDefined(scriptMatch[1]);
|
|
153
|
+
const keyOffset = blockOffset + expectDefined(scriptMatch.index);
|
|
154
|
+
const line = lineFromOffset(keyOffset);
|
|
155
|
+
symbols.push(
|
|
156
|
+
makeSymbol({
|
|
157
|
+
name: key,
|
|
158
|
+
kind: "function",
|
|
159
|
+
line,
|
|
160
|
+
col: keyOffset - (lineOffsets[line - 1] ?? 0),
|
|
161
|
+
signature: `"${key}": "..."`,
|
|
162
|
+
file,
|
|
163
|
+
lang
|
|
164
|
+
})
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function extractCompilerOptions(content, symbols, file, lang, lineOffsets, parentLine, lineFromOffset) {
|
|
170
|
+
const optsBlockRegex = /"compilerOptions"\s*:\s*\{([^}]+)\}/g;
|
|
171
|
+
for (let match = optsBlockRegex.exec(content); match !== null; match = optsBlockRegex.exec(content)) {
|
|
172
|
+
const blockContent = expectDefined(match[0]);
|
|
173
|
+
const blockOffset = match.index ?? 0;
|
|
174
|
+
const optKeyRegex = /"(\w[\w]*)"\s*:/g;
|
|
175
|
+
for (let optMatch = optKeyRegex.exec(blockContent); optMatch !== null; optMatch = optKeyRegex.exec(blockContent)) {
|
|
176
|
+
const key = expectDefined(optMatch[1]);
|
|
177
|
+
const keyOffset = blockOffset + expectDefined(optMatch.index);
|
|
178
|
+
const line = lineFromOffset(keyOffset);
|
|
179
|
+
if (line <= parentLine) continue;
|
|
180
|
+
symbols.push(
|
|
181
|
+
makeSymbol({
|
|
182
|
+
name: key,
|
|
183
|
+
kind: "property",
|
|
184
|
+
line,
|
|
185
|
+
col: keyOffset - (lineOffsets[line - 1] ?? 0),
|
|
186
|
+
signature: `"${key}": ...`,
|
|
187
|
+
file,
|
|
188
|
+
lang
|
|
189
|
+
})
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function makeSymbol(opts) {
|
|
195
|
+
return {
|
|
196
|
+
id: 0,
|
|
197
|
+
lang: opts.lang,
|
|
198
|
+
kind: opts.kind,
|
|
199
|
+
name: opts.name,
|
|
200
|
+
file: opts.file,
|
|
201
|
+
line: opts.line,
|
|
202
|
+
col: opts.col,
|
|
203
|
+
signature: opts.signature,
|
|
204
|
+
docComment: "",
|
|
205
|
+
scope: "",
|
|
206
|
+
text: `${opts.name} ${opts.signature}`.trim()
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
export {
|
|
210
|
+
detectLang,
|
|
211
|
+
parseSymbols
|
|
212
|
+
};
|
|
213
|
+
//# sourceMappingURL=json-parser-7YMDJSBJ.js.map
|