@framers/agentos 0.1.32 → 0.1.34
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/README.md +5 -2
- package/dist/api/AgentOS.d.ts +62 -1
- package/dist/api/AgentOS.d.ts.map +1 -1
- package/dist/api/AgentOS.js +177 -2
- package/dist/api/AgentOS.js.map +1 -1
- package/dist/api/AgentOSOrchestrator.d.ts +187 -0
- package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
- package/dist/api/AgentOSOrchestrator.js +709 -16
- package/dist/api/AgentOSOrchestrator.js.map +1 -1
- package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
- package/dist/cognitive_substrate/GMI.js +36 -1
- package/dist/cognitive_substrate/GMI.js.map +1 -1
- package/dist/cognitive_substrate/IGMI.d.ts +21 -0
- package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
- package/dist/cognitive_substrate/IGMI.js.map +1 -1
- package/dist/config/AgentOSConfig.d.ts.map +1 -1
- package/dist/config/AgentOSConfig.js +17 -0
- package/dist/config/AgentOSConfig.js.map +1 -1
- package/dist/config/VectorStoreConfiguration.d.ts +2 -1
- package/dist/config/VectorStoreConfiguration.d.ts.map +1 -1
- package/dist/config/VectorStoreConfiguration.js.map +1 -1
- package/dist/core/knowledge/Neo4jKnowledgeGraph.d.ts +89 -0
- package/dist/core/knowledge/Neo4jKnowledgeGraph.d.ts.map +1 -0
- package/dist/core/knowledge/Neo4jKnowledgeGraph.js +683 -0
- package/dist/core/knowledge/Neo4jKnowledgeGraph.js.map +1 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts +14 -1
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts.map +1 -1
- package/dist/core/llm/providers/implementations/OllamaProvider.js +142 -37
- package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -1
- package/dist/core/llm/providers/implementations/OpenAIProvider.js +3 -3
- package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
- package/dist/core/observability/otel.d.ts +2 -0
- package/dist/core/observability/otel.d.ts.map +1 -1
- package/dist/core/observability/otel.js +14 -0
- package/dist/core/observability/otel.js.map +1 -1
- package/dist/core/orchestration/SqlTaskOutcomeTelemetryStore.d.ts +30 -0
- package/dist/core/orchestration/SqlTaskOutcomeTelemetryStore.d.ts.map +1 -0
- package/dist/core/orchestration/SqlTaskOutcomeTelemetryStore.js +123 -0
- package/dist/core/orchestration/SqlTaskOutcomeTelemetryStore.js.map +1 -0
- package/dist/core/orchestration/TurnPlanner.d.ts +89 -0
- package/dist/core/orchestration/TurnPlanner.d.ts.map +1 -0
- package/dist/core/orchestration/TurnPlanner.js +242 -0
- package/dist/core/orchestration/TurnPlanner.js.map +1 -0
- package/dist/discovery/CapabilityDiscoveryEngine.js +4 -4
- package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
- package/dist/discovery/CapabilityGraph.d.ts +2 -2
- package/dist/discovery/CapabilityGraph.d.ts.map +1 -1
- package/dist/discovery/CapabilityGraph.js +46 -17
- package/dist/discovery/CapabilityGraph.js.map +1 -1
- package/dist/discovery/Neo4jCapabilityGraph.d.ts +58 -0
- package/dist/discovery/Neo4jCapabilityGraph.d.ts.map +1 -0
- package/dist/discovery/Neo4jCapabilityGraph.js +226 -0
- package/dist/discovery/Neo4jCapabilityGraph.js.map +1 -0
- package/dist/discovery/index.d.ts +1 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/types.d.ts +1 -1
- package/dist/discovery/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/neo4j/Neo4jConnectionManager.d.ts +59 -0
- package/dist/neo4j/Neo4jConnectionManager.d.ts.map +1 -0
- package/dist/neo4j/Neo4jConnectionManager.js +115 -0
- package/dist/neo4j/Neo4jConnectionManager.js.map +1 -0
- package/dist/neo4j/Neo4jCypherRunner.d.ts +39 -0
- package/dist/neo4j/Neo4jCypherRunner.d.ts.map +1 -0
- package/dist/neo4j/Neo4jCypherRunner.js +74 -0
- package/dist/neo4j/Neo4jCypherRunner.js.map +1 -0
- package/dist/neo4j/index.d.ts +12 -0
- package/dist/neo4j/index.d.ts.map +1 -0
- package/dist/neo4j/index.js +11 -0
- package/dist/neo4j/index.js.map +1 -0
- package/dist/neo4j/types.d.ts +27 -0
- package/dist/neo4j/types.d.ts.map +1 -0
- package/dist/neo4j/types.js +6 -0
- package/dist/neo4j/types.js.map +1 -0
- package/dist/rag/VectorStoreManager.d.ts.map +1 -1
- package/dist/rag/VectorStoreManager.js +6 -7
- package/dist/rag/VectorStoreManager.js.map +1 -1
- package/dist/rag/graphrag/GraphRAGEngine.d.ts.map +1 -1
- package/dist/rag/graphrag/GraphRAGEngine.js +42 -10
- package/dist/rag/graphrag/GraphRAGEngine.js.map +1 -1
- package/dist/rag/graphrag/Neo4jGraphRAGEngine.d.ts +95 -0
- package/dist/rag/graphrag/Neo4jGraphRAGEngine.d.ts.map +1 -0
- package/dist/rag/graphrag/Neo4jGraphRAGEngine.js +748 -0
- package/dist/rag/graphrag/Neo4jGraphRAGEngine.js.map +1 -0
- package/dist/rag/graphrag/index.d.ts +1 -0
- package/dist/rag/graphrag/index.d.ts.map +1 -1
- package/dist/rag/graphrag/index.js +1 -0
- package/dist/rag/graphrag/index.js.map +1 -1
- package/dist/rag/implementations/vector_stores/Neo4jVectorStore.d.ts +55 -0
- package/dist/rag/implementations/vector_stores/Neo4jVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/Neo4jVectorStore.js +369 -0
- package/dist/rag/implementations/vector_stores/Neo4jVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/index.d.ts +1 -0
- package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -1
- package/dist/rag/implementations/vector_stores/index.js +2 -0
- package/dist/rag/implementations/vector_stores/index.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Turn planner for AgentOS orchestration.
|
|
3
|
+
*
|
|
4
|
+
* The planner sits before GMI execution and determines:
|
|
5
|
+
* - execution policy for tool failures (fail-open vs fail-closed)
|
|
6
|
+
* - tool selection scope (all tools vs discovery-selected tools)
|
|
7
|
+
* - optional per-turn capability discovery payload
|
|
8
|
+
*/
|
|
9
|
+
import { GMIError, GMIErrorCode } from '../../utils/errors.js';
|
|
10
|
+
const TURN_PLANNER_VERSION = 'agentos-turn-planner-v1';
|
|
11
|
+
const DEFAULT_TURN_PLANNER_CONFIG = {
|
|
12
|
+
enabled: true,
|
|
13
|
+
defaultToolFailureMode: 'fail_open',
|
|
14
|
+
allowRequestOverrides: true,
|
|
15
|
+
discovery: {
|
|
16
|
+
enabled: true,
|
|
17
|
+
onlyAvailable: true,
|
|
18
|
+
defaultKind: 'any',
|
|
19
|
+
includePromptContext: true,
|
|
20
|
+
defaultToolSelectionMode: 'discovered',
|
|
21
|
+
maxRetries: 1,
|
|
22
|
+
retryBackoffMs: 150,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
async function sleep(ms) {
|
|
26
|
+
if (!Number.isFinite(ms) || ms <= 0)
|
|
27
|
+
return;
|
|
28
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
29
|
+
}
|
|
30
|
+
function normalizeFailureMode(value) {
|
|
31
|
+
const normalized = String(value ?? '')
|
|
32
|
+
.trim()
|
|
33
|
+
.toLowerCase()
|
|
34
|
+
.replace(/\s+/g, '_')
|
|
35
|
+
.replace(/-/g, '_');
|
|
36
|
+
if (!normalized)
|
|
37
|
+
return null;
|
|
38
|
+
if (normalized === 'fail_open' || normalized === 'open')
|
|
39
|
+
return 'fail_open';
|
|
40
|
+
if (normalized === 'fail_closed' || normalized === 'closed')
|
|
41
|
+
return 'fail_closed';
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
function normalizeToolSelectionMode(value) {
|
|
45
|
+
const normalized = String(value ?? '')
|
|
46
|
+
.trim()
|
|
47
|
+
.toLowerCase()
|
|
48
|
+
.replace(/\s+/g, '_')
|
|
49
|
+
.replace(/-/g, '_');
|
|
50
|
+
if (!normalized)
|
|
51
|
+
return null;
|
|
52
|
+
if (normalized === 'all' || normalized === 'full')
|
|
53
|
+
return 'all';
|
|
54
|
+
if (normalized === 'discovered' || normalized === 'selected' || normalized === 'retrieved') {
|
|
55
|
+
return 'discovered';
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function readFlag(flags, keys) {
|
|
60
|
+
if (!flags)
|
|
61
|
+
return undefined;
|
|
62
|
+
for (const key of keys) {
|
|
63
|
+
if (Object.prototype.hasOwnProperty.call(flags, key)) {
|
|
64
|
+
return flags[key];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function buildDiscoveryQueryOptions(capability) {
|
|
70
|
+
return {
|
|
71
|
+
kind: capability.kind,
|
|
72
|
+
category: capability.category,
|
|
73
|
+
onlyAvailable: capability.onlyAvailable,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function extractDiscoveredToolNames(result) {
|
|
77
|
+
const names = new Set();
|
|
78
|
+
for (const item of result.tier1) {
|
|
79
|
+
if (item.capability.kind === 'tool' && item.capability.name) {
|
|
80
|
+
names.add(item.capability.name);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const item of result.tier2) {
|
|
84
|
+
if (item.capability.kind === 'tool' && item.capability.name) {
|
|
85
|
+
names.add(item.capability.name);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return Array.from(names.values());
|
|
89
|
+
}
|
|
90
|
+
export class AgentOSTurnPlanner {
|
|
91
|
+
constructor(config, discoveryEngine, logger) {
|
|
92
|
+
this.discoveryEngine = discoveryEngine;
|
|
93
|
+
this.logger = logger;
|
|
94
|
+
this.plannerId = TURN_PLANNER_VERSION;
|
|
95
|
+
this.config = {
|
|
96
|
+
...DEFAULT_TURN_PLANNER_CONFIG,
|
|
97
|
+
...(config ?? {}),
|
|
98
|
+
discovery: {
|
|
99
|
+
...DEFAULT_TURN_PLANNER_CONFIG.discovery,
|
|
100
|
+
...(config?.discovery ?? {}),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
isDiscoveryAvailable() {
|
|
105
|
+
return Boolean(this.config.discovery.enabled &&
|
|
106
|
+
this.discoveryEngine &&
|
|
107
|
+
this.discoveryEngine.isInitialized());
|
|
108
|
+
}
|
|
109
|
+
async planTurn(input) {
|
|
110
|
+
const startedAt = Date.now();
|
|
111
|
+
const customFlags = input.options?.customFlags;
|
|
112
|
+
let toolFailureMode = this.config.defaultToolFailureMode;
|
|
113
|
+
let toolSelectionMode = this.config.discovery.defaultToolSelectionMode;
|
|
114
|
+
if (this.config.allowRequestOverrides) {
|
|
115
|
+
const requestedFailureMode = normalizeFailureMode(readFlag(customFlags, [
|
|
116
|
+
'toolFailureMode',
|
|
117
|
+
'tool_failure_mode',
|
|
118
|
+
'failureMode',
|
|
119
|
+
'failMode',
|
|
120
|
+
]));
|
|
121
|
+
if (requestedFailureMode) {
|
|
122
|
+
toolFailureMode = requestedFailureMode;
|
|
123
|
+
}
|
|
124
|
+
const requestedSelectionMode = normalizeToolSelectionMode(readFlag(customFlags, [
|
|
125
|
+
'toolSelectionMode',
|
|
126
|
+
'tool_selection_mode',
|
|
127
|
+
'capabilityToolSelectionMode',
|
|
128
|
+
]));
|
|
129
|
+
if (requestedSelectionMode) {
|
|
130
|
+
toolSelectionMode = requestedSelectionMode;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const capability = {
|
|
134
|
+
enabled: false,
|
|
135
|
+
query: input.userMessage.trim(),
|
|
136
|
+
kind: this.config.discovery.defaultKind,
|
|
137
|
+
category: undefined,
|
|
138
|
+
onlyAvailable: this.config.discovery.onlyAvailable,
|
|
139
|
+
selectedToolNames: [],
|
|
140
|
+
};
|
|
141
|
+
if (this.config.allowRequestOverrides) {
|
|
142
|
+
const requestedKind = String(readFlag(customFlags, ['capabilityDiscoveryKind', 'capability_kind']) ?? '')
|
|
143
|
+
.trim()
|
|
144
|
+
.toLowerCase();
|
|
145
|
+
if (requestedKind === 'tool' ||
|
|
146
|
+
requestedKind === 'skill' ||
|
|
147
|
+
requestedKind === 'extension' ||
|
|
148
|
+
requestedKind === 'channel' ||
|
|
149
|
+
requestedKind === 'voice' ||
|
|
150
|
+
requestedKind === 'productivity' ||
|
|
151
|
+
requestedKind === 'any') {
|
|
152
|
+
capability.kind = requestedKind;
|
|
153
|
+
}
|
|
154
|
+
const requestedCategory = readFlag(customFlags, [
|
|
155
|
+
'capabilityCategory',
|
|
156
|
+
'capability_category',
|
|
157
|
+
]);
|
|
158
|
+
if (typeof requestedCategory === 'string' && requestedCategory.trim()) {
|
|
159
|
+
capability.category = requestedCategory.trim();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const discoveryFlagOverride = this.config.allowRequestOverrides
|
|
163
|
+
? readFlag(customFlags, ['enableCapabilityDiscovery', 'capabilityDiscovery'])
|
|
164
|
+
: undefined;
|
|
165
|
+
const discoveryEnabledForTurn = typeof discoveryFlagOverride === 'boolean'
|
|
166
|
+
? discoveryFlagOverride
|
|
167
|
+
: this.config.discovery.enabled;
|
|
168
|
+
const discoveryAttempted = Boolean(discoveryEnabledForTurn) &&
|
|
169
|
+
Boolean(capability.query) &&
|
|
170
|
+
this.isDiscoveryAvailable();
|
|
171
|
+
let discoveryAttempts = 0;
|
|
172
|
+
if (discoveryAttempted && this.discoveryEngine) {
|
|
173
|
+
capability.enabled = true;
|
|
174
|
+
const maxRetries = Math.max(0, Number(this.config.discovery.maxRetries ?? 0));
|
|
175
|
+
const backoffMs = Math.max(0, Number(this.config.discovery.retryBackoffMs ?? 0));
|
|
176
|
+
let lastDiscoveryError = null;
|
|
177
|
+
for (let attempt = 0; attempt <= maxRetries; attempt += 1) {
|
|
178
|
+
discoveryAttempts += 1;
|
|
179
|
+
try {
|
|
180
|
+
const result = await this.discoveryEngine.discover(capability.query, buildDiscoveryQueryOptions(capability));
|
|
181
|
+
capability.result = result;
|
|
182
|
+
capability.selectedToolNames = extractDiscoveredToolNames(result);
|
|
183
|
+
if (this.config.discovery.includePromptContext) {
|
|
184
|
+
const renderFn = this.discoveryEngine.renderForPrompt;
|
|
185
|
+
if (typeof renderFn === 'function') {
|
|
186
|
+
capability.promptContext = String(renderFn.call(this.discoveryEngine, result) ?? '');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
lastDiscoveryError = null;
|
|
190
|
+
if (toolSelectionMode === 'discovered' &&
|
|
191
|
+
capability.selectedToolNames.length === 0) {
|
|
192
|
+
capability.fallbackReason =
|
|
193
|
+
'Discovery produced no tool matches; falling back to full toolset.';
|
|
194
|
+
capability.fallbackApplied = true;
|
|
195
|
+
toolSelectionMode = 'all';
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
lastDiscoveryError = error;
|
|
201
|
+
if (attempt < maxRetries) {
|
|
202
|
+
await sleep(backoffMs);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (lastDiscoveryError) {
|
|
208
|
+
const message = lastDiscoveryError?.message || String(lastDiscoveryError);
|
|
209
|
+
capability.fallbackReason = `Discovery failed after ${discoveryAttempts} attempt(s): ${message}`;
|
|
210
|
+
if (toolFailureMode === 'fail_closed') {
|
|
211
|
+
throw new GMIError(`Turn planning failed in fail-closed mode: ${message}`, GMIErrorCode.PROCESSING_ERROR, { plannerId: this.plannerId, userId: input.userId, organizationId: input.organizationId });
|
|
212
|
+
}
|
|
213
|
+
capability.fallbackApplied = true;
|
|
214
|
+
toolSelectionMode = 'all';
|
|
215
|
+
this.logger?.warn?.('Turn planner discovery failed; continuing with fail-open policy', {
|
|
216
|
+
plannerId: this.plannerId,
|
|
217
|
+
userId: input.userId,
|
|
218
|
+
organizationId: input.organizationId,
|
|
219
|
+
message,
|
|
220
|
+
attempts: discoveryAttempts,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const plan = {
|
|
225
|
+
policy: {
|
|
226
|
+
plannerVersion: TURN_PLANNER_VERSION,
|
|
227
|
+
toolFailureMode,
|
|
228
|
+
toolSelectionMode,
|
|
229
|
+
},
|
|
230
|
+
capability,
|
|
231
|
+
diagnostics: {
|
|
232
|
+
planningLatencyMs: Date.now() - startedAt,
|
|
233
|
+
discoveryAttempted,
|
|
234
|
+
discoveryApplied: Boolean(capability.result),
|
|
235
|
+
discoveryAttempts,
|
|
236
|
+
usedFallback: capability.fallbackApplied === true,
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
return plan;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=TurnPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TurnPlanner.js","sourceRoot":"","sources":["../../../src/core/orchestration/TurnPlanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,9 +42,9 @@ export class CapabilityDiscoveryEngine {
|
|
|
42
42
|
async initialize(sources, presetCoOccurrences) {
|
|
43
43
|
// 1. Build the vector index (normalizes sources + embeds + stores)
|
|
44
44
|
await this.index.buildIndex(sources);
|
|
45
|
-
// 2. Build the relationship graph
|
|
45
|
+
// 2. Build the relationship graph (async — graphology loaded lazily)
|
|
46
46
|
const allCapabilities = this.index.getAllCapabilities();
|
|
47
|
-
this.graph.buildGraph(allCapabilities, presetCoOccurrences);
|
|
47
|
+
await this.graph.buildGraph(allCapabilities, presetCoOccurrences);
|
|
48
48
|
this.indexVersion++;
|
|
49
49
|
this.initialized = true;
|
|
50
50
|
}
|
|
@@ -132,9 +132,9 @@ export class CapabilityDiscoveryEngine {
|
|
|
132
132
|
for (const desc of newDescriptors) {
|
|
133
133
|
await this.index.upsertCapability(desc);
|
|
134
134
|
}
|
|
135
|
-
// Rebuild graph with all capabilities
|
|
135
|
+
// Rebuild graph with all capabilities (async — graphology loaded lazily)
|
|
136
136
|
const allCapabilities = this.index.getAllCapabilities();
|
|
137
|
-
this.graph.buildGraph(allCapabilities);
|
|
137
|
+
await this.graph.buildGraph(allCapabilities);
|
|
138
138
|
this.indexVersion++;
|
|
139
139
|
this.assembler.invalidateCache();
|
|
140
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapabilityDiscoveryEngine.js","sourceRoot":"","sources":["../../src/discovery/CapabilityDiscoveryEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,MAAM,OAAO,yBAAyB;IAQpC,YACE,gBAAmC,EACnC,WAAyB,EACzB,MAA2C;QANrC,iBAAY,GAAG,CAAC,CAAC;QACjB,gBAAW,GAAG,KAAK,CAAC;QAO1B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,wBAAwB,EAAE,GAAG,MAAM,EAAE,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAC9B,gBAAgB,EAChB,WAAW,EACX,IAAI,CAAC,MAAM,CAAC,cAAc,EAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC7B,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,OAA+B,EAC/B,mBAA0C;QAE1C,mEAAmE;QACnE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAErC,
|
|
1
|
+
{"version":3,"file":"CapabilityDiscoveryEngine.js","sourceRoot":"","sources":["../../src/discovery/CapabilityDiscoveryEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
import type { CapabilityDescriptor, CapabilityEdge, ICapabilityGraph, PresetCoOccurrence, RelatedCapability } from './types.js';
|
|
24
24
|
export declare class CapabilityGraph implements ICapabilityGraph {
|
|
25
25
|
private graph;
|
|
26
|
-
|
|
26
|
+
private ensureGraph;
|
|
27
27
|
/**
|
|
28
28
|
* Build the graph from capability descriptors and preset co-occurrence data.
|
|
29
29
|
*
|
|
@@ -34,7 +34,7 @@ export declare class CapabilityGraph implements ICapabilityGraph {
|
|
|
34
34
|
* 4. Add TAGGED_WITH edges (shared tags, ≥2 overlap)
|
|
35
35
|
* 5. Add SAME_CATEGORY edges (weak signal)
|
|
36
36
|
*/
|
|
37
|
-
buildGraph(capabilities: CapabilityDescriptor[], presetCoOccurrences?: PresetCoOccurrence[]): void
|
|
37
|
+
buildGraph(capabilities: CapabilityDescriptor[], presetCoOccurrences?: PresetCoOccurrence[]): Promise<void>;
|
|
38
38
|
/**
|
|
39
39
|
* Get capabilities related to a given capability (1-hop neighbors).
|
|
40
40
|
* Returns neighbors with edge weights, sorted by weight descending.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapabilityGraph.d.ts","sourceRoot":"","sources":["../../src/discovery/CapabilityGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"CapabilityGraph.d.ts","sourceRoot":"","sources":["../../src/discovery/CapabilityGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EAEd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAwBpB,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,KAAK,CAA2B;IAExC,OAAO,CAAC,WAAW;IAanB;;;;;;;;;OASG;IACG,UAAU,CACd,YAAY,EAAE,oBAAoB,EAAE,EACpC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,GACzC,OAAO,CAAC,IAAI,CAAC;IAiGhB;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAsBrD;;;OAGG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,cAAc,EAAE,CAAC;KACzB;IA6BD;;;;;;;;;OASG;IACH,MAAM,CACJ,aAAa,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,gBAAgB,EAAE,MAAM,GACvB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAsCzD,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,MAAM;IAInB,KAAK,IAAI,IAAI;IAQb;;;OAGG;IACH,OAAO,CAAC,WAAW;CAkCpB"}
|
|
@@ -20,13 +20,32 @@
|
|
|
20
20
|
* - SAME_CATEGORY: Shared category (weak signal, low weight)
|
|
21
21
|
* - TAGGED_WITH: Shared tags (weighted by overlap count, ≥2 tags)
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
let _GraphCtor;
|
|
24
|
+
async function resolveGraphology() {
|
|
25
|
+
if (_GraphCtor)
|
|
26
|
+
return _GraphCtor;
|
|
27
|
+
try {
|
|
28
|
+
const mod = await import('graphology');
|
|
29
|
+
_GraphCtor = (mod.default ?? mod);
|
|
30
|
+
return _GraphCtor;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
throw new Error('graphology is required for CapabilityGraph but was not found. ' +
|
|
34
|
+
'Install it: npm install graphology graphology-types');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
24
37
|
// ============================================================================
|
|
25
38
|
// GRAPHOLOGY-BASED CAPABILITY GRAPH
|
|
26
39
|
// ============================================================================
|
|
27
40
|
export class CapabilityGraph {
|
|
28
41
|
constructor() {
|
|
29
|
-
this.graph =
|
|
42
|
+
this.graph = null;
|
|
43
|
+
}
|
|
44
|
+
ensureGraph() {
|
|
45
|
+
if (!this.graph) {
|
|
46
|
+
throw new Error('CapabilityGraph not initialized. Call buildGraph() first.');
|
|
47
|
+
}
|
|
48
|
+
return this.graph;
|
|
30
49
|
}
|
|
31
50
|
// ============================================================================
|
|
32
51
|
// BUILD
|
|
@@ -41,7 +60,12 @@ export class CapabilityGraph {
|
|
|
41
60
|
* 4. Add TAGGED_WITH edges (shared tags, ≥2 overlap)
|
|
42
61
|
* 5. Add SAME_CATEGORY edges (weak signal)
|
|
43
62
|
*/
|
|
44
|
-
buildGraph(capabilities, presetCoOccurrences) {
|
|
63
|
+
async buildGraph(capabilities, presetCoOccurrences) {
|
|
64
|
+
// Lazy-load graphology on first use
|
|
65
|
+
const GraphCtor = await resolveGraphology();
|
|
66
|
+
if (!this.graph) {
|
|
67
|
+
this.graph = new GraphCtor({ multi: false, type: 'undirected' });
|
|
68
|
+
}
|
|
45
69
|
// Clear any existing graph
|
|
46
70
|
this.graph.clear();
|
|
47
71
|
// 1. Add all capabilities as nodes
|
|
@@ -127,10 +151,13 @@ export class CapabilityGraph {
|
|
|
127
151
|
* Returns neighbors with edge weights, sorted by weight descending.
|
|
128
152
|
*/
|
|
129
153
|
getRelated(capabilityId) {
|
|
130
|
-
if (!this.graph
|
|
154
|
+
if (!this.graph)
|
|
155
|
+
return [];
|
|
156
|
+
const g = this.ensureGraph();
|
|
157
|
+
if (!g.hasNode(capabilityId))
|
|
131
158
|
return [];
|
|
132
159
|
const related = [];
|
|
133
|
-
|
|
160
|
+
g.forEachEdge(capabilityId, (_edge, attrs, source, target) => {
|
|
134
161
|
const neighborId = source === capabilityId ? target : source;
|
|
135
162
|
related.push({
|
|
136
163
|
id: neighborId,
|
|
@@ -147,10 +174,11 @@ export class CapabilityGraph {
|
|
|
147
174
|
* Returns all nodes and edges within the induced subgraph.
|
|
148
175
|
*/
|
|
149
176
|
getSubgraph(capabilityIds) {
|
|
150
|
-
const
|
|
177
|
+
const g = this.ensureGraph();
|
|
178
|
+
const nodeSet = new Set(capabilityIds.filter((id) => g.hasNode(id)));
|
|
151
179
|
const edges = [];
|
|
152
180
|
for (const nodeId of nodeSet) {
|
|
153
|
-
|
|
181
|
+
g.forEachEdge(nodeId, (_edge, attrs, source, target) => {
|
|
154
182
|
// Only include edges where both endpoints are in the subgraph
|
|
155
183
|
if (nodeSet.has(source) && nodeSet.has(target)) {
|
|
156
184
|
// Avoid duplicates (undirected graph)
|
|
@@ -215,13 +243,13 @@ export class CapabilityGraph {
|
|
|
215
243
|
// ACCESSORS
|
|
216
244
|
// ============================================================================
|
|
217
245
|
nodeCount() {
|
|
218
|
-
return this.graph
|
|
246
|
+
return this.graph?.order ?? 0;
|
|
219
247
|
}
|
|
220
248
|
edgeCount() {
|
|
221
|
-
return this.graph
|
|
249
|
+
return this.graph?.size ?? 0;
|
|
222
250
|
}
|
|
223
251
|
clear() {
|
|
224
|
-
this.graph
|
|
252
|
+
this.graph?.clear();
|
|
225
253
|
}
|
|
226
254
|
// ============================================================================
|
|
227
255
|
// INTERNAL HELPERS
|
|
@@ -231,28 +259,29 @@ export class CapabilityGraph {
|
|
|
231
259
|
* If the edge already exists, update to the higher weight.
|
|
232
260
|
*/
|
|
233
261
|
safeAddEdge(source, target, type, weight) {
|
|
234
|
-
|
|
262
|
+
const g = this.ensureGraph();
|
|
263
|
+
if (!g.hasNode(source) || !g.hasNode(target))
|
|
235
264
|
return;
|
|
236
265
|
if (source === target)
|
|
237
266
|
return;
|
|
238
267
|
try {
|
|
239
|
-
const existingEdge =
|
|
268
|
+
const existingEdge = g.edge(source, target);
|
|
240
269
|
if (existingEdge) {
|
|
241
270
|
// Edge exists — keep the one with higher weight or stronger type
|
|
242
|
-
const existing =
|
|
271
|
+
const existing = g.getEdgeAttributes(existingEdge);
|
|
243
272
|
if (weight > existing.weight) {
|
|
244
|
-
|
|
245
|
-
|
|
273
|
+
g.setEdgeAttribute(existingEdge, 'weight', weight);
|
|
274
|
+
g.setEdgeAttribute(existingEdge, 'type', type);
|
|
246
275
|
}
|
|
247
276
|
}
|
|
248
277
|
else {
|
|
249
|
-
|
|
278
|
+
g.addEdge(source, target, { type, weight });
|
|
250
279
|
}
|
|
251
280
|
}
|
|
252
281
|
catch {
|
|
253
282
|
// Edge might already exist in the other direction for undirected
|
|
254
283
|
try {
|
|
255
|
-
|
|
284
|
+
g.addEdge(source, target, { type, weight });
|
|
256
285
|
}
|
|
257
286
|
catch {
|
|
258
287
|
// Silently ignore — edge already exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapabilityGraph.js","sourceRoot":"","sources":["../../src/discovery/CapabilityGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"CapabilityGraph.js","sourceRoot":"","sources":["../../src/discovery/CapabilityGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Neo4j-backed Capability Graph implementation.
|
|
3
|
+
*
|
|
4
|
+
* Implements `ICapabilityGraph` using Neo4j for persistent capability
|
|
5
|
+
* relationship storage. Designed for scaling to 1000+ capabilities
|
|
6
|
+
* where in-memory graphology becomes impractical.
|
|
7
|
+
*
|
|
8
|
+
* Also implements the `rerank()` method used by CapabilityDiscoveryEngine
|
|
9
|
+
* for graph-based re-ranking of search results.
|
|
10
|
+
*
|
|
11
|
+
* @module @framers/agentos/discovery/Neo4jCapabilityGraph
|
|
12
|
+
* @see ./types.ts for the ICapabilityGraph interface.
|
|
13
|
+
*/
|
|
14
|
+
import type { ICapabilityGraph, CapabilityDescriptor, CapabilityEdge, RelatedCapability, PresetCoOccurrence } from './types.js';
|
|
15
|
+
import type { Neo4jConnectionManager } from '../neo4j/Neo4jConnectionManager.js';
|
|
16
|
+
export declare class Neo4jCapabilityGraph implements ICapabilityGraph {
|
|
17
|
+
private cypher;
|
|
18
|
+
constructor(connectionManager: Neo4jConnectionManager);
|
|
19
|
+
buildGraph(capabilities: CapabilityDescriptor[], presetCoOccurrences?: PresetCoOccurrence[]): void;
|
|
20
|
+
private _buildPromise;
|
|
21
|
+
private _ensureBuilt;
|
|
22
|
+
private _buildGraphAsync;
|
|
23
|
+
getRelated(capabilityId: string): RelatedCapability[];
|
|
24
|
+
/**
|
|
25
|
+
* Async version of getRelated for Neo4j usage.
|
|
26
|
+
*/
|
|
27
|
+
getRelatedAsync(capabilityId: string): Promise<RelatedCapability[]>;
|
|
28
|
+
getSubgraph(capabilityIds: string[]): {
|
|
29
|
+
nodes: string[];
|
|
30
|
+
edges: CapabilityEdge[];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Async version of getSubgraph for Neo4j usage.
|
|
34
|
+
*/
|
|
35
|
+
getSubgraphAsync(capabilityIds: string[]): Promise<{
|
|
36
|
+
nodes: string[];
|
|
37
|
+
edges: CapabilityEdge[];
|
|
38
|
+
}>;
|
|
39
|
+
nodeCount(): number;
|
|
40
|
+
nodeCountAsync(): Promise<number>;
|
|
41
|
+
edgeCount(): number;
|
|
42
|
+
edgeCountAsync(): Promise<number>;
|
|
43
|
+
clear(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Re-rank search results using graph relationships.
|
|
46
|
+
* Matches the CapabilityGraph.rerank() signature for drop-in replacement.
|
|
47
|
+
*/
|
|
48
|
+
rerank(searchResults: Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
score: number;
|
|
51
|
+
}>, graphBoostFactor: number): Promise<Array<{
|
|
52
|
+
id: string;
|
|
53
|
+
score: number;
|
|
54
|
+
boosted: boolean;
|
|
55
|
+
}>>;
|
|
56
|
+
private addEdge;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=Neo4jCapabilityGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Neo4jCapabilityGraph.d.ts","sourceRoot":"","sources":["../../src/discovery/Neo4jCapabilityGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EAEd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAajF,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,MAAM,CAAoB;gBAEtB,iBAAiB,EAAE,sBAAsB;IAIrD,UAAU,CACR,YAAY,EAAE,oBAAoB,EAAE,EACpC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,GACzC,IAAI;IAOP,OAAO,CAAC,aAAa,CAAoC;YAE3C,YAAY;YAIZ,gBAAgB;IA4F9B,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAOrD;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqBzE,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,cAAc,EAAE,CAAA;KAAE;IAKlF;;OAEG;IACG,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACvD,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,cAAc,EAAE,CAAC;KACzB,CAAC;IAuCF,SAAS,IAAI,MAAM;IAKb,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC,SAAS,IAAI,MAAM;IAIb,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACG,MAAM,CACV,aAAa,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;YAkCpD,OAAO;CAetB"}
|