@vpxa/kb 0.1.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/LICENSE +21 -0
- package/README.md +1140 -0
- package/bin/kb.mjs +10 -0
- package/package.json +67 -0
- package/packages/analyzers/dist/blast-radius-analyzer.d.ts +23 -0
- package/packages/analyzers/dist/blast-radius-analyzer.js +114 -0
- package/packages/analyzers/dist/dependency-analyzer.d.ts +29 -0
- package/packages/analyzers/dist/dependency-analyzer.js +425 -0
- package/packages/analyzers/dist/diagram-generator.d.ts +13 -0
- package/packages/analyzers/dist/diagram-generator.js +86 -0
- package/packages/analyzers/dist/entry-point-analyzer.d.ts +19 -0
- package/packages/analyzers/dist/entry-point-analyzer.js +239 -0
- package/packages/analyzers/dist/index.d.ts +14 -0
- package/packages/analyzers/dist/index.js +23 -0
- package/packages/analyzers/dist/knowledge-producer.d.ts +32 -0
- package/packages/analyzers/dist/knowledge-producer.js +113 -0
- package/packages/analyzers/dist/pattern-analyzer.d.ts +12 -0
- package/packages/analyzers/dist/pattern-analyzer.js +359 -0
- package/packages/analyzers/dist/regex-call-graph.d.ts +17 -0
- package/packages/analyzers/dist/regex-call-graph.js +428 -0
- package/packages/analyzers/dist/structure-analyzer.d.ts +11 -0
- package/packages/analyzers/dist/structure-analyzer.js +258 -0
- package/packages/analyzers/dist/symbol-analyzer.d.ts +10 -0
- package/packages/analyzers/dist/symbol-analyzer.js +442 -0
- package/packages/analyzers/dist/ts-call-graph.d.ts +27 -0
- package/packages/analyzers/dist/ts-call-graph.js +160 -0
- package/packages/analyzers/dist/types.d.ts +98 -0
- package/packages/analyzers/dist/types.js +1 -0
- package/packages/chunker/dist/call-graph-extractor.d.ts +22 -0
- package/packages/chunker/dist/call-graph-extractor.js +90 -0
- package/packages/chunker/dist/chunker-factory.d.ts +7 -0
- package/packages/chunker/dist/chunker-factory.js +36 -0
- package/packages/chunker/dist/chunker.interface.d.ts +10 -0
- package/packages/chunker/dist/chunker.interface.js +1 -0
- package/packages/chunker/dist/code-chunker.d.ts +14 -0
- package/packages/chunker/dist/code-chunker.js +134 -0
- package/packages/chunker/dist/generic-chunker.d.ts +12 -0
- package/packages/chunker/dist/generic-chunker.js +72 -0
- package/packages/chunker/dist/index.d.ts +8 -0
- package/packages/chunker/dist/index.js +21 -0
- package/packages/chunker/dist/markdown-chunker.d.ts +14 -0
- package/packages/chunker/dist/markdown-chunker.js +122 -0
- package/packages/chunker/dist/treesitter-chunker.d.ts +47 -0
- package/packages/chunker/dist/treesitter-chunker.js +234 -0
- package/packages/cli/dist/commands/analyze.d.ts +3 -0
- package/packages/cli/dist/commands/analyze.js +112 -0
- package/packages/cli/dist/commands/context-cmds.d.ts +3 -0
- package/packages/cli/dist/commands/context-cmds.js +155 -0
- package/packages/cli/dist/commands/environment.d.ts +3 -0
- package/packages/cli/dist/commands/environment.js +204 -0
- package/packages/cli/dist/commands/execution.d.ts +3 -0
- package/packages/cli/dist/commands/execution.js +137 -0
- package/packages/cli/dist/commands/graph.d.ts +3 -0
- package/packages/cli/dist/commands/graph.js +81 -0
- package/packages/cli/dist/commands/init.d.ts +8 -0
- package/packages/cli/dist/commands/init.js +87 -0
- package/packages/cli/dist/commands/knowledge.d.ts +3 -0
- package/packages/cli/dist/commands/knowledge.js +139 -0
- package/packages/cli/dist/commands/search.d.ts +3 -0
- package/packages/cli/dist/commands/search.js +267 -0
- package/packages/cli/dist/commands/system.d.ts +3 -0
- package/packages/cli/dist/commands/system.js +241 -0
- package/packages/cli/dist/commands/workspace.d.ts +3 -0
- package/packages/cli/dist/commands/workspace.js +388 -0
- package/packages/cli/dist/context.d.ts +5 -0
- package/packages/cli/dist/context.js +14 -0
- package/packages/cli/dist/helpers.d.ts +52 -0
- package/packages/cli/dist/helpers.js +458 -0
- package/packages/cli/dist/index.d.ts +8 -0
- package/packages/cli/dist/index.js +69 -0
- package/packages/cli/dist/kb-init.d.ts +57 -0
- package/packages/cli/dist/kb-init.js +82 -0
- package/packages/cli/dist/types.d.ts +7 -0
- package/packages/cli/dist/types.js +1 -0
- package/packages/core/dist/constants.d.ts +49 -0
- package/packages/core/dist/constants.js +43 -0
- package/packages/core/dist/content-detector.d.ts +9 -0
- package/packages/core/dist/content-detector.js +79 -0
- package/packages/core/dist/errors.d.ts +18 -0
- package/packages/core/dist/errors.js +40 -0
- package/packages/core/dist/index.d.ts +6 -0
- package/packages/core/dist/index.js +9 -0
- package/packages/core/dist/logger.d.ts +9 -0
- package/packages/core/dist/logger.js +34 -0
- package/packages/core/dist/types.d.ts +108 -0
- package/packages/core/dist/types.js +1 -0
- package/packages/embeddings/dist/embedder.interface.d.ts +24 -0
- package/packages/embeddings/dist/embedder.interface.js +1 -0
- package/packages/embeddings/dist/index.d.ts +3 -0
- package/packages/embeddings/dist/index.js +5 -0
- package/packages/embeddings/dist/onnx-embedder.d.ts +24 -0
- package/packages/embeddings/dist/onnx-embedder.js +82 -0
- package/packages/indexer/dist/file-hasher.d.ts +11 -0
- package/packages/indexer/dist/file-hasher.js +13 -0
- package/packages/indexer/dist/filesystem-crawler.d.ts +27 -0
- package/packages/indexer/dist/filesystem-crawler.js +125 -0
- package/packages/indexer/dist/graph-extractor.d.ts +22 -0
- package/packages/indexer/dist/graph-extractor.js +111 -0
- package/packages/indexer/dist/incremental-indexer.d.ts +47 -0
- package/packages/indexer/dist/incremental-indexer.js +278 -0
- package/packages/indexer/dist/index.d.ts +5 -0
- package/packages/indexer/dist/index.js +14 -0
- package/packages/server/dist/api.d.ts +8 -0
- package/packages/server/dist/api.js +9 -0
- package/packages/server/dist/config.d.ts +3 -0
- package/packages/server/dist/config.js +75 -0
- package/packages/server/dist/curated-manager.d.ts +86 -0
- package/packages/server/dist/curated-manager.js +357 -0
- package/packages/server/dist/index.d.ts +2 -0
- package/packages/server/dist/index.js +134 -0
- package/packages/server/dist/replay-interceptor.d.ts +11 -0
- package/packages/server/dist/replay-interceptor.js +38 -0
- package/packages/server/dist/resources/resources.d.ts +4 -0
- package/packages/server/dist/resources/resources.js +40 -0
- package/packages/server/dist/server.d.ts +21 -0
- package/packages/server/dist/server.js +247 -0
- package/packages/server/dist/tools/analyze.tools.d.ts +11 -0
- package/packages/server/dist/tools/analyze.tools.js +288 -0
- package/packages/server/dist/tools/forge.tools.d.ts +12 -0
- package/packages/server/dist/tools/forge.tools.js +501 -0
- package/packages/server/dist/tools/forget.tool.d.ts +4 -0
- package/packages/server/dist/tools/forget.tool.js +43 -0
- package/packages/server/dist/tools/graph.tool.d.ts +4 -0
- package/packages/server/dist/tools/graph.tool.js +110 -0
- package/packages/server/dist/tools/list.tool.d.ts +4 -0
- package/packages/server/dist/tools/list.tool.js +56 -0
- package/packages/server/dist/tools/lookup.tool.d.ts +4 -0
- package/packages/server/dist/tools/lookup.tool.js +53 -0
- package/packages/server/dist/tools/onboard.tool.d.ts +5 -0
- package/packages/server/dist/tools/onboard.tool.js +112 -0
- package/packages/server/dist/tools/produce.tool.d.ts +3 -0
- package/packages/server/dist/tools/produce.tool.js +74 -0
- package/packages/server/dist/tools/read.tool.d.ts +4 -0
- package/packages/server/dist/tools/read.tool.js +49 -0
- package/packages/server/dist/tools/reindex.tool.d.ts +7 -0
- package/packages/server/dist/tools/reindex.tool.js +70 -0
- package/packages/server/dist/tools/remember.tool.d.ts +4 -0
- package/packages/server/dist/tools/remember.tool.js +45 -0
- package/packages/server/dist/tools/replay.tool.d.ts +3 -0
- package/packages/server/dist/tools/replay.tool.js +89 -0
- package/packages/server/dist/tools/search.tool.d.ts +5 -0
- package/packages/server/dist/tools/search.tool.js +331 -0
- package/packages/server/dist/tools/status.tool.d.ts +4 -0
- package/packages/server/dist/tools/status.tool.js +68 -0
- package/packages/server/dist/tools/toolkit.tools.d.ts +35 -0
- package/packages/server/dist/tools/toolkit.tools.js +1674 -0
- package/packages/server/dist/tools/update.tool.d.ts +4 -0
- package/packages/server/dist/tools/update.tool.js +42 -0
- package/packages/server/dist/tools/utility.tools.d.ts +15 -0
- package/packages/server/dist/tools/utility.tools.js +461 -0
- package/packages/store/dist/graph-store.interface.d.ts +104 -0
- package/packages/store/dist/graph-store.interface.js +1 -0
- package/packages/store/dist/index.d.ts +6 -0
- package/packages/store/dist/index.js +9 -0
- package/packages/store/dist/lance-store.d.ts +32 -0
- package/packages/store/dist/lance-store.js +258 -0
- package/packages/store/dist/sqlite-graph-store.d.ts +43 -0
- package/packages/store/dist/sqlite-graph-store.js +374 -0
- package/packages/store/dist/store-factory.d.ts +9 -0
- package/packages/store/dist/store-factory.js +14 -0
- package/packages/store/dist/store.interface.d.ts +48 -0
- package/packages/store/dist/store.interface.js +1 -0
- package/packages/tools/dist/batch.d.ts +21 -0
- package/packages/tools/dist/batch.js +45 -0
- package/packages/tools/dist/changelog.d.ts +34 -0
- package/packages/tools/dist/changelog.js +112 -0
- package/packages/tools/dist/check.d.ts +26 -0
- package/packages/tools/dist/check.js +59 -0
- package/packages/tools/dist/checkpoint.d.ts +17 -0
- package/packages/tools/dist/checkpoint.js +43 -0
- package/packages/tools/dist/codemod.d.ts +37 -0
- package/packages/tools/dist/codemod.js +69 -0
- package/packages/tools/dist/compact.d.ts +41 -0
- package/packages/tools/dist/compact.js +60 -0
- package/packages/tools/dist/data-transform.d.ts +10 -0
- package/packages/tools/dist/data-transform.js +124 -0
- package/packages/tools/dist/dead-symbols.d.ts +21 -0
- package/packages/tools/dist/dead-symbols.js +71 -0
- package/packages/tools/dist/delegate.d.ts +34 -0
- package/packages/tools/dist/delegate.js +130 -0
- package/packages/tools/dist/diff-parse.d.ts +26 -0
- package/packages/tools/dist/diff-parse.js +153 -0
- package/packages/tools/dist/digest.d.ts +53 -0
- package/packages/tools/dist/digest.js +242 -0
- package/packages/tools/dist/encode.d.ts +14 -0
- package/packages/tools/dist/encode.js +46 -0
- package/packages/tools/dist/env-info.d.ts +28 -0
- package/packages/tools/dist/env-info.js +58 -0
- package/packages/tools/dist/eval.d.ts +13 -0
- package/packages/tools/dist/eval.js +79 -0
- package/packages/tools/dist/evidence-map.d.ts +79 -0
- package/packages/tools/dist/evidence-map.js +203 -0
- package/packages/tools/dist/file-summary.d.ts +32 -0
- package/packages/tools/dist/file-summary.js +106 -0
- package/packages/tools/dist/file-walk.d.ts +4 -0
- package/packages/tools/dist/file-walk.js +75 -0
- package/packages/tools/dist/find-examples.d.ts +25 -0
- package/packages/tools/dist/find-examples.js +48 -0
- package/packages/tools/dist/find.d.ts +47 -0
- package/packages/tools/dist/find.js +120 -0
- package/packages/tools/dist/forge-classify.d.ts +44 -0
- package/packages/tools/dist/forge-classify.js +319 -0
- package/packages/tools/dist/forge-ground.d.ts +64 -0
- package/packages/tools/dist/forge-ground.js +184 -0
- package/packages/tools/dist/git-context.d.ts +22 -0
- package/packages/tools/dist/git-context.js +46 -0
- package/packages/tools/dist/graph-query.d.ts +89 -0
- package/packages/tools/dist/graph-query.js +194 -0
- package/packages/tools/dist/health.d.ts +14 -0
- package/packages/tools/dist/health.js +118 -0
- package/packages/tools/dist/http-request.d.ts +23 -0
- package/packages/tools/dist/http-request.js +58 -0
- package/packages/tools/dist/index.d.ts +49 -0
- package/packages/tools/dist/index.js +273 -0
- package/packages/tools/dist/lane.d.ts +39 -0
- package/packages/tools/dist/lane.js +227 -0
- package/packages/tools/dist/measure.d.ts +38 -0
- package/packages/tools/dist/measure.js +119 -0
- package/packages/tools/dist/onboard.d.ts +41 -0
- package/packages/tools/dist/onboard.js +1139 -0
- package/packages/tools/dist/parse-output.d.ts +80 -0
- package/packages/tools/dist/parse-output.js +158 -0
- package/packages/tools/dist/process-manager.d.ts +18 -0
- package/packages/tools/dist/process-manager.js +69 -0
- package/packages/tools/dist/queue.d.ts +38 -0
- package/packages/tools/dist/queue.js +126 -0
- package/packages/tools/dist/regex-test.d.ts +31 -0
- package/packages/tools/dist/regex-test.js +39 -0
- package/packages/tools/dist/rename.d.ts +29 -0
- package/packages/tools/dist/rename.js +70 -0
- package/packages/tools/dist/replay.d.ts +56 -0
- package/packages/tools/dist/replay.js +108 -0
- package/packages/tools/dist/schema-validate.d.ts +23 -0
- package/packages/tools/dist/schema-validate.js +141 -0
- package/packages/tools/dist/scope-map.d.ts +52 -0
- package/packages/tools/dist/scope-map.js +72 -0
- package/packages/tools/dist/snippet.d.ts +34 -0
- package/packages/tools/dist/snippet.js +80 -0
- package/packages/tools/dist/stash.d.ts +12 -0
- package/packages/tools/dist/stash.js +60 -0
- package/packages/tools/dist/stratum-card.d.ts +31 -0
- package/packages/tools/dist/stratum-card.js +239 -0
- package/packages/tools/dist/symbol.d.ts +28 -0
- package/packages/tools/dist/symbol.js +87 -0
- package/packages/tools/dist/test-run.d.ts +23 -0
- package/packages/tools/dist/test-run.js +55 -0
- package/packages/tools/dist/text-utils.d.ts +16 -0
- package/packages/tools/dist/text-utils.js +31 -0
- package/packages/tools/dist/time-utils.d.ts +18 -0
- package/packages/tools/dist/time-utils.js +135 -0
- package/packages/tools/dist/trace.d.ts +24 -0
- package/packages/tools/dist/trace.js +114 -0
- package/packages/tools/dist/truncation.d.ts +22 -0
- package/packages/tools/dist/truncation.js +45 -0
- package/packages/tools/dist/watch.d.ts +30 -0
- package/packages/tools/dist/watch.js +61 -0
- package/packages/tools/dist/web-fetch.d.ts +45 -0
- package/packages/tools/dist/web-fetch.js +249 -0
- package/packages/tools/dist/web-search.d.ts +23 -0
- package/packages/tools/dist/web-search.js +46 -0
- package/packages/tools/dist/workset.d.ts +45 -0
- package/packages/tools/dist/workset.js +77 -0
- package/packages/tui/dist/App.d.ts +8 -0
- package/packages/tui/dist/App.js +52659 -0
- package/packages/tui/dist/index.d.ts +19 -0
- package/packages/tui/dist/index.js +54742 -0
- package/packages/tui/dist/panels/CuratedPanel.d.ts +8 -0
- package/packages/tui/dist/panels/CuratedPanel.js +34452 -0
- package/packages/tui/dist/panels/LogPanel.d.ts +3 -0
- package/packages/tui/dist/panels/LogPanel.js +51894 -0
- package/packages/tui/dist/panels/SearchPanel.d.ts +10 -0
- package/packages/tui/dist/panels/SearchPanel.js +34985 -0
- package/packages/tui/dist/panels/StatusPanel.d.ts +8 -0
- package/packages/tui/dist/panels/StatusPanel.js +34465 -0
- package/skills/knowledge-base/SKILL.md +316 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import {
|
|
2
|
+
batch
|
|
3
|
+
} from "./batch.js";
|
|
4
|
+
import {
|
|
5
|
+
changelog,
|
|
6
|
+
formatChangelog
|
|
7
|
+
} from "./changelog.js";
|
|
8
|
+
import { check } from "./check.js";
|
|
9
|
+
import {
|
|
10
|
+
checkpointLatest,
|
|
11
|
+
checkpointList,
|
|
12
|
+
checkpointLoad,
|
|
13
|
+
checkpointSave
|
|
14
|
+
} from "./checkpoint.js";
|
|
15
|
+
import {
|
|
16
|
+
codemod
|
|
17
|
+
} from "./codemod.js";
|
|
18
|
+
import { compact } from "./compact.js";
|
|
19
|
+
import {
|
|
20
|
+
dataTransform
|
|
21
|
+
} from "./data-transform.js";
|
|
22
|
+
import {
|
|
23
|
+
findDeadSymbols
|
|
24
|
+
} from "./dead-symbols.js";
|
|
25
|
+
import {
|
|
26
|
+
delegate,
|
|
27
|
+
delegateListModels
|
|
28
|
+
} from "./delegate.js";
|
|
29
|
+
import {
|
|
30
|
+
diffParse
|
|
31
|
+
} from "./diff-parse.js";
|
|
32
|
+
import {
|
|
33
|
+
digest
|
|
34
|
+
} from "./digest.js";
|
|
35
|
+
import {
|
|
36
|
+
encode
|
|
37
|
+
} from "./encode.js";
|
|
38
|
+
import {
|
|
39
|
+
envInfo
|
|
40
|
+
} from "./env-info.js";
|
|
41
|
+
import { evaluate } from "./eval.js";
|
|
42
|
+
import {
|
|
43
|
+
evidenceMap
|
|
44
|
+
} from "./evidence-map.js";
|
|
45
|
+
import {
|
|
46
|
+
fileSummary
|
|
47
|
+
} from "./file-summary.js";
|
|
48
|
+
import { find } from "./find.js";
|
|
49
|
+
import {
|
|
50
|
+
findExamples
|
|
51
|
+
} from "./find-examples.js";
|
|
52
|
+
import {
|
|
53
|
+
forgeClassify
|
|
54
|
+
} from "./forge-classify.js";
|
|
55
|
+
import {
|
|
56
|
+
forgeGround
|
|
57
|
+
} from "./forge-ground.js";
|
|
58
|
+
import {
|
|
59
|
+
gitContext
|
|
60
|
+
} from "./git-context.js";
|
|
61
|
+
import {
|
|
62
|
+
graphAugmentSearch,
|
|
63
|
+
graphQuery
|
|
64
|
+
} from "./graph-query.js";
|
|
65
|
+
import {
|
|
66
|
+
health
|
|
67
|
+
} from "./health.js";
|
|
68
|
+
import {
|
|
69
|
+
httpRequest
|
|
70
|
+
} from "./http-request.js";
|
|
71
|
+
import {
|
|
72
|
+
laneCreate,
|
|
73
|
+
laneDiff,
|
|
74
|
+
laneDiscard,
|
|
75
|
+
laneList,
|
|
76
|
+
laneMerge,
|
|
77
|
+
laneStatus
|
|
78
|
+
} from "./lane.js";
|
|
79
|
+
import {
|
|
80
|
+
analyzeFile,
|
|
81
|
+
measure
|
|
82
|
+
} from "./measure.js";
|
|
83
|
+
import {
|
|
84
|
+
onboard
|
|
85
|
+
} from "./onboard.js";
|
|
86
|
+
import {
|
|
87
|
+
parseBiome,
|
|
88
|
+
parseGitStatus,
|
|
89
|
+
parseOutput,
|
|
90
|
+
parseTsc,
|
|
91
|
+
parseVitest
|
|
92
|
+
} from "./parse-output.js";
|
|
93
|
+
import {
|
|
94
|
+
processList,
|
|
95
|
+
processLogs,
|
|
96
|
+
processStart,
|
|
97
|
+
processStatus,
|
|
98
|
+
processStop
|
|
99
|
+
} from "./process-manager.js";
|
|
100
|
+
import {
|
|
101
|
+
queueClear,
|
|
102
|
+
queueCreate,
|
|
103
|
+
queueDelete,
|
|
104
|
+
queueDone,
|
|
105
|
+
queueFail,
|
|
106
|
+
queueGet,
|
|
107
|
+
queueList,
|
|
108
|
+
queueNext,
|
|
109
|
+
queuePush
|
|
110
|
+
} from "./queue.js";
|
|
111
|
+
import {
|
|
112
|
+
regexTest
|
|
113
|
+
} from "./regex-test.js";
|
|
114
|
+
import {
|
|
115
|
+
rename
|
|
116
|
+
} from "./rename.js";
|
|
117
|
+
import {
|
|
118
|
+
replayAppend,
|
|
119
|
+
replayCapture,
|
|
120
|
+
replayClear,
|
|
121
|
+
replayList,
|
|
122
|
+
replayTrim
|
|
123
|
+
} from "./replay.js";
|
|
124
|
+
import {
|
|
125
|
+
schemaValidate
|
|
126
|
+
} from "./schema-validate.js";
|
|
127
|
+
import {
|
|
128
|
+
scopeMap
|
|
129
|
+
} from "./scope-map.js";
|
|
130
|
+
import {
|
|
131
|
+
snippet
|
|
132
|
+
} from "./snippet.js";
|
|
133
|
+
import {
|
|
134
|
+
stashClear,
|
|
135
|
+
stashDelete,
|
|
136
|
+
stashGet,
|
|
137
|
+
stashList,
|
|
138
|
+
stashSet
|
|
139
|
+
} from "./stash.js";
|
|
140
|
+
import {
|
|
141
|
+
stratumCard
|
|
142
|
+
} from "./stratum-card.js";
|
|
143
|
+
import { symbol } from "./symbol.js";
|
|
144
|
+
import { classifyExitCode, testRun } from "./test-run.js";
|
|
145
|
+
import {
|
|
146
|
+
cosineSimilarity,
|
|
147
|
+
estimateTokens,
|
|
148
|
+
segment
|
|
149
|
+
} from "./text-utils.js";
|
|
150
|
+
import {
|
|
151
|
+
timeUtils
|
|
152
|
+
} from "./time-utils.js";
|
|
153
|
+
import { trace } from "./trace.js";
|
|
154
|
+
import { headTailTruncate, paragraphTruncate } from "./truncation.js";
|
|
155
|
+
import {
|
|
156
|
+
watchList,
|
|
157
|
+
watchStart,
|
|
158
|
+
watchStop
|
|
159
|
+
} from "./watch.js";
|
|
160
|
+
import {
|
|
161
|
+
webFetch
|
|
162
|
+
} from "./web-fetch.js";
|
|
163
|
+
import {
|
|
164
|
+
parseSearchResults,
|
|
165
|
+
webSearch
|
|
166
|
+
} from "./web-search.js";
|
|
167
|
+
import {
|
|
168
|
+
addToWorkset,
|
|
169
|
+
deleteWorkset,
|
|
170
|
+
getWorkset,
|
|
171
|
+
listWorksets,
|
|
172
|
+
removeFromWorkset,
|
|
173
|
+
saveWorkset
|
|
174
|
+
} from "./workset.js";
|
|
175
|
+
export {
|
|
176
|
+
addToWorkset,
|
|
177
|
+
analyzeFile,
|
|
178
|
+
batch,
|
|
179
|
+
changelog,
|
|
180
|
+
check,
|
|
181
|
+
checkpointLatest,
|
|
182
|
+
checkpointList,
|
|
183
|
+
checkpointLoad,
|
|
184
|
+
checkpointSave,
|
|
185
|
+
classifyExitCode,
|
|
186
|
+
codemod,
|
|
187
|
+
compact,
|
|
188
|
+
cosineSimilarity,
|
|
189
|
+
dataTransform,
|
|
190
|
+
delegate,
|
|
191
|
+
delegateListModels,
|
|
192
|
+
deleteWorkset,
|
|
193
|
+
diffParse,
|
|
194
|
+
digest,
|
|
195
|
+
encode,
|
|
196
|
+
envInfo,
|
|
197
|
+
estimateTokens,
|
|
198
|
+
evaluate,
|
|
199
|
+
evidenceMap,
|
|
200
|
+
fileSummary,
|
|
201
|
+
find,
|
|
202
|
+
findDeadSymbols,
|
|
203
|
+
findExamples,
|
|
204
|
+
forgeClassify,
|
|
205
|
+
forgeGround,
|
|
206
|
+
formatChangelog,
|
|
207
|
+
getWorkset,
|
|
208
|
+
gitContext,
|
|
209
|
+
graphAugmentSearch,
|
|
210
|
+
graphQuery,
|
|
211
|
+
headTailTruncate,
|
|
212
|
+
health,
|
|
213
|
+
httpRequest,
|
|
214
|
+
laneCreate,
|
|
215
|
+
laneDiff,
|
|
216
|
+
laneDiscard,
|
|
217
|
+
laneList,
|
|
218
|
+
laneMerge,
|
|
219
|
+
laneStatus,
|
|
220
|
+
listWorksets,
|
|
221
|
+
measure,
|
|
222
|
+
onboard,
|
|
223
|
+
paragraphTruncate,
|
|
224
|
+
parseBiome,
|
|
225
|
+
parseGitStatus,
|
|
226
|
+
parseOutput,
|
|
227
|
+
parseSearchResults,
|
|
228
|
+
parseTsc,
|
|
229
|
+
parseVitest,
|
|
230
|
+
processList,
|
|
231
|
+
processLogs,
|
|
232
|
+
processStart,
|
|
233
|
+
processStatus,
|
|
234
|
+
processStop,
|
|
235
|
+
queueClear,
|
|
236
|
+
queueCreate,
|
|
237
|
+
queueDelete,
|
|
238
|
+
queueDone,
|
|
239
|
+
queueFail,
|
|
240
|
+
queueGet,
|
|
241
|
+
queueList,
|
|
242
|
+
queueNext,
|
|
243
|
+
queuePush,
|
|
244
|
+
regexTest,
|
|
245
|
+
removeFromWorkset,
|
|
246
|
+
rename,
|
|
247
|
+
replayAppend,
|
|
248
|
+
replayCapture,
|
|
249
|
+
replayClear,
|
|
250
|
+
replayList,
|
|
251
|
+
replayTrim,
|
|
252
|
+
saveWorkset,
|
|
253
|
+
schemaValidate,
|
|
254
|
+
scopeMap,
|
|
255
|
+
segment,
|
|
256
|
+
snippet,
|
|
257
|
+
stashClear,
|
|
258
|
+
stashDelete,
|
|
259
|
+
stashGet,
|
|
260
|
+
stashList,
|
|
261
|
+
stashSet,
|
|
262
|
+
stratumCard,
|
|
263
|
+
symbol,
|
|
264
|
+
testRun,
|
|
265
|
+
timeUtils,
|
|
266
|
+
trace,
|
|
267
|
+
watchList,
|
|
268
|
+
watchStart,
|
|
269
|
+
watchStop,
|
|
270
|
+
webFetch,
|
|
271
|
+
webSearch
|
|
272
|
+
};
|
|
273
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface LaneMeta {
|
|
2
|
+
name: string;
|
|
3
|
+
createdAt: string;
|
|
4
|
+
sourceFiles: string[];
|
|
5
|
+
rootPath: string;
|
|
6
|
+
}
|
|
7
|
+
export interface LaneDiffEntry {
|
|
8
|
+
file: string;
|
|
9
|
+
status: 'modified' | 'added' | 'deleted' | 'unchanged';
|
|
10
|
+
diff?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface LaneDiffResult {
|
|
13
|
+
name: string;
|
|
14
|
+
entries: LaneDiffEntry[];
|
|
15
|
+
modified: number;
|
|
16
|
+
added: number;
|
|
17
|
+
deleted: number;
|
|
18
|
+
}
|
|
19
|
+
export interface LaneMergeResult {
|
|
20
|
+
name: string;
|
|
21
|
+
filesMerged: number;
|
|
22
|
+
files: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create an isolated lane by copying specified files into `.kb-state/lanes/<name>/`.
|
|
26
|
+
* Files are stored with their relative paths preserved.
|
|
27
|
+
*/
|
|
28
|
+
export declare function laneCreate(name: string, files: string[], cwd?: string): LaneMeta;
|
|
29
|
+
/** List all active lanes. */
|
|
30
|
+
export declare function laneList(cwd?: string): LaneMeta[];
|
|
31
|
+
/** Get the status of a lane — which files are modified, added, deleted. */
|
|
32
|
+
export declare function laneStatus(name: string, cwd?: string): LaneDiffResult;
|
|
33
|
+
/** Generate a unified diff for modified files in a lane. */
|
|
34
|
+
export declare function laneDiff(name: string, cwd?: string): LaneDiffResult;
|
|
35
|
+
/** Merge lane files back to the original locations. */
|
|
36
|
+
export declare function laneMerge(name: string, cwd?: string): LaneMergeResult;
|
|
37
|
+
/** Discard a lane entirely. */
|
|
38
|
+
export declare function laneDiscard(name: string, cwd?: string): boolean;
|
|
39
|
+
//# sourceMappingURL=lane.d.ts.map
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cpSync,
|
|
3
|
+
existsSync,
|
|
4
|
+
mkdirSync,
|
|
5
|
+
readdirSync,
|
|
6
|
+
readFileSync,
|
|
7
|
+
rmSync,
|
|
8
|
+
statSync,
|
|
9
|
+
writeFileSync
|
|
10
|
+
} from "node:fs";
|
|
11
|
+
import { join, relative, resolve } from "node:path";
|
|
12
|
+
const LANES_DIR = ".kb-state/lanes";
|
|
13
|
+
const LANE_META = ".lane-meta.json";
|
|
14
|
+
function lanesRoot(cwd) {
|
|
15
|
+
return resolve(cwd ?? process.cwd(), LANES_DIR);
|
|
16
|
+
}
|
|
17
|
+
function laneDir(name, cwd) {
|
|
18
|
+
const root = lanesRoot(cwd);
|
|
19
|
+
const dir = resolve(root, name);
|
|
20
|
+
if (!dir.startsWith(resolve(root))) {
|
|
21
|
+
throw new Error(`Invalid lane name: "${name}"`);
|
|
22
|
+
}
|
|
23
|
+
return dir;
|
|
24
|
+
}
|
|
25
|
+
function readMeta(name, cwd) {
|
|
26
|
+
const metaPath = join(laneDir(name, cwd), LANE_META);
|
|
27
|
+
if (!existsSync(metaPath)) {
|
|
28
|
+
throw new Error(`Lane "${name}" does not exist`);
|
|
29
|
+
}
|
|
30
|
+
return JSON.parse(readFileSync(metaPath, "utf-8"));
|
|
31
|
+
}
|
|
32
|
+
function laneCreate(name, files, cwd) {
|
|
33
|
+
const root = cwd ?? process.cwd();
|
|
34
|
+
const dir = laneDir(name, cwd);
|
|
35
|
+
if (existsSync(dir)) {
|
|
36
|
+
throw new Error(`Lane "${name}" already exists`);
|
|
37
|
+
}
|
|
38
|
+
mkdirSync(dir, { recursive: true });
|
|
39
|
+
const resolvedFiles = [];
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
const absSource = resolve(root, file);
|
|
42
|
+
if (!existsSync(absSource)) {
|
|
43
|
+
throw new Error(`Source file does not exist: ${file}`);
|
|
44
|
+
}
|
|
45
|
+
const rel = relative(root, absSource).replace(/\\/g, "/");
|
|
46
|
+
const dest = join(dir, rel);
|
|
47
|
+
mkdirSync(join(dest, ".."), { recursive: true });
|
|
48
|
+
cpSync(absSource, dest);
|
|
49
|
+
resolvedFiles.push(rel);
|
|
50
|
+
}
|
|
51
|
+
const meta = {
|
|
52
|
+
name,
|
|
53
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
54
|
+
sourceFiles: resolvedFiles,
|
|
55
|
+
rootPath: root
|
|
56
|
+
};
|
|
57
|
+
writeFileSync(join(dir, LANE_META), `${JSON.stringify(meta, null, 2)}
|
|
58
|
+
`, "utf-8");
|
|
59
|
+
return meta;
|
|
60
|
+
}
|
|
61
|
+
function laneList(cwd) {
|
|
62
|
+
const root = lanesRoot(cwd);
|
|
63
|
+
if (!existsSync(root)) return [];
|
|
64
|
+
const entries = readdirSync(root);
|
|
65
|
+
const result = [];
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
const metaPath = join(root, entry, LANE_META);
|
|
68
|
+
if (existsSync(metaPath)) {
|
|
69
|
+
result.push(JSON.parse(readFileSync(metaPath, "utf-8")));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
function laneStatus(name, cwd) {
|
|
75
|
+
const meta = readMeta(name, cwd);
|
|
76
|
+
const dir = laneDir(name, cwd);
|
|
77
|
+
const root = meta.rootPath;
|
|
78
|
+
const entries = [];
|
|
79
|
+
for (const file of meta.sourceFiles) {
|
|
80
|
+
const originalPath = resolve(root, file);
|
|
81
|
+
const lanePath = join(dir, file);
|
|
82
|
+
if (!existsSync(lanePath)) {
|
|
83
|
+
entries.push({ file, status: "deleted" });
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (!existsSync(originalPath)) {
|
|
87
|
+
entries.push({ file, status: "added" });
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const original = readFileSync(originalPath, "utf-8");
|
|
91
|
+
const laneContent = readFileSync(lanePath, "utf-8");
|
|
92
|
+
if (original === laneContent) {
|
|
93
|
+
entries.push({ file, status: "unchanged" });
|
|
94
|
+
} else {
|
|
95
|
+
entries.push({ file, status: "modified" });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const laneFiles = collectLaneFiles(dir);
|
|
99
|
+
for (const laneFile of laneFiles) {
|
|
100
|
+
if (!meta.sourceFiles.includes(laneFile)) {
|
|
101
|
+
entries.push({ file: laneFile, status: "added" });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
name,
|
|
106
|
+
entries,
|
|
107
|
+
modified: entries.filter((e) => e.status === "modified").length,
|
|
108
|
+
added: entries.filter((e) => e.status === "added").length,
|
|
109
|
+
deleted: entries.filter((e) => e.status === "deleted").length
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function laneDiff(name, cwd) {
|
|
113
|
+
const meta = readMeta(name, cwd);
|
|
114
|
+
const dir = laneDir(name, cwd);
|
|
115
|
+
const root = meta.rootPath;
|
|
116
|
+
const entries = [];
|
|
117
|
+
const allFiles = new Set(meta.sourceFiles);
|
|
118
|
+
for (const f of collectLaneFiles(dir)) allFiles.add(f);
|
|
119
|
+
for (const file of allFiles) {
|
|
120
|
+
const originalPath = resolve(root, file);
|
|
121
|
+
const lanePath = join(dir, file);
|
|
122
|
+
const origExists = existsSync(originalPath);
|
|
123
|
+
const laneExists = existsSync(lanePath);
|
|
124
|
+
if (!laneExists && origExists) {
|
|
125
|
+
entries.push({ file, status: "deleted" });
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (laneExists && !origExists) {
|
|
129
|
+
const content = readFileSync(lanePath, "utf-8");
|
|
130
|
+
entries.push({
|
|
131
|
+
file,
|
|
132
|
+
status: "added",
|
|
133
|
+
diff: content.split("\n").map((l) => `+${l}`).join("\n")
|
|
134
|
+
});
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (!laneExists || !origExists) continue;
|
|
138
|
+
const original = readFileSync(originalPath, "utf-8");
|
|
139
|
+
const laneContent = readFileSync(lanePath, "utf-8");
|
|
140
|
+
if (original === laneContent) {
|
|
141
|
+
entries.push({ file, status: "unchanged" });
|
|
142
|
+
} else {
|
|
143
|
+
entries.push({
|
|
144
|
+
file,
|
|
145
|
+
status: "modified",
|
|
146
|
+
diff: simpleDiff(original, laneContent)
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
name,
|
|
152
|
+
entries,
|
|
153
|
+
modified: entries.filter((e) => e.status === "modified").length,
|
|
154
|
+
added: entries.filter((e) => e.status === "added").length,
|
|
155
|
+
deleted: entries.filter((e) => e.status === "deleted").length
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function laneMerge(name, cwd) {
|
|
159
|
+
const meta = readMeta(name, cwd);
|
|
160
|
+
const dir = laneDir(name, cwd);
|
|
161
|
+
const root = meta.rootPath;
|
|
162
|
+
const merged = [];
|
|
163
|
+
const allFiles = new Set(meta.sourceFiles);
|
|
164
|
+
for (const f of collectLaneFiles(dir)) allFiles.add(f);
|
|
165
|
+
for (const file of allFiles) {
|
|
166
|
+
const lanePath = join(dir, file);
|
|
167
|
+
if (!existsSync(lanePath)) continue;
|
|
168
|
+
const destPath = resolve(root, file);
|
|
169
|
+
mkdirSync(join(destPath, ".."), { recursive: true });
|
|
170
|
+
cpSync(lanePath, destPath);
|
|
171
|
+
merged.push(file);
|
|
172
|
+
}
|
|
173
|
+
rmSync(dir, { recursive: true, force: true });
|
|
174
|
+
return {
|
|
175
|
+
name,
|
|
176
|
+
filesMerged: merged.length,
|
|
177
|
+
files: merged
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function laneDiscard(name, cwd) {
|
|
181
|
+
const dir = laneDir(name, cwd);
|
|
182
|
+
if (!existsSync(dir)) return false;
|
|
183
|
+
rmSync(dir, { recursive: true, force: true });
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
function collectLaneFiles(dir) {
|
|
187
|
+
const files = [];
|
|
188
|
+
function visit(current) {
|
|
189
|
+
for (const entry of readdirSync(current)) {
|
|
190
|
+
if (entry === LANE_META) continue;
|
|
191
|
+
const full = join(current, entry);
|
|
192
|
+
if (statSync(full).isDirectory()) {
|
|
193
|
+
visit(full);
|
|
194
|
+
} else {
|
|
195
|
+
files.push(relative(dir, full).replace(/\\/g, "/"));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (existsSync(dir)) visit(dir);
|
|
200
|
+
return files.sort();
|
|
201
|
+
}
|
|
202
|
+
function simpleDiff(original, modified) {
|
|
203
|
+
const origLines = original.split("\n");
|
|
204
|
+
const modLines = modified.split("\n");
|
|
205
|
+
const result = [];
|
|
206
|
+
const maxLen = Math.max(origLines.length, modLines.length);
|
|
207
|
+
for (let i = 0; i < maxLen; i++) {
|
|
208
|
+
const orig = origLines[i];
|
|
209
|
+
const mod = modLines[i];
|
|
210
|
+
if (orig === mod) {
|
|
211
|
+
result.push(` ${orig ?? ""}`);
|
|
212
|
+
} else {
|
|
213
|
+
if (orig !== void 0) result.push(`-${orig}`);
|
|
214
|
+
if (mod !== void 0) result.push(`+${mod}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return result.join("\n");
|
|
218
|
+
}
|
|
219
|
+
export {
|
|
220
|
+
laneCreate,
|
|
221
|
+
laneDiff,
|
|
222
|
+
laneDiscard,
|
|
223
|
+
laneList,
|
|
224
|
+
laneMerge,
|
|
225
|
+
laneStatus
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=lane.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kb_measure — Code complexity and size metrics.
|
|
3
|
+
*/
|
|
4
|
+
export interface MeasureOptions {
|
|
5
|
+
path: string;
|
|
6
|
+
extensions?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface FileMetrics {
|
|
9
|
+
path: string;
|
|
10
|
+
lines: {
|
|
11
|
+
total: number;
|
|
12
|
+
code: number;
|
|
13
|
+
blank: number;
|
|
14
|
+
comment: number;
|
|
15
|
+
};
|
|
16
|
+
complexity: number;
|
|
17
|
+
functions: number;
|
|
18
|
+
imports: number;
|
|
19
|
+
exports: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MeasureResult {
|
|
22
|
+
files: FileMetrics[];
|
|
23
|
+
summary: {
|
|
24
|
+
totalFiles: number;
|
|
25
|
+
totalLines: number;
|
|
26
|
+
totalCodeLines: number;
|
|
27
|
+
avgComplexity: number;
|
|
28
|
+
maxComplexity: {
|
|
29
|
+
file: string;
|
|
30
|
+
value: number;
|
|
31
|
+
};
|
|
32
|
+
totalFunctions: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare function measure(options: MeasureOptions): MeasureResult;
|
|
36
|
+
/** Exported for unit testing */
|
|
37
|
+
export declare function analyzeFile(path: string, content: string): FileMetrics;
|
|
38
|
+
//# sourceMappingURL=measure.d.ts.map
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { extname, join, relative } from "node:path";
|
|
3
|
+
const EXCLUDE_DIRS = /* @__PURE__ */ new Set([
|
|
4
|
+
"node_modules",
|
|
5
|
+
".git",
|
|
6
|
+
"dist",
|
|
7
|
+
"build",
|
|
8
|
+
"coverage",
|
|
9
|
+
".turbo",
|
|
10
|
+
"cdk.out",
|
|
11
|
+
".cache"
|
|
12
|
+
]);
|
|
13
|
+
const BRANCH_PATTERNS = [
|
|
14
|
+
/\bif\s*\(/g,
|
|
15
|
+
/\belse\s+if\b/g,
|
|
16
|
+
/\bfor\s*\(/g,
|
|
17
|
+
/\bwhile\s*\(/g,
|
|
18
|
+
/\bcase\s+/g,
|
|
19
|
+
/\bcatch\s*\(/g,
|
|
20
|
+
/&&/g,
|
|
21
|
+
/\|\|/g,
|
|
22
|
+
/\?\?/g
|
|
23
|
+
];
|
|
24
|
+
function measure(options) {
|
|
25
|
+
const { path: inputPath, extensions = [".ts", ".tsx", ".js", ".jsx"] } = options;
|
|
26
|
+
const filePaths = collectFiles(inputPath, extensions);
|
|
27
|
+
const files = filePaths.map((fp) => {
|
|
28
|
+
const content = readFileSync(fp, "utf8");
|
|
29
|
+
return analyzeFile(relative(process.cwd(), fp), content);
|
|
30
|
+
});
|
|
31
|
+
files.sort((a, b) => b.complexity - a.complexity);
|
|
32
|
+
const totalLines = files.reduce((s, f) => s + f.lines.total, 0);
|
|
33
|
+
const totalCode = files.reduce((s, f) => s + f.lines.code, 0);
|
|
34
|
+
const totalComplexity = files.reduce((s, f) => s + f.complexity, 0);
|
|
35
|
+
const totalFunctions = files.reduce((s, f) => s + f.functions, 0);
|
|
36
|
+
const maxFile = files[0] ?? { path: "", complexity: 0 };
|
|
37
|
+
return {
|
|
38
|
+
files,
|
|
39
|
+
summary: {
|
|
40
|
+
totalFiles: files.length,
|
|
41
|
+
totalLines,
|
|
42
|
+
totalCodeLines: totalCode,
|
|
43
|
+
avgComplexity: files.length > 0 ? Math.round(totalComplexity / files.length * 10) / 10 : 0,
|
|
44
|
+
maxComplexity: { file: maxFile.path, value: maxFile.complexity },
|
|
45
|
+
totalFunctions
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function analyzeFile(path, content) {
|
|
50
|
+
const lines = content.split("\n");
|
|
51
|
+
let blank = 0;
|
|
52
|
+
let comment = 0;
|
|
53
|
+
let inBlock = false;
|
|
54
|
+
for (const line of lines) {
|
|
55
|
+
const trimmed = line.trim();
|
|
56
|
+
if (trimmed === "") {
|
|
57
|
+
blank++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (inBlock) {
|
|
61
|
+
comment++;
|
|
62
|
+
if (trimmed.includes("*/")) inBlock = false;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (trimmed.startsWith("//")) {
|
|
66
|
+
comment++;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (trimmed.startsWith("/*")) {
|
|
70
|
+
comment++;
|
|
71
|
+
inBlock = !trimmed.includes("*/");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
let complexity = 1;
|
|
75
|
+
for (const pattern of BRANCH_PATTERNS) {
|
|
76
|
+
const matches = content.match(pattern);
|
|
77
|
+
if (matches) complexity += matches.length;
|
|
78
|
+
}
|
|
79
|
+
const fnKeyword = content.match(/\bfunction\b/g)?.length ?? 0;
|
|
80
|
+
const arrowFns = content.match(/=>\s*[{(]/g)?.length ?? 0;
|
|
81
|
+
const functions = fnKeyword + arrowFns;
|
|
82
|
+
const imports = content.match(/^\s*import\s/gm)?.length ?? 0;
|
|
83
|
+
const exports = content.match(/^\s*export\s/gm)?.length ?? 0;
|
|
84
|
+
return {
|
|
85
|
+
path,
|
|
86
|
+
lines: { total: lines.length, code: lines.length - blank - comment, blank, comment },
|
|
87
|
+
complexity,
|
|
88
|
+
functions,
|
|
89
|
+
imports,
|
|
90
|
+
exports
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function collectFiles(inputPath, extensions) {
|
|
94
|
+
try {
|
|
95
|
+
if (statSync(inputPath).isFile()) return [inputPath];
|
|
96
|
+
} catch {
|
|
97
|
+
throw new Error(`Path not found: ${inputPath}`);
|
|
98
|
+
}
|
|
99
|
+
const files = [];
|
|
100
|
+
function walk(dir) {
|
|
101
|
+
for (const entry of readdirSync(dir)) {
|
|
102
|
+
if (EXCLUDE_DIRS.has(entry)) continue;
|
|
103
|
+
const full = join(dir, entry);
|
|
104
|
+
if (statSync(full).isDirectory()) {
|
|
105
|
+
walk(full);
|
|
106
|
+
} else if (extensions.includes(extname(entry).toLowerCase())) {
|
|
107
|
+
files.push(full);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
walk(inputPath);
|
|
112
|
+
files.sort();
|
|
113
|
+
return files;
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
analyzeFile,
|
|
117
|
+
measure
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=measure.js.map
|