fuli-context 0.7.4-beta.2 → 0.7.5
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 +93 -7
- package/README.zh-CN.md +84 -7
- package/compose.graphiti.yml +6 -6
- package/dist/web/assets/AboutPage-ByCUor-j.js +1 -0
- package/dist/web/assets/ConnectionsPage-DkdkZ40Q.js +1 -0
- package/dist/web/assets/KnowledgeEditDialog-DSe3Gwep.js +1 -0
- package/dist/web/assets/KnowledgeInspector-CYAjAb9J.js +1 -0
- package/dist/web/assets/KnowledgeOrganizerPage-CV4F54R_.js +1 -0
- package/dist/web/assets/KnowledgePage-vYYXipOi.js +1 -0
- package/dist/web/assets/KnowledgeWorkspace-z4u5mXOG.js +4 -0
- package/dist/web/assets/OverviewPage-BWOfeS6k.js +1 -0
- package/dist/web/assets/PersonalProfilePage-c3w4-h7a.js +1 -0
- package/dist/web/assets/PersonalProjectsPage-B7AlLEwf.js +1 -0
- package/dist/web/assets/ProjectAgentsPage-CgftpIPB.css +1 -0
- package/dist/web/assets/ProjectAgentsPage-DTHcL_ox.js +11 -0
- package/dist/web/assets/PublicProjectsPage-DdH0oGB3.js +1 -0
- package/dist/web/assets/ReviewPage-BYIpcIHG.js +1 -0
- package/dist/web/assets/SearchableSelect-Dz13ClQb.js +1 -0
- package/dist/web/assets/SettingsPage-2VkbXgZi.js +1 -0
- package/dist/web/assets/SettingsPage-CwZp2ka4.css +1 -0
- package/dist/web/assets/WritingTastePage-BOPQZuva.js +1 -0
- package/dist/web/assets/{console-DMvHxKf9.js → console-BlAhujsH.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-Dnlcw7Rj.js → conversation-launcher-settings-DTYxiLJt.js} +1 -1
- package/dist/web/assets/i18n-Ci3heuiL.js +9 -0
- package/dist/web/assets/{identity-C9mLdR8L.js → identity-4_-v6cB7.js} +1 -1
- package/dist/web/assets/index-BnH5mcZx.css +1 -0
- package/dist/web/assets/index-C67Q0JY2.js +2 -0
- package/dist/web/assets/{model-CsYAR8O3.js → model-yG0YqUyZ.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-BLQiPVw0.js → useApi-CROJJdhE-twhdZArA.js} +1 -1
- package/dist/web/assets/vue-router-C-wot_Di.js +1 -0
- package/dist/web/index.html +6 -6
- package/docs/public-personal-architecture.md +73 -0
- package/graph-provider/fuli_graph/app.py +8 -0
- package/graph-provider/fuli_graph/collaboration_context.py +69 -6
- package/graph-provider/fuli_graph/knowledge_search.py +84 -5
- package/graph-provider/fuli_graph/model_validation.py +134 -0
- package/graph-provider/fuli_graph/models.py +24 -5
- package/graph-provider/fuli_graph/project_agent_access.py +54 -0
- package/graph-provider/fuli_graph/project_agent_executor_models.py +635 -0
- package/graph-provider/fuli_graph/project_agent_models.py +278 -0
- package/graph-provider/fuli_graph/project_agent_routes.py +597 -0
- package/graph-provider/fuli_graph/project_agent_task_models.py +542 -0
- package/graph-provider/fuli_graph/runtime.py +259 -0
- package/graph-provider/fuli_graph/search_projection.py +3 -0
- package/graph-provider/fuli_graph/store.py +6 -0
- package/graph-provider/fuli_graph/store_knowledge.py +62 -9
- package/graph-provider/fuli_graph/store_project_agent_executor_learning.py +756 -0
- package/graph-provider/fuli_graph/store_project_agent_executor_routing.py +601 -0
- package/graph-provider/fuli_graph/store_project_agent_executors.py +1087 -0
- package/graph-provider/fuli_graph/store_project_agent_task_reads.py +458 -0
- package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +699 -0
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +409 -0
- package/graph-provider/fuli_graph/store_project_agent_tasks.py +1144 -0
- package/graph-provider/fuli_graph/store_project_agents.py +965 -0
- package/graph-provider/pyproject.toml +2 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
- package/skills/capturing-session-knowledge/SKILL.md +43 -2
- package/src/adaptive-runtime/executor-pool.js +127 -0
- package/src/adaptive-runtime/graph-services.js +166 -0
- package/src/adaptive-runtime/lease-client.js +335 -0
- package/src/adaptive-runtime/runtime-broker.js +318 -0
- package/src/adaptive-runtime/settings.js +111 -0
- package/src/adaptive-runtime/state.js +74 -0
- package/src/agent-tools/graph-definitions.js +396 -0
- package/src/agent-tools/graph-handlers.js +61 -0
- package/src/agent-tools/project-agent-definitions.js +307 -0
- package/src/backup/graph-backup.js +289 -0
- package/src/backup/identity-reconciliation.js +208 -0
- package/src/backup/runtime-adapters.js +269 -0
- package/src/cli/command-registry.js +7 -2
- package/src/cli/graph-data-command.js +112 -0
- package/src/cli/local-runtime-command.js +16 -2
- package/src/cli/setup-command.js +19 -3
- package/src/cli/update-command.js +4 -0
- package/src/cli/workspace-connection-command.js +333 -0
- package/src/cli.js +11 -0
- package/src/graphiti/collaboration-preference-projection.js +29 -1
- package/src/graphiti/collaboration-preference-workflow.js +121 -0
- package/src/graphiti/federated-application.js +74 -112
- package/src/graphiti/knowledge-provider-mapping.js +7 -1
- package/src/graphiti/project-agent-control-plane.js +263 -0
- package/src/graphiti/project-agent-mapping.js +1003 -0
- package/src/graphiti/project-agent-workflows.js +557 -0
- package/src/graphiti/provider-client.js +270 -1
- package/src/graphiti/runtime-config.js +6 -1
- package/src/graphiti/workspace-provider-client.js +403 -0
- package/src/http/api-router.js +63 -9
- package/src/http/graph-api-router.js +278 -0
- package/src/local-runtime/lifecycle.js +46 -10
- package/src/mcp/context-resources.js +15 -6
- package/src/mcp/create-mcp-server.js +51 -16
- package/src/mcp/instructions.js +7 -5
- package/src/mcp/runtime.js +17 -5
- package/src/mcp/session-id.js +38 -1
- package/src/mcp/tool-annotations.js +69 -0
- package/src/mcp-server.js +23 -6
- package/src/native-runtime/runtime.js +717 -0
- package/src/server.js +6 -2
- package/src/setup/agent-installation-status.js +7 -1
- package/src/setup/agents.js +3 -1
- package/src/setup/claude-code-config.js +3 -1
- package/src/setup/codex-bootstrap.js +11 -10
- package/src/setup/codex-config.js +7 -1
- package/src/setup/cursor-config.js +3 -1
- package/src/setup/graph-runtime.js +158 -13
- package/src/setup/neo4j-memory-profile.js +43 -0
- package/src/setup/options.js +38 -2
- package/src/setup/paths.js +14 -0
- package/src/setup/setup.js +37 -1
- package/src/system/resource-monitor.js +181 -16
- package/src/system/runtime-settings.js +10 -1
- package/src/system/system-service.js +27 -2
- package/dist/web/assets/AboutPage-CftRexSY.js +0 -1
- package/dist/web/assets/ConnectionsPage-D5J91x6d.js +0 -1
- package/dist/web/assets/KnowledgeEditDialog-wotVahvr.js +0 -1
- package/dist/web/assets/KnowledgeInspector-BzkW0mVs.js +0 -1
- package/dist/web/assets/KnowledgeOrganizerPage-BebUDiHt.js +0 -1
- package/dist/web/assets/KnowledgePage-OUT07aKH.js +0 -1
- package/dist/web/assets/KnowledgeWorkspace-1pHJ0MNZ.js +0 -4
- package/dist/web/assets/OverviewPage-CHE6XhdS.js +0 -1
- package/dist/web/assets/PersonalProfilePage-CXXiabUy.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-d2wYGW8n.js +0 -1
- package/dist/web/assets/PublicProjectsPage-hxLShtnZ.js +0 -1
- package/dist/web/assets/ReviewPage-DUeyu7E8.js +0 -1
- package/dist/web/assets/SearchableSelect-C5RiB5F8.js +0 -1
- package/dist/web/assets/SettingsPage-BMuASSzQ.js +0 -1
- package/dist/web/assets/SettingsPage-CAfz4qiV.css +0 -1
- package/dist/web/assets/WritingTastePage-B9BCYIwQ.js +0 -1
- package/dist/web/assets/i18n-CWfd8Dtt.js +0 -5
- package/dist/web/assets/index-X2j29j8i.css +0 -1
- package/dist/web/assets/index-nP5p5OaY.js +0 -2
- package/dist/web/assets/vue-router-DN8x6iY1.js +0 -1
package/src/mcp/runtime.js
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
bindRuntimeLeaseAgentTools,
|
|
5
|
+
createRuntimeLeaseClient
|
|
6
|
+
} from '../adaptive-runtime/lease-client.js';
|
|
3
7
|
import { openFederatedGraphApplication } from '../graphiti/federated-application.js';
|
|
4
8
|
import { createMcpServer } from './create-mcp-server.js';
|
|
5
9
|
|
|
6
|
-
export async function runStdio({ runtimeConfigPath }) {
|
|
10
|
+
export async function runStdio({ runtimeConfigPath, sourceApplication }) {
|
|
7
11
|
const app = openFederatedGraphApplication({ runtimeConfigPath });
|
|
8
|
-
const
|
|
12
|
+
const leaseClient = createRuntimeLeaseClient({ runtimeConfigPath });
|
|
13
|
+
bindRuntimeLeaseAgentTools(app, leaseClient);
|
|
14
|
+
const server = createServerOrClose(app, createMcpServer, {
|
|
15
|
+
sourceApplication,
|
|
16
|
+
withRuntimeLease: leaseClient.withGraphLease
|
|
17
|
+
});
|
|
9
18
|
const transport = new StdioServerTransport();
|
|
10
19
|
const signalHandlers = new Map();
|
|
11
20
|
const close = createCloseOnce({
|
|
12
21
|
closeServer: () => server.close(),
|
|
13
|
-
closeApplication: () =>
|
|
22
|
+
closeApplication: async () => {
|
|
23
|
+
await leaseClient.close();
|
|
24
|
+
return app.close();
|
|
25
|
+
},
|
|
14
26
|
afterClose: () => removeHandlers(signalHandlers)
|
|
15
27
|
});
|
|
16
28
|
const quietClose = createQuietCloser(close, () => { process.exitCode = 1; });
|
|
@@ -31,9 +43,9 @@ export async function runStdio({ runtimeConfigPath }) {
|
|
|
31
43
|
}
|
|
32
44
|
}
|
|
33
45
|
|
|
34
|
-
export function createServerOrClose(app, factory = createMcpServer) {
|
|
46
|
+
export function createServerOrClose(app, factory = createMcpServer, options) {
|
|
35
47
|
try {
|
|
36
|
-
return factory(app);
|
|
48
|
+
return factory(app, options);
|
|
37
49
|
} catch (error) {
|
|
38
50
|
void app.close();
|
|
39
51
|
throw error;
|
package/src/mcp/session-id.js
CHANGED
|
@@ -2,6 +2,17 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
|
|
3
3
|
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
4
4
|
const WORKFLOW_OBSERVATION_TOOL = 'record_workflow_transition_observation';
|
|
5
|
+
const PROJECT_AGENT_SOURCE_TOOLS = new Set([
|
|
6
|
+
'create_project_agent_assignment',
|
|
7
|
+
'replace_project_agent_assignment',
|
|
8
|
+
'coordinate_project_agent_task',
|
|
9
|
+
'submit_project_agent_task',
|
|
10
|
+
'get_project_agent_context',
|
|
11
|
+
'record_project_agent_task_activity',
|
|
12
|
+
'preflight_executor',
|
|
13
|
+
'report_executor_health',
|
|
14
|
+
'record_project_agent_executor_actual'
|
|
15
|
+
]);
|
|
5
16
|
|
|
6
17
|
const SESSION_ID_TOOLS = new Set([
|
|
7
18
|
'begin_task_context',
|
|
@@ -31,7 +42,8 @@ export function normalizeAgentSessionInput(
|
|
|
31
42
|
input,
|
|
32
43
|
nativeThreadId,
|
|
33
44
|
hostSessionId = nativeThreadId,
|
|
34
|
-
clock = () => new Date()
|
|
45
|
+
clock = () => new Date(),
|
|
46
|
+
sourceApplication = nativeThreadId ? 'codex' : 'other'
|
|
35
47
|
) {
|
|
36
48
|
if (name === WORKFLOW_OBSERVATION_TOOL) {
|
|
37
49
|
if (!hostSessionId) {
|
|
@@ -51,6 +63,24 @@ export function normalizeAgentSessionInput(
|
|
|
51
63
|
hostObservedAt: clock().toISOString()
|
|
52
64
|
};
|
|
53
65
|
}
|
|
66
|
+
if (PROJECT_AGENT_SOURCE_TOOLS.has(name)) {
|
|
67
|
+
if (!hostSessionId) {
|
|
68
|
+
throw new TypeError('Project Agent calls require an MCP host session');
|
|
69
|
+
}
|
|
70
|
+
const safeSourceApplication = normalizeMcpSourceApplication(sourceApplication);
|
|
71
|
+
const {
|
|
72
|
+
sourceApplication: _sourceApplication,
|
|
73
|
+
source_application: _source_application,
|
|
74
|
+
sourceSessionId: _sourceSessionId,
|
|
75
|
+
source_session_id: _source_session_id,
|
|
76
|
+
...safeInput
|
|
77
|
+
} = input ?? {};
|
|
78
|
+
return {
|
|
79
|
+
...safeInput,
|
|
80
|
+
sourceApplication: safeSourceApplication,
|
|
81
|
+
sourceSessionId: hostSessionId
|
|
82
|
+
};
|
|
83
|
+
}
|
|
54
84
|
if (!nativeThreadId || !SESSION_ID_TOOLS.has(name)) return input;
|
|
55
85
|
if (!input || typeof input !== 'object' || Array.isArray(input)) return input;
|
|
56
86
|
if (typeof input.sessionId !== 'string' || input.sessionId.trim() === nativeThreadId) {
|
|
@@ -58,3 +88,10 @@ export function normalizeAgentSessionInput(
|
|
|
58
88
|
}
|
|
59
89
|
return { ...input, sessionId: nativeThreadId };
|
|
60
90
|
}
|
|
91
|
+
|
|
92
|
+
export function normalizeMcpSourceApplication(value) {
|
|
93
|
+
if (!['codex', 'claude_code', 'cursor', 'kiro', 'other'].includes(value)) {
|
|
94
|
+
throw new TypeError('Unsupported MCP source application');
|
|
95
|
+
}
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
@@ -7,6 +7,19 @@ const READ_TOOLS = new Set([
|
|
|
7
7
|
'preview_common_knowledge_promotion',
|
|
8
8
|
'list_knowledge_spaces',
|
|
9
9
|
'list_personal_projects',
|
|
10
|
+
'list_project_agents',
|
|
11
|
+
'get_project_agent',
|
|
12
|
+
'list_project_agent_assignments',
|
|
13
|
+
'get_project_agent_context',
|
|
14
|
+
'view_project_agent_task',
|
|
15
|
+
'view_project_agent_activity',
|
|
16
|
+
'get_project_agent_recruitment_policy',
|
|
17
|
+
'list_project_agent_recruitments',
|
|
18
|
+
'list_executors',
|
|
19
|
+
'get_executor',
|
|
20
|
+
'list_executor_routing_rules',
|
|
21
|
+
'get_executor_routing_rule',
|
|
22
|
+
'list_project_agent_routing_learning',
|
|
10
23
|
'list_knowledge_review_candidates',
|
|
11
24
|
'list_workflow_candidates',
|
|
12
25
|
'recommend_next_workflow_steps',
|
|
@@ -36,6 +49,32 @@ const WRITE_TOOLS = new Set([
|
|
|
36
49
|
'search_human_knowledge_changes',
|
|
37
50
|
'review_human_knowledge_change',
|
|
38
51
|
'upsert_personal_project',
|
|
52
|
+
'upsert_project_agent',
|
|
53
|
+
'delete_project_agent',
|
|
54
|
+
'cleanup_test_project_agents',
|
|
55
|
+
'create_project_agent_assignment',
|
|
56
|
+
'end_project_agent_assignment',
|
|
57
|
+
'replace_project_agent_assignment',
|
|
58
|
+
'coordinate_project_agent_task',
|
|
59
|
+
'acquire_runtime_lease',
|
|
60
|
+
'refresh_runtime_lease',
|
|
61
|
+
'release_runtime_lease',
|
|
62
|
+
'submit_project_agent_task',
|
|
63
|
+
'record_project_agent_task_activity',
|
|
64
|
+
'update_project_agent_recruitment_policy',
|
|
65
|
+
'decide_project_agent_recruitment',
|
|
66
|
+
'upsert_executor',
|
|
67
|
+
'delete_executor',
|
|
68
|
+
'preflight_executor',
|
|
69
|
+
'authorize_executor',
|
|
70
|
+
'report_executor_health',
|
|
71
|
+
'upsert_executor_routing_rule',
|
|
72
|
+
'update_executor_routing_rule',
|
|
73
|
+
'delete_executor_routing_rule',
|
|
74
|
+
'record_project_agent_task_outcome',
|
|
75
|
+
'record_project_agent_executor_actual',
|
|
76
|
+
'ignore_project_agent_routing_learning',
|
|
77
|
+
'reset_project_agent_routing_learning',
|
|
39
78
|
'start_knowledge_review',
|
|
40
79
|
'record_knowledge_review_progress',
|
|
41
80
|
'finish_knowledge_review',
|
|
@@ -69,12 +108,42 @@ export function annotationsFor(name) {
|
|
|
69
108
|
readOnlyHint: readOnly,
|
|
70
109
|
destructiveHint: DESTRUCTIVE_TOOLS.has(name),
|
|
71
110
|
idempotentHint: readOnly || name === 'upsert_personal_project' ||
|
|
111
|
+
name === 'upsert_project_agent' ||
|
|
112
|
+
name === 'delete_project_agent' ||
|
|
113
|
+
name === 'cleanup_test_project_agents' ||
|
|
114
|
+
name === 'create_project_agent_assignment' ||
|
|
115
|
+
name === 'coordinate_project_agent_task' ||
|
|
116
|
+
name === 'refresh_runtime_lease' ||
|
|
117
|
+
name === 'release_runtime_lease' ||
|
|
118
|
+
name === 'submit_project_agent_task' ||
|
|
119
|
+
name === 'record_project_agent_task_activity' ||
|
|
120
|
+
name === 'record_project_agent_task_outcome' ||
|
|
121
|
+
name === 'record_project_agent_executor_actual' ||
|
|
122
|
+
name === 'upsert_executor' ||
|
|
123
|
+
name === 'preflight_executor' ||
|
|
124
|
+
name === 'authorize_executor' ||
|
|
125
|
+
name === 'report_executor_health' ||
|
|
126
|
+
name === 'upsert_executor_routing_rule' ||
|
|
127
|
+
name === 'update_executor_routing_rule' ||
|
|
72
128
|
name === 'publish_personal_project' || name === 'unsubscribe_public_project' ||
|
|
73
129
|
name === 'record_knowledge_usage' || name === 'record_decision_trace' ||
|
|
74
130
|
name === 'record_knowledge_feedback' ||
|
|
75
131
|
name === 'record_workflow_transition_observation' ||
|
|
76
132
|
name === 'checkpoint_task_knowledge',
|
|
77
133
|
openWorldHint: name === 'capture_session_knowledge' ||
|
|
134
|
+
name === 'coordinate_project_agent_task' ||
|
|
135
|
+
name === 'submit_project_agent_task' ||
|
|
136
|
+
name === 'record_project_agent_task_activity' ||
|
|
137
|
+
name === 'preflight_executor' ||
|
|
138
|
+
name === 'record_project_agent_task_outcome' ||
|
|
139
|
+
name === 'record_project_agent_executor_actual' ||
|
|
140
|
+
name === 'upsert_executor' ||
|
|
141
|
+
name === 'delete_executor' ||
|
|
142
|
+
name === 'authorize_executor' ||
|
|
143
|
+
name === 'report_executor_health' ||
|
|
144
|
+
name === 'upsert_executor_routing_rule' ||
|
|
145
|
+
name === 'update_executor_routing_rule' ||
|
|
146
|
+
name === 'delete_executor_routing_rule' ||
|
|
78
147
|
name === 'record_workflow_transition_observation' ||
|
|
79
148
|
name === 'search_connected_knowledge' ||
|
|
80
149
|
name === 'record_decision_trace' ||
|
package/src/mcp-server.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { callAgentTool, listAgentTools } from './agent-tools.js';
|
|
3
|
+
import {
|
|
4
|
+
bindRuntimeLeaseAgentTools,
|
|
5
|
+
createRuntimeLeaseClient
|
|
6
|
+
} from './adaptive-runtime/lease-client.js';
|
|
3
7
|
import { ApplicationError } from './app/application-error.js';
|
|
4
8
|
import { openFederatedGraphApplication } from './graphiti/federated-application.js';
|
|
5
9
|
import {
|
|
@@ -7,6 +11,7 @@ import {
|
|
|
7
11
|
resolveGraphRuntimeOptions
|
|
8
12
|
} from './graphiti/runtime-config.js';
|
|
9
13
|
import { runStdio } from './mcp/runtime.js';
|
|
14
|
+
import { normalizeMcpSourceApplication } from './mcp/session-id.js';
|
|
10
15
|
import { applicationErrorMessage } from './mcp/tool-result.js';
|
|
11
16
|
|
|
12
17
|
await main(process.argv.slice(2)).catch((error) => {
|
|
@@ -29,19 +34,30 @@ async function main(args) {
|
|
|
29
34
|
await runCall({ args, runtimeConfigPath });
|
|
30
35
|
return;
|
|
31
36
|
}
|
|
32
|
-
|
|
37
|
+
const configuredSourceApplication = args.includes('--source-application')
|
|
38
|
+
? requiredOption(args, '--source-application')
|
|
39
|
+
: null;
|
|
40
|
+
await runStdio({
|
|
41
|
+
runtimeConfigPath,
|
|
42
|
+
sourceApplication: configuredSourceApplication
|
|
43
|
+
? normalizeMcpSourceApplication(configuredSourceApplication)
|
|
44
|
+
: undefined
|
|
45
|
+
});
|
|
33
46
|
}
|
|
34
47
|
|
|
35
48
|
async function runCall({ args, runtimeConfigPath }) {
|
|
36
49
|
const app = openFederatedGraphApplication({ runtimeConfigPath });
|
|
50
|
+
const leaseClient = createRuntimeLeaseClient({ runtimeConfigPath });
|
|
51
|
+
bindRuntimeLeaseAgentTools(app, leaseClient);
|
|
37
52
|
try {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
parseInput(args)
|
|
53
|
+
const toolName = requiredOption(args, '--call');
|
|
54
|
+
const result = await leaseClient.withGraphLease(
|
|
55
|
+
`cli-call:${toolName}`,
|
|
56
|
+
() => callAgentTool(app, toolName, parseInput(args))
|
|
42
57
|
);
|
|
43
58
|
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
44
59
|
} finally {
|
|
60
|
+
await leaseClient.close();
|
|
45
61
|
await app.close();
|
|
46
62
|
}
|
|
47
63
|
}
|
|
@@ -69,7 +85,8 @@ function startupMessage(error) {
|
|
|
69
85
|
}
|
|
70
86
|
|
|
71
87
|
function helpText() {
|
|
72
|
-
return 'Usage: node src/mcp-server.js [--runtime-config <graph-runtime.json>]
|
|
88
|
+
return 'Usage: node src/mcp-server.js [--runtime-config <graph-runtime.json>] ' +
|
|
89
|
+
'[--source-application <codex|claude_code|cursor|kiro|other>]\n' +
|
|
73
90
|
' node src/mcp-server.js --tools\n' +
|
|
74
91
|
' node src/mcp-server.js --runtime-config <graph-runtime.json> ' +
|
|
75
92
|
'--call <tool> [--input <json>]\n';
|