forge-server 0.1.0 → 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 (119) hide show
  1. package/bin/setup-forge.sh +1 -1
  2. package/bin/setup.js +99 -0
  3. package/dist/cli.js +37 -37
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.js +4 -4
  6. package/dist/index.js.map +1 -1
  7. package/dist/storage/schema.js +113 -113
  8. package/dist/storage/schema.js.map +1 -1
  9. package/dist/storage/sqlite.js +1 -1
  10. package/dist/storage/sqlite.js.map +1 -1
  11. package/dist/util/logger.d.ts +1 -1
  12. package/dist/util/logger.js +1 -1
  13. package/dist/util/types.js +1 -1
  14. package/dist/util/types.js.map +1 -1
  15. package/package.json +8 -2
  16. package/plugin/.mcp.json +1 -1
  17. package/.claude/hooks/worktree-create.sh +0 -64
  18. package/.claude/hooks/worktree-remove.sh +0 -57
  19. package/.claude/settings.local.json +0 -29
  20. package/.forge/knowledge/conventions.yaml +0 -1
  21. package/.forge/knowledge/decisions.yaml +0 -1
  22. package/.forge/knowledge/gotchas.yaml +0 -1
  23. package/.forge/knowledge/patterns.yaml +0 -1
  24. package/.forge/manifest.yaml +0 -6
  25. package/CLAUDE.md +0 -144
  26. package/docker-compose.yml +0 -20
  27. package/docs/plans/2026-02-27-swarm-coordination/architecture.md +0 -203
  28. package/docs/plans/2026-02-27-swarm-coordination/vision.md +0 -57
  29. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +0 -1
  30. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +0 -300
  31. package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +0 -480
  32. package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +0 -462
  33. package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +0 -181
  34. package/src/cli.ts +0 -655
  35. package/src/context/.gitkeep +0 -0
  36. package/src/context/codebase.ts +0 -393
  37. package/src/context/injector.ts +0 -797
  38. package/src/context/memory.ts +0 -187
  39. package/src/context/session-index.ts +0 -327
  40. package/src/context/session.ts +0 -152
  41. package/src/index.ts +0 -47
  42. package/src/ingestion/.gitkeep +0 -0
  43. package/src/ingestion/chunker.ts +0 -277
  44. package/src/ingestion/embedder.ts +0 -167
  45. package/src/ingestion/git-analyzer.ts +0 -545
  46. package/src/ingestion/indexer.ts +0 -984
  47. package/src/ingestion/markdown-chunker.ts +0 -337
  48. package/src/ingestion/markdown-knowledge.ts +0 -175
  49. package/src/ingestion/parser.ts +0 -475
  50. package/src/ingestion/watcher.ts +0 -182
  51. package/src/knowledge/.gitkeep +0 -0
  52. package/src/knowledge/hydrator.ts +0 -246
  53. package/src/knowledge/registry.ts +0 -463
  54. package/src/knowledge/search.ts +0 -565
  55. package/src/knowledge/store.ts +0 -262
  56. package/src/learning/.gitkeep +0 -0
  57. package/src/learning/confidence.ts +0 -193
  58. package/src/learning/patterns.ts +0 -360
  59. package/src/learning/trajectory.ts +0 -268
  60. package/src/memory/.gitkeep +0 -0
  61. package/src/memory/memory-compat.ts +0 -233
  62. package/src/memory/observation-store.ts +0 -224
  63. package/src/memory/session-tracker.ts +0 -332
  64. package/src/pipeline/.gitkeep +0 -0
  65. package/src/pipeline/engine.ts +0 -1139
  66. package/src/pipeline/events.ts +0 -253
  67. package/src/pipeline/parallel.ts +0 -394
  68. package/src/pipeline/state-machine.ts +0 -199
  69. package/src/query/.gitkeep +0 -0
  70. package/src/query/graph-queries.ts +0 -262
  71. package/src/query/hybrid-search.ts +0 -337
  72. package/src/query/intent-detector.ts +0 -131
  73. package/src/query/ranking.ts +0 -161
  74. package/src/server.ts +0 -352
  75. package/src/storage/.gitkeep +0 -0
  76. package/src/storage/falkordb-store.ts +0 -388
  77. package/src/storage/file-cache.ts +0 -141
  78. package/src/storage/interfaces.ts +0 -201
  79. package/src/storage/qdrant-store.ts +0 -557
  80. package/src/storage/schema.ts +0 -139
  81. package/src/storage/sqlite.ts +0 -168
  82. package/src/tools/.gitkeep +0 -0
  83. package/src/tools/collaboration-tools.ts +0 -208
  84. package/src/tools/context-tools.ts +0 -493
  85. package/src/tools/graph-tools.ts +0 -295
  86. package/src/tools/ingestion-tools.ts +0 -122
  87. package/src/tools/learning-tools.ts +0 -181
  88. package/src/tools/memory-tools.ts +0 -234
  89. package/src/tools/phase-tools.ts +0 -1452
  90. package/src/tools/pipeline-tools.ts +0 -188
  91. package/src/tools/registration-tools.ts +0 -450
  92. package/src/util/.gitkeep +0 -0
  93. package/src/util/circuit-breaker.ts +0 -193
  94. package/src/util/config.ts +0 -177
  95. package/src/util/logger.ts +0 -53
  96. package/src/util/token-counter.ts +0 -52
  97. package/src/util/types.ts +0 -710
  98. package/tests/context/.gitkeep +0 -0
  99. package/tests/integration/.gitkeep +0 -0
  100. package/tests/knowledge/.gitkeep +0 -0
  101. package/tests/learning/.gitkeep +0 -0
  102. package/tests/pipeline/.gitkeep +0 -0
  103. package/tests/tools/.gitkeep +0 -0
  104. package/tsconfig.json +0 -21
  105. package/vitest.config.ts +0 -10
  106. package/vscode-extension/.vscodeignore +0 -7
  107. package/vscode-extension/README.md +0 -43
  108. package/vscode-extension/out/edge-collector.js +0 -274
  109. package/vscode-extension/out/edge-collector.js.map +0 -1
  110. package/vscode-extension/out/extension.js +0 -264
  111. package/vscode-extension/out/extension.js.map +0 -1
  112. package/vscode-extension/out/forge-client.js +0 -318
  113. package/vscode-extension/out/forge-client.js.map +0 -1
  114. package/vscode-extension/package-lock.json +0 -59
  115. package/vscode-extension/package.json +0 -71
  116. package/vscode-extension/src/edge-collector.ts +0 -320
  117. package/vscode-extension/src/extension.ts +0 -269
  118. package/vscode-extension/src/forge-client.ts +0 -364
  119. package/vscode-extension/tsconfig.json +0 -19
@@ -1,318 +0,0 @@
1
- "use strict";
2
- // forge-client.ts — Forge LSP Bridge
3
- // MCP stdio client that spawns the dk-forge-server as a child process and
4
- // communicates via JSON-RPC 2.0 over stdio with Content-Length framing.
5
- //
6
- // This client is purpose-built for submitting LSP edges via the
7
- // `submit_lsp_edges` tool. It lazily spawns the server on first use and
8
- // reuses the connection for subsequent calls.
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.ForgeClient = void 0;
44
- const child_process_1 = require("child_process");
45
- const path = __importStar(require("path"));
46
- // ---------------------------------------------------------------------------
47
- // ForgeClient
48
- // ---------------------------------------------------------------------------
49
- class ForgeClient {
50
- process;
51
- serverPath;
52
- nextId = 1;
53
- responseBuffer = '';
54
- pendingRequests = new Map();
55
- initialized = false;
56
- initializing;
57
- disposed = false;
58
- /**
59
- * @param serverPath Absolute path to the dk-forge-server entry point.
60
- * If empty, resolves to the bundled dist/index.js relative to this extension.
61
- */
62
- constructor(serverPath) {
63
- if (serverPath) {
64
- this.serverPath = serverPath;
65
- }
66
- else {
67
- // Default: assume forge-pipeline-server is a sibling or parent checkout
68
- // The extension is at vscode-extension/ inside the server repo, so:
69
- // ../dist/index.js is the compiled server entry
70
- this.serverPath = path.resolve(__dirname, '..', '..', 'dist', 'index.js');
71
- }
72
- }
73
- // -------------------------------------------------------------------------
74
- // Public API
75
- // -------------------------------------------------------------------------
76
- /**
77
- * Submit a batch of LSP edges to the forge server's submit_lsp_edges tool.
78
- */
79
- async submitLspEdges(repoId, edges) {
80
- if (this.disposed) {
81
- return undefined;
82
- }
83
- if (edges.length === 0) {
84
- return { accepted: 0, failed: 0 };
85
- }
86
- await this.ensureInitialized();
87
- // MCP tool call: tools/call with the tool name and arguments
88
- const response = await this.sendRequest('tools/call', {
89
- name: 'submit_lsp_edges',
90
- arguments: {
91
- repo_id: repoId,
92
- edges,
93
- },
94
- });
95
- if (response.error) {
96
- throw new Error(`MCP error ${response.error.code}: ${response.error.message}`);
97
- }
98
- // Parse the tool result — MCP wraps tool output in content blocks
99
- const toolResult = response.result;
100
- if (toolResult?.content && toolResult.content.length > 0) {
101
- const firstContent = toolResult.content[0];
102
- if (firstContent && firstContent.type === 'text') {
103
- try {
104
- return JSON.parse(firstContent.text);
105
- }
106
- catch {
107
- return undefined;
108
- }
109
- }
110
- }
111
- return undefined;
112
- }
113
- /**
114
- * Dispose the client and kill the child process.
115
- */
116
- dispose() {
117
- this.disposed = true;
118
- this.clearAllPending('Client disposed');
119
- this.killProcess();
120
- }
121
- // -------------------------------------------------------------------------
122
- // Process lifecycle
123
- // -------------------------------------------------------------------------
124
- async ensureInitialized() {
125
- if (this.initialized && this.process && !this.process.killed) {
126
- return;
127
- }
128
- // Prevent concurrent initialization
129
- if (this.initializing) {
130
- await this.initializing;
131
- return;
132
- }
133
- this.initializing = this.doInitialize();
134
- try {
135
- await this.initializing;
136
- }
137
- finally {
138
- this.initializing = undefined;
139
- }
140
- }
141
- async doInitialize() {
142
- this.killProcess();
143
- this.initialized = false;
144
- // Spawn the forge server as a child process on stdio
145
- this.process = (0, child_process_1.spawn)('node', [this.serverPath], {
146
- stdio: ['pipe', 'pipe', 'pipe'],
147
- env: {
148
- ...process.env,
149
- // Prevent forge server from polluting stdout with log messages
150
- FORGE_LOG_LEVEL: 'warn',
151
- },
152
- windowsHide: true,
153
- });
154
- // Wire up stdout for JSON-RPC responses
155
- this.process.stdout?.on('data', (chunk) => {
156
- this.onData(chunk.toString('utf8'));
157
- });
158
- // Log stderr but don't treat it as fatal
159
- this.process.stderr?.on('data', (chunk) => {
160
- // stderr output from the forge server is informational
161
- void chunk; // suppress unused variable
162
- });
163
- this.process.on('error', (err) => {
164
- this.clearAllPending(`Process error: ${err.message}`);
165
- this.initialized = false;
166
- });
167
- this.process.on('exit', (code) => {
168
- this.clearAllPending(`Process exited with code ${String(code)}`);
169
- this.initialized = false;
170
- });
171
- // Send the MCP initialize handshake
172
- const initResponse = await this.sendRequest('initialize', {
173
- protocolVersion: '2024-11-05',
174
- capabilities: {},
175
- clientInfo: {
176
- name: 'forge-lsp-bridge',
177
- version: '0.1.0',
178
- },
179
- });
180
- if (initResponse.error) {
181
- throw new Error(`MCP initialize failed: ${initResponse.error.message}`);
182
- }
183
- // Send initialized notification (no response expected)
184
- this.sendNotification('notifications/initialized', {});
185
- this.initialized = true;
186
- }
187
- killProcess() {
188
- if (this.process) {
189
- try {
190
- this.process.kill('SIGTERM');
191
- }
192
- catch {
193
- // Process may already be dead
194
- }
195
- this.process = undefined;
196
- }
197
- }
198
- // -------------------------------------------------------------------------
199
- // JSON-RPC over stdio with Content-Length framing
200
- // -------------------------------------------------------------------------
201
- sendRequest(method, params) {
202
- return new Promise((resolve, reject) => {
203
- if (!this.process || !this.process.stdin || this.process.killed) {
204
- reject(new Error('Forge server process is not running'));
205
- return;
206
- }
207
- const id = this.nextId++;
208
- const request = {
209
- jsonrpc: '2.0',
210
- id,
211
- method,
212
- params,
213
- };
214
- const body = JSON.stringify(request);
215
- const header = `Content-Length: ${Buffer.byteLength(body, 'utf8')}\r\n\r\n`;
216
- // Timeout after 30 seconds
217
- const timer = setTimeout(() => {
218
- const pending = this.pendingRequests.get(id);
219
- if (pending) {
220
- this.pendingRequests.delete(id);
221
- pending.reject(new Error(`Request ${method} timed out after 30s`));
222
- }
223
- }, 30_000);
224
- this.pendingRequests.set(id, { resolve, reject, timer });
225
- try {
226
- this.process.stdin.write(header + body, 'utf8');
227
- }
228
- catch (err) {
229
- this.pendingRequests.delete(id);
230
- clearTimeout(timer);
231
- reject(new Error(`Failed to write to forge server: ${String(err)}`));
232
- }
233
- });
234
- }
235
- sendNotification(method, params) {
236
- if (!this.process || !this.process.stdin || this.process.killed) {
237
- return;
238
- }
239
- const notification = {
240
- jsonrpc: '2.0',
241
- method,
242
- params,
243
- };
244
- const body = JSON.stringify(notification);
245
- const header = `Content-Length: ${Buffer.byteLength(body, 'utf8')}\r\n\r\n`;
246
- try {
247
- this.process.stdin.write(header + body, 'utf8');
248
- }
249
- catch {
250
- // Notifications are fire-and-forget
251
- }
252
- }
253
- /**
254
- * Handle incoming data from the server's stdout.
255
- * Parses Content-Length framed JSON-RPC messages.
256
- */
257
- onData(chunk) {
258
- this.responseBuffer += chunk;
259
- this.processBuffer();
260
- }
261
- processBuffer() {
262
- // eslint-disable-next-line no-constant-condition
263
- while (true) {
264
- // Look for Content-Length header
265
- const headerEnd = this.responseBuffer.indexOf('\r\n\r\n');
266
- if (headerEnd === -1) {
267
- break;
268
- }
269
- const headerSection = this.responseBuffer.substring(0, headerEnd);
270
- const contentLengthMatch = headerSection.match(/Content-Length:\s*(\d+)/i);
271
- if (!contentLengthMatch || !contentLengthMatch[1]) {
272
- // Malformed header — skip past the double CRLF and try again
273
- this.responseBuffer = this.responseBuffer.substring(headerEnd + 4);
274
- continue;
275
- }
276
- const contentLength = parseInt(contentLengthMatch[1], 10);
277
- const bodyStart = headerEnd + 4;
278
- const bodyEnd = bodyStart + contentLength;
279
- if (this.responseBuffer.length < bodyEnd) {
280
- // Not enough data yet — wait for more
281
- break;
282
- }
283
- const body = this.responseBuffer.substring(bodyStart, bodyEnd);
284
- this.responseBuffer = this.responseBuffer.substring(bodyEnd);
285
- try {
286
- const message = JSON.parse(body);
287
- this.handleResponse(message);
288
- }
289
- catch {
290
- // Malformed JSON — skip this message
291
- }
292
- }
293
- }
294
- handleResponse(message) {
295
- // Only handle responses (messages with an id and no method)
296
- if (message.id === undefined || message.id === null) {
297
- // This is a notification from the server — ignore
298
- return;
299
- }
300
- const pending = this.pendingRequests.get(message.id);
301
- if (!pending) {
302
- // Response for an unknown or timed-out request — discard
303
- return;
304
- }
305
- this.pendingRequests.delete(message.id);
306
- clearTimeout(pending.timer);
307
- pending.resolve(message);
308
- }
309
- clearAllPending(reason) {
310
- for (const [id, pending] of this.pendingRequests) {
311
- clearTimeout(pending.timer);
312
- pending.reject(new Error(reason));
313
- this.pendingRequests.delete(id);
314
- }
315
- }
316
- }
317
- exports.ForgeClient = ForgeClient;
318
- //# sourceMappingURL=forge-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forge-client.js","sourceRoot":"","sources":["../src/forge-client.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- {
2
- "name": "forge-lsp-bridge",
3
- "version": "0.1.0",
4
- "lockfileVersion": 3,
5
- "requires": true,
6
- "packages": {
7
- "": {
8
- "name": "forge-lsp-bridge",
9
- "version": "0.1.0",
10
- "license": "MIT",
11
- "devDependencies": {
12
- "@types/node": "^20.0.0",
13
- "@types/vscode": "^1.85.0",
14
- "typescript": "^5.6.0"
15
- },
16
- "engines": {
17
- "vscode": "^1.85.0"
18
- }
19
- },
20
- "node_modules/@types/node": {
21
- "version": "20.19.35",
22
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz",
23
- "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==",
24
- "dev": true,
25
- "license": "MIT",
26
- "dependencies": {
27
- "undici-types": "~6.21.0"
28
- }
29
- },
30
- "node_modules/@types/vscode": {
31
- "version": "1.109.0",
32
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.109.0.tgz",
33
- "integrity": "sha512-0Pf95rnwEIwDbmXGC08r0B4TQhAbsHQ5UyTIgVgoieDe4cOnf92usuR5dEczb6bTKEp7ziZH4TV1TRGPPCExtw==",
34
- "dev": true,
35
- "license": "MIT"
36
- },
37
- "node_modules/typescript": {
38
- "version": "5.9.3",
39
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
40
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
41
- "dev": true,
42
- "license": "Apache-2.0",
43
- "bin": {
44
- "tsc": "bin/tsc",
45
- "tsserver": "bin/tsserver"
46
- },
47
- "engines": {
48
- "node": ">=14.17"
49
- }
50
- },
51
- "node_modules/undici-types": {
52
- "version": "6.21.0",
53
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
54
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
55
- "dev": true,
56
- "license": "MIT"
57
- }
58
- }
59
- }
@@ -1,71 +0,0 @@
1
- {
2
- "name": "forge-lsp-bridge",
3
- "displayName": "Forge LSP Bridge",
4
- "description": "Feeds TypeScript Language Server call/reference edges into the dominKnow | Forge code graph",
5
- "version": "0.1.0",
6
- "publisher": "dominknow",
7
- "license": "MIT",
8
- "engines": {
9
- "vscode": "^1.85.0"
10
- },
11
- "categories": [
12
- "Other"
13
- ],
14
- "activationEvents": [
15
- "onLanguage:typescript",
16
- "onLanguage:javascript",
17
- "onLanguage:typescriptreact",
18
- "onLanguage:javascriptreact"
19
- ],
20
- "main": "./out/extension.js",
21
- "contributes": {
22
- "configuration": {
23
- "title": "Forge LSP Bridge",
24
- "properties": {
25
- "forge.lspBridge.enabled": {
26
- "type": "boolean",
27
- "default": true,
28
- "description": "Enable automatic LSP edge collection on file save"
29
- },
30
- "forge.lspBridge.repoId": {
31
- "type": "string",
32
- "default": "",
33
- "description": "Repository ID for forge. If empty, auto-detected from .forge/manifest.yaml"
34
- },
35
- "forge.lspBridge.debounceMs": {
36
- "type": "number",
37
- "default": 5000,
38
- "minimum": 1000,
39
- "maximum": 30000,
40
- "description": "Milliseconds to wait after the last save before flushing collected edges"
41
- },
42
- "forge.lspBridge.mcpServerPath": {
43
- "type": "string",
44
- "default": "",
45
- "description": "Absolute path to the dk-forge-server entry point (dist/index.js). If empty, uses the bundled server path."
46
- }
47
- }
48
- },
49
- "commands": [
50
- {
51
- "command": "forge.lspBridge.toggle",
52
- "title": "Forge LSP Bridge: Toggle On/Off"
53
- },
54
- {
55
- "command": "forge.lspBridge.flush",
56
- "title": "Forge LSP Bridge: Flush Edges Now"
57
- }
58
- ]
59
- },
60
- "scripts": {
61
- "vscode:prepublish": "npm run compile",
62
- "compile": "tsc -p ./",
63
- "watch": "tsc -watch -p ./",
64
- "lint": "eslint src --ext ts"
65
- },
66
- "devDependencies": {
67
- "@types/node": "^20.0.0",
68
- "@types/vscode": "^1.85.0",
69
- "typescript": "^5.6.0"
70
- }
71
- }