sirius-framework-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +160 -0
  3. package/dist/grammars/tree-sitter-java.wasm +0 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +247 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/java-parser.d.ts +25 -0
  8. package/dist/java-parser.js +281 -0
  9. package/dist/java-parser.js.map +1 -0
  10. package/dist/prompts/index.d.ts +9 -0
  11. package/dist/prompts/index.js +15 -0
  12. package/dist/prompts/index.js.map +1 -0
  13. package/dist/prompts/workflows.d.ts +27 -0
  14. package/dist/prompts/workflows.js +317 -0
  15. package/dist/prompts/workflows.js.map +1 -0
  16. package/dist/resources/biz/analytics.md +157 -0
  17. package/dist/resources/biz/biz-controller.md +151 -0
  18. package/dist/resources/biz/codelists.md +154 -0
  19. package/dist/resources/biz/entity-triple.md +142 -0
  20. package/dist/resources/biz/importer.md +153 -0
  21. package/dist/resources/biz/isenguard.md +156 -0
  22. package/dist/resources/biz/jobs.md +145 -0
  23. package/dist/resources/biz/processes.md +155 -0
  24. package/dist/resources/biz/storage.md +149 -0
  25. package/dist/resources/biz/tenants.md +159 -0
  26. package/dist/resources/biz/testing.md +127 -0
  27. package/dist/resources/db/composites.md +145 -0
  28. package/dist/resources/db/entities.md +156 -0
  29. package/dist/resources/db/mixing.md +176 -0
  30. package/dist/resources/db/queries.md +178 -0
  31. package/dist/resources/db/refs.md +135 -0
  32. package/dist/resources/index.d.ts +27 -0
  33. package/dist/resources/index.js +68 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/resources/kernel/async.md +189 -0
  36. package/dist/resources/kernel/commons.md +203 -0
  37. package/dist/resources/kernel/config.md +155 -0
  38. package/dist/resources/kernel/di.md +138 -0
  39. package/dist/resources/kernel/lifecycle.md +146 -0
  40. package/dist/resources/loader.d.ts +9 -0
  41. package/dist/resources/loader.js +17 -0
  42. package/dist/resources/loader.js.map +1 -0
  43. package/dist/resources/web/controllers.md +151 -0
  44. package/dist/resources/web/services.md +136 -0
  45. package/dist/resources/web/templates.md +162 -0
  46. package/dist/tools/index.d.ts +4 -0
  47. package/dist/tools/index.js +3 -0
  48. package/dist/tools/index.js.map +1 -0
  49. package/dist/tools/introspection.d.ts +55 -0
  50. package/dist/tools/introspection.js +233 -0
  51. package/dist/tools/introspection.js.map +1 -0
  52. package/dist/tools/scaffold.d.ts +64 -0
  53. package/dist/tools/scaffold.js +505 -0
  54. package/dist/tools/scaffold.js.map +1 -0
  55. package/dist/workspace.d.ts +37 -0
  56. package/dist/workspace.js +185 -0
  57. package/dist/workspace.js.map +1 -0
  58. package/package.json +41 -0
@@ -0,0 +1,505 @@
1
+ /**
2
+ * Scaffold tools for generating Sirius framework Java/Kotlin boilerplate code.
3
+ *
4
+ * These tools generate code as strings (NOT file writes). The AI assistant will write the files.
5
+ */
6
+ // ---------------------------------------------------------------------------
7
+ // Helpers
8
+ // ---------------------------------------------------------------------------
9
+ /**
10
+ * Converts a camelCase field name to UPPER_SNAKE_CASE.
11
+ *
12
+ * Examples:
13
+ * "invoiceNumber" -> "INVOICE_NUMBER"
14
+ * "name" -> "NAME"
15
+ * "firstName" -> "FIRST_NAME"
16
+ */
17
+ export function toUpperSnake(camelCase) {
18
+ return camelCase
19
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
20
+ .toUpperCase();
21
+ }
22
+ /**
23
+ * Converts a PascalCase name to kebab-case.
24
+ *
25
+ * Examples:
26
+ * "ProductImport" -> "product-import"
27
+ * "SampleJob" -> "sample-job"
28
+ */
29
+ function toKebabCase(name) {
30
+ return name
31
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
32
+ .toLowerCase();
33
+ }
34
+ /**
35
+ * Extracts the last segment of a dot-separated package name.
36
+ *
37
+ * Example: "sirius.biz.products" -> "products"
38
+ */
39
+ function lastPackageSegment(pkg) {
40
+ const parts = pkg.split(".");
41
+ return parts[parts.length - 1];
42
+ }
43
+ /**
44
+ * Converts a package name to a file path.
45
+ *
46
+ * Example: "sirius.biz.products" -> "sirius/biz/products"
47
+ */
48
+ function packageToPath(pkg) {
49
+ return pkg.replace(/\./g, "/");
50
+ }
51
+ /**
52
+ * Pluralizes a name using simple English rules.
53
+ * Used for route generation in controllers.
54
+ */
55
+ function pluralize(name) {
56
+ if (name.endsWith("y") && !/[aeiou]y$/i.test(name)) {
57
+ return name.slice(0, -1) + "ies";
58
+ }
59
+ if (name.endsWith("s") ||
60
+ name.endsWith("x") ||
61
+ name.endsWith("z") ||
62
+ name.endsWith("ch") ||
63
+ name.endsWith("sh")) {
64
+ return name + "es";
65
+ }
66
+ return name + "s";
67
+ }
68
+ /**
69
+ * Lowercases the first character of a string.
70
+ * If the entire string is uppercase (e.g., "OMA"), lowercases it all.
71
+ * If it starts with consecutive uppercase letters followed by lowercase (e.g., "HTMLParser"),
72
+ * lowercases all but the last uppercase letter.
73
+ */
74
+ function lcFirst(s) {
75
+ if (s.length === 0)
76
+ return s;
77
+ // If the whole string is uppercase, lowercase everything
78
+ if (s === s.toUpperCase()) {
79
+ return s.toLowerCase();
80
+ }
81
+ return s.charAt(0).toLowerCase() + s.slice(1);
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // scaffoldEntity
85
+ // ---------------------------------------------------------------------------
86
+ export function scaffoldEntity(options) {
87
+ const { name, package: pkg, targets = ["jdbc", "mongo"], tenantAware = true, fields = [], mixins = [], } = options;
88
+ const files = [];
89
+ // 1. Generate the interface file
90
+ files.push(generateEntityInterface(name, pkg, fields, mixins));
91
+ // 2. Generate implementation files for each target
92
+ for (const target of targets) {
93
+ switch (target) {
94
+ case "jdbc":
95
+ files.push(generateJdbcEntity(name, pkg, tenantAware, fields));
96
+ break;
97
+ case "mongo":
98
+ files.push(generateMongoEntity(name, pkg, tenantAware, fields));
99
+ break;
100
+ case "elastic":
101
+ files.push(generateElasticEntity(name, pkg, fields));
102
+ break;
103
+ }
104
+ }
105
+ return { files };
106
+ }
107
+ function generateEntityInterface(name, pkg, fields, mixins) {
108
+ const extendsClause = ["Entity", ...mixins].join(", ");
109
+ const fieldDeclarations = fields
110
+ .map((f) => {
111
+ const upperSnake = toUpperSnake(f.name);
112
+ const mappingLine = ` Mapping ${upperSnake} = Mapping.named("${f.name}");`;
113
+ const getterName = `get${f.name.charAt(0).toUpperCase()}${f.name.slice(1)}`;
114
+ const getterLine = ` ${f.type} ${getterName}();`;
115
+ return `\n${mappingLine}\n\n${getterLine}`;
116
+ })
117
+ .join("\n");
118
+ const content = `package ${pkg};
119
+
120
+ import sirius.db.mixing.Entity;
121
+ import sirius.db.mixing.Mapping;
122
+
123
+ import java.io.Serializable;
124
+
125
+ public interface ${name}<I extends Serializable> extends ${extendsClause} {
126
+ ${fieldDeclarations}
127
+ }
128
+ `;
129
+ return {
130
+ fileName: `${name}.java`,
131
+ path: `src/main/java/${packageToPath(pkg)}/${name}.java`,
132
+ content,
133
+ };
134
+ }
135
+ function generateJdbcEntity(name, pkg, tenantAware, fields) {
136
+ const jdbcPkg = `${pkg}.jdbc`;
137
+ const framework = lastPackageSegment(pkg);
138
+ const superClass = tenantAware ? "SQLTenantAware" : "BizEntity";
139
+ const superImport = tenantAware
140
+ ? "import sirius.biz.tenants.jdbc.SQLTenantAware;"
141
+ : "import sirius.biz.jdbc.BizEntity;";
142
+ const fieldDeclarations = generateFieldDeclarations(fields);
143
+ const content = `package ${jdbcPkg};
144
+
145
+ ${superImport}
146
+ import sirius.db.mixing.Mapping;
147
+ import sirius.db.mixing.annotations.Length;
148
+ import sirius.db.mixing.annotations.TranslationSource;
149
+ import sirius.biz.web.Autoloaded;
150
+ import sirius.kernel.di.std.Framework;
151
+ import ${pkg}.${name};
152
+
153
+ @Framework("${framework}")
154
+ @TranslationSource(${name}.class)
155
+ public class SQL${name} extends ${superClass} implements ${name}<Long> {
156
+ ${fieldDeclarations}
157
+ }
158
+ `;
159
+ return {
160
+ fileName: `SQL${name}.java`,
161
+ path: `src/main/java/${packageToPath(jdbcPkg)}/SQL${name}.java`,
162
+ content,
163
+ };
164
+ }
165
+ function generateMongoEntity(name, pkg, tenantAware, fields) {
166
+ const mongoPkg = `${pkg}.mongo`;
167
+ const framework = lastPackageSegment(pkg);
168
+ const superClass = tenantAware ? "MongoTenantAware" : "MongoBizEntity";
169
+ const superImport = tenantAware
170
+ ? "import sirius.biz.tenants.mongo.MongoTenantAware;"
171
+ : "import sirius.biz.mongo.MongoBizEntity;";
172
+ const fieldDeclarations = generateFieldDeclarations(fields);
173
+ const content = `package ${mongoPkg};
174
+
175
+ ${superImport}
176
+ import sirius.db.mixing.Mapping;
177
+ import sirius.db.mixing.annotations.Length;
178
+ import sirius.db.mixing.annotations.TranslationSource;
179
+ import sirius.biz.web.Autoloaded;
180
+ import sirius.kernel.di.std.Framework;
181
+ import ${pkg}.${name};
182
+
183
+ @Framework("${framework}")
184
+ @TranslationSource(${name}.class)
185
+ public class Mongo${name} extends ${superClass} implements ${name}<String> {
186
+ ${fieldDeclarations}
187
+ }
188
+ `;
189
+ return {
190
+ fileName: `Mongo${name}.java`,
191
+ path: `src/main/java/${packageToPath(mongoPkg)}/Mongo${name}.java`,
192
+ content,
193
+ };
194
+ }
195
+ function generateElasticEntity(name, pkg, fields) {
196
+ const elasticPkg = `${pkg}.elastic`;
197
+ const framework = lastPackageSegment(pkg);
198
+ const fieldDeclarations = generateFieldDeclarations(fields);
199
+ const content = `package ${elasticPkg};
200
+
201
+ import sirius.biz.elastic.SearchableEntity;
202
+ import sirius.db.mixing.Mapping;
203
+ import sirius.db.mixing.annotations.Length;
204
+ import sirius.db.mixing.annotations.TranslationSource;
205
+ import sirius.biz.web.Autoloaded;
206
+ import sirius.kernel.di.std.Framework;
207
+ import ${pkg}.${name};
208
+
209
+ @Framework("${framework}")
210
+ @TranslationSource(${name}.class)
211
+ public class Elastic${name} extends SearchableEntity implements ${name}<String> {
212
+ ${fieldDeclarations}
213
+ }
214
+ `;
215
+ return {
216
+ fileName: `Elastic${name}.java`,
217
+ path: `src/main/java/${packageToPath(elasticPkg)}/Elastic${name}.java`,
218
+ content,
219
+ };
220
+ }
221
+ function generateFieldDeclarations(fields) {
222
+ if (fields.length === 0)
223
+ return "";
224
+ return fields
225
+ .map((f) => {
226
+ const upperSnake = toUpperSnake(f.name);
227
+ const lines = [];
228
+ lines.push(` public static final Mapping ${upperSnake} = Mapping.named("${f.name}");`);
229
+ // Annotations
230
+ const annotations = f.annotations ?? [];
231
+ if (f.length) {
232
+ lines.push(` @Length(${f.length})`);
233
+ }
234
+ for (const ann of annotations) {
235
+ if (ann.startsWith("@")) {
236
+ lines.push(` ${ann}`);
237
+ }
238
+ else {
239
+ lines.push(` @${ann}`);
240
+ }
241
+ }
242
+ lines.push(` private ${f.type} ${f.name};`);
243
+ // Getter
244
+ const getterName = `get${f.name.charAt(0).toUpperCase()}${f.name.slice(1)}`;
245
+ lines.push("");
246
+ lines.push(` public ${f.type} ${getterName}() {`);
247
+ lines.push(` return ${f.name};`);
248
+ lines.push(` }`);
249
+ return "\n" + lines.join("\n");
250
+ })
251
+ .join("\n");
252
+ }
253
+ // ---------------------------------------------------------------------------
254
+ // scaffoldJob
255
+ // ---------------------------------------------------------------------------
256
+ export function scaffoldJob(options) {
257
+ const { name, package: pkg, type = "SimpleBatchProcessJobFactory", framework, parameters = [], } = options;
258
+ const kebabName = toKebabCase(name);
259
+ const registerAnnotation = framework
260
+ ? `@Register(framework = "${framework}")`
261
+ : "@Register";
262
+ const isReport = type === "ReportJobFactory";
263
+ const parameterImports = parameters.length > 0
264
+ ? "\nimport sirius.biz.jobs.params.Parameter;\nimport java.util.Map;\nimport java.util.function.BiConsumer;\nimport java.util.function.Consumer;"
265
+ : "";
266
+ const collectParametersMethod = parameters.length > 0
267
+ ? `
268
+ @Override
269
+ protected void collectParameters(Consumer<Parameter<?, ?>> parameterCollector) {
270
+ // TODO: Add parameters
271
+ ${parameters.map((p) => ` // parameterCollector.accept(${p});`).join("\n")}
272
+ }
273
+ `
274
+ : `
275
+ @Override
276
+ protected void collectParameters(Consumer<Parameter<?, ?>> parameterCollector) {
277
+ // TODO: Add parameters
278
+ }
279
+ `;
280
+ const executeMethod = isReport
281
+ ? `
282
+ @Override
283
+ protected void computeReport(Map<String, String> context,
284
+ Report report,
285
+ BiConsumer<String, Cell> additionalMetricConsumer) throws Exception {
286
+ // TODO: Implement report computation
287
+ }
288
+ `
289
+ : `
290
+ @Override
291
+ protected void execute(ProcessContext process) throws Exception {
292
+ // TODO: Implement job execution
293
+ }
294
+ `;
295
+ const typeImport = isReport
296
+ ? "import sirius.biz.jobs.interactive.ReportJobFactory;\nimport sirius.biz.analytics.reports.Cell;\nimport sirius.biz.analytics.reports.Report;"
297
+ : "import sirius.biz.jobs.batch.SimpleBatchProcessJobFactory;\nimport sirius.biz.process.ProcessContext;";
298
+ const content = `package ${pkg};
299
+
300
+ ${typeImport}
301
+ import sirius.biz.jobs.StandardCategories;
302
+ import sirius.kernel.di.std.Register;${parameterImports}
303
+
304
+ ${registerAnnotation}
305
+ public class ${name} extends ${type} {
306
+
307
+ @Override
308
+ public String getName() {
309
+ return "${kebabName}";
310
+ }
311
+
312
+ @Override
313
+ public String getCategory() {
314
+ return StandardCategories.MISC;
315
+ }
316
+ ${collectParametersMethod}${executeMethod}
317
+ }
318
+ `;
319
+ return {
320
+ files: [
321
+ {
322
+ fileName: `${name}.java`,
323
+ path: `src/main/java/${packageToPath(pkg)}/${name}.java`,
324
+ content,
325
+ },
326
+ ],
327
+ };
328
+ }
329
+ // ---------------------------------------------------------------------------
330
+ // scaffoldTest
331
+ // ---------------------------------------------------------------------------
332
+ export function scaffoldTest(options) {
333
+ const { name, package: pkg, setupParts = [] } = options;
334
+ const partDeclarations = setupParts
335
+ .map((part) => {
336
+ const varName = lcFirst(part);
337
+ return ` @Part\n private lateinit var ${varName}: ${part}`;
338
+ })
339
+ .join("\n\n");
340
+ const setupBody = setupParts.length > 0
341
+ ? ` ${lcFirst(setupParts[0])}.readyFuture.await(Duration.ofSeconds(60))`
342
+ : " // Wait for system readiness";
343
+ const content = `package ${pkg}
344
+
345
+ import org.junit.jupiter.api.BeforeAll
346
+ import org.junit.jupiter.api.Test
347
+ import org.junit.jupiter.api.extension.ExtendWith
348
+ import sirius.kernel.SiriusExtension
349
+ import sirius.kernel.di.std.Part
350
+ import java.time.Duration
351
+
352
+ @ExtendWith(SiriusExtension::class)
353
+ class ${name} {
354
+
355
+ companion object {
356
+ ${partDeclarations}
357
+
358
+ @BeforeAll
359
+ @JvmStatic
360
+ fun setup() {
361
+ ${setupBody}
362
+ }
363
+ }
364
+
365
+ @Test
366
+ fun \`sample test\`() {
367
+ // TODO: Implement test
368
+ }
369
+ }
370
+ `;
371
+ return {
372
+ files: [
373
+ {
374
+ fileName: `${name}.kt`,
375
+ path: `src/test/kotlin/${packageToPath(pkg)}/${name}.kt`,
376
+ content,
377
+ },
378
+ ],
379
+ };
380
+ }
381
+ // ---------------------------------------------------------------------------
382
+ // scaffoldComposite
383
+ // ---------------------------------------------------------------------------
384
+ export function scaffoldComposite(options) {
385
+ const { name, package: pkg, fields = [] } = options;
386
+ const fieldDeclarations = generateCompositeFieldDeclarations(fields);
387
+ const content = `package ${pkg};
388
+
389
+ import sirius.db.mixing.Composite;
390
+ import sirius.db.mixing.Mapping;
391
+ import sirius.db.mixing.annotations.Length;
392
+ import sirius.db.mixing.annotations.Trim;
393
+ import sirius.db.mixing.annotations.NullAllowed;
394
+ import sirius.biz.web.Autoloaded;
395
+
396
+ public class ${name} extends Composite {
397
+ ${fieldDeclarations}
398
+ }
399
+ `;
400
+ return {
401
+ files: [
402
+ {
403
+ fileName: `${name}.java`,
404
+ path: `src/main/java/${packageToPath(pkg)}/${name}.java`,
405
+ content,
406
+ },
407
+ ],
408
+ };
409
+ }
410
+ function generateCompositeFieldDeclarations(fields) {
411
+ if (fields.length === 0)
412
+ return "";
413
+ return fields
414
+ .map((f) => {
415
+ const upperSnake = toUpperSnake(f.name);
416
+ const lines = [];
417
+ lines.push(` public static final Mapping ${upperSnake} = Mapping.named("${f.name}");`);
418
+ // Annotations
419
+ const annotations = f.annotations ?? [];
420
+ if (f.length) {
421
+ lines.push(` @Length(${f.length})`);
422
+ }
423
+ for (const ann of annotations) {
424
+ if (ann.startsWith("@")) {
425
+ lines.push(` ${ann}`);
426
+ }
427
+ else {
428
+ lines.push(` @${ann}`);
429
+ }
430
+ }
431
+ lines.push(` private ${f.type} ${f.name};`);
432
+ // Getter
433
+ const getterName = `get${f.name.charAt(0).toUpperCase()}${f.name.slice(1)}`;
434
+ lines.push("");
435
+ lines.push(` public ${f.type} ${getterName}() {`);
436
+ lines.push(` return ${f.name};`);
437
+ lines.push(` }`);
438
+ // Setter
439
+ const setterName = `set${f.name.charAt(0).toUpperCase()}${f.name.slice(1)}`;
440
+ lines.push("");
441
+ lines.push(` public void ${setterName}(${f.type} ${f.name}) {`);
442
+ lines.push(` this.${f.name} = ${f.name};`);
443
+ lines.push(` }`);
444
+ return "\n" + lines.join("\n");
445
+ })
446
+ .join("\n");
447
+ }
448
+ // ---------------------------------------------------------------------------
449
+ // scaffoldController
450
+ // ---------------------------------------------------------------------------
451
+ export function scaffoldController(options) {
452
+ const { name, package: pkg, entity, permissions = [] } = options;
453
+ const permissionConstants = permissions
454
+ .map((p) => {
455
+ const constName = p.toUpperCase().replace(/-/g, "_");
456
+ return ` public static final String ${constName} = "${p}";`;
457
+ })
458
+ .join("\n");
459
+ let routeMethods = "";
460
+ if (entity) {
461
+ const entityLower = lcFirst(entity);
462
+ const entityPlural = pluralize(entityLower);
463
+ const listPermAnnotation = permissions.length > 0
464
+ ? `\n @Permission(${permissions[0].toUpperCase().replace(/-/g, "_")})`
465
+ : "";
466
+ routeMethods = `
467
+ @Routed("/${entityPlural}")
468
+ @LoginRequired${listPermAnnotation}
469
+ public void ${entityPlural}(WebContext webContext) {
470
+ // TODO: Implement list view
471
+ }
472
+
473
+ @Routed("/${entityLower}/:1")
474
+ @LoginRequired${listPermAnnotation}
475
+ public void ${entityLower}(WebContext webContext, String id) {
476
+ // TODO: Implement edit view
477
+ }
478
+ `;
479
+ }
480
+ const content = `package ${pkg};
481
+
482
+ import sirius.biz.web.BizController;
483
+ import sirius.kernel.di.std.Register;
484
+ import sirius.web.controller.Routed;
485
+ import sirius.web.http.WebContext;
486
+ import sirius.web.security.LoginRequired;
487
+ import sirius.web.security.Permission;
488
+
489
+ @Register
490
+ public class ${name} extends BizController {
491
+
492
+ ${permissionConstants ? permissionConstants + "\n" : ""}${routeMethods}
493
+ }
494
+ `;
495
+ return {
496
+ files: [
497
+ {
498
+ fileName: `${name}.java`,
499
+ path: `src/main/java/${packageToPath(pkg)}/${name}.java`,
500
+ content,
501
+ },
502
+ ],
503
+ };
504
+ }
505
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/tools/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Represents the Sirius framework layers, ordered from lowest to highest.
3
+ */
4
+ export declare enum SiriusLayer {
5
+ KERNEL = "KERNEL",
6
+ WEB = "WEB",
7
+ DB = "DB",
8
+ BIZ = "BIZ",
9
+ APP = "APP"
10
+ }
11
+ /**
12
+ * Information about the detected workspace and which framework layers it exposes.
13
+ */
14
+ export interface WorkspaceInfo {
15
+ /** The detected framework layer for this workspace. */
16
+ layer: SiriusLayer;
17
+ /** The set of layers whose resources/tools should be exposed. */
18
+ exposedLayers: SiriusLayer[];
19
+ /** The artifactId from the POM, if available. */
20
+ artifactId: string | undefined;
21
+ /** Whether this is a multi-module parent POM. */
22
+ isMultiModule: boolean;
23
+ }
24
+ /**
25
+ * Detects workspace information by parsing the given POM XML content.
26
+ *
27
+ * Detection logic:
28
+ * 1. If the POM's own artifactId matches a known Sirius module, use that layer.
29
+ * 2. Otherwise, scan dependencies for Sirius artifacts and pick the highest layer.
30
+ * 3. If nothing matches, default to APP (expose all layers).
31
+ * 4. Detect multi-module POMs by the presence of a <modules> section.
32
+ */
33
+ export declare function detectWorkspace(pomXml: string): WorkspaceInfo;
34
+ /**
35
+ * Detects workspace information by reading a pom.xml file from the given directory path.
36
+ */
37
+ export declare function detectWorkspaceFromPath(path: string): Promise<WorkspaceInfo>;