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.
- package/bin/setup-forge.sh +1 -1
- package/bin/setup.js +99 -0
- package/dist/cli.js +37 -37
- package/dist/cli.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/storage/schema.js +113 -113
- package/dist/storage/schema.js.map +1 -1
- package/dist/storage/sqlite.js +1 -1
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/util/logger.d.ts +1 -1
- package/dist/util/logger.js +1 -1
- package/dist/util/types.js +1 -1
- package/dist/util/types.js.map +1 -1
- package/package.json +8 -2
- package/plugin/.mcp.json +1 -1
- package/.claude/hooks/worktree-create.sh +0 -64
- package/.claude/hooks/worktree-remove.sh +0 -57
- package/.claude/settings.local.json +0 -29
- package/.forge/knowledge/conventions.yaml +0 -1
- package/.forge/knowledge/decisions.yaml +0 -1
- package/.forge/knowledge/gotchas.yaml +0 -1
- package/.forge/knowledge/patterns.yaml +0 -1
- package/.forge/manifest.yaml +0 -6
- package/CLAUDE.md +0 -144
- package/docker-compose.yml +0 -20
- package/docs/plans/2026-02-27-swarm-coordination/architecture.md +0 -203
- package/docs/plans/2026-02-27-swarm-coordination/vision.md +0 -57
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +0 -1
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +0 -300
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +0 -480
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +0 -462
- package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +0 -181
- package/src/cli.ts +0 -655
- package/src/context/.gitkeep +0 -0
- package/src/context/codebase.ts +0 -393
- package/src/context/injector.ts +0 -797
- package/src/context/memory.ts +0 -187
- package/src/context/session-index.ts +0 -327
- package/src/context/session.ts +0 -152
- package/src/index.ts +0 -47
- package/src/ingestion/.gitkeep +0 -0
- package/src/ingestion/chunker.ts +0 -277
- package/src/ingestion/embedder.ts +0 -167
- package/src/ingestion/git-analyzer.ts +0 -545
- package/src/ingestion/indexer.ts +0 -984
- package/src/ingestion/markdown-chunker.ts +0 -337
- package/src/ingestion/markdown-knowledge.ts +0 -175
- package/src/ingestion/parser.ts +0 -475
- package/src/ingestion/watcher.ts +0 -182
- package/src/knowledge/.gitkeep +0 -0
- package/src/knowledge/hydrator.ts +0 -246
- package/src/knowledge/registry.ts +0 -463
- package/src/knowledge/search.ts +0 -565
- package/src/knowledge/store.ts +0 -262
- package/src/learning/.gitkeep +0 -0
- package/src/learning/confidence.ts +0 -193
- package/src/learning/patterns.ts +0 -360
- package/src/learning/trajectory.ts +0 -268
- package/src/memory/.gitkeep +0 -0
- package/src/memory/memory-compat.ts +0 -233
- package/src/memory/observation-store.ts +0 -224
- package/src/memory/session-tracker.ts +0 -332
- package/src/pipeline/.gitkeep +0 -0
- package/src/pipeline/engine.ts +0 -1139
- package/src/pipeline/events.ts +0 -253
- package/src/pipeline/parallel.ts +0 -394
- package/src/pipeline/state-machine.ts +0 -199
- package/src/query/.gitkeep +0 -0
- package/src/query/graph-queries.ts +0 -262
- package/src/query/hybrid-search.ts +0 -337
- package/src/query/intent-detector.ts +0 -131
- package/src/query/ranking.ts +0 -161
- package/src/server.ts +0 -352
- package/src/storage/.gitkeep +0 -0
- package/src/storage/falkordb-store.ts +0 -388
- package/src/storage/file-cache.ts +0 -141
- package/src/storage/interfaces.ts +0 -201
- package/src/storage/qdrant-store.ts +0 -557
- package/src/storage/schema.ts +0 -139
- package/src/storage/sqlite.ts +0 -168
- package/src/tools/.gitkeep +0 -0
- package/src/tools/collaboration-tools.ts +0 -208
- package/src/tools/context-tools.ts +0 -493
- package/src/tools/graph-tools.ts +0 -295
- package/src/tools/ingestion-tools.ts +0 -122
- package/src/tools/learning-tools.ts +0 -181
- package/src/tools/memory-tools.ts +0 -234
- package/src/tools/phase-tools.ts +0 -1452
- package/src/tools/pipeline-tools.ts +0 -188
- package/src/tools/registration-tools.ts +0 -450
- package/src/util/.gitkeep +0 -0
- package/src/util/circuit-breaker.ts +0 -193
- package/src/util/config.ts +0 -177
- package/src/util/logger.ts +0 -53
- package/src/util/token-counter.ts +0 -52
- package/src/util/types.ts +0 -710
- package/tests/context/.gitkeep +0 -0
- package/tests/integration/.gitkeep +0 -0
- package/tests/knowledge/.gitkeep +0 -0
- package/tests/learning/.gitkeep +0 -0
- package/tests/pipeline/.gitkeep +0 -0
- package/tests/tools/.gitkeep +0 -0
- package/tsconfig.json +0 -21
- package/vitest.config.ts +0 -10
- package/vscode-extension/.vscodeignore +0 -7
- package/vscode-extension/README.md +0 -43
- package/vscode-extension/out/edge-collector.js +0 -274
- package/vscode-extension/out/edge-collector.js.map +0 -1
- package/vscode-extension/out/extension.js +0 -264
- package/vscode-extension/out/extension.js.map +0 -1
- package/vscode-extension/out/forge-client.js +0 -318
- package/vscode-extension/out/forge-client.js.map +0 -1
- package/vscode-extension/package-lock.json +0 -59
- package/vscode-extension/package.json +0 -71
- package/vscode-extension/src/edge-collector.ts +0 -320
- package/vscode-extension/src/extension.ts +0 -269
- package/vscode-extension/src/forge-client.ts +0 -364
- 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
|
-
}
|