@metamesh/cli 0.17.0 → 0.18.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 (108) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/README.md +75 -52
  3. package/dist/authoring/artifacts.d.ts +2 -2
  4. package/dist/authoring/artifacts.d.ts.map +1 -1
  5. package/dist/authoring/artifacts.js +50 -32
  6. package/dist/authoring/artifacts.js.map +1 -1
  7. package/dist/authoring/check.d.ts.map +1 -1
  8. package/dist/authoring/check.js +9 -3
  9. package/dist/authoring/check.js.map +1 -1
  10. package/dist/authoring/documentation-manifest.d.ts +3 -0
  11. package/dist/authoring/documentation-manifest.d.ts.map +1 -0
  12. package/dist/authoring/documentation-manifest.js +23 -0
  13. package/dist/authoring/documentation-manifest.js.map +1 -0
  14. package/dist/authoring/documentation.d.ts +20 -0
  15. package/dist/authoring/documentation.d.ts.map +1 -0
  16. package/dist/authoring/documentation.js +94 -0
  17. package/dist/authoring/documentation.js.map +1 -0
  18. package/dist/authoring/environment.d.ts +1 -19
  19. package/dist/authoring/environment.d.ts.map +1 -1
  20. package/dist/authoring/environment.js +2 -110
  21. package/dist/authoring/environment.js.map +1 -1
  22. package/dist/authoring/{worker.d.ts → execution-process.d.ts} +2 -2
  23. package/dist/authoring/execution-process.d.ts.map +1 -0
  24. package/dist/authoring/{worker.js → execution-process.js} +17 -19
  25. package/dist/authoring/execution-process.js.map +1 -0
  26. package/dist/authoring/{capture/render-client.js → render/client-bundle.js} +196 -196
  27. package/dist/authoring/{capture/render-client.js.map → render/client-bundle.js.map} +4 -4
  28. package/dist/authoring/{render-client.d.ts → render/client.d.ts} +2 -2
  29. package/dist/authoring/render/client.d.ts.map +1 -0
  30. package/dist/authoring/{render-client.js → render/client.js} +2 -2
  31. package/dist/authoring/render/client.js.map +1 -0
  32. package/dist/authoring/{render.d.ts → render/render-capture.d.ts} +2 -2
  33. package/dist/authoring/render/render-capture.d.ts.map +1 -0
  34. package/dist/authoring/{render.js → render/render-capture.js} +4 -4
  35. package/dist/authoring/render/render-capture.js.map +1 -0
  36. package/dist/authoring/{render-scene.d.ts → render/scene.d.ts} +2 -2
  37. package/dist/authoring/render/scene.d.ts.map +1 -0
  38. package/dist/authoring/{render-scene.js → render/scene.js} +6 -10
  39. package/dist/authoring/render/scene.js.map +1 -0
  40. package/dist/authoring/{render-types.d.ts → render/types.d.ts} +3 -3
  41. package/dist/authoring/render/types.d.ts.map +1 -0
  42. package/dist/authoring/render/types.js +2 -0
  43. package/dist/authoring/render/types.js.map +1 -0
  44. package/dist/authoring/run.d.ts.map +1 -1
  45. package/dist/authoring/run.js +7 -3
  46. package/dist/authoring/run.js.map +1 -1
  47. package/dist/authoring/types.d.ts +20 -14
  48. package/dist/authoring/types.d.ts.map +1 -1
  49. package/dist/authoring/types.js.map +1 -1
  50. package/dist/authoring.d.ts +5 -4
  51. package/dist/authoring.d.ts.map +1 -1
  52. package/dist/authoring.js +3 -2
  53. package/dist/authoring.js.map +1 -1
  54. package/dist/docs/guides/agent-authoring.md +71 -51
  55. package/dist/docs/guides/package.md +75 -52
  56. package/dist/docs/manifest.json +1 -1
  57. package/dist/docs/reference/authoring/AUTHORING_PROTOCOL_VERSION.md +1 -1
  58. package/dist/docs/reference/authoring/AuthoringDiagnostic.md +1 -1
  59. package/dist/docs/reference/authoring/AuthoringEnvironment.md +1 -1
  60. package/dist/docs/reference/authoring/AuthoringError.md +1 -1
  61. package/dist/docs/reference/authoring/AuthoringFailure-type.md +1 -1
  62. package/dist/docs/reference/authoring/AuthoringKind.md +1 -1
  63. package/dist/docs/reference/authoring/AuthoringPhase.md +1 -1
  64. package/dist/docs/reference/authoring/CapturedBuffer.md +1 -1
  65. package/dist/docs/reference/authoring/CapturedGeometry.md +1 -1
  66. package/dist/docs/reference/authoring/CapturedPart.md +4 -6
  67. package/dist/docs/reference/authoring/CapturedResource.md +2 -2
  68. package/dist/docs/reference/authoring/CapturedRun.md +1 -1
  69. package/dist/docs/reference/authoring/CapturedRunManifest.md +3 -3
  70. package/dist/docs/reference/authoring/CheckOptions.md +1 -1
  71. package/dist/docs/reference/authoring/CheckSuccess.md +1 -1
  72. package/dist/docs/reference/authoring/DocumentationEntry.md +1 -1
  73. package/dist/docs/reference/authoring/DocumentationManifest.md +1 -1
  74. package/dist/docs/reference/authoring/DocumentationSearchResult.md +1 -1
  75. package/dist/docs/reference/authoring/InstalledAuthoringPackage.md +1 -1
  76. package/dist/docs/reference/authoring/RenderCamera.md +1 -1
  77. package/dist/docs/reference/authoring/RenderFormat.md +1 -1
  78. package/dist/docs/reference/authoring/RenderOptions.md +1 -1
  79. package/dist/docs/reference/authoring/RenderResult.md +1 -1
  80. package/dist/docs/reference/authoring/RenderView.md +1 -1
  81. package/dist/docs/reference/authoring/RenderedImage.md +1 -1
  82. package/dist/docs/reference/authoring/RunOptions.md +13 -5
  83. package/dist/docs/reference/authoring/RunSuccess.md +1 -1
  84. package/dist/docs/reference/authoring/authoringFailure-value.md +1 -1
  85. package/dist/docs/reference/authoring/checkAuthoringSource.md +1 -1
  86. package/dist/docs/reference/authoring/discoverAuthoringEnvironment.md +1 -1
  87. package/dist/docs/reference/authoring/inspectCapturedRun.md +1 -1
  88. package/dist/docs/reference/authoring/installAuthoringBrowser.md +1 -1
  89. package/dist/docs/reference/authoring/readCapturedRun.md +1 -1
  90. package/dist/docs/reference/authoring/renderCapturedRun.md +1 -1
  91. package/dist/docs/reference/authoring/runAuthoringSource.md +1 -1
  92. package/dist/docs/reference/authoring/searchAuthoringDocumentation.md +1 -1
  93. package/dist/docs/reference/authoring/showAuthoringDocumentation.md +1 -1
  94. package/dist/metamesh.js +22 -10
  95. package/dist/metamesh.js.map +1 -1
  96. package/package.json +9 -6
  97. package/dist/authoring/render-client.d.ts.map +0 -1
  98. package/dist/authoring/render-client.js.map +0 -1
  99. package/dist/authoring/render-scene.d.ts.map +0 -1
  100. package/dist/authoring/render-scene.js.map +0 -1
  101. package/dist/authoring/render-types.d.ts.map +0 -1
  102. package/dist/authoring/render-types.js +0 -2
  103. package/dist/authoring/render-types.js.map +0 -1
  104. package/dist/authoring/render.d.ts.map +0 -1
  105. package/dist/authoring/render.js.map +0 -1
  106. package/dist/authoring/worker.d.ts.map +0 -1
  107. package/dist/authoring/worker.js.map +0 -1
  108. /package/dist/authoring/{capture/render-client.js.LEGAL.txt → render/client-bundle.js.LEGAL.txt} +0 -0
@@ -63,7 +63,10 @@ export async function checkAuthoringSource(options) {
63
63
  };
64
64
  // Erase author-specific params/services while retaining the complete callback contract.
65
65
  const contractFile = resolve(dirname(entry), ".metamesh-check.d.mts");
66
- const contract = ts.createSourceFile(contractFile, 'import type { GenerateCallback } from "@metamesh/modeling"; type Callback = GenerateCallback<never, never>;', ts.ScriptTarget.Latest, true);
66
+ const contract = ts.createSourceFile(contractFile, 'import type { GenerateCallback } from "@metamesh/modeling"; type Callback = GenerateCallback<never, never>;' +
67
+ (options.kind === "generator"
68
+ ? 'import type { GeneratorModule } from "@metamesh/generator-sdk"; type GeneratorEntry = GeneratorModule;'
69
+ : ""), ts.ScriptTarget.Latest, true);
67
70
  const host = ts.createCompilerHost(compilerOptions);
68
71
  const loadSource = host.getSourceFile.bind(host);
69
72
  host.getSourceFile = (fileName, ...args) => resolve(fileName) === contractFile ? contract : loadSource(fileName, ...args);
@@ -76,6 +79,7 @@ export async function checkAuthoringSource(options) {
76
79
  const diagnostics = [...(parsed?.errors ?? []), ...ts.getPreEmitDiagnostics(program)].map(diagnostic);
77
80
  const checker = program.getTypeChecker();
78
81
  const callback = checker.getTypeFromTypeNode(contract.statements.find(ts.isTypeAliasDeclaration).type);
82
+ const generatorEntry = contract.statements.find((statement) => ts.isTypeAliasDeclaration(statement) && statement.name.text === "GeneratorEntry");
79
83
  const moduleSymbol = source === undefined ? undefined : checker.getSymbolAtLocation(source);
80
84
  const exports = moduleSymbol === undefined ? [] : checker.getExportsOfModule(moduleSymbol);
81
85
  if (!exports.some((symbol) => symbol.getName() === "default") ||
@@ -95,20 +99,22 @@ export async function checkAuthoringSource(options) {
95
99
  const symbol = checker.getPropertyOfType(type, name);
96
100
  return symbol === undefined ? undefined : checker.getTypeOfSymbolAtLocation(symbol, source);
97
101
  };
98
- const candidate = options.kind === "model" ? exported : property(exported, "generate");
102
+ const candidate = exported;
99
103
  const generator = candidate === undefined ? undefined : property(candidate, "generate");
100
104
  const kind = candidate === undefined ? undefined : property(candidate, "kind");
101
105
  if (candidate === undefined ||
102
106
  generator === undefined ||
103
107
  generator.getCallSignatures().length === 0 ||
104
108
  !checker.isTypeAssignableTo(generator, callback) ||
109
+ (generatorEntry !== undefined &&
110
+ !checker.isTypeAssignableTo(exported, checker.getTypeFromTypeNode(generatorEntry.type))) ||
105
111
  kind === undefined ||
106
112
  checker.typeToString(kind) !== '"metamesh-model"')
107
113
  diagnostics.push({
108
114
  code: "AUTHORING_PROGRAM_TYPE",
109
115
  message: options.kind === "model"
110
116
  ? "Default export must have the ModelProgram type returned by generate()."
111
- : "Default export must be a Generator module whose generate property is a ModelProgram.",
117
+ : "Default export must be a Generator model program carrying its package identity.",
112
118
  severity: "error",
113
119
  file: entry,
114
120
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/authoring/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/authoring/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DocumentationManifest } from "./types.js";
2
+ export declare function readDocumentationManifest(value: unknown, name: string): DocumentationManifest;
3
+ //# sourceMappingURL=documentation-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-manifest.d.ts","sourceRoot":"","sources":["../../src/authoring/documentation-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAkC7F"}
@@ -0,0 +1,23 @@
1
+ import { AuthoringError, isRecord } from "./errors.js";
2
+ export function readDocumentationManifest(value, name) {
3
+ if (!isRecord(value) ||
4
+ value.formatVersion !== 1 ||
5
+ value.packageName !== name ||
6
+ typeof value.packageVersion !== "string" ||
7
+ !Array.isArray(value.documents) ||
8
+ value.documents.length === 0 ||
9
+ value.documents.length > 10000)
10
+ throw new AuthoringError("environment", "INVALID_DOCUMENTATION", `Invalid installed documentation manifest for ${name}.`);
11
+ const ids = new Set();
12
+ for (const document of value.documents) {
13
+ if (!isRecord(document) ||
14
+ !["id", "title", "summary", "path", "importPath", "availability", "canonical"].every((key) => typeof document[key] === "string" && document[key].trim().length > 0) ||
15
+ !Array.isArray(document.keywords) ||
16
+ !document.keywords.every((keyword) => typeof keyword === "string") ||
17
+ ids.has(document.id))
18
+ throw new AuthoringError("environment", "INVALID_DOCUMENTATION", `Invalid or duplicate document in ${name}.`);
19
+ ids.add(document.id);
20
+ }
21
+ return value;
22
+ }
23
+ //# sourceMappingURL=documentation-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-manifest.js","sourceRoot":"","sources":["../../src/authoring/documentation-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,UAAU,yBAAyB,CAAC,KAAc,EAAE,IAAY;IACpE,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,KAAK,CAAC,aAAa,KAAK,CAAC;QACzB,KAAK,CAAC,WAAW,KAAK,IAAI;QAC1B,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QACxC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAC5B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK;QAE9B,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,uBAAuB,EACvB,gDAAgD,IAAI,GAAG,CACxD,CAAC;IACJ,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAsB,EAAE,CAAC;QACpD,IACE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnB,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,KAAK,CAClF,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAC9E;YACD,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAY,CAAC;YAE9B,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,uBAAuB,EACvB,oCAAoC,IAAI,GAAG,CAC5C,CAAC;QACJ,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAY,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAyC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { DocumentationEntry } from "./types.js";
2
+ /** An installed documentation match carrying the exact package identity that owns it. */
3
+ export interface DocumentationSearchResult extends DocumentationEntry {
4
+ readonly packageName: string;
5
+ readonly packageVersion: string;
6
+ }
7
+ /**
8
+ * Ranks distinct intent tokens in installed titles, keywords, and summaries without loading bodies.
9
+ * Exact symbol/topic/import lookup takes priority; equally complete matches favor guides.
10
+ * Returns up to limit matches, defaulting to 10; supported limits are 1 through 50.
11
+ */
12
+ export declare function searchAuthoringDocumentation(query: string, options?: {
13
+ readonly project?: string;
14
+ readonly limit?: number;
15
+ }): Promise<readonly DocumentationSearchResult[]>;
16
+ /** Reads one exact-version installed Markdown topic by its discovered ID, without executing source. */
17
+ export declare function showAuthoringDocumentation(id: string, project?: string): Promise<DocumentationSearchResult & {
18
+ readonly markdown: string;
19
+ }>;
20
+ //# sourceMappingURL=documentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../src/authoring/documentation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,yFAAyF;AACzF,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAgCD;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,OAAO,CAAC,SAAS,yBAAyB,EAAE,CAAC,CAsE/C;AAED,uGAAuG;AACvG,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBpE"}
@@ -0,0 +1,94 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname } from "node:path";
3
+ import { readDocumentationManifest } from "./documentation-manifest.js";
4
+ import { confinedFile, discoverAuthoringEnvironment } from "./environment.js";
5
+ import { AuthoringError } from "./errors.js";
6
+ // Grammar and common task verbs add no useful intent to a metadata-only query.
7
+ const searchStopWords = new Set("a an and are as at be by can create do does for from how i in is it make of on or that the this to use when which with".split(" "));
8
+ function searchWords(value) {
9
+ // Remove standalone grammar before splitting identifiers: the "to" in toRegionData is meaningful.
10
+ const meaningful = (value.match(/[\p{L}\p{N}]+/gu) ?? [])
11
+ .filter((word) => !searchStopWords.has(word.toLocaleLowerCase("en-US")))
12
+ .join(" ");
13
+ return [
14
+ ...new Set(meaningful
15
+ .replace(/(\p{Ll}|\p{N})(\p{Lu})/gu, "$1 $2")
16
+ .replace(/(\p{Lu})(\p{Lu}\p{Ll})/gu, "$1 $2")
17
+ .toLocaleLowerCase("en-US")
18
+ .match(/[\p{L}\p{N}]+/gu) ?? []),
19
+ ];
20
+ }
21
+ function searchTokens(value) {
22
+ const identifiers = (value.toLocaleLowerCase("en-US").match(/[\p{L}\p{N}]+/gu) ?? []).filter((word) => !searchStopWords.has(word));
23
+ return [...new Set([...identifiers, ...searchWords(value)])];
24
+ }
25
+ /**
26
+ * Ranks distinct intent tokens in installed titles, keywords, and summaries without loading bodies.
27
+ * Exact symbol/topic/import lookup takes priority; equally complete matches favor guides.
28
+ * Returns up to limit matches, defaulting to 10; supported limits are 1 through 50.
29
+ */
30
+ export async function searchAuthoringDocumentation(query, options = {}) {
31
+ const limit = options.limit ?? 10;
32
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 50)
33
+ throw new AuthoringError("invocation", "INVALID_LIMIT", "Documentation limit must be an integer from 1 to 50.");
34
+ const exactQuery = query.trim().toLocaleLowerCase("en-US");
35
+ if (!/[\p{L}\p{N}]/u.test(exactQuery))
36
+ throw new AuthoringError("invocation", "EMPTY_QUERY", "Enter a documentation search query.");
37
+ const words = searchTokens(query);
38
+ const normalizedQuery = searchWords(query).join(" ");
39
+ const qualified = /^([\p{L}\p{N}_$]+)\.([\p{L}\p{N}_$]+)$/u.exec(exactQuery);
40
+ const environment = await discoverAuthoringEnvironment(options.project);
41
+ const indexed = await Promise.all(environment.packages.map(async (pkg) => ({
42
+ pkg,
43
+ manifest: readDocumentationManifest(JSON.parse(await readFile(pkg.manifestPath, "utf8")), pkg.name),
44
+ })));
45
+ return indexed
46
+ .flatMap(({ pkg, manifest }) => manifest.documents.map((document) => {
47
+ const titleWords = searchTokens(document.title);
48
+ const exact = [document.title, document.id, document.importPath].some((value) => value.toLocaleLowerCase("en-US") === exactQuery) ||
49
+ (normalizedQuery.length > 0 && searchWords(document.title).join(" ") === normalizedQuery)
50
+ ? 2
51
+ : qualified &&
52
+ document.title.toLocaleLowerCase("en-US") === qualified[1] &&
53
+ document.keywords.some((word) => word.toLocaleLowerCase("en-US") === qualified[2])
54
+ ? 1
55
+ : 0;
56
+ const title = new Set(titleWords);
57
+ const keywords = new Set(searchTokens(document.keywords.join(" ")));
58
+ const summary = new Set(searchTokens(document.summary));
59
+ const matches = words.filter((word) => title.has(word) || keywords.has(word) || summary.has(word)).length;
60
+ const score = words.reduce((sum, word) => sum + (title.has(word) ? 4 : keywords.has(word) ? 2 : summary.has(word) ? 1 : 0), 0);
61
+ return {
62
+ exact,
63
+ matches,
64
+ guide: Number(document.id.includes("/guide/")),
65
+ score,
66
+ result: { ...document, packageName: pkg.name, packageVersion: pkg.version },
67
+ };
68
+ }))
69
+ .filter(({ exact, matches }) => exact > 0 || matches > 0)
70
+ .sort((a, b) => b.exact - a.exact ||
71
+ b.matches - a.matches ||
72
+ b.guide - a.guide ||
73
+ b.score - a.score ||
74
+ a.result.id.localeCompare(b.result.id, "en"))
75
+ .slice(0, limit)
76
+ .map(({ result }) => result);
77
+ }
78
+ /** Reads one exact-version installed Markdown topic by its discovered ID, without executing source. */
79
+ export async function showAuthoringDocumentation(id, project) {
80
+ const environment = await discoverAuthoringEnvironment(project);
81
+ for (const pkg of environment.packages) {
82
+ const manifest = readDocumentationManifest(JSON.parse(await readFile(pkg.manifestPath, "utf8")), pkg.name);
83
+ const document = manifest.documents.find((entry) => entry.id === id);
84
+ if (!document)
85
+ continue;
86
+ const file = await confinedFile(dirname(pkg.manifestPath), document.path);
87
+ const markdown = await readFile(file, "utf8");
88
+ if (Buffer.byteLength(markdown) > 512 * 1024)
89
+ throw new AuthoringError("environment", "DOCUMENT_TOO_LARGE", "Requested document exceeds the 512 KiB retrieval bound.");
90
+ return { ...document, packageName: pkg.name, packageVersion: pkg.version, markdown };
91
+ }
92
+ throw new AuthoringError("invocation", "DOCUMENT_NOT_FOUND", `No installed documentation topic has id ${id}.`);
93
+ }
94
+ //# sourceMappingURL=documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../src/authoring/documentation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type AuthoringEnvironment, type DocumentationEntry } from "./types.js";
1
+ import { type AuthoringEnvironment } from "./types.js";
2
2
  export declare const authoringPackageNames: string[];
3
3
  /** @internal Resolve only local installation scopes; Node's global fallback paths are excluded. */
4
4
  export declare function projectPackageDirectory(project: string, specifier: string): string | undefined;
@@ -9,22 +9,4 @@ export declare function confinedFile(directory: string, path: string): Promise<s
9
9
  * Rejects missing required packages, stale manifests, and mixed exact package versions.
10
10
  */
11
11
  export declare function discoverAuthoringEnvironment(project?: string): Promise<AuthoringEnvironment>;
12
- /** An installed documentation match carrying the exact package identity that owns it. */
13
- export interface DocumentationSearchResult extends DocumentationEntry {
14
- readonly packageName: string;
15
- readonly packageVersion: string;
16
- }
17
- /**
18
- * Ranks distinct intent tokens in installed titles, keywords, and summaries without loading bodies.
19
- * Exact symbol/topic/import lookup takes priority; equally complete matches favor guides.
20
- * Returns up to limit matches, defaulting to 10; supported limits are 1 through 50.
21
- */
22
- export declare function searchAuthoringDocumentation(query: string, options?: {
23
- readonly project?: string;
24
- readonly limit?: number;
25
- }): Promise<readonly DocumentationSearchResult[]>;
26
- /** Reads one exact-version installed Markdown topic by its discovered ID, without executing source. */
27
- export declare function showAuthoringDocumentation(id: string, project?: string): Promise<DocumentationSearchResult & {
28
- readonly markdown: string;
29
- }>;
30
12
  //# sourceMappingURL=environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/authoring/environment.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,qBAAqB,UAKjC,CAAC;AAEF,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA4B9F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY/E;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnF;AAsCD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,SAAgB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAgE/B;AAED,yFAAyF;AACzF,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAgCD;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,OAAO,CAAC,SAAS,yBAAyB,EAAE,CAAC,CAsE/C;AAED,uGAAuG;AACvG,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBpE"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/authoring/environment.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,qBAAqB,UAKjC,CAAC;AAEF,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA4B9F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY/E;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnF;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,SAAgB,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAgE/B"}
@@ -2,6 +2,7 @@ import { existsSync, readFileSync } from "node:fs";
2
2
  import { readFile, realpath, stat } from "node:fs/promises";
3
3
  import { createRequire } from "node:module";
4
4
  import { dirname, isAbsolute, relative, resolve } from "node:path";
5
+ import { readDocumentationManifest } from "./documentation-manifest.js";
5
6
  import { AuthoringError, isRecord } from "./errors.js";
6
7
  import { AUTHORING_PROTOCOL_VERSION, } from "./types.js";
7
8
  export const authoringPackageNames = [
@@ -63,27 +64,6 @@ export async function confinedFile(directory, path) {
63
64
  throw new AuthoringError("artifact", "INVALID_PATH", `Path escapes its captured directory: ${path}`);
64
65
  return file;
65
66
  }
66
- function readManifest(value, name) {
67
- if (!isRecord(value) ||
68
- value.formatVersion !== 1 ||
69
- value.packageName !== name ||
70
- typeof value.packageVersion !== "string" ||
71
- !Array.isArray(value.documents) ||
72
- value.documents.length === 0 ||
73
- value.documents.length > 10000)
74
- throw new AuthoringError("environment", "INVALID_DOCUMENTATION", `Invalid installed documentation manifest for ${name}.`);
75
- const ids = new Set();
76
- for (const document of value.documents) {
77
- if (!isRecord(document) ||
78
- !["id", "title", "summary", "path", "importPath", "availability", "canonical"].every((key) => typeof document[key] === "string" && document[key].trim().length > 0) ||
79
- !Array.isArray(document.keywords) ||
80
- !document.keywords.every((keyword) => typeof keyword === "string") ||
81
- ids.has(document.id))
82
- throw new AuthoringError("environment", "INVALID_DOCUMENTATION", `Invalid or duplicate document in ${name}.`);
83
- ids.add(document.id);
84
- }
85
- return value;
86
- }
87
67
  /**
88
68
  * Discovers project-local Modeling, CLI, and optional SDK/Testkit documentation.
89
69
  * Rejects missing required packages, stale manifests, and mixed exact package versions.
@@ -99,7 +79,7 @@ export async function discoverAuthoringEnvironment(project = process.cwd()) {
99
79
  const manifestPath = resolveProjectExport(project, `${name}/docs/manifest.json`);
100
80
  if ((await stat(manifestPath)).size > 8 * 1024 * 1024)
101
81
  throw new AuthoringError("environment", "INVALID_DOCUMENTATION", `Documentation index exceeds 8 MiB: ${name}.`);
102
- const manifest = readManifest(JSON.parse(await readFile(manifestPath, "utf8")), name);
82
+ const manifest = readDocumentationManifest(JSON.parse(await readFile(manifestPath, "utf8")), name);
103
83
  const installed = JSON.parse(await readFile(resolve(installedDirectory, "package.json"), "utf8"));
104
84
  if (!isRecord(installed) ||
105
85
  installed.name !== name ||
@@ -132,92 +112,4 @@ export async function discoverAuthoringEnvironment(project = process.cwd()) {
132
112
  ],
133
113
  };
134
114
  }
135
- // Grammar and common task verbs add no useful intent to a metadata-only query.
136
- const searchStopWords = new Set("a an and are as at be by can create do does for from how i in is it make of on or that the this to use when which with".split(" "));
137
- function searchWords(value) {
138
- // Remove standalone grammar before splitting identifiers: the "to" in toRegionData is meaningful.
139
- const meaningful = (value.match(/[\p{L}\p{N}]+/gu) ?? [])
140
- .filter((word) => !searchStopWords.has(word.toLocaleLowerCase("en-US")))
141
- .join(" ");
142
- return [
143
- ...new Set(meaningful
144
- .replace(/(\p{Ll}|\p{N})(\p{Lu})/gu, "$1 $2")
145
- .replace(/(\p{Lu})(\p{Lu}\p{Ll})/gu, "$1 $2")
146
- .toLocaleLowerCase("en-US")
147
- .match(/[\p{L}\p{N}]+/gu) ?? []),
148
- ];
149
- }
150
- function searchTokens(value) {
151
- const identifiers = (value.toLocaleLowerCase("en-US").match(/[\p{L}\p{N}]+/gu) ?? []).filter((word) => !searchStopWords.has(word));
152
- return [...new Set([...identifiers, ...searchWords(value)])];
153
- }
154
- /**
155
- * Ranks distinct intent tokens in installed titles, keywords, and summaries without loading bodies.
156
- * Exact symbol/topic/import lookup takes priority; equally complete matches favor guides.
157
- * Returns up to limit matches, defaulting to 10; supported limits are 1 through 50.
158
- */
159
- export async function searchAuthoringDocumentation(query, options = {}) {
160
- const limit = options.limit ?? 10;
161
- if (!Number.isSafeInteger(limit) || limit < 1 || limit > 50)
162
- throw new AuthoringError("invocation", "INVALID_LIMIT", "Documentation limit must be an integer from 1 to 50.");
163
- const exactQuery = query.trim().toLocaleLowerCase("en-US");
164
- if (!/[\p{L}\p{N}]/u.test(exactQuery))
165
- throw new AuthoringError("invocation", "EMPTY_QUERY", "Enter a documentation search query.");
166
- const words = searchTokens(query);
167
- const normalizedQuery = searchWords(query).join(" ");
168
- const qualified = /^([\p{L}\p{N}_$]+)\.([\p{L}\p{N}_$]+)$/u.exec(exactQuery);
169
- const environment = await discoverAuthoringEnvironment(options.project);
170
- const indexed = await Promise.all(environment.packages.map(async (pkg) => ({
171
- pkg,
172
- manifest: readManifest(JSON.parse(await readFile(pkg.manifestPath, "utf8")), pkg.name),
173
- })));
174
- return indexed
175
- .flatMap(({ pkg, manifest }) => manifest.documents.map((document) => {
176
- const titleWords = searchTokens(document.title);
177
- const exact = [document.title, document.id, document.importPath].some((value) => value.toLocaleLowerCase("en-US") === exactQuery) ||
178
- (normalizedQuery.length > 0 && searchWords(document.title).join(" ") === normalizedQuery)
179
- ? 2
180
- : qualified &&
181
- document.title.toLocaleLowerCase("en-US") === qualified[1] &&
182
- document.keywords.some((word) => word.toLocaleLowerCase("en-US") === qualified[2])
183
- ? 1
184
- : 0;
185
- const title = new Set(titleWords);
186
- const keywords = new Set(searchTokens(document.keywords.join(" ")));
187
- const summary = new Set(searchTokens(document.summary));
188
- const matches = words.filter((word) => title.has(word) || keywords.has(word) || summary.has(word)).length;
189
- const score = words.reduce((sum, word) => sum + (title.has(word) ? 4 : keywords.has(word) ? 2 : summary.has(word) ? 1 : 0), 0);
190
- return {
191
- exact,
192
- matches,
193
- guide: Number(document.id.includes("/guide/")),
194
- score,
195
- result: { ...document, packageName: pkg.name, packageVersion: pkg.version },
196
- };
197
- }))
198
- .filter(({ exact, matches }) => exact > 0 || matches > 0)
199
- .sort((a, b) => b.exact - a.exact ||
200
- b.matches - a.matches ||
201
- b.guide - a.guide ||
202
- b.score - a.score ||
203
- a.result.id.localeCompare(b.result.id, "en"))
204
- .slice(0, limit)
205
- .map(({ result }) => result);
206
- }
207
- /** Reads one exact-version installed Markdown topic by its discovered ID, without executing source. */
208
- export async function showAuthoringDocumentation(id, project) {
209
- const environment = await discoverAuthoringEnvironment(project);
210
- for (const pkg of environment.packages) {
211
- const manifest = readManifest(JSON.parse(await readFile(pkg.manifestPath, "utf8")), pkg.name);
212
- const document = manifest.documents.find((entry) => entry.id === id);
213
- if (!document)
214
- continue;
215
- const file = await confinedFile(dirname(pkg.manifestPath), document.path);
216
- const markdown = await readFile(file, "utf8");
217
- if (Buffer.byteLength(markdown) > 512 * 1024)
218
- throw new AuthoringError("environment", "DOCUMENT_TOO_LARGE", "Requested document exceeds the 512 KiB retrieval bound.");
219
- return { ...document, packageName: pkg.name, packageVersion: pkg.version, markdown };
220
- }
221
- throw new AuthoringError("invocation", "DOCUMENT_NOT_FOUND", `No installed documentation topic has id ${id}.`);
222
- }
223
115
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/authoring/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/authoring/environment.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export interface WorkerRequest {
3
3
  readonly modulePath: string;
4
4
  readonly directory: string;
5
5
  readonly kind: "model" | "generator";
6
- readonly params: Readonly<Record<string, unknown>>;
6
+ readonly input: Readonly<Record<string, unknown>>;
7
7
  readonly fontFixtures?: string;
8
8
  readonly export3mf: boolean;
9
9
  readonly metadata: Omit<CapturedRunManifest, "resources" | "parts" | "bounds" | "stats" | "diagnostics" | "dependencies" | "export3mf" | "assets" | "parameters">;
@@ -12,4 +12,4 @@ export interface WorkerRequest {
12
12
  readonly parametersPath?: string;
13
13
  readonly packagesPath?: string;
14
14
  }
15
- //# sourceMappingURL=worker.d.ts.map
15
+ //# sourceMappingURL=execution-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-process.d.ts","sourceRoot":"","sources":["../../src/authoring/execution-process.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CACrB,mBAAmB,EACjB,WAAW,GACX,OAAO,GACP,QAAQ,GACR,OAAO,GACP,aAAa,GACb,cAAc,GACd,WAAW,GACX,QAAQ,GACR,YAAY,CACf,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}
@@ -6,8 +6,6 @@ function program(value) {
6
6
  return isRecord(value) && value.kind === "metamesh-model" && typeof value.generate === "function";
7
7
  }
8
8
  async function execute(request) {
9
- let snapshot;
10
- let dispose;
11
9
  let phase = "execute";
12
10
  try {
13
11
  const entry = await import(pathToFileURL(request.modulePath).href);
@@ -15,7 +13,7 @@ async function execute(request) {
15
13
  throw new AuthoringError("execute", "INVALID_ENTRY", "Author entry is not a module.", 1);
16
14
  let model;
17
15
  let definition;
18
- let parameters = request.params;
16
+ let parameters = request.input;
19
17
  if (request.kind === "generator") {
20
18
  phase = "parameters";
21
19
  if (request.packagesPath === undefined || request.parametersPath === undefined)
@@ -25,13 +23,17 @@ async function execute(request) {
25
23
  definition = packages.parseGeneratorDefinition(entry.definition);
26
24
  const parsed = params
27
25
  .createParamCodec(definition)
28
- .safeParse({ ...params.getDefaultParameters(definition), ...request.params });
26
+ .safeParse({ ...params.getDefaultParameters(definition), ...request.input });
29
27
  if (!parsed.success)
30
28
  return {
31
29
  success: false,
32
30
  phase: "parameters",
33
31
  exitCode: 1,
34
- diagnostics: parsed.issues.map((issue) => ({ ...issue, severity: "error" })),
32
+ diagnostics: parsed.issues.map(({ path, ...issue }) => ({
33
+ ...issue,
34
+ severity: "error",
35
+ ...(path === undefined ? {} : { path }),
36
+ })),
35
37
  };
36
38
  parameters = parsed.data;
37
39
  const runtime = entry.default;
@@ -39,9 +41,9 @@ async function execute(request) {
39
41
  runtime.formatVersion !== packages.GENERATOR_PACKAGE_FORMAT_VERSION ||
40
42
  runtime.generatorId !== definition.id ||
41
43
  runtime.version !== definition.version ||
42
- !program(runtime.generate))
44
+ !program(runtime))
43
45
  throw new AuthoringError("execute", "INVALID_GENERATOR_MODULE", "Default export must be the Generator module envelope matching definition.", 1);
44
- model = runtime.generate;
46
+ model = runtime;
45
47
  }
46
48
  else {
47
49
  if (!program(entry.default))
@@ -66,19 +68,19 @@ async function execute(request) {
66
68
  }
67
69
  }
68
70
  phase = "execute";
69
- const { createModelEngine } = (await import(pathToFileURL(request.enginePath).href));
71
+ const { createModelEngine, export3mf } = (await import(pathToFileURL(request.enginePath).href));
70
72
  const engine = await createModelEngine();
71
- const session = services === undefined
72
- ? engine.createSession(model, {
73
+ const snapshot = services === undefined
74
+ ? engine.run(model, parameters, {
73
75
  limits: request.metadata.policy.limits,
74
76
  })
75
- : engine.createSession(model, {
77
+ : engine.run(model, parameters, {
76
78
  services,
77
79
  limits: request.metadata.policy.limits,
78
80
  });
79
- dispose = () => session.dispose();
80
- snapshot = session.run(parameters);
81
- const exported = request.export3mf ? await engine.export3mf(snapshot.parts) : undefined;
81
+ const exported = request.export3mf
82
+ ? await export3mf(snapshot.parts, { limits: engine.limits })
83
+ : undefined;
82
84
  phase = "artifact";
83
85
  const selectedAssets = definition === undefined
84
86
  ? (loaded?.selections ?? [])
@@ -149,10 +151,6 @@ async function execute(request) {
149
151
  ],
150
152
  };
151
153
  }
152
- finally {
153
- snapshot?.dispose();
154
- dispose?.();
155
- }
156
154
  }
157
155
  const requestFile = process.argv[2];
158
156
  const resultFile = process.argv[3];
@@ -160,4 +158,4 @@ if (requestFile !== undefined && resultFile !== undefined) {
160
158
  const result = await execute(JSON.parse(await readFile(requestFile, "utf8")));
161
159
  await writeFile(resultFile, JSON.stringify(result));
162
160
  }
163
- //# sourceMappingURL=worker.js.map
161
+ //# sourceMappingURL=execution-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-process.js","sourceRoot":"","sources":["../../src/authoring/execution-process.ts"],"names":[],"mappings":"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"}