@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,388 @@
1
+ import {
2
+ addToWorkset,
3
+ deleteWorkset,
4
+ getWorkset,
5
+ laneCreate,
6
+ laneDiff,
7
+ laneDiscard,
8
+ laneList,
9
+ laneMerge,
10
+ laneStatus,
11
+ listWorksets,
12
+ queueClear,
13
+ queueCreate,
14
+ queueDelete,
15
+ queueDone,
16
+ queueFail,
17
+ queueGet,
18
+ queueList,
19
+ queueNext,
20
+ queuePush,
21
+ removeFromWorkset,
22
+ saveWorkset,
23
+ stashClear,
24
+ stashDelete,
25
+ stashGet,
26
+ stashList,
27
+ stashSet
28
+ } from "@kb/tools";
29
+ import {
30
+ extractStrFlag,
31
+ parseMaybeJsonString,
32
+ printWorkset,
33
+ readStdin,
34
+ splitCsv
35
+ } from "../helpers.js";
36
+ const workspaceCommands = [
37
+ {
38
+ name: "workset",
39
+ description: "Manage saved file sets",
40
+ usage: "kb workset <action> [name] [--files f1,f2] [--description desc]",
41
+ run: async (args) => {
42
+ const action = args.shift()?.trim();
43
+ const files = splitCsv(extractStrFlag(args, "--files", ""));
44
+ const description = extractStrFlag(args, "--description", "").trim() || void 0;
45
+ const name = args.shift()?.trim();
46
+ if (!action) {
47
+ console.error("Usage: kb workset <action> [name] [--files f1,f2] [--description desc]");
48
+ console.error("Actions: save, get, list, delete, add, remove");
49
+ process.exit(1);
50
+ }
51
+ switch (action) {
52
+ case "save": {
53
+ if (!name || files.length === 0) {
54
+ console.error("Usage: kb workset save <name> --files f1,f2 [--description desc]");
55
+ process.exit(1);
56
+ }
57
+ const workset = saveWorkset(name, files, { description });
58
+ console.log(`Saved workset: ${workset.name}`);
59
+ printWorkset(workset);
60
+ return;
61
+ }
62
+ case "get": {
63
+ if (!name) {
64
+ console.error("Usage: kb workset get <name>");
65
+ process.exit(1);
66
+ }
67
+ const workset = getWorkset(name);
68
+ if (!workset) {
69
+ console.log(`No workset found: ${name}`);
70
+ return;
71
+ }
72
+ printWorkset(workset);
73
+ return;
74
+ }
75
+ case "list": {
76
+ const worksets = listWorksets();
77
+ if (worksets.length === 0) {
78
+ console.log("No worksets saved.");
79
+ return;
80
+ }
81
+ console.log(`Worksets (${worksets.length})`);
82
+ console.log("\u2500".repeat(60));
83
+ for (const workset of worksets) {
84
+ printWorkset(workset);
85
+ console.log("");
86
+ }
87
+ return;
88
+ }
89
+ case "delete": {
90
+ if (!name) {
91
+ console.error("Usage: kb workset delete <name>");
92
+ process.exit(1);
93
+ }
94
+ const deleted = deleteWorkset(name);
95
+ console.log(deleted ? `Deleted workset: ${name}` : `No workset found: ${name}`);
96
+ return;
97
+ }
98
+ case "add": {
99
+ if (!name || files.length === 0) {
100
+ console.error("Usage: kb workset add <name> --files f1,f2");
101
+ process.exit(1);
102
+ }
103
+ const workset = addToWorkset(name, files);
104
+ console.log(`Updated workset: ${workset.name}`);
105
+ printWorkset(workset);
106
+ return;
107
+ }
108
+ case "remove": {
109
+ if (!name || files.length === 0) {
110
+ console.error("Usage: kb workset remove <name> --files f1,f2");
111
+ process.exit(1);
112
+ }
113
+ const workset = removeFromWorkset(name, files);
114
+ if (!workset) {
115
+ console.log(`No workset found: ${name}`);
116
+ return;
117
+ }
118
+ console.log(`Updated workset: ${workset.name}`);
119
+ printWorkset(workset);
120
+ return;
121
+ }
122
+ default:
123
+ console.error(`Unknown workset action: ${action}`);
124
+ console.error("Actions: save, get, list, delete, add, remove");
125
+ process.exit(1);
126
+ }
127
+ }
128
+ },
129
+ {
130
+ name: "stash",
131
+ description: "Persist and retrieve named intermediate values",
132
+ usage: "kb stash <set|get|list|delete|clear> [key] [value]",
133
+ run: async (args) => {
134
+ const action = args.shift()?.trim();
135
+ const key = args.shift()?.trim();
136
+ if (!action) {
137
+ console.error("Usage: kb stash <set|get|list|delete|clear> [key] [value]");
138
+ process.exit(1);
139
+ }
140
+ switch (action) {
141
+ case "set": {
142
+ if (!key) {
143
+ console.error("Usage: kb stash set <key> <value>");
144
+ process.exit(1);
145
+ }
146
+ const inlineValue = args.join(" ");
147
+ const stdinValue = inlineValue.trim() ? "" : await readStdin();
148
+ const rawValue = inlineValue || stdinValue;
149
+ const entry = stashSet(key, parseMaybeJsonString(rawValue));
150
+ console.log(`Stored stash entry: ${entry.key}`);
151
+ console.log(` Type: ${entry.type}`);
152
+ console.log(` Stored: ${entry.storedAt}`);
153
+ return;
154
+ }
155
+ case "get": {
156
+ if (!key) {
157
+ console.error("Usage: kb stash get <key>");
158
+ process.exit(1);
159
+ }
160
+ const entry = stashGet(key);
161
+ if (!entry) {
162
+ console.log(`No stash entry found: ${key}`);
163
+ return;
164
+ }
165
+ console.log(JSON.stringify(entry, null, 2));
166
+ return;
167
+ }
168
+ case "list": {
169
+ const entries = stashList();
170
+ if (entries.length === 0) {
171
+ console.log("No stash entries saved.");
172
+ return;
173
+ }
174
+ console.log(`Stash entries (${entries.length})`);
175
+ console.log("\u2500".repeat(60));
176
+ for (const entry of entries) {
177
+ console.log(`${entry.key} (${entry.type})`);
178
+ console.log(` Stored: ${entry.storedAt}`);
179
+ }
180
+ return;
181
+ }
182
+ case "delete": {
183
+ if (!key) {
184
+ console.error("Usage: kb stash delete <key>");
185
+ process.exit(1);
186
+ }
187
+ const deleted = stashDelete(key);
188
+ console.log(deleted ? `Deleted stash entry: ${key}` : `No stash entry found: ${key}`);
189
+ return;
190
+ }
191
+ case "clear": {
192
+ const count = stashClear();
193
+ console.log(`Cleared ${count} stash entr${count === 1 ? "y" : "ies"}.`);
194
+ return;
195
+ }
196
+ default:
197
+ console.error(`Unknown stash action: ${action}`);
198
+ console.error("Actions: set, get, list, delete, clear");
199
+ process.exit(1);
200
+ }
201
+ }
202
+ },
203
+ {
204
+ name: "lane",
205
+ description: "Manage verified lanes \u2014 isolated file copies for parallel exploration",
206
+ usage: "kb lane <create|list|status|diff|merge|discard> [name] [--files f1,f2]",
207
+ run: async (args) => {
208
+ const action = args.shift();
209
+ if (!action || !["create", "list", "status", "diff", "merge", "discard"].includes(action)) {
210
+ console.error(
211
+ "Usage: kb lane <create|list|status|diff|merge|discard> [name] [--files f1,f2]"
212
+ );
213
+ process.exit(1);
214
+ }
215
+ if (action === "list") {
216
+ const lanes = laneList();
217
+ if (lanes.length === 0) {
218
+ console.log("No active lanes.");
219
+ return;
220
+ }
221
+ for (const lane of lanes) {
222
+ console.log(
223
+ `${lane.name} (${lane.sourceFiles.length} files, created ${lane.createdAt})`
224
+ );
225
+ }
226
+ return;
227
+ }
228
+ const name = args.shift();
229
+ if (!name) {
230
+ console.error(`Lane name is required for "${action}".`);
231
+ process.exit(1);
232
+ }
233
+ switch (action) {
234
+ case "create": {
235
+ const filesStr = extractStrFlag(args, "--files", "");
236
+ if (!filesStr) {
237
+ console.error("Usage: kb lane create <name> --files file1.ts,file2.ts");
238
+ process.exit(1);
239
+ }
240
+ const files = filesStr.split(",").map((f) => f.trim());
241
+ const meta = laneCreate(name, files);
242
+ console.log(`Lane "${meta.name}" created with ${meta.sourceFiles.length} files.`);
243
+ break;
244
+ }
245
+ case "status": {
246
+ const result = laneStatus(name);
247
+ console.log(`Lane: ${result.name}`);
248
+ console.log(
249
+ `Modified: ${result.modified} | Added: ${result.added} | Deleted: ${result.deleted}`
250
+ );
251
+ for (const entry of result.entries) {
252
+ console.log(` ${entry.status.padEnd(10)} ${entry.file}`);
253
+ }
254
+ break;
255
+ }
256
+ case "diff": {
257
+ const result = laneDiff(name);
258
+ console.log(
259
+ `Lane: ${result.name} \u2014 ${result.modified} modified, ${result.added} added, ${result.deleted} deleted`
260
+ );
261
+ for (const entry of result.entries) {
262
+ if (entry.diff) {
263
+ console.log(`
264
+ --- ${entry.file} (${entry.status})`);
265
+ console.log(entry.diff);
266
+ }
267
+ }
268
+ break;
269
+ }
270
+ case "merge": {
271
+ const result = laneMerge(name);
272
+ console.log(`Merged ${result.filesMerged} files from lane "${result.name}".`);
273
+ for (const f of result.files) console.log(` ${f}`);
274
+ break;
275
+ }
276
+ case "discard": {
277
+ const ok = laneDiscard(name);
278
+ console.log(ok ? `Lane "${name}" discarded.` : `Lane "${name}" not found.`);
279
+ break;
280
+ }
281
+ }
282
+ }
283
+ },
284
+ {
285
+ name: "queue",
286
+ description: "Manage task queues for sequential agent operations",
287
+ usage: "kb queue <create|push|next|done|fail|get|list|clear|delete> [name] [args]",
288
+ run: async (args) => {
289
+ const action = args.shift();
290
+ if (!action || !["create", "push", "next", "done", "fail", "get", "list", "clear", "delete"].includes(
291
+ action
292
+ )) {
293
+ console.error(
294
+ "Usage: kb queue <create|push|next|done|fail|get|list|clear|delete> [name] [args]"
295
+ );
296
+ process.exit(1);
297
+ }
298
+ if (action === "list") {
299
+ const queues = queueList();
300
+ if (queues.length === 0) {
301
+ console.log("No queues.");
302
+ return;
303
+ }
304
+ for (const q of queues) {
305
+ console.log(
306
+ `${q.name} pending:${q.pending} done:${q.done} failed:${q.failed} total:${q.total}`
307
+ );
308
+ }
309
+ return;
310
+ }
311
+ const name = args.shift();
312
+ if (!name) {
313
+ console.error(`Queue name is required for "${action}".`);
314
+ process.exit(1);
315
+ }
316
+ switch (action) {
317
+ case "create": {
318
+ const q = queueCreate(name);
319
+ console.log(`Queue "${q.name}" created.`);
320
+ break;
321
+ }
322
+ case "push": {
323
+ const title = args.join(" ") || "Untitled task";
324
+ const item = queuePush(name, title);
325
+ console.log(`Pushed "${item.title}" (${item.id}) to queue "${name}".`);
326
+ break;
327
+ }
328
+ case "next": {
329
+ const item = queueNext(name);
330
+ if (!item) {
331
+ console.log(`No pending items in queue "${name}".`);
332
+ } else {
333
+ console.log(`Next: ${item.title} (${item.id})`);
334
+ }
335
+ break;
336
+ }
337
+ case "done": {
338
+ const id = args.shift();
339
+ if (!id) {
340
+ console.error("Usage: kb queue done <name> <id>");
341
+ process.exit(1);
342
+ }
343
+ const item = queueDone(name, id);
344
+ console.log(`Marked "${item.title}" as done.`);
345
+ break;
346
+ }
347
+ case "fail": {
348
+ const id = args.shift();
349
+ const error = args.join(" ") || "Unknown error";
350
+ if (!id) {
351
+ console.error("Usage: kb queue fail <name> <id> [error message]");
352
+ process.exit(1);
353
+ }
354
+ const item = queueFail(name, id, error);
355
+ console.log(`Marked "${item.title}" as failed: ${error}`);
356
+ break;
357
+ }
358
+ case "get": {
359
+ const q = queueGet(name);
360
+ if (!q) {
361
+ console.log(`Queue "${name}" not found.`);
362
+ return;
363
+ }
364
+ console.log(`Queue: ${q.name} (${q.items.length} items)`);
365
+ for (const item of q.items) {
366
+ const extra = item.error ? ` \u2014 ${item.error}` : "";
367
+ console.log(` ${item.status.padEnd(12)} ${item.id} ${item.title}${extra}`);
368
+ }
369
+ break;
370
+ }
371
+ case "clear": {
372
+ const removed = queueClear(name);
373
+ console.log(`Cleared ${removed} completed/failed items from queue "${name}".`);
374
+ break;
375
+ }
376
+ case "delete": {
377
+ const ok = queueDelete(name);
378
+ console.log(ok ? `Queue "${name}" deleted.` : `Queue "${name}" not found.`);
379
+ break;
380
+ }
381
+ }
382
+ }
383
+ }
384
+ ];
385
+ export {
386
+ workspaceCommands
387
+ };
388
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1,5 @@
1
+ import { type KBContext } from './kb-init.js';
2
+ export declare function ctx(): Promise<KBContext>;
3
+ export declare function getCtx(): KBContext | null;
4
+ export type { KBContext } from './kb-init.js';
5
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { initKB } from "./kb-init.js";
2
+ let _ctx = null;
3
+ async function ctx() {
4
+ if (!_ctx) _ctx = await initKB();
5
+ return _ctx;
6
+ }
7
+ function getCtx() {
8
+ return _ctx;
9
+ }
10
+ export {
11
+ ctx,
12
+ getCtx
13
+ };
14
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1,52 @@
1
+ import type { SearchResult } from '@kb/core';
2
+ import { type BatchOperation, check, type checkpointSave, type diffParse, type fileSummary, type findDeadSymbols, type findExamples, type gitContext, type ManagedProcess, type parseOutput, type symbol, type testRun, type trace } from '@kb/tools';
3
+ import type { KBContext } from './context.js';
4
+ export declare function extractNumFlag(args: string[], flag: string, defaultValue: number): number;
5
+ export declare function extractStrFlag(args: string[], flag: string, defaultValue: string): string;
6
+ export declare function extractBoolFlag(args: string[], flag: string): boolean;
7
+ export declare function readStdin(): Promise<string>;
8
+ export declare function readInput(filePath?: string): Promise<string>;
9
+ export declare function splitCsv(value: string): string[];
10
+ export declare function parseBatchPayload(input: string): {
11
+ operations: BatchOperation[];
12
+ concurrency?: number;
13
+ };
14
+ export declare function validateBatchOperations(value: unknown): BatchOperation[];
15
+ export declare function formatFocusRanges(ranges: Array<{
16
+ start: number;
17
+ end: number;
18
+ heading?: string;
19
+ }>): string;
20
+ export declare function printParsedOutput(result: ReturnType<typeof parseOutput>): void;
21
+ export declare function printCheckResult(result: Awaited<ReturnType<typeof check>>): void;
22
+ export declare function printCheckSection(label: string, passed: boolean, errors: Array<{
23
+ file: string;
24
+ line?: number;
25
+ column?: number;
26
+ severity: 'error' | 'warning' | 'info';
27
+ code?: string;
28
+ message: string;
29
+ }>): void;
30
+ export declare function printTestRunResult(result: Awaited<ReturnType<typeof testRun>>): void;
31
+ export declare function printGitContext(result: Awaited<ReturnType<typeof gitContext>>): void;
32
+ export declare function printDiffFiles(files: ReturnType<typeof diffParse>): void;
33
+ export declare function printTraceResult(result: Awaited<ReturnType<typeof trace>>): void;
34
+ export declare function printExamplesResult(result: Awaited<ReturnType<typeof findExamples>>): void;
35
+ export declare function printManagedProcess(info: ManagedProcess): void;
36
+ export declare function printDeadSymbolsResult(result: Awaited<ReturnType<typeof findDeadSymbols>>): void;
37
+ export declare function printFileSummary(summary: Awaited<ReturnType<typeof fileSummary>>): void;
38
+ export declare function printSymbolInfo(result: Awaited<ReturnType<typeof symbol>>): void;
39
+ export declare function printWorkset(workset: {
40
+ name: string;
41
+ files: string[];
42
+ created: string;
43
+ updated: string;
44
+ description?: string;
45
+ }): void;
46
+ export declare function printCheckpoint(checkpoint: ReturnType<typeof checkpointSave>): void;
47
+ export declare function printSection(label: string, items: string[]): void;
48
+ export declare function parseMaybeJsonString(value: string): unknown;
49
+ export declare function parseRecordString(value: string): Record<string, unknown>;
50
+ export declare function rrf(vecResults: SearchResult[], ftsResults: SearchResult[], k?: number): SearchResult[];
51
+ export declare function executeCliBatchOperation(operation: BatchOperation, context: KBContext | null): Promise<unknown>;
52
+ //# sourceMappingURL=helpers.d.ts.map