@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.
Files changed (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1140 -0
  3. package/bin/kb.mjs +10 -0
  4. package/package.json +67 -0
  5. package/packages/analyzers/dist/blast-radius-analyzer.d.ts +23 -0
  6. package/packages/analyzers/dist/blast-radius-analyzer.js +114 -0
  7. package/packages/analyzers/dist/dependency-analyzer.d.ts +29 -0
  8. package/packages/analyzers/dist/dependency-analyzer.js +425 -0
  9. package/packages/analyzers/dist/diagram-generator.d.ts +13 -0
  10. package/packages/analyzers/dist/diagram-generator.js +86 -0
  11. package/packages/analyzers/dist/entry-point-analyzer.d.ts +19 -0
  12. package/packages/analyzers/dist/entry-point-analyzer.js +239 -0
  13. package/packages/analyzers/dist/index.d.ts +14 -0
  14. package/packages/analyzers/dist/index.js +23 -0
  15. package/packages/analyzers/dist/knowledge-producer.d.ts +32 -0
  16. package/packages/analyzers/dist/knowledge-producer.js +113 -0
  17. package/packages/analyzers/dist/pattern-analyzer.d.ts +12 -0
  18. package/packages/analyzers/dist/pattern-analyzer.js +359 -0
  19. package/packages/analyzers/dist/regex-call-graph.d.ts +17 -0
  20. package/packages/analyzers/dist/regex-call-graph.js +428 -0
  21. package/packages/analyzers/dist/structure-analyzer.d.ts +11 -0
  22. package/packages/analyzers/dist/structure-analyzer.js +258 -0
  23. package/packages/analyzers/dist/symbol-analyzer.d.ts +10 -0
  24. package/packages/analyzers/dist/symbol-analyzer.js +442 -0
  25. package/packages/analyzers/dist/ts-call-graph.d.ts +27 -0
  26. package/packages/analyzers/dist/ts-call-graph.js +160 -0
  27. package/packages/analyzers/dist/types.d.ts +98 -0
  28. package/packages/analyzers/dist/types.js +1 -0
  29. package/packages/chunker/dist/call-graph-extractor.d.ts +22 -0
  30. package/packages/chunker/dist/call-graph-extractor.js +90 -0
  31. package/packages/chunker/dist/chunker-factory.d.ts +7 -0
  32. package/packages/chunker/dist/chunker-factory.js +36 -0
  33. package/packages/chunker/dist/chunker.interface.d.ts +10 -0
  34. package/packages/chunker/dist/chunker.interface.js +1 -0
  35. package/packages/chunker/dist/code-chunker.d.ts +14 -0
  36. package/packages/chunker/dist/code-chunker.js +134 -0
  37. package/packages/chunker/dist/generic-chunker.d.ts +12 -0
  38. package/packages/chunker/dist/generic-chunker.js +72 -0
  39. package/packages/chunker/dist/index.d.ts +8 -0
  40. package/packages/chunker/dist/index.js +21 -0
  41. package/packages/chunker/dist/markdown-chunker.d.ts +14 -0
  42. package/packages/chunker/dist/markdown-chunker.js +122 -0
  43. package/packages/chunker/dist/treesitter-chunker.d.ts +47 -0
  44. package/packages/chunker/dist/treesitter-chunker.js +234 -0
  45. package/packages/cli/dist/commands/analyze.d.ts +3 -0
  46. package/packages/cli/dist/commands/analyze.js +112 -0
  47. package/packages/cli/dist/commands/context-cmds.d.ts +3 -0
  48. package/packages/cli/dist/commands/context-cmds.js +155 -0
  49. package/packages/cli/dist/commands/environment.d.ts +3 -0
  50. package/packages/cli/dist/commands/environment.js +204 -0
  51. package/packages/cli/dist/commands/execution.d.ts +3 -0
  52. package/packages/cli/dist/commands/execution.js +137 -0
  53. package/packages/cli/dist/commands/graph.d.ts +3 -0
  54. package/packages/cli/dist/commands/graph.js +81 -0
  55. package/packages/cli/dist/commands/init.d.ts +8 -0
  56. package/packages/cli/dist/commands/init.js +87 -0
  57. package/packages/cli/dist/commands/knowledge.d.ts +3 -0
  58. package/packages/cli/dist/commands/knowledge.js +139 -0
  59. package/packages/cli/dist/commands/search.d.ts +3 -0
  60. package/packages/cli/dist/commands/search.js +267 -0
  61. package/packages/cli/dist/commands/system.d.ts +3 -0
  62. package/packages/cli/dist/commands/system.js +241 -0
  63. package/packages/cli/dist/commands/workspace.d.ts +3 -0
  64. package/packages/cli/dist/commands/workspace.js +388 -0
  65. package/packages/cli/dist/context.d.ts +5 -0
  66. package/packages/cli/dist/context.js +14 -0
  67. package/packages/cli/dist/helpers.d.ts +52 -0
  68. package/packages/cli/dist/helpers.js +458 -0
  69. package/packages/cli/dist/index.d.ts +8 -0
  70. package/packages/cli/dist/index.js +69 -0
  71. package/packages/cli/dist/kb-init.d.ts +57 -0
  72. package/packages/cli/dist/kb-init.js +82 -0
  73. package/packages/cli/dist/types.d.ts +7 -0
  74. package/packages/cli/dist/types.js +1 -0
  75. package/packages/core/dist/constants.d.ts +49 -0
  76. package/packages/core/dist/constants.js +43 -0
  77. package/packages/core/dist/content-detector.d.ts +9 -0
  78. package/packages/core/dist/content-detector.js +79 -0
  79. package/packages/core/dist/errors.d.ts +18 -0
  80. package/packages/core/dist/errors.js +40 -0
  81. package/packages/core/dist/index.d.ts +6 -0
  82. package/packages/core/dist/index.js +9 -0
  83. package/packages/core/dist/logger.d.ts +9 -0
  84. package/packages/core/dist/logger.js +34 -0
  85. package/packages/core/dist/types.d.ts +108 -0
  86. package/packages/core/dist/types.js +1 -0
  87. package/packages/embeddings/dist/embedder.interface.d.ts +24 -0
  88. package/packages/embeddings/dist/embedder.interface.js +1 -0
  89. package/packages/embeddings/dist/index.d.ts +3 -0
  90. package/packages/embeddings/dist/index.js +5 -0
  91. package/packages/embeddings/dist/onnx-embedder.d.ts +24 -0
  92. package/packages/embeddings/dist/onnx-embedder.js +82 -0
  93. package/packages/indexer/dist/file-hasher.d.ts +11 -0
  94. package/packages/indexer/dist/file-hasher.js +13 -0
  95. package/packages/indexer/dist/filesystem-crawler.d.ts +27 -0
  96. package/packages/indexer/dist/filesystem-crawler.js +125 -0
  97. package/packages/indexer/dist/graph-extractor.d.ts +22 -0
  98. package/packages/indexer/dist/graph-extractor.js +111 -0
  99. package/packages/indexer/dist/incremental-indexer.d.ts +47 -0
  100. package/packages/indexer/dist/incremental-indexer.js +278 -0
  101. package/packages/indexer/dist/index.d.ts +5 -0
  102. package/packages/indexer/dist/index.js +14 -0
  103. package/packages/server/dist/api.d.ts +8 -0
  104. package/packages/server/dist/api.js +9 -0
  105. package/packages/server/dist/config.d.ts +3 -0
  106. package/packages/server/dist/config.js +75 -0
  107. package/packages/server/dist/curated-manager.d.ts +86 -0
  108. package/packages/server/dist/curated-manager.js +357 -0
  109. package/packages/server/dist/index.d.ts +2 -0
  110. package/packages/server/dist/index.js +134 -0
  111. package/packages/server/dist/replay-interceptor.d.ts +11 -0
  112. package/packages/server/dist/replay-interceptor.js +38 -0
  113. package/packages/server/dist/resources/resources.d.ts +4 -0
  114. package/packages/server/dist/resources/resources.js +40 -0
  115. package/packages/server/dist/server.d.ts +21 -0
  116. package/packages/server/dist/server.js +247 -0
  117. package/packages/server/dist/tools/analyze.tools.d.ts +11 -0
  118. package/packages/server/dist/tools/analyze.tools.js +288 -0
  119. package/packages/server/dist/tools/forge.tools.d.ts +12 -0
  120. package/packages/server/dist/tools/forge.tools.js +501 -0
  121. package/packages/server/dist/tools/forget.tool.d.ts +4 -0
  122. package/packages/server/dist/tools/forget.tool.js +43 -0
  123. package/packages/server/dist/tools/graph.tool.d.ts +4 -0
  124. package/packages/server/dist/tools/graph.tool.js +110 -0
  125. package/packages/server/dist/tools/list.tool.d.ts +4 -0
  126. package/packages/server/dist/tools/list.tool.js +56 -0
  127. package/packages/server/dist/tools/lookup.tool.d.ts +4 -0
  128. package/packages/server/dist/tools/lookup.tool.js +53 -0
  129. package/packages/server/dist/tools/onboard.tool.d.ts +5 -0
  130. package/packages/server/dist/tools/onboard.tool.js +112 -0
  131. package/packages/server/dist/tools/produce.tool.d.ts +3 -0
  132. package/packages/server/dist/tools/produce.tool.js +74 -0
  133. package/packages/server/dist/tools/read.tool.d.ts +4 -0
  134. package/packages/server/dist/tools/read.tool.js +49 -0
  135. package/packages/server/dist/tools/reindex.tool.d.ts +7 -0
  136. package/packages/server/dist/tools/reindex.tool.js +70 -0
  137. package/packages/server/dist/tools/remember.tool.d.ts +4 -0
  138. package/packages/server/dist/tools/remember.tool.js +45 -0
  139. package/packages/server/dist/tools/replay.tool.d.ts +3 -0
  140. package/packages/server/dist/tools/replay.tool.js +89 -0
  141. package/packages/server/dist/tools/search.tool.d.ts +5 -0
  142. package/packages/server/dist/tools/search.tool.js +331 -0
  143. package/packages/server/dist/tools/status.tool.d.ts +4 -0
  144. package/packages/server/dist/tools/status.tool.js +68 -0
  145. package/packages/server/dist/tools/toolkit.tools.d.ts +35 -0
  146. package/packages/server/dist/tools/toolkit.tools.js +1674 -0
  147. package/packages/server/dist/tools/update.tool.d.ts +4 -0
  148. package/packages/server/dist/tools/update.tool.js +42 -0
  149. package/packages/server/dist/tools/utility.tools.d.ts +15 -0
  150. package/packages/server/dist/tools/utility.tools.js +461 -0
  151. package/packages/store/dist/graph-store.interface.d.ts +104 -0
  152. package/packages/store/dist/graph-store.interface.js +1 -0
  153. package/packages/store/dist/index.d.ts +6 -0
  154. package/packages/store/dist/index.js +9 -0
  155. package/packages/store/dist/lance-store.d.ts +32 -0
  156. package/packages/store/dist/lance-store.js +258 -0
  157. package/packages/store/dist/sqlite-graph-store.d.ts +43 -0
  158. package/packages/store/dist/sqlite-graph-store.js +374 -0
  159. package/packages/store/dist/store-factory.d.ts +9 -0
  160. package/packages/store/dist/store-factory.js +14 -0
  161. package/packages/store/dist/store.interface.d.ts +48 -0
  162. package/packages/store/dist/store.interface.js +1 -0
  163. package/packages/tools/dist/batch.d.ts +21 -0
  164. package/packages/tools/dist/batch.js +45 -0
  165. package/packages/tools/dist/changelog.d.ts +34 -0
  166. package/packages/tools/dist/changelog.js +112 -0
  167. package/packages/tools/dist/check.d.ts +26 -0
  168. package/packages/tools/dist/check.js +59 -0
  169. package/packages/tools/dist/checkpoint.d.ts +17 -0
  170. package/packages/tools/dist/checkpoint.js +43 -0
  171. package/packages/tools/dist/codemod.d.ts +37 -0
  172. package/packages/tools/dist/codemod.js +69 -0
  173. package/packages/tools/dist/compact.d.ts +41 -0
  174. package/packages/tools/dist/compact.js +60 -0
  175. package/packages/tools/dist/data-transform.d.ts +10 -0
  176. package/packages/tools/dist/data-transform.js +124 -0
  177. package/packages/tools/dist/dead-symbols.d.ts +21 -0
  178. package/packages/tools/dist/dead-symbols.js +71 -0
  179. package/packages/tools/dist/delegate.d.ts +34 -0
  180. package/packages/tools/dist/delegate.js +130 -0
  181. package/packages/tools/dist/diff-parse.d.ts +26 -0
  182. package/packages/tools/dist/diff-parse.js +153 -0
  183. package/packages/tools/dist/digest.d.ts +53 -0
  184. package/packages/tools/dist/digest.js +242 -0
  185. package/packages/tools/dist/encode.d.ts +14 -0
  186. package/packages/tools/dist/encode.js +46 -0
  187. package/packages/tools/dist/env-info.d.ts +28 -0
  188. package/packages/tools/dist/env-info.js +58 -0
  189. package/packages/tools/dist/eval.d.ts +13 -0
  190. package/packages/tools/dist/eval.js +79 -0
  191. package/packages/tools/dist/evidence-map.d.ts +79 -0
  192. package/packages/tools/dist/evidence-map.js +203 -0
  193. package/packages/tools/dist/file-summary.d.ts +32 -0
  194. package/packages/tools/dist/file-summary.js +106 -0
  195. package/packages/tools/dist/file-walk.d.ts +4 -0
  196. package/packages/tools/dist/file-walk.js +75 -0
  197. package/packages/tools/dist/find-examples.d.ts +25 -0
  198. package/packages/tools/dist/find-examples.js +48 -0
  199. package/packages/tools/dist/find.d.ts +47 -0
  200. package/packages/tools/dist/find.js +120 -0
  201. package/packages/tools/dist/forge-classify.d.ts +44 -0
  202. package/packages/tools/dist/forge-classify.js +319 -0
  203. package/packages/tools/dist/forge-ground.d.ts +64 -0
  204. package/packages/tools/dist/forge-ground.js +184 -0
  205. package/packages/tools/dist/git-context.d.ts +22 -0
  206. package/packages/tools/dist/git-context.js +46 -0
  207. package/packages/tools/dist/graph-query.d.ts +89 -0
  208. package/packages/tools/dist/graph-query.js +194 -0
  209. package/packages/tools/dist/health.d.ts +14 -0
  210. package/packages/tools/dist/health.js +118 -0
  211. package/packages/tools/dist/http-request.d.ts +23 -0
  212. package/packages/tools/dist/http-request.js +58 -0
  213. package/packages/tools/dist/index.d.ts +49 -0
  214. package/packages/tools/dist/index.js +273 -0
  215. package/packages/tools/dist/lane.d.ts +39 -0
  216. package/packages/tools/dist/lane.js +227 -0
  217. package/packages/tools/dist/measure.d.ts +38 -0
  218. package/packages/tools/dist/measure.js +119 -0
  219. package/packages/tools/dist/onboard.d.ts +41 -0
  220. package/packages/tools/dist/onboard.js +1139 -0
  221. package/packages/tools/dist/parse-output.d.ts +80 -0
  222. package/packages/tools/dist/parse-output.js +158 -0
  223. package/packages/tools/dist/process-manager.d.ts +18 -0
  224. package/packages/tools/dist/process-manager.js +69 -0
  225. package/packages/tools/dist/queue.d.ts +38 -0
  226. package/packages/tools/dist/queue.js +126 -0
  227. package/packages/tools/dist/regex-test.d.ts +31 -0
  228. package/packages/tools/dist/regex-test.js +39 -0
  229. package/packages/tools/dist/rename.d.ts +29 -0
  230. package/packages/tools/dist/rename.js +70 -0
  231. package/packages/tools/dist/replay.d.ts +56 -0
  232. package/packages/tools/dist/replay.js +108 -0
  233. package/packages/tools/dist/schema-validate.d.ts +23 -0
  234. package/packages/tools/dist/schema-validate.js +141 -0
  235. package/packages/tools/dist/scope-map.d.ts +52 -0
  236. package/packages/tools/dist/scope-map.js +72 -0
  237. package/packages/tools/dist/snippet.d.ts +34 -0
  238. package/packages/tools/dist/snippet.js +80 -0
  239. package/packages/tools/dist/stash.d.ts +12 -0
  240. package/packages/tools/dist/stash.js +60 -0
  241. package/packages/tools/dist/stratum-card.d.ts +31 -0
  242. package/packages/tools/dist/stratum-card.js +239 -0
  243. package/packages/tools/dist/symbol.d.ts +28 -0
  244. package/packages/tools/dist/symbol.js +87 -0
  245. package/packages/tools/dist/test-run.d.ts +23 -0
  246. package/packages/tools/dist/test-run.js +55 -0
  247. package/packages/tools/dist/text-utils.d.ts +16 -0
  248. package/packages/tools/dist/text-utils.js +31 -0
  249. package/packages/tools/dist/time-utils.d.ts +18 -0
  250. package/packages/tools/dist/time-utils.js +135 -0
  251. package/packages/tools/dist/trace.d.ts +24 -0
  252. package/packages/tools/dist/trace.js +114 -0
  253. package/packages/tools/dist/truncation.d.ts +22 -0
  254. package/packages/tools/dist/truncation.js +45 -0
  255. package/packages/tools/dist/watch.d.ts +30 -0
  256. package/packages/tools/dist/watch.js +61 -0
  257. package/packages/tools/dist/web-fetch.d.ts +45 -0
  258. package/packages/tools/dist/web-fetch.js +249 -0
  259. package/packages/tools/dist/web-search.d.ts +23 -0
  260. package/packages/tools/dist/web-search.js +46 -0
  261. package/packages/tools/dist/workset.d.ts +45 -0
  262. package/packages/tools/dist/workset.js +77 -0
  263. package/packages/tui/dist/App.d.ts +8 -0
  264. package/packages/tui/dist/App.js +52659 -0
  265. package/packages/tui/dist/index.d.ts +19 -0
  266. package/packages/tui/dist/index.js +54742 -0
  267. package/packages/tui/dist/panels/CuratedPanel.d.ts +8 -0
  268. package/packages/tui/dist/panels/CuratedPanel.js +34452 -0
  269. package/packages/tui/dist/panels/LogPanel.d.ts +3 -0
  270. package/packages/tui/dist/panels/LogPanel.js +51894 -0
  271. package/packages/tui/dist/panels/SearchPanel.d.ts +10 -0
  272. package/packages/tui/dist/panels/SearchPanel.js +34985 -0
  273. package/packages/tui/dist/panels/StatusPanel.d.ts +8 -0
  274. package/packages/tui/dist/panels/StatusPanel.js +34465 -0
  275. 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