@likec4/language-server 1.46.4 → 1.48.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.
- package/LICENSE +1 -1
- package/browser/package.json +2 -2
- package/browser-worker/package.json +2 -2
- package/bundled/package.json +4 -0
- package/dist/LikeC4LanguageServices.d.mts +4 -0
- package/dist/LikeC4LanguageServices.mjs +3 -0
- package/dist/_chunks/ConfigurableLayouter.mjs +1956 -0
- package/dist/_chunks/LikeC4LanguageServices.d.mts +1978 -0
- package/dist/_chunks/LikeC4LanguageServices.mjs +725 -0
- package/dist/_chunks/ast.d.mts +1444 -0
- package/dist/_chunks/ast.mjs +2375 -0
- package/dist/_chunks/ast2.mjs +176 -0
- package/dist/_chunks/common-exports.mjs +0 -0
- package/dist/_chunks/filesystem.mjs +58 -0
- package/dist/_chunks/grammar.mjs +8 -0
- package/dist/_chunks/icons.mjs +5211 -0
- package/dist/_chunks/libs/@hono/node-server.mjs +436 -0
- package/dist/_chunks/libs/@msgpack/msgpack.mjs +805 -0
- package/dist/_chunks/libs/eventemitter3.mjs +243 -0
- package/dist/_chunks/libs/fast-equals.mjs +446 -0
- package/dist/_chunks/libs/hono.mjs +1829 -0
- package/dist/_chunks/libs/p-queue.mjs +449 -0
- package/dist/_chunks/libs/parse-ms.mjs +36 -0
- package/dist/_chunks/libs/picomatch.mjs +1673 -0
- package/dist/_chunks/libs/pretty-ms.mjs +80 -0
- package/dist/_chunks/libs/remeda.mjs +482 -0
- package/dist/_chunks/libs/strip-indent.mjs +15 -0
- package/dist/_chunks/libs/ufo.mjs +166 -0
- package/dist/_chunks/likec4lib.mjs +9 -0
- package/dist/_chunks/mcp.mjs +33 -0
- package/dist/_chunks/module.mjs +28 -0
- package/dist/_chunks/module2.mjs +6576 -0
- package/dist/_chunks/protocol.d.mts +311 -0
- package/dist/_chunks/protocol.mjs +78 -0
- package/dist/_chunks/rolldown-runtime.mjs +42 -0
- package/dist/ast.d.mts +4 -0
- package/dist/ast.mjs +4 -0
- package/dist/browser-worker.d.mts +1 -0
- package/dist/browser-worker.mjs +6 -0
- package/dist/browser.d.mts +11 -0
- package/dist/browser.mjs +27 -0
- package/dist/bundled.d.mts +28 -0
- package/dist/bundled.mjs +51 -4681
- package/dist/common-exports.d.mts +4 -0
- package/dist/common-exports.mjs +5 -0
- package/dist/filesystem/index.d.mts +4 -0
- package/dist/filesystem/index.mjs +3 -0
- package/dist/generated/ast.d.mts +2 -0
- package/dist/generated/ast.mjs +3 -0
- package/dist/generated/grammar.d.mts +6 -0
- package/dist/generated/grammar.mjs +3 -0
- package/dist/generated/module.d.mts +14 -0
- package/dist/generated/module.mjs +3 -0
- package/dist/generated-lib/icons.d.mts +4 -0
- package/dist/generated-lib/icons.mjs +3 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +48 -0
- package/dist/likec4lib.d.mts +9 -0
- package/dist/likec4lib.mjs +4 -0
- package/dist/mcp/index.d.mts +4 -0
- package/dist/mcp/index.mjs +3 -0
- package/dist/module.d.mts +4 -0
- package/dist/module.mjs +3 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +3 -0
- package/likec4lib/package.json +2 -2
- package/package.json +106 -62
- package/protocol/package.json +2 -2
- package/dist/LikeC4LanguageServices.d.ts +0 -109
- package/dist/LikeC4LanguageServices.js +0 -154
- package/dist/Rpc.d.ts +0 -9
- package/dist/Rpc.js +0 -270
- package/dist/ast.d.ts +0 -226
- package/dist/ast.js +0 -264
- package/dist/browser-worker.d.ts +0 -1
- package/dist/browser-worker.js +0 -4
- package/dist/browser.d.ts +0 -11
- package/dist/browser.js +0 -35
- package/dist/bundled.d.ts +0 -8
- package/dist/bundled.js +0 -44
- package/dist/documentation/documentation-provider.d.ts +0 -8
- package/dist/documentation/documentation-provider.js +0 -51
- package/dist/documentation/index.d.ts +0 -1
- package/dist/documentation/index.js +0 -1
- package/dist/empty.d.ts +0 -2
- package/dist/empty.js +0 -2
- package/dist/filesystem/ChokidarWatcher.d.ts +0 -16
- package/dist/filesystem/ChokidarWatcher.js +0 -108
- package/dist/filesystem/FileSystemWatcher.d.ts +0 -19
- package/dist/filesystem/FileSystemWatcher.js +0 -14
- package/dist/filesystem/LikeC4FileSystem.d.ts +0 -3
- package/dist/filesystem/LikeC4FileSystem.js +0 -130
- package/dist/filesystem/index.d.ts +0 -55
- package/dist/filesystem/index.js +0 -29
- package/dist/formatting/LikeC4Formatter.d.ts +0 -59
- package/dist/formatting/LikeC4Formatter.js +0 -637
- package/dist/formatting/utils.d.ts +0 -6
- package/dist/formatting/utils.js +0 -18
- package/dist/generated/ast.d.ts +0 -1411
- package/dist/generated/ast.js +0 -2207
- package/dist/generated/grammar.d.ts +0 -6
- package/dist/generated/grammar.js +0 -7
- package/dist/generated/module.d.ts +0 -14
- package/dist/generated/module.js +0 -27
- package/dist/generated-lib/icons.d.ts +0 -1
- package/dist/generated-lib/icons.js +0 -18
- package/dist/index.d.ts +0 -38
- package/dist/index.js +0 -55
- package/dist/likec4lib.d.ts +0 -6
- package/dist/likec4lib.js +0 -7
- package/dist/logger.d.ts +0 -17
- package/dist/logger.js +0 -81
- package/dist/lsp/CodeActionProvider.d.ts +0 -14
- package/dist/lsp/CodeActionProvider.js +0 -33
- package/dist/lsp/CodeLensProvider.d.ts +0 -9
- package/dist/lsp/CodeLensProvider.js +0 -44
- package/dist/lsp/CompletionProvider.d.ts +0 -11
- package/dist/lsp/CompletionProvider.js +0 -200
- package/dist/lsp/DocumentHighlightProvider.d.ts +0 -9
- package/dist/lsp/DocumentHighlightProvider.js +0 -10
- package/dist/lsp/DocumentLinkProvider.d.ts +0 -11
- package/dist/lsp/DocumentLinkProvider.js +0 -58
- package/dist/lsp/DocumentSymbolProvider.d.ts +0 -33
- package/dist/lsp/DocumentSymbolProvider.js +0 -317
- package/dist/lsp/HoverProvider.d.ts +0 -10
- package/dist/lsp/HoverProvider.js +0 -106
- package/dist/lsp/RenameProvider.d.ts +0 -5
- package/dist/lsp/RenameProvider.js +0 -6
- package/dist/lsp/SemanticTokenProvider.d.ts +0 -12
- package/dist/lsp/SemanticTokenProvider.js +0 -264
- package/dist/lsp/index.d.ts +0 -8
- package/dist/lsp/index.js +0 -9
- package/dist/mcp/MCPServerFactory.d.ts +0 -8
- package/dist/mcp/MCPServerFactory.js +0 -73
- package/dist/mcp/NoopLikeC4MCPServer.d.ts +0 -9
- package/dist/mcp/NoopLikeC4MCPServer.js +0 -17
- package/dist/mcp/interfaces.d.ts +0 -13
- package/dist/mcp/interfaces.js +0 -5
- package/dist/mcp/server/StdioLikeC4MCPServer.d.ts +0 -16
- package/dist/mcp/server/StdioLikeC4MCPServer.js +0 -51
- package/dist/mcp/server/StreamableLikeC4MCPServer.d.ts +0 -16
- package/dist/mcp/server/StreamableLikeC4MCPServer.js +0 -145
- package/dist/mcp/server/WithMCPServer.d.ts +0 -4
- package/dist/mcp/server/WithMCPServer.js +0 -54
- package/dist/mcp/tools/_common.d.ts +0 -88
- package/dist/mcp/tools/_common.js +0 -49
- package/dist/mcp/tools/find-relationships.d.ts +0 -12
- package/dist/mcp/tools/find-relationships.js +0 -150
- package/dist/mcp/tools/list-projects.d.ts +0 -6
- package/dist/mcp/tools/list-projects.js +0 -62
- package/dist/mcp/tools/open-view.d.ts +0 -10
- package/dist/mcp/tools/open-view.js +0 -52
- package/dist/mcp/tools/read-deployment.d.ts +0 -10
- package/dist/mcp/tools/read-deployment.js +0 -150
- package/dist/mcp/tools/read-element.d.ts +0 -10
- package/dist/mcp/tools/read-element.js +0 -218
- package/dist/mcp/tools/read-project-summary.d.ts +0 -8
- package/dist/mcp/tools/read-project-summary.js +0 -176
- package/dist/mcp/tools/read-view.d.ts +0 -10
- package/dist/mcp/tools/read-view.js +0 -203
- package/dist/mcp/tools/search-element.d.ts +0 -8
- package/dist/mcp/tools/search-element.js +0 -177
- package/dist/mcp/utils.d.ts +0 -18
- package/dist/mcp/utils.js +0 -48
- package/dist/model/builder/MergedExtends.d.ts +0 -13
- package/dist/model/builder/MergedExtends.js +0 -74
- package/dist/model/builder/MergedSpecification.d.ts +0 -32
- package/dist/model/builder/MergedSpecification.js +0 -175
- package/dist/model/builder/buildModel.d.ts +0 -16
- package/dist/model/builder/buildModel.js +0 -245
- package/dist/model/deployments-index.d.ts +0 -10
- package/dist/model/deployments-index.js +0 -102
- package/dist/model/fqn-index.d.ts +0 -61
- package/dist/model/fqn-index.js +0 -253
- package/dist/model/index.d.ts +0 -6
- package/dist/model/index.js +0 -6
- package/dist/model/model-builder.d.ts +0 -52
- package/dist/model/model-builder.js +0 -224
- package/dist/model/model-locator.d.ts +0 -39
- package/dist/model/model-locator.js +0 -240
- package/dist/model/model-parser-where.d.ts +0 -4
- package/dist/model/model-parser-where.js +0 -81
- package/dist/model/model-parser.d.ts +0 -645
- package/dist/model/model-parser.js +0 -133
- package/dist/model/parser/Base.d.ts +0 -69
- package/dist/model/parser/Base.js +0 -372
- package/dist/model/parser/DeploymentModelParser.d.ts +0 -71
- package/dist/model/parser/DeploymentModelParser.js +0 -176
- package/dist/model/parser/DeploymentViewParser.d.ts +0 -75
- package/dist/model/parser/DeploymentViewParser.js +0 -86
- package/dist/model/parser/FqnRefParser.d.ts +0 -66
- package/dist/model/parser/FqnRefParser.js +0 -382
- package/dist/model/parser/GlobalsParser.d.ts +0 -109
- package/dist/model/parser/GlobalsParser.js +0 -84
- package/dist/model/parser/ImportsParser.d.ts +0 -46
- package/dist/model/parser/ImportsParser.js +0 -24
- package/dist/model/parser/ModelParser.d.ts +0 -71
- package/dist/model/parser/ModelParser.js +0 -209
- package/dist/model/parser/PredicatesParser.d.ts +0 -75
- package/dist/model/parser/PredicatesParser.js +0 -45
- package/dist/model/parser/SpecificationParser.d.ts +0 -53
- package/dist/model/parser/SpecificationParser.js +0 -113
- package/dist/model/parser/ValueConverter.d.ts +0 -4
- package/dist/model/parser/ValueConverter.js +0 -12
- package/dist/model/parser/ViewsParser.d.ts +0 -112
- package/dist/model/parser/ViewsParser.js +0 -492
- package/dist/model-change/ModelChanges.d.ts +0 -18
- package/dist/model-change/ModelChanges.js +0 -129
- package/dist/model-change/changeElementStyle.d.ts +0 -16
- package/dist/model-change/changeElementStyle.js +0 -134
- package/dist/model-change/changeViewLayout.d.ts +0 -12
- package/dist/model-change/changeViewLayout.js +0 -28
- package/dist/model-change/removeManualLayoutV1.d.ts +0 -7
- package/dist/model-change/removeManualLayoutV1.js +0 -27
- package/dist/module.d.ts +0 -92
- package/dist/module.js +0 -143
- package/dist/protocol.d.ts +0 -284
- package/dist/protocol.js +0 -123
- package/dist/references/index.d.ts +0 -3
- package/dist/references/index.js +0 -3
- package/dist/references/name-provider.d.ts +0 -9
- package/dist/references/name-provider.js +0 -37
- package/dist/references/scope-computation.d.ts +0 -20
- package/dist/references/scope-computation.js +0 -288
- package/dist/references/scope-provider.d.ts +0 -40
- package/dist/references/scope-provider.js +0 -239
- package/dist/shared/NodeKindProvider.d.ts +0 -15
- package/dist/shared/NodeKindProvider.js +0 -57
- package/dist/shared/WorkspaceSymbolProvider.d.ts +0 -3
- package/dist/shared/WorkspaceSymbolProvider.js +0 -3
- package/dist/shared/index.d.ts +0 -2
- package/dist/shared/index.js +0 -2
- package/dist/test/index.d.ts +0 -1
- package/dist/test/index.js +0 -1
- package/dist/test/testServices.d.ts +0 -64
- package/dist/test/testServices.js +0 -210
- package/dist/utils/disposable.d.ts +0 -8
- package/dist/utils/disposable.js +0 -26
- package/dist/utils/elementRef.d.ts +0 -11
- package/dist/utils/elementRef.js +0 -27
- package/dist/utils/fqnRef.d.ts +0 -11
- package/dist/utils/fqnRef.js +0 -63
- package/dist/utils/index.d.ts +0 -11
- package/dist/utils/index.js +0 -35
- package/dist/utils/printDocs.d.ts +0 -2
- package/dist/utils/printDocs.js +0 -1
- package/dist/utils/projectId.d.ts +0 -4
- package/dist/utils/projectId.js +0 -16
- package/dist/utils/stringHash.d.ts +0 -1
- package/dist/utils/stringHash.js +0 -5
- package/dist/validation/DocumentValidator.d.ts +0 -11
- package/dist/validation/DocumentValidator.js +0 -17
- package/dist/validation/_shared.d.ts +0 -3
- package/dist/validation/_shared.js +0 -26
- package/dist/validation/deployment-checks.d.ts +0 -7
- package/dist/validation/deployment-checks.js +0 -140
- package/dist/validation/dynamic-view.d.ts +0 -6
- package/dist/validation/dynamic-view.js +0 -67
- package/dist/validation/element-ref.d.ts +0 -4
- package/dist/validation/element-ref.js +0 -12
- package/dist/validation/element.d.ts +0 -4
- package/dist/validation/element.js +0 -49
- package/dist/validation/imports.d.ts +0 -4
- package/dist/validation/imports.js +0 -46
- package/dist/validation/index.d.ts +0 -15
- package/dist/validation/index.js +0 -167
- package/dist/validation/property-checks.d.ts +0 -7
- package/dist/validation/property-checks.js +0 -108
- package/dist/validation/relation.d.ts +0 -6
- package/dist/validation/relation.js +0 -141
- package/dist/validation/specification.d.ts +0 -12
- package/dist/validation/specification.js +0 -190
- package/dist/validation/view-checks.d.ts +0 -4
- package/dist/validation/view-checks.js +0 -46
- package/dist/validation/view-predicates/fqn-expr-with.d.ts +0 -4
- package/dist/validation/view-predicates/fqn-expr-with.js +0 -43
- package/dist/validation/view-predicates/fqn-ref-expr.d.ts +0 -4
- package/dist/validation/view-predicates/fqn-ref-expr.js +0 -51
- package/dist/validation/view-predicates/incoming.d.ts +0 -4
- package/dist/validation/view-predicates/incoming.js +0 -16
- package/dist/validation/view-predicates/index.d.ts +0 -6
- package/dist/validation/view-predicates/index.js +0 -6
- package/dist/validation/view-predicates/outgoing.d.ts +0 -4
- package/dist/validation/view-predicates/outgoing.js +0 -20
- package/dist/validation/view-predicates/relation-expr.d.ts +0 -4
- package/dist/validation/view-predicates/relation-expr.js +0 -46
- package/dist/validation/view-predicates/relation-with.d.ts +0 -4
- package/dist/validation/view-predicates/relation-with.js +0 -16
- package/dist/validation/view.d.ts +0 -4
- package/dist/validation/view.js +0 -42
- package/dist/view-utils/assignNavigateTo.d.ts +0 -2
- package/dist/view-utils/assignNavigateTo.js +0 -27
- package/dist/view-utils/index.d.ts +0 -2
- package/dist/view-utils/index.js +0 -2
- package/dist/view-utils/manual-layout.d.ts +0 -13
- package/dist/view-utils/manual-layout.js +0 -149
- package/dist/views/ConfigurableLayouter.d.ts +0 -7
- package/dist/views/ConfigurableLayouter.js +0 -51
- package/dist/views/LikeC4ManualLayouts.d.ts +0 -42
- package/dist/views/LikeC4ManualLayouts.js +0 -209
- package/dist/views/LikeC4Views.d.ts +0 -89
- package/dist/views/LikeC4Views.js +0 -216
- package/dist/views/index.d.ts +0 -4
- package/dist/views/index.js +0 -11
- package/dist/workspace/AstNodeDescriptionProvider.d.ts +0 -7
- package/dist/workspace/AstNodeDescriptionProvider.js +0 -18
- package/dist/workspace/IndexManager.d.ts +0 -10
- package/dist/workspace/IndexManager.js +0 -26
- package/dist/workspace/LangiumDocuments.d.ts +0 -25
- package/dist/workspace/LangiumDocuments.js +0 -98
- package/dist/workspace/ProjectsManager.d.ts +0 -130
- package/dist/workspace/ProjectsManager.js +0 -605
- package/dist/workspace/WorkspaceManager.d.ts +0 -31
- package/dist/workspace/WorkspaceManager.js +0 -132
- package/dist/workspace/index.d.ts +0 -5
- package/dist/workspace/index.js +0 -5
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { loggable } from '@likec4/log';
|
|
2
|
-
import { logger } from '../utils';
|
|
3
|
-
import { StdioLikeC4MCPServer } from './StdioLikeC4MCPServer';
|
|
4
|
-
import { StreamableLikeC4MCPServer } from './StreamableLikeC4MCPServer';
|
|
5
|
-
const streamableLikeC4MCPServer = (services, defaultPort = 33335) => {
|
|
6
|
-
logger.debug('Creating StreamableLikeC4MCPServer');
|
|
7
|
-
const server = new StreamableLikeC4MCPServer(services, defaultPort);
|
|
8
|
-
const langId = services.LanguageMetaData.languageId;
|
|
9
|
-
const connection = services.shared.lsp.Connection;
|
|
10
|
-
services.shared.workspace.ConfigurationProvider.onConfigurationSectionUpdate((update) => {
|
|
11
|
-
if (update.section !== langId) {
|
|
12
|
-
logger.warn('Unexpected configuration update: {update}', { update });
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
const { enabled = false, port = defaultPort, } = update.configuration.mcp;
|
|
16
|
-
if (!enabled) {
|
|
17
|
-
void server.stop();
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
void Promise.resolve()
|
|
21
|
-
.then(() => server.start(port))
|
|
22
|
-
.then(() => {
|
|
23
|
-
connection?.telemetry?.logEvent({
|
|
24
|
-
eventName: 'mcp-server-started',
|
|
25
|
-
mcpPort: port,
|
|
26
|
-
});
|
|
27
|
-
})
|
|
28
|
-
.catch(err => {
|
|
29
|
-
const message = loggable(err);
|
|
30
|
-
connection?.telemetry?.logEvent({
|
|
31
|
-
eventName: 'mcp-server-start-failed',
|
|
32
|
-
mcpPort: port,
|
|
33
|
-
message,
|
|
34
|
-
});
|
|
35
|
-
logger.warn(`Failed to start LikeC4 MCP Server: \n${message}`);
|
|
36
|
-
if (connection) {
|
|
37
|
-
connection.window.showErrorMessage(`LikeC4: Failed to start MCP Server\n\n${message}`);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
return server;
|
|
42
|
-
};
|
|
43
|
-
const stdioLikeC4MCPServer = (services) => {
|
|
44
|
-
return new StdioLikeC4MCPServer(services);
|
|
45
|
-
};
|
|
46
|
-
export const WithMCPServer = (type = 'sse') => ({
|
|
47
|
-
mcpServer: (services) => {
|
|
48
|
-
if (type === 'stdio') {
|
|
49
|
-
return stdioLikeC4MCPServer(services);
|
|
50
|
-
}
|
|
51
|
-
const port = typeof type === 'object' ? type.port : 33335;
|
|
52
|
-
return streamableLikeC4MCPServer(services, port);
|
|
53
|
-
},
|
|
54
|
-
});
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { LikeC4ViewModel } from '@likec4/core/model';
|
|
2
|
-
import type { ProjectId } from '@likec4/core/types';
|
|
3
|
-
import * as z from 'zod/v3';
|
|
4
|
-
import type { LikeC4LanguageServices } from '../../LikeC4LanguageServices';
|
|
5
|
-
import type { Locate } from '../../protocol';
|
|
6
|
-
export declare const locationSchema: z.ZodNullable<z.ZodObject<{
|
|
7
|
-
path: z.ZodString;
|
|
8
|
-
range: z.ZodObject<{
|
|
9
|
-
start: z.ZodObject<{
|
|
10
|
-
line: z.ZodNumber;
|
|
11
|
-
character: z.ZodNumber;
|
|
12
|
-
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
line: number;
|
|
14
|
-
character: number;
|
|
15
|
-
}, {
|
|
16
|
-
line: number;
|
|
17
|
-
character: number;
|
|
18
|
-
}>;
|
|
19
|
-
end: z.ZodObject<{
|
|
20
|
-
line: z.ZodNumber;
|
|
21
|
-
character: z.ZodNumber;
|
|
22
|
-
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
line: number;
|
|
24
|
-
character: number;
|
|
25
|
-
}, {
|
|
26
|
-
line: number;
|
|
27
|
-
character: number;
|
|
28
|
-
}>;
|
|
29
|
-
}, "strip", z.ZodTypeAny, {
|
|
30
|
-
start: {
|
|
31
|
-
line: number;
|
|
32
|
-
character: number;
|
|
33
|
-
};
|
|
34
|
-
end: {
|
|
35
|
-
line: number;
|
|
36
|
-
character: number;
|
|
37
|
-
};
|
|
38
|
-
}, {
|
|
39
|
-
start: {
|
|
40
|
-
line: number;
|
|
41
|
-
character: number;
|
|
42
|
-
};
|
|
43
|
-
end: {
|
|
44
|
-
line: number;
|
|
45
|
-
character: number;
|
|
46
|
-
};
|
|
47
|
-
}>;
|
|
48
|
-
}, "strip", z.ZodTypeAny, {
|
|
49
|
-
path: string;
|
|
50
|
-
range: {
|
|
51
|
-
start: {
|
|
52
|
-
line: number;
|
|
53
|
-
character: number;
|
|
54
|
-
};
|
|
55
|
-
end: {
|
|
56
|
-
line: number;
|
|
57
|
-
character: number;
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
}, {
|
|
61
|
-
path: string;
|
|
62
|
-
range: {
|
|
63
|
-
start: {
|
|
64
|
-
line: number;
|
|
65
|
-
character: number;
|
|
66
|
-
};
|
|
67
|
-
end: {
|
|
68
|
-
line: number;
|
|
69
|
-
character: number;
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
}>>;
|
|
73
|
-
export declare const projectIdSchema: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodString, ProjectId, string>>>;
|
|
74
|
-
export declare const includedInViewsSchema: z.ZodArray<z.ZodObject<{
|
|
75
|
-
id: z.ZodString;
|
|
76
|
-
title: z.ZodString;
|
|
77
|
-
type: z.ZodEnum<["element", "deployment", "dynamic"]>;
|
|
78
|
-
}, "strip", z.ZodTypeAny, {
|
|
79
|
-
id: string;
|
|
80
|
-
title: string;
|
|
81
|
-
type: "deployment" | "element" | "dynamic";
|
|
82
|
-
}, {
|
|
83
|
-
id: string;
|
|
84
|
-
title: string;
|
|
85
|
-
type: "deployment" | "element" | "dynamic";
|
|
86
|
-
}>, "many">;
|
|
87
|
-
export declare const includedInViews: (views: Iterable<LikeC4ViewModel>) => z.infer<typeof includedInViewsSchema>;
|
|
88
|
-
export declare const mkLocate: (languageServices: LikeC4LanguageServices, projectId: string) => (params: Locate.Params) => z.infer<typeof locationSchema>;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { URI } from 'vscode-uri';
|
|
2
|
-
import * as z from 'zod/v3';
|
|
3
|
-
import { ProjectsManager } from '../../workspace';
|
|
4
|
-
import { logger } from '../utils';
|
|
5
|
-
export const locationSchema = z.object({
|
|
6
|
-
path: z.string().describe('Path to the file'),
|
|
7
|
-
range: z.object({
|
|
8
|
-
start: z.object({
|
|
9
|
-
line: z.number(),
|
|
10
|
-
character: z.number(),
|
|
11
|
-
}),
|
|
12
|
-
end: z.object({
|
|
13
|
-
line: z.number(),
|
|
14
|
-
character: z.number(),
|
|
15
|
-
}),
|
|
16
|
-
}).describe('Range in the file'),
|
|
17
|
-
}).nullable();
|
|
18
|
-
export const projectIdSchema = z.string()
|
|
19
|
-
.refine((_v) => true)
|
|
20
|
-
.optional()
|
|
21
|
-
.default(ProjectsManager.DefaultProjectId)
|
|
22
|
-
.describe('Project id (optional, will use "default" if not specified)');
|
|
23
|
-
export const includedInViewsSchema = z.array(z.object({
|
|
24
|
-
id: z.string().describe('View id'),
|
|
25
|
-
title: z.string().describe('View title'),
|
|
26
|
-
type: z.enum(['element', 'deployment', 'dynamic']).describe('View type'),
|
|
27
|
-
}));
|
|
28
|
-
export const includedInViews = (views) => {
|
|
29
|
-
return [...views].map(v => ({
|
|
30
|
-
id: v.id,
|
|
31
|
-
title: v.titleOrId,
|
|
32
|
-
type: v.$view._type,
|
|
33
|
-
}));
|
|
34
|
-
};
|
|
35
|
-
export const mkLocate = (languageServices, projectId) => (params) => {
|
|
36
|
-
try {
|
|
37
|
-
const loc = languageServices.locate({ projectId, ...params });
|
|
38
|
-
return loc
|
|
39
|
-
? {
|
|
40
|
-
path: URI.parse(loc.uri).fsPath,
|
|
41
|
-
range: loc.range,
|
|
42
|
-
}
|
|
43
|
-
: null;
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
logger.debug(`Failed to locate {params}`, { error: e, params });
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
export declare const findRelationships: (languageServices: import("../..").LikeC4LanguageServices) => [string, {
|
|
3
|
-
inputSchema?: {
|
|
4
|
-
element1: z.ZodString;
|
|
5
|
-
element2: z.ZodString;
|
|
6
|
-
project: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodString, import("@likec4/core").ProjectId, string>>>;
|
|
7
|
-
};
|
|
8
|
-
}, (args: {
|
|
9
|
-
project: string & import("type-fest/source/tagged").Tag<"ProjectID", never>;
|
|
10
|
-
element1: string;
|
|
11
|
-
element2: string;
|
|
12
|
-
}, extra: import("@modelcontextprotocol/sdk/shared/protocol.js").RequestHandlerExtra<import("@modelcontextprotocol/sdk/types.js").ServerRequest, import("@modelcontextprotocol/sdk/types.js").ServerNotification>) => import("@modelcontextprotocol/sdk/types.js").CallToolResult | Promise<import("@modelcontextprotocol/sdk/types.js").CallToolResult>];
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { modelConnection } from '@likec4/core/model';
|
|
2
|
-
import { invariant, isSameHierarchy } from '@likec4/core/utils';
|
|
3
|
-
import * as z from 'zod/v3';
|
|
4
|
-
import { likec4Tool } from '../utils';
|
|
5
|
-
import { includedInViews, includedInViewsSchema, locationSchema, mkLocate, projectIdSchema } from './_common';
|
|
6
|
-
const endpointSchema = z.object({
|
|
7
|
-
id: z.string(),
|
|
8
|
-
title: z.string(),
|
|
9
|
-
kind: z.string(),
|
|
10
|
-
});
|
|
11
|
-
const searchResultSchema = z.object({
|
|
12
|
-
type: z.enum(['direct', 'indirect']).describe('Type of relationship, "direct" for direct relationships, "indirect" for relationships through nested elements'),
|
|
13
|
-
source: endpointSchema,
|
|
14
|
-
target: endpointSchema,
|
|
15
|
-
kind: z.string().nullable().describe('Relationship kind'),
|
|
16
|
-
title: z.string().nullable().describe('Relationship title'),
|
|
17
|
-
description: z.string().nullable().describe('Relationship description'),
|
|
18
|
-
technology: z.string().nullable().describe('Relationship technology'),
|
|
19
|
-
tags: z.array(z.string()).describe('Relationship tags'),
|
|
20
|
-
includedInViews: includedInViewsSchema.describe('Views that include this relationship'),
|
|
21
|
-
sourceLocation: locationSchema,
|
|
22
|
-
});
|
|
23
|
-
export const findRelationships = likec4Tool({
|
|
24
|
-
name: 'find-relationships',
|
|
25
|
-
annotations: {
|
|
26
|
-
readOnlyHint: true,
|
|
27
|
-
idempotentHint: true,
|
|
28
|
-
title: 'Find relationships between two elements',
|
|
29
|
-
},
|
|
30
|
-
description: `
|
|
31
|
-
Find relationships between two LikeC4 elements within a project.
|
|
32
|
-
|
|
33
|
-
What it does:
|
|
34
|
-
- Finds both direct relationships (element1 ↔ element2) and indirect ones that arise via containment (e.g. via nested elements).
|
|
35
|
-
- Returns rich metadata for each relationship and where it appears in views.
|
|
36
|
-
|
|
37
|
-
Inputs:
|
|
38
|
-
- element1: string — Element ID (FQN)
|
|
39
|
-
- element2: string — Element ID (FQN)
|
|
40
|
-
- project: string (optional, defaults to "default") — Project id
|
|
41
|
-
|
|
42
|
-
Output:
|
|
43
|
-
- found: Relationship[]
|
|
44
|
-
|
|
45
|
-
Relationship (object) fields:
|
|
46
|
-
- type: "direct" | "indirect" — direct is between the specified endpoints; indirect is via nested elements
|
|
47
|
-
- source: Endpoint
|
|
48
|
-
- target: Endpoint
|
|
49
|
-
- kind: string|null — relationship kind from the model
|
|
50
|
-
- title: string|null — relationship title if provided
|
|
51
|
-
- description: string|null — relationship description text
|
|
52
|
-
- technology: string|null — relationship technology
|
|
53
|
-
- tags: string[] — relationship tags
|
|
54
|
-
- includedInViews: View[] — views where this relationship appears
|
|
55
|
-
- sourceLocation: { path: string, range: { start: { line: number, character: number }, end: { line: number, character: number } } } | null
|
|
56
|
-
|
|
57
|
-
Endpoint (object) fields:
|
|
58
|
-
- id: string — Element ID (FQN)
|
|
59
|
-
- title: string — element title
|
|
60
|
-
- kind: string — element kind
|
|
61
|
-
|
|
62
|
-
View (object) fields:
|
|
63
|
-
- id: string — view identifier
|
|
64
|
-
- title: string — view title
|
|
65
|
-
- type: "element" | "deployment" | "dynamic"
|
|
66
|
-
|
|
67
|
-
Notes:
|
|
68
|
-
- Read-only, idempotent; does not mutate the model. May trigger UI navigation in supporting clients.
|
|
69
|
-
- The order of results is not guaranteed.
|
|
70
|
-
|
|
71
|
-
Example:
|
|
72
|
-
Request:
|
|
73
|
-
{
|
|
74
|
-
"element1": "shop.frontend",
|
|
75
|
-
"element2": "shop.backend",
|
|
76
|
-
"project": "default"
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
Response:
|
|
80
|
-
{
|
|
81
|
-
"found": [
|
|
82
|
-
{
|
|
83
|
-
"type": "direct",
|
|
84
|
-
"source": { "id": "shop.frontend", "title": "Frontend", "kind": "component" },
|
|
85
|
-
"target": { "id": "shop.backend", "title": "Backend", "kind": "component" },
|
|
86
|
-
"kind": "sync",
|
|
87
|
-
"title": "Calls",
|
|
88
|
-
"description": "Frontend calls Backend",
|
|
89
|
-
"technology": "HTTP",
|
|
90
|
-
"tags": ["public"],
|
|
91
|
-
"includedInViews": [
|
|
92
|
-
{ "id": "system-overview", "title": "System Overview", "type": "element" }
|
|
93
|
-
],
|
|
94
|
-
"sourceLocation": {
|
|
95
|
-
"path": "/abs/path/project/model.c4",
|
|
96
|
-
"range": { "start": { "line": 12, "character": 0 }, "end": { "line": 14, "character": 0 } }
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
}
|
|
101
|
-
`,
|
|
102
|
-
inputSchema: {
|
|
103
|
-
element1: z.string().describe('Element ID (FQN)'),
|
|
104
|
-
element2: z.string().describe('Element ID (FQN)'),
|
|
105
|
-
project: projectIdSchema,
|
|
106
|
-
},
|
|
107
|
-
outputSchema: {
|
|
108
|
-
found: z.array(searchResultSchema),
|
|
109
|
-
},
|
|
110
|
-
}, async (languageServices, args) => {
|
|
111
|
-
const projectId = languageServices.projectsManager.ensureProjectId(args.project);
|
|
112
|
-
if (isSameHierarchy(args.element1, args.element2)) {
|
|
113
|
-
throw new Error('No relationships possible between parent-child');
|
|
114
|
-
}
|
|
115
|
-
const found = [];
|
|
116
|
-
const model = await languageServices.computedModel(projectId);
|
|
117
|
-
const el1 = model.findElement(args.element1);
|
|
118
|
-
invariant(el1, `Element "${args.element1}" not found in project "${projectId}"`);
|
|
119
|
-
const el2 = model.findElement(args.element2);
|
|
120
|
-
invariant(el2, `Element "${args.element2}" not found in project "${projectId}"`);
|
|
121
|
-
const locate = mkLocate(languageServices, projectId);
|
|
122
|
-
const relationships = modelConnection.findConnection(el1, el2, 'both').flatMap(c => [...c.relations]);
|
|
123
|
-
for (const relationship of relationships) {
|
|
124
|
-
const isDirect = (relationship.source === el1 && relationship.target === el2)
|
|
125
|
-
|| (relationship.source === el2 && relationship.target === el1);
|
|
126
|
-
found.push({
|
|
127
|
-
type: isDirect ? 'direct' : 'indirect',
|
|
128
|
-
source: {
|
|
129
|
-
id: relationship.source.id,
|
|
130
|
-
title: relationship.source.title,
|
|
131
|
-
kind: relationship.source.kind,
|
|
132
|
-
},
|
|
133
|
-
target: {
|
|
134
|
-
id: relationship.target.id,
|
|
135
|
-
title: relationship.target.title,
|
|
136
|
-
kind: relationship.target.kind,
|
|
137
|
-
},
|
|
138
|
-
kind: relationship.kind,
|
|
139
|
-
title: relationship.title,
|
|
140
|
-
description: relationship.description.text,
|
|
141
|
-
technology: relationship.technology,
|
|
142
|
-
tags: [...relationship.tags],
|
|
143
|
-
includedInViews: includedInViews(relationship.views()),
|
|
144
|
-
sourceLocation: locate({ relation: relationship.id }),
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
found,
|
|
149
|
-
};
|
|
150
|
-
});
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
export declare const listProjects: (languageServices: import("../..").LikeC4LanguageServices) => [string, {
|
|
3
|
-
inputSchema?: z.ZodRawShape;
|
|
4
|
-
}, (args: {
|
|
5
|
-
[x: string]: any;
|
|
6
|
-
}, extra: import("@modelcontextprotocol/sdk/shared/protocol.js").RequestHandlerExtra<import("@modelcontextprotocol/sdk/types.js").ServerRequest, import("@modelcontextprotocol/sdk/types.js").ServerNotification>) => import("@modelcontextprotocol/sdk/types.js").CallToolResult | Promise<import("@modelcontextprotocol/sdk/types.js").CallToolResult>];
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
import { likec4Tool } from '../utils';
|
|
3
|
-
export const listProjects = likec4Tool({
|
|
4
|
-
name: 'list-projects',
|
|
5
|
-
description: `
|
|
6
|
-
List LikeC4 projects discoverable in the current workspace.
|
|
7
|
-
|
|
8
|
-
Request:
|
|
9
|
-
- No input parameters.
|
|
10
|
-
|
|
11
|
-
Response (JSON object):
|
|
12
|
-
- projects: Project[]
|
|
13
|
-
|
|
14
|
-
Project (object) fields:
|
|
15
|
-
- id: string — stable project identifier
|
|
16
|
-
- title: string — human-readable project title
|
|
17
|
-
- folder: string — absolute path to the project root
|
|
18
|
-
- sources: string[] — absolute file paths of related documents
|
|
19
|
-
|
|
20
|
-
Notes:
|
|
21
|
-
- Read-only, idempotent, no side effects.
|
|
22
|
-
- Safe to call repeatedly.
|
|
23
|
-
|
|
24
|
-
Example response:
|
|
25
|
-
{
|
|
26
|
-
"projects": [
|
|
27
|
-
{
|
|
28
|
-
"id": "docs",
|
|
29
|
-
"title": "Documentation",
|
|
30
|
-
"folder": "/abs/path/to/workspace/docs",
|
|
31
|
-
"sources": [
|
|
32
|
-
"/abs/path/to/workspace/docs/model/contexts.likec4",
|
|
33
|
-
"/abs/path/to/workspace/docs/model/relations.likec4"
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
`,
|
|
39
|
-
annotations: {
|
|
40
|
-
readOnlyHint: true,
|
|
41
|
-
idempotentHint: true,
|
|
42
|
-
title: 'List projects',
|
|
43
|
-
},
|
|
44
|
-
outputSchema: {
|
|
45
|
-
projects: z.array(z.object({
|
|
46
|
-
id: z.string(),
|
|
47
|
-
title: z.string(),
|
|
48
|
-
folder: z.string(),
|
|
49
|
-
sources: z.array(z.string()),
|
|
50
|
-
})),
|
|
51
|
-
},
|
|
52
|
-
}, async (languageServices) => {
|
|
53
|
-
const projects = languageServices.projects();
|
|
54
|
-
return {
|
|
55
|
-
projects: projects.map(p => ({
|
|
56
|
-
id: p.id,
|
|
57
|
-
title: p.title,
|
|
58
|
-
folder: p.folder.fsPath,
|
|
59
|
-
sources: p.documents.map(d => d.fsPath),
|
|
60
|
-
})),
|
|
61
|
-
};
|
|
62
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
export declare const openView: (languageServices: import("../..").LikeC4LanguageServices) => [string, {
|
|
3
|
-
inputSchema?: {
|
|
4
|
-
viewId: z.ZodString;
|
|
5
|
-
project: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodString, import("@likec4/core").ProjectId, string>>>;
|
|
6
|
-
};
|
|
7
|
-
}, (args: {
|
|
8
|
-
project: string & import("type-fest/source/tagged").Tag<"ProjectID", never>;
|
|
9
|
-
viewId: string;
|
|
10
|
-
}, extra: import("@modelcontextprotocol/sdk/shared/protocol.js").RequestHandlerExtra<import("@modelcontextprotocol/sdk/types.js").ServerRequest, import("@modelcontextprotocol/sdk/types.js").ServerNotification>) => import("@modelcontextprotocol/sdk/types.js").CallToolResult | Promise<import("@modelcontextprotocol/sdk/types.js").CallToolResult>];
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
import { likec4Tool } from '../utils';
|
|
3
|
-
import { locationSchema, mkLocate, projectIdSchema } from './_common';
|
|
4
|
-
export const openView = likec4Tool({
|
|
5
|
-
name: 'open-view',
|
|
6
|
-
description: `
|
|
7
|
-
Open a LikeC4 view in the editor's preview panel.
|
|
8
|
-
|
|
9
|
-
Request:
|
|
10
|
-
- viewId: string — view id (name)
|
|
11
|
-
- project: string (optional) — project id. Defaults to "default" if omitted.
|
|
12
|
-
|
|
13
|
-
Response (JSON object):
|
|
14
|
-
- location: { path: string, range: { start: { line: number, character: number }, end: { line: number, character: number } } } | null — source location of the view if available
|
|
15
|
-
|
|
16
|
-
Notes:
|
|
17
|
-
- Read-only and idempotent with respect to the project model. Triggers a UI action in the editor.
|
|
18
|
-
- Only one preview panel can be open at a time.
|
|
19
|
-
|
|
20
|
-
Example response:
|
|
21
|
-
{
|
|
22
|
-
"location": {
|
|
23
|
-
"path": "/abs/path/project/model.c4",
|
|
24
|
-
"range": { "start": { "line": 10, "character": 0 }, "end": { "line": 30, "character": 0 } }
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
`,
|
|
28
|
-
annotations: {
|
|
29
|
-
readOnlyHint: true,
|
|
30
|
-
idempotentHint: true,
|
|
31
|
-
title: 'Open view in preview panel',
|
|
32
|
-
},
|
|
33
|
-
inputSchema: {
|
|
34
|
-
viewId: z.string().describe('View id (name)'),
|
|
35
|
-
project: projectIdSchema,
|
|
36
|
-
},
|
|
37
|
-
outputSchema: {
|
|
38
|
-
location: locationSchema,
|
|
39
|
-
},
|
|
40
|
-
}, async (languageServices, args) => {
|
|
41
|
-
const projectId = languageServices.projectsManager.ensureProjectId(args.project);
|
|
42
|
-
const model = await languageServices.computedModel(projectId);
|
|
43
|
-
const view = model.findView(args.viewId);
|
|
44
|
-
if (!view) {
|
|
45
|
-
throw new Error(`View with ID '${args.viewId}' not found in project ${projectId}`);
|
|
46
|
-
}
|
|
47
|
-
await languageServices.views.openView(view.id, projectId);
|
|
48
|
-
const locate = mkLocate(languageServices, projectId);
|
|
49
|
-
return {
|
|
50
|
-
location: locate({ view: view.id }),
|
|
51
|
-
};
|
|
52
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
export declare const readDeployment: (languageServices: import("../..").LikeC4LanguageServices) => [string, {
|
|
3
|
-
inputSchema?: {
|
|
4
|
-
id: z.ZodString;
|
|
5
|
-
project: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodString, import("@likec4/core").ProjectId, string>>>;
|
|
6
|
-
};
|
|
7
|
-
}, (args: {
|
|
8
|
-
id: string;
|
|
9
|
-
project: string & import("type-fest/source/tagged").Tag<"ProjectID", never>;
|
|
10
|
-
}, extra: import("@modelcontextprotocol/sdk/shared/protocol.js").RequestHandlerExtra<import("@modelcontextprotocol/sdk/types.js").ServerRequest, import("@modelcontextprotocol/sdk/types.js").ServerNotification>) => import("@modelcontextprotocol/sdk/types.js").CallToolResult | Promise<import("@modelcontextprotocol/sdk/types.js").CallToolResult>];
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
//
|
|
3
|
-
// Copyright (c) 2023-2025 Denis Davydkov
|
|
4
|
-
// Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
5
|
-
//
|
|
6
|
-
// Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
|
|
7
|
-
import { invariant } from '@likec4/core';
|
|
8
|
-
import * as z from 'zod/v3';
|
|
9
|
-
import { likec4Tool } from '../utils';
|
|
10
|
-
import { includedInViews, includedInViewsSchema, locationSchema, mkLocate, projectIdSchema } from './_common';
|
|
11
|
-
export const readDeployment = likec4Tool({
|
|
12
|
-
name: 'read-deployment',
|
|
13
|
-
description: `
|
|
14
|
-
Read details about a deployment node or a deployed instance in a LikeC4 project.
|
|
15
|
-
|
|
16
|
-
What it does:
|
|
17
|
-
- Returns metadata about a deployment entity (node or instance), including kind, tags, color/shape, children, which views include it, and its source location.
|
|
18
|
-
|
|
19
|
-
Inputs:
|
|
20
|
-
- id: string — Deployment id (FQN)
|
|
21
|
-
- project: string (optional, defaults to "default") — Project id
|
|
22
|
-
|
|
23
|
-
Output fields:
|
|
24
|
-
- type: "deployment-node" | "deployed-instance"
|
|
25
|
-
- id: string — Deployment id (FQN)
|
|
26
|
-
- kind: string — Deployment node kind, or element kind for deployed instances
|
|
27
|
-
- name: string — Name of the deployment entity
|
|
28
|
-
- title: string — Title of the deployment entity
|
|
29
|
-
- description: string|null — Description text
|
|
30
|
-
- technology: string|null — Technology info, if any
|
|
31
|
-
- tags: string[] — Tags assigned to this entity
|
|
32
|
-
- project: string — Project id
|
|
33
|
-
- metadata: Record<string, string>
|
|
34
|
-
- links: Array<{ title: string|null, url: string, relative: string|null }> — external links associated with this deployment entity
|
|
35
|
-
- shape: string — Rendered shape
|
|
36
|
-
- color: string — Rendered color
|
|
37
|
-
- children: string[] — Child deployment ids (empty for instances)
|
|
38
|
-
- includedInViews: View[] — Views that include this entity
|
|
39
|
-
- instanceof: { id: string, title: string, kind: string } | null — If type is "deployed-instance", the referenced element
|
|
40
|
-
- sourceLocation: { path: string, range: { start: { line: number, character: number }, end: { line: number, character: number } } } | null
|
|
41
|
-
|
|
42
|
-
View (object) fields:
|
|
43
|
-
- id: string — view identifier
|
|
44
|
-
- title: string — view title
|
|
45
|
-
- type: "element" | "deployment" | "dynamic"
|
|
46
|
-
|
|
47
|
-
Notes:
|
|
48
|
-
- Read-only, idempotent; does not mutate the model.
|
|
49
|
-
|
|
50
|
-
Example request:
|
|
51
|
-
{ "id": "k8s.cluster.frontend", "project": "default" }
|
|
52
|
-
|
|
53
|
-
Example response (deployed instance):
|
|
54
|
-
{
|
|
55
|
-
"type": "deployed-instance",
|
|
56
|
-
"id": "k8s.cluster.frontend",
|
|
57
|
-
"kind": "k8s.pod",
|
|
58
|
-
"name": "frontend",
|
|
59
|
-
"title": "Frontend Pod",
|
|
60
|
-
"description": null,
|
|
61
|
-
"technology": "Kubernetes",
|
|
62
|
-
"tags": ["prod"],
|
|
63
|
-
"project": "default",
|
|
64
|
-
"metadata": {},
|
|
65
|
-
"links": [],
|
|
66
|
-
"shape": "rectangle",
|
|
67
|
-
"color": "#2F80ED",
|
|
68
|
-
"children": [],
|
|
69
|
-
"includedInViews": [
|
|
70
|
-
{ "id": "runtime-overview", "title": "Runtime Overview", "type": "deployment" }
|
|
71
|
-
],
|
|
72
|
-
"instanceof": { "id": "shop.frontend", "title": "Frontend", "kind": "component" },
|
|
73
|
-
"sourceLocation": {
|
|
74
|
-
"path": "/abs/path/project/model.c4",
|
|
75
|
-
"range": { "start": { "line": 10, "character": 0 }, "end": { "line": 25, "character": 0 } }
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
`,
|
|
79
|
-
annotations: {
|
|
80
|
-
readOnlyHint: true,
|
|
81
|
-
idempotentHint: true,
|
|
82
|
-
title: 'Read deployment entity',
|
|
83
|
-
},
|
|
84
|
-
inputSchema: {
|
|
85
|
-
id: z.string().describe('Deployment id (FQN)'),
|
|
86
|
-
project: projectIdSchema,
|
|
87
|
-
},
|
|
88
|
-
outputSchema: {
|
|
89
|
-
type: z.enum(['deployment-node', 'deployed-instance']),
|
|
90
|
-
id: z.string().describe('Deployment id (FQN)'),
|
|
91
|
-
kind: z.string().describe('Deployment node kind, or element kind for deployed instances'),
|
|
92
|
-
name: z.string(),
|
|
93
|
-
title: z.string(),
|
|
94
|
-
description: z.string().nullable(),
|
|
95
|
-
technology: z.string().nullable(),
|
|
96
|
-
tags: z.array(z.string()),
|
|
97
|
-
project: z.string(),
|
|
98
|
-
metadata: z.record(z.union([z.string(), z.array(z.string())])),
|
|
99
|
-
links: z.array(z.object({
|
|
100
|
-
title: z.string().nullable().describe('Optional link title'),
|
|
101
|
-
url: z.string().describe('Link URL'),
|
|
102
|
-
relative: z.string().nullable().describe('Relative path (if URL is relative to workspace root)'),
|
|
103
|
-
})).describe('External links associated with this deployment entity'),
|
|
104
|
-
shape: z.string(),
|
|
105
|
-
color: z.string(),
|
|
106
|
-
children: z.array(z.string()).describe('Children of this deployment node (Array of Deployment ids)'),
|
|
107
|
-
includedInViews: includedInViewsSchema.describe('Views that include this deployment node'),
|
|
108
|
-
instanceof: z.object({
|
|
109
|
-
id: z.string().describe('Element ID (FQN)'),
|
|
110
|
-
title: z.string(),
|
|
111
|
-
kind: z.string(),
|
|
112
|
-
}).nullable().describe('If type is "deployed-instance", the referenced element'),
|
|
113
|
-
sourceLocation: locationSchema,
|
|
114
|
-
},
|
|
115
|
-
}, async (languageServices, args) => {
|
|
116
|
-
const projectId = languageServices.projectsManager.ensureProjectId(args.project);
|
|
117
|
-
const model = await languageServices.computedModel(projectId);
|
|
118
|
-
const element = model.deployment.findElement(args.id);
|
|
119
|
-
invariant(element, `Deployment entity "${args.id}" not found in project "${projectId}"`);
|
|
120
|
-
const locate = mkLocate(languageServices, projectId);
|
|
121
|
-
return {
|
|
122
|
-
type: element.isInstance() ? 'deployed-instance' : 'deployment-node',
|
|
123
|
-
id: element.id,
|
|
124
|
-
name: element.name,
|
|
125
|
-
kind: element.kind,
|
|
126
|
-
title: element.title,
|
|
127
|
-
description: element.description.text,
|
|
128
|
-
technology: element.technology,
|
|
129
|
-
tags: [...element.tags],
|
|
130
|
-
project: projectId,
|
|
131
|
-
metadata: element.getMetadata(),
|
|
132
|
-
links: (element.links ?? []).map(link => ({
|
|
133
|
-
title: link.title ?? null,
|
|
134
|
-
url: link.url,
|
|
135
|
-
relative: link.relative ?? null,
|
|
136
|
-
})),
|
|
137
|
-
shape: element.shape,
|
|
138
|
-
color: element.color,
|
|
139
|
-
children: element.isInstance() ? [] : [...element.children()].map(c => c.id),
|
|
140
|
-
includedInViews: includedInViews(element.views()),
|
|
141
|
-
instanceof: element.isInstance()
|
|
142
|
-
? {
|
|
143
|
-
id: element.element.id,
|
|
144
|
-
title: element.element.title,
|
|
145
|
-
kind: element.element.kind,
|
|
146
|
-
}
|
|
147
|
-
: null,
|
|
148
|
-
sourceLocation: locate({ deployment: element.id }),
|
|
149
|
-
};
|
|
150
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as z from 'zod/v3';
|
|
2
|
-
export declare const readElement: (languageServices: import("../..").LikeC4LanguageServices) => [string, {
|
|
3
|
-
inputSchema?: {
|
|
4
|
-
id: z.ZodString;
|
|
5
|
-
project: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodString, import("@likec4/core").ProjectId, string>>>;
|
|
6
|
-
};
|
|
7
|
-
}, (args: {
|
|
8
|
-
id: string;
|
|
9
|
-
project: string & import("type-fest/source/tagged").Tag<"ProjectID", never>;
|
|
10
|
-
}, extra: import("@modelcontextprotocol/sdk/shared/protocol.js").RequestHandlerExtra<import("@modelcontextprotocol/sdk/types.js").ServerRequest, import("@modelcontextprotocol/sdk/types.js").ServerNotification>) => import("@modelcontextprotocol/sdk/types.js").CallToolResult | Promise<import("@modelcontextprotocol/sdk/types.js").CallToolResult>];
|