@aaronsb/kg-cli 0.9.5 → 0.11.0

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 (46) hide show
  1. package/dist/api/client.d.ts +45 -0
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +16 -0
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/cli/admin/index.d.ts.map +1 -1
  6. package/dist/cli/admin/index.js +5 -2
  7. package/dist/cli/admin/index.js.map +1 -1
  8. package/dist/cli/admin/workers.d.ts +7 -0
  9. package/dist/cli/admin/workers.d.ts.map +1 -0
  10. package/dist/cli/admin/workers.js +132 -0
  11. package/dist/cli/admin/workers.js.map +1 -0
  12. package/dist/cli/login.d.ts.map +1 -1
  13. package/dist/cli/login.js +29 -11
  14. package/dist/cli/login.js.map +1 -1
  15. package/dist/cli/oauth.d.ts.map +1 -1
  16. package/dist/cli/oauth.js +10 -34
  17. package/dist/cli/oauth.js.map +1 -1
  18. package/dist/lib/config.d.ts +18 -0
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +24 -0
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/table.d.ts.map +1 -1
  23. package/dist/lib/table.js +1 -0
  24. package/dist/lib/table.js.map +1 -1
  25. package/dist/mcp/formatters/index.d.ts +2 -1
  26. package/dist/mcp/formatters/index.d.ts.map +1 -1
  27. package/dist/mcp/formatters/index.js +6 -1
  28. package/dist/mcp/formatters/index.js.map +1 -1
  29. package/dist/mcp/formatters/job.js +5 -5
  30. package/dist/mcp/formatters/job.js.map +1 -1
  31. package/dist/mcp/formatters/session.d.ts +19 -0
  32. package/dist/mcp/formatters/session.d.ts.map +1 -0
  33. package/dist/mcp/formatters/session.js +39 -0
  34. package/dist/mcp/formatters/session.js.map +1 -0
  35. package/dist/mcp/formatters/system.d.ts +1 -0
  36. package/dist/mcp/formatters/system.d.ts.map +1 -1
  37. package/dist/mcp/formatters/system.js +37 -0
  38. package/dist/mcp/formatters/system.js.map +1 -1
  39. package/dist/mcp-server.js +168 -0
  40. package/dist/mcp-server.js.map +1 -1
  41. package/dist/types/index.d.ts +1 -1
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/version.d.ts +3 -3
  44. package/dist/version.js +3 -3
  45. package/dist/version.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Session context and ingest formatters
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatSessionContext = formatSessionContext;
7
+ exports.formatSessionIngest = formatSessionIngest;
8
+ /**
9
+ * Format session context results as markdown
10
+ */
11
+ function formatSessionContext(concepts, summary) {
12
+ if (concepts.length === 0) {
13
+ return summary + '\n';
14
+ }
15
+ let output = `# Session Context\n\n`;
16
+ output += `${summary}\n\n`;
17
+ // Group by epoch for readability
18
+ let currentEpoch = null;
19
+ for (const c of concepts) {
20
+ if (c.created_at_epoch !== currentEpoch) {
21
+ currentEpoch = c.created_at_epoch;
22
+ output += `\n**Epoch ${currentEpoch}**\n`;
23
+ }
24
+ const ont = c.ontology ? ` [${c.ontology}]` : '';
25
+ output += `- ${c.label} (${c.concept_id})${ont}\n`;
26
+ }
27
+ return output;
28
+ }
29
+ /**
30
+ * Format session ingest result as markdown.
31
+ * Deliberately minimal — the agent should fire and forget.
32
+ */
33
+ function formatSessionIngest(result) {
34
+ if (result.job_id) {
35
+ return 'Session summary saved to knowledge graph.';
36
+ }
37
+ return `Session ingest failed: ${result.detail || result.message || 'unknown error'}`;
38
+ }
39
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/mcp/formatters/session.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAYH,oDAoBC;AAMD,kDAKC;AAlCD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAA0B,EAAE,OAAe;IAC9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,GAAG,uBAAuB,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC;IAE3B,iCAAiC;IACjC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,gBAAgB,KAAK,YAAY,EAAE,CAAC;YACxC,YAAY,GAAG,CAAC,CAAC,gBAAgB,CAAC;YAClC,MAAM,IAAI,aAAa,YAAY,MAAM,CAAC;QAC5C,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAAW;IAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,OAAO,0BAA0B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;AACxF,CAAC"}
@@ -6,5 +6,6 @@ export declare function formatDatabaseInfo(result: any): string;
6
6
  export declare function formatDatabaseHealth(result: any): string;
7
7
  export declare function formatSystemStatus(result: any): string;
8
8
  export declare function formatApiHealth(result: any): string;
9
+ export declare function formatWorkerStatus(status: any, lanes: any): string;
9
10
  export declare function formatMcpAllowedPaths(result: any): string;
10
11
  //# sourceMappingURL=system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/mcp/formatters/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAwBvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAiBtD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAmBxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA6BtD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAkBnD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAkDzD"}
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/mcp/formatters/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAwBvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAiBtD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAmBxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA6BtD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAkBnD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,CAwClE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAkDzD"}
@@ -8,6 +8,7 @@ exports.formatDatabaseInfo = formatDatabaseInfo;
8
8
  exports.formatDatabaseHealth = formatDatabaseHealth;
9
9
  exports.formatSystemStatus = formatSystemStatus;
10
10
  exports.formatApiHealth = formatApiHealth;
11
+ exports.formatWorkerStatus = formatWorkerStatus;
11
12
  exports.formatMcpAllowedPaths = formatMcpAllowedPaths;
12
13
  function formatDatabaseStats(result) {
13
14
  let output = `# Database Statistics\n\n`;
@@ -105,6 +106,42 @@ function formatApiHealth(result) {
105
106
  }
106
107
  return output;
107
108
  }
109
+ function formatWorkerStatus(status, lanes) {
110
+ let output = `# Worker Status (ADR-100)\n\n`;
111
+ output += `## Slot Utilization\n\n`;
112
+ output += `Slots In Use: ${status.slots_in_use}/${status.total_slots}\n`;
113
+ output += `Running Jobs: ${status.running_count}\n`;
114
+ output += `Queued Jobs: ${status.total_queued}\n\n`;
115
+ if (lanes?.lanes && lanes.lanes.length > 0) {
116
+ output += `## Lane Configuration\n\n`;
117
+ for (const lane of lanes.lanes) {
118
+ output += `### ${lane.name} (${lane.enabled ? 'enabled' : 'disabled'})\n`;
119
+ output += `Job Types: ${lane.job_types.join(', ')}\n`;
120
+ output += `Slots: ${lane.running_jobs}/${lane.max_slots} (${lane.slots_available} available, ${lane.queued_jobs} queued)\n`;
121
+ output += `Poll Interval: ${(lane.poll_interval_ms / 1000).toFixed(1)}s\n`;
122
+ output += `Stale Timeout: ${lane.stale_timeout_minutes}m\n\n`;
123
+ }
124
+ }
125
+ if (status.running_jobs && status.running_jobs.length > 0) {
126
+ output += `## Active Jobs\n\n`;
127
+ for (const job of status.running_jobs) {
128
+ const startedAt = job.started_at ? new Date(job.started_at.endsWith('Z') ? job.started_at : job.started_at + 'Z') : null;
129
+ const seconds = startedAt ? Math.floor((Date.now() - startedAt.getTime()) / 1000) : null;
130
+ const duration = seconds !== null
131
+ ? seconds < 60 ? `${seconds}s` : seconds < 3600 ? `${Math.floor(seconds / 60)}m` : `${Math.floor(seconds / 3600)}h`
132
+ : 'unknown';
133
+ output += `- ${job.job_id.substring(0, 8)}... ${job.job_type} (${duration})\n`;
134
+ }
135
+ output += `\n`;
136
+ }
137
+ if (status.queued_by_type && status.queued_by_type.length > 0) {
138
+ output += `## Queue Depth by Type\n\n`;
139
+ for (const q of status.queued_by_type) {
140
+ output += `${q.job_type}: ${q.count}\n`;
141
+ }
142
+ }
143
+ return output;
144
+ }
108
145
  function formatMcpAllowedPaths(result) {
109
146
  if (!result.configured) {
110
147
  let output = `# MCP File Access Allowlist\n\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/mcp/formatters/system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/mcp/formatters/system.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,7 @@ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
47
47
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
48
48
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
49
49
  const client_js_1 = require("./api/client.js");
50
+ const config_js_1 = require("./lib/config.js");
50
51
  const auth_client_js_1 = require("./lib/auth/auth-client.js");
51
52
  const mcp_allowlist_js_1 = require("./lib/mcp-allowlist.js");
52
53
  const index_js_2 = require("./mcp/formatters/index.js");
@@ -220,6 +221,62 @@ function createAuthenticatedClient() {
220
221
  }
221
222
  // Client instance - will be initialized in main() before server starts
222
223
  let client;
224
+ /**
225
+ * Fetch recent concepts from the graph for session context.
226
+ * Returns a compact summary and structured data. Fails gracefully if API is unreachable.
227
+ */
228
+ async function fetchRecentConcepts(limit, ontology) {
229
+ try {
230
+ let query = 'MATCH (c:Concept) WHERE c.created_at_epoch IS NOT NULL';
231
+ if (ontology) {
232
+ // Whitelist validation — ontology names are slugified strings
233
+ if (!/^[a-zA-Z0-9_\-. ()]+$/.test(ontology)) {
234
+ return { summary: `Invalid ontology name: ${ontology}`, concepts: [] };
235
+ }
236
+ query += ` AND c.ontology = '${ontology}'`;
237
+ }
238
+ query += ' RETURN c ORDER BY c.created_at_epoch DESC';
239
+ const result = await client.executeProgram({
240
+ program: {
241
+ version: 1,
242
+ statements: [{
243
+ op: '+',
244
+ operation: { type: 'cypher', query, limit },
245
+ label: 'recent_concepts',
246
+ }],
247
+ },
248
+ });
249
+ const nodes = result.result.nodes || [];
250
+ const concepts = nodes.map((n) => ({
251
+ label: n.label,
252
+ concept_id: n.concept_id,
253
+ ontology: n.ontology ?? null,
254
+ created_at_epoch: n.properties?.created_at_epoch ?? 0,
255
+ }));
256
+ if (concepts.length === 0) {
257
+ return { summary: 'No concepts in the knowledge graph yet.', concepts: [] };
258
+ }
259
+ const labels = concepts.map((c) => c.label).join(' | ');
260
+ return { summary: `Recent concepts (${concepts.length}): ${labels}`, concepts };
261
+ }
262
+ catch {
263
+ return { summary: 'Knowledge graph unavailable — API server may not be running.', concepts: [] };
264
+ }
265
+ }
266
+ /**
267
+ * Resolve the ontology name for session ingest.
268
+ * Priority: config oauth_client_name > env KG_OAUTH_CLIENT_ID > 'sessions'
269
+ */
270
+ function getSessionOntology() {
271
+ const config = (0, config_js_1.getConfig)();
272
+ const clientName = config.get('auth.oauth_client_name');
273
+ if (clientName)
274
+ return clientName;
275
+ const envClientId = process.env.KG_OAUTH_CLIENT_ID;
276
+ if (envClientId)
277
+ return envClientId;
278
+ return 'sessions';
279
+ }
223
280
  /**
224
281
  * Tool Definitions
225
282
  *
@@ -227,6 +284,28 @@ let client;
227
284
  */
228
285
  // List available tools
229
286
  server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
287
+ // Build dynamic session context
288
+ const config = (0, config_js_1.getConfig)();
289
+ let sessionContextDescription;
290
+ if (config.getSessionContextEnabled()) {
291
+ const { summary } = await fetchRecentConcepts(config.getSessionContextLimit(), config.getSessionContextOntology());
292
+ sessionContextDescription = `Recent knowledge graph activity. This tool provides active, unsolicited state information about the knowledge graph — what concepts were most recently created or encountered.
293
+
294
+ ${summary}
295
+
296
+ Call this tool to refresh context, adjust the limit, or filter by ontology. Results include concept labels, IDs, ontology, and creation epoch.`;
297
+ }
298
+ else {
299
+ sessionContextDescription = 'Read recent knowledge graph activity. Session context is currently disabled in config (~/.config/kg/config.json session.context_enabled).';
300
+ }
301
+ const sessionOntology = getSessionOntology();
302
+ const sessionIngestDescription = `Save a session summary to the knowledge graph for cross-session memory.
303
+
304
+ **IMPORTANT: Before your session ends or context compacts, call this tool with a summary of key topics, decisions, and insights from this session.**
305
+
306
+ Text is ingested into the "${sessionOntology}" ontology, creating concepts that will appear in session_context on your next connection. The ingest job is auto-approved.
307
+
308
+ Input: text (required) — your session summary. Optional: filename for source tracking.`;
230
309
  return {
231
310
  tools: [
232
311
  {
@@ -1159,6 +1238,43 @@ Read the program/syntax resource for the complete language reference with more e
1159
1238
  required: ['action'],
1160
1239
  },
1161
1240
  },
1241
+ {
1242
+ name: 'session_context',
1243
+ description: sessionContextDescription,
1244
+ inputSchema: {
1245
+ type: 'object',
1246
+ properties: {
1247
+ limit: {
1248
+ type: 'number',
1249
+ description: 'Maximum concepts to return (default: 10, max: 50)',
1250
+ default: 10,
1251
+ },
1252
+ ontology: {
1253
+ type: 'string',
1254
+ description: 'Filter by ontology name (default: all ontologies)',
1255
+ },
1256
+ },
1257
+ required: [],
1258
+ },
1259
+ },
1260
+ {
1261
+ name: 'session_ingest',
1262
+ description: sessionIngestDescription,
1263
+ inputSchema: {
1264
+ type: 'object',
1265
+ properties: {
1266
+ text: {
1267
+ type: 'string',
1268
+ description: 'Session summary text to ingest into the knowledge graph',
1269
+ },
1270
+ filename: {
1271
+ type: 'string',
1272
+ description: 'Optional filename for source tracking (e.g., "session-2025-01-15.md")',
1273
+ },
1274
+ },
1275
+ required: ['text'],
1276
+ },
1277
+ },
1162
1278
  ],
1163
1279
  };
1164
1280
  });
@@ -1190,6 +1306,12 @@ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
1190
1306
  description: 'Job scheduler status, resource usage',
1191
1307
  mimeType: 'application/json'
1192
1308
  },
1309
+ {
1310
+ uri: 'workers/status',
1311
+ name: 'Worker Status',
1312
+ description: 'Lane slot utilization, active jobs, queue depth (ADR-100)',
1313
+ mimeType: 'application/json'
1314
+ },
1193
1315
  {
1194
1316
  uri: 'api/health',
1195
1317
  name: 'API Health',
@@ -1256,6 +1378,19 @@ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) =
1256
1378
  }]
1257
1379
  };
1258
1380
  }
1381
+ case 'workers/status': {
1382
+ const [workerStatusResult, workerLanesResult] = await Promise.all([
1383
+ client.getWorkerStatus(),
1384
+ client.getWorkerLanes(),
1385
+ ]);
1386
+ return {
1387
+ contents: [{
1388
+ uri,
1389
+ mimeType: 'text/plain',
1390
+ text: (0, index_js_2.formatWorkerStatus)(workerStatusResult, workerLanesResult)
1391
+ }]
1392
+ };
1393
+ }
1259
1394
  case 'api/health': {
1260
1395
  const result = await client.health();
1261
1396
  return {
@@ -2671,6 +2806,39 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
2671
2806
  throw new Error(`Unknown program action: ${action}. Use: validate, create, get, list, execute, or chain`);
2672
2807
  }
2673
2808
  }
2809
+ case 'session_context': {
2810
+ const limit = Math.min(toolArgs.limit || 10, 50);
2811
+ const ontology = toolArgs.ontology || null;
2812
+ const { summary, concepts } = await fetchRecentConcepts(limit, ontology);
2813
+ return {
2814
+ content: [{
2815
+ type: 'text',
2816
+ text: (0, index_js_2.formatSessionContext)(concepts, summary),
2817
+ }],
2818
+ };
2819
+ }
2820
+ case 'session_ingest': {
2821
+ const text = toolArgs.text;
2822
+ if (!text) {
2823
+ throw new Error('text is required');
2824
+ }
2825
+ const ontology = getSessionOntology();
2826
+ const result = await client.ingestText(text, {
2827
+ ontology,
2828
+ filename: toolArgs.filename || undefined,
2829
+ auto_approve: true,
2830
+ force: false,
2831
+ processing_mode: 'serial',
2832
+ options: {
2833
+ target_words: 1000,
2834
+ overlap_words: 200,
2835
+ },
2836
+ source_type: 'mcp',
2837
+ });
2838
+ return {
2839
+ content: [{ type: 'text', text: (0, index_js_2.formatSessionIngest)(result) }],
2840
+ };
2841
+ }
2674
2842
  default:
2675
2843
  throw new Error(`Unknown tool: ${name}`);
2676
2844
  }