@skenora/tooling 0.1.2

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 (44) hide show
  1. package/README.md +32 -0
  2. package/bin/skenora-mcp-http.mjs +131 -0
  3. package/bin/skenora-mcp.mjs +50 -0
  4. package/bin/skenora.mjs +388 -0
  5. package/dist/doctor.d.ts +3 -0
  6. package/dist/doctor.d.ts.map +1 -0
  7. package/dist/doctor.js +109 -0
  8. package/dist/doctor.js.map +1 -0
  9. package/dist/examples.d.ts +26 -0
  10. package/dist/examples.d.ts.map +1 -0
  11. package/dist/examples.js +207 -0
  12. package/dist/examples.js.map +1 -0
  13. package/dist/index.d.ts +8 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +7 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/mcp-http.d.ts +16 -0
  18. package/dist/mcp-http.d.ts.map +1 -0
  19. package/dist/mcp-http.js +279 -0
  20. package/dist/mcp-http.js.map +1 -0
  21. package/dist/mcp.d.ts +79 -0
  22. package/dist/mcp.d.ts.map +1 -0
  23. package/dist/mcp.js +817 -0
  24. package/dist/mcp.js.map +1 -0
  25. package/dist/resources.d.ts +24 -0
  26. package/dist/resources.d.ts.map +1 -0
  27. package/dist/resources.js +141 -0
  28. package/dist/resources.js.map +1 -0
  29. package/dist/wgsl.d.ts +42 -0
  30. package/dist/wgsl.d.ts.map +1 -0
  31. package/dist/wgsl.js +133 -0
  32. package/dist/wgsl.js.map +1 -0
  33. package/package.json +53 -0
  34. package/resources/docs/diagnostics.md +16 -0
  35. package/resources/docs/overview.md +26 -0
  36. package/resources/docs/runtime-probe.md +17 -0
  37. package/resources/examples/gallery.json +1818 -0
  38. package/resources/examples/invalid-scene.json +9 -0
  39. package/resources/examples/valid-scene.json +69 -0
  40. package/resources/llms-full.txt +52 -0
  41. package/resources/llms.txt +19 -0
  42. package/resources/manifest.json +97 -0
  43. package/resources/schemas/example-manifest.schema.json +454 -0
  44. package/resources/schemas/scene-check-report.schema.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { SkenoraToolingManifest, SkenoraToolingResourceEntry, SkenoraToolingResourceKind } from "@skenora/contracts";
2
+ export interface SkenoraToolingResource {
3
+ readonly entry: SkenoraToolingResourceEntry;
4
+ readonly text: string;
5
+ }
6
+ export interface SkenoraToolingSearchOptions {
7
+ readonly kind?: SkenoraToolingResourceKind;
8
+ readonly limit?: number;
9
+ }
10
+ export interface SkenoraToolingVerification {
11
+ readonly valid: boolean;
12
+ readonly checked: number;
13
+ readonly failures: readonly Readonly<{
14
+ id: string;
15
+ expected: string;
16
+ actual: string;
17
+ }>[];
18
+ }
19
+ export declare function loadToolingManifest(): Promise<SkenoraToolingManifest>;
20
+ export declare function listToolingResources(kind?: SkenoraToolingResourceKind): Promise<readonly SkenoraToolingResourceEntry[]>;
21
+ export declare function getToolingResource(id: string): Promise<SkenoraToolingResource>;
22
+ export declare function searchToolingResources(query: string, options?: SkenoraToolingSearchOptions): Promise<readonly SkenoraToolingResourceEntry[]>;
23
+ export declare function verifyToolingResources(): Promise<SkenoraToolingVerification>;
24
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC;QACnC,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,EAAE,CAAC;CACN;AAKD,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAKrE;AAED,wBAAsB,oBAAoB,CACxC,IAAI,CAAC,EAAE,0BAA0B,GAChC,OAAO,CAAC,SAAS,2BAA2B,EAAE,CAAC,CAOjD;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,sBAAsB,CAAC,CAWjC;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,SAAS,2BAA2B,EAAE,CAAC,CA6BjD;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAelF"}
@@ -0,0 +1,141 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile } from "node:fs/promises";
3
+ const resourcesRoot = new URL("../resources/", import.meta.url);
4
+ let manifestPromise;
5
+ export function loadToolingManifest() {
6
+ manifestPromise ??= readFile(new URL("manifest.json", resourcesRoot), "utf8")
7
+ .then((text) => JSON.parse(text))
8
+ .then(validateManifest);
9
+ return manifestPromise;
10
+ }
11
+ export async function listToolingResources(kind) {
12
+ const manifest = await loadToolingManifest();
13
+ return Object.freeze(manifest.resources
14
+ .filter((entry) => kind === undefined || entry.kind === kind)
15
+ .map((entry) => Object.freeze({ ...entry })));
16
+ }
17
+ export async function getToolingResource(id) {
18
+ const manifest = await loadToolingManifest();
19
+ const entry = manifest.resources.find((candidate) => candidate.id === id);
20
+ if (!entry)
21
+ throw new Error(`Unknown Skenora tooling resource: ${id}`);
22
+ const text = await readFile(resourceUrl(entry), "utf8");
23
+ const actual = sha256(text);
24
+ if (actual !== entry.sha256)
25
+ throw new Error(`Skenora tooling resource integrity check failed: ${entry.id}`);
26
+ return Object.freeze({ entry: Object.freeze({ ...entry }), text });
27
+ }
28
+ export async function searchToolingResources(query, options = {}) {
29
+ const normalized = query.trim().toLocaleLowerCase();
30
+ const limit = normalizeLimit(options.limit);
31
+ const entries = await listToolingResources(options.kind);
32
+ if (!normalized)
33
+ return entries.slice(0, limit);
34
+ const ranked = await Promise.all(entries.map(async (entry) => {
35
+ const resource = await getToolingResource(entry.id);
36
+ const id = entry.id.toLocaleLowerCase();
37
+ const title = entry.title.toLocaleLowerCase();
38
+ const text = resource.text.toLocaleLowerCase();
39
+ const score = (id === normalized ? 16 : id.includes(normalized) ? 8 : 0) +
40
+ (title.includes(normalized) ? 4 : 0) +
41
+ (text.includes(normalized) ? 1 : 0);
42
+ return { entry, score };
43
+ }));
44
+ return Object.freeze(ranked
45
+ .filter(({ score }) => score > 0)
46
+ .sort((left, right) => right.score - left.score ||
47
+ left.entry.id.localeCompare(right.entry.id))
48
+ .slice(0, limit)
49
+ .map(({ entry }) => entry));
50
+ }
51
+ export async function verifyToolingResources() {
52
+ const entries = await listToolingResources();
53
+ const failures = [];
54
+ for (const entry of entries) {
55
+ const text = await readFile(resourceUrl(entry), "utf8");
56
+ const actual = sha256(text);
57
+ if (actual !== entry.sha256) {
58
+ failures.push({ id: entry.id, expected: entry.sha256, actual });
59
+ }
60
+ }
61
+ return Object.freeze({
62
+ valid: failures.length === 0,
63
+ checked: entries.length,
64
+ failures: Object.freeze(failures.map((failure) => Object.freeze(failure))),
65
+ });
66
+ }
67
+ function resourceUrl(entry) {
68
+ if (entry.path.startsWith("/") ||
69
+ entry.path.includes("..") ||
70
+ entry.path.includes("\\")) {
71
+ throw new Error(`Unsafe tooling resource path: ${entry.path}`);
72
+ }
73
+ return new URL(entry.path, resourcesRoot);
74
+ }
75
+ function validateManifest(input) {
76
+ if (!isRecord(input) || input.schema !== "skenora.tooling-manifest")
77
+ throw new Error("Invalid Skenora tooling manifest schema");
78
+ if (input.version !== 1 || typeof input.packageVersion !== "string")
79
+ throw new Error("Unsupported Skenora tooling manifest version");
80
+ if (!Array.isArray(input.resources))
81
+ throw new Error("Skenora tooling manifest resources must be an array");
82
+ const ids = new Set();
83
+ const resources = input.resources.map((value, index) => {
84
+ if (!isRecord(value))
85
+ throw new Error(`Invalid tooling resource at index ${index}`);
86
+ const id = requireManifestString(value, "id", index);
87
+ const version = requireManifestString(value, "version", index);
88
+ const kind = requireManifestString(value, "kind", index);
89
+ const title = requireManifestString(value, "title", index);
90
+ const path = requireManifestString(value, "path", index);
91
+ const mediaType = requireManifestString(value, "mediaType", index);
92
+ const hash = requireManifestString(value, "sha256", index);
93
+ if (!isResourceKind(kind))
94
+ throw new Error(`Invalid tooling resource kind: ${kind}`);
95
+ if (!/^[a-f0-9]{64}$/u.test(hash))
96
+ throw new Error(`Invalid tooling resource hash: ${id}`);
97
+ if (ids.has(id))
98
+ throw new Error(`Duplicate tooling resource id: ${id}`);
99
+ ids.add(id);
100
+ return Object.freeze({
101
+ id,
102
+ version,
103
+ kind,
104
+ title,
105
+ path,
106
+ mediaType,
107
+ sha256: hash,
108
+ });
109
+ });
110
+ return Object.freeze({
111
+ schema: "skenora.tooling-manifest",
112
+ version: 1,
113
+ packageVersion: input.packageVersion,
114
+ resources: Object.freeze(resources),
115
+ });
116
+ }
117
+ function requireManifestString(value, field, index) {
118
+ const candidate = value[field];
119
+ if (typeof candidate !== "string" || !candidate)
120
+ throw new Error(`Invalid tooling resource ${index}.${field}`);
121
+ return candidate;
122
+ }
123
+ function normalizeLimit(value) {
124
+ if (value === undefined)
125
+ return 20;
126
+ if (!Number.isInteger(value) || value < 1 || value > 100)
127
+ throw new Error("Tooling search limit must be an integer in 1..100");
128
+ return value;
129
+ }
130
+ function sha256(value) {
131
+ const hash = createHash("sha256");
132
+ hash.update(value);
133
+ return hash.digest("hex");
134
+ }
135
+ function isResourceKind(value) {
136
+ return ["documentation", "example", "llms", "schema"].includes(String(value));
137
+ }
138
+ function isRecord(value) {
139
+ return value !== null && typeof value === "object" && !Array.isArray(value);
140
+ }
141
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA2B5C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,eAA4D,CAAC;AAEjE,MAAM,UAAU,mBAAmB;IACjC,eAAe,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC;SAC1E,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;SAC3C,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAiC;IAEjC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ,CAAC,SAAS;SACf,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAU;IAEV,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;QACzB,MAAM,IAAI,KAAK,CACb,oDAAoD,KAAK,CAAC,EAAE,EAAE,CAC/D,CAAC;IACJ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAa,EACb,UAAuC,EAAE;IAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,KAAK,GACT,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM;SACH,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;SAChC,IAAI,CACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAC9C;SACA,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAuD,EAAE,CAAC;IACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAkC;IACrD,IACE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,0BAA0B;QACjE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QACjE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;QACzE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,EAAE;YACF,OAAO;YACP,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,0BAA0B;QAClC,OAAO,EAAE,CAAC;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;KACpC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAwC,EACxC,KAAa,EACb,KAAa;IAEb,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;QAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG;QACtD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
package/dist/wgsl.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ import { type MaterialProgram, type SkenoraDiagnostic } from "@skenora/contracts";
2
+ import { type MaterialProgramWgslArtifact } from "@skenora/procedural/emitters";
3
+ export interface WgslValidationDevice {
4
+ createShaderModule(descriptor: Readonly<{
5
+ code: string;
6
+ label?: string;
7
+ }>): {
8
+ getCompilationInfo(): Promise<{
9
+ readonly messages: readonly Readonly<{
10
+ message: string;
11
+ type: "error" | "warning" | "info";
12
+ lineNum?: number;
13
+ linePos?: number;
14
+ offset?: number;
15
+ length?: number;
16
+ }>[];
17
+ }>;
18
+ };
19
+ }
20
+ export interface MaterialProgramWgslInspectionReport {
21
+ readonly version: 1;
22
+ readonly status: "valid" | "invalid" | "unverified";
23
+ readonly parser: "@vgpu/wgsl@0.3.1";
24
+ readonly artifact?: MaterialProgramWgslArtifact;
25
+ readonly reflection: Readonly<{
26
+ entryPoints: number;
27
+ bindings: number;
28
+ overrides: number;
29
+ structs: readonly string[];
30
+ featuresRequired: readonly string[];
31
+ }>;
32
+ readonly deviceValidation: "passed" | "failed" | "not-run";
33
+ readonly diagnostics: readonly SkenoraDiagnostic[];
34
+ }
35
+ /**
36
+ * Experimental trusted-output inspection. It accepts MaterialProgram only,
37
+ * never authored WGSL, and keeps @vgpu/wgsl outside normal browser entries.
38
+ */
39
+ export declare function inspectMaterialProgramWgsl(program: Readonly<MaterialProgram>, options?: Readonly<{
40
+ device?: WgslValidationDevice;
41
+ }>): Promise<MaterialProgramWgslInspectionReport>;
42
+ //# sourceMappingURL=wgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgsl.d.ts","sourceRoot":"","sources":["../src/wgsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QAC1E,kBAAkB,IAAI,OAAO,CAAC;YAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC;gBACnC,OAAO,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;gBACnC,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC,EAAE,CAAC;SACN,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;KACrC,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAClC,OAAO,GAAE,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAAE,CAAM,GACxD,OAAO,CAAC,mCAAmC,CAAC,CA4J9C"}
package/dist/wgsl.js ADDED
@@ -0,0 +1,133 @@
1
+ import { createSkenoraDiagnostic, finalizeSkenoraDiagnostics, } from "@skenora/contracts";
2
+ import { compileMaterialProgram, MaterialProgramCompilationError, } from "@skenora/procedural";
3
+ import { emitMaterialProgramWgsl, } from "@skenora/procedural/emitters";
4
+ import { reflectSource } from "@vgpu/wgsl/reflect-source";
5
+ /**
6
+ * Experimental trusted-output inspection. It accepts MaterialProgram only,
7
+ * never authored WGSL, and keeps @vgpu/wgsl outside normal browser entries.
8
+ */
9
+ export async function inspectMaterialProgramWgsl(program, options = {}) {
10
+ const diagnostics = [];
11
+ let reflection = {
12
+ entryPoints: 0,
13
+ bindings: 0,
14
+ overrides: 0,
15
+ structs: [],
16
+ featuresRequired: [],
17
+ };
18
+ let artifact;
19
+ try {
20
+ const compiled = compileMaterialProgram(program);
21
+ artifact = emitMaterialProgramWgsl(compiled);
22
+ }
23
+ catch (error) {
24
+ if (error instanceof MaterialProgramCompilationError) {
25
+ for (const issue of error.issues) {
26
+ diagnostics.push(createSkenoraDiagnostic({
27
+ code: "material-program-invalid",
28
+ stage: "compile",
29
+ path: issue.path,
30
+ message: issue.message,
31
+ recoverable: false,
32
+ details: { materialProgramCode: issue.code },
33
+ }));
34
+ }
35
+ }
36
+ else {
37
+ diagnostics.push(createSkenoraDiagnostic({
38
+ code: "wgsl-emission-failed",
39
+ stage: "compile",
40
+ message: error instanceof Error
41
+ ? error.message
42
+ : "Generated WGSL emission failed",
43
+ recoverable: false,
44
+ causeCode: error instanceof Error ? error.name : "UnknownError",
45
+ }));
46
+ }
47
+ return createReport("invalid", undefined, reflection, "not-run", diagnostics);
48
+ }
49
+ try {
50
+ const reflected = reflectSource(artifact.source, "skenora-material-program.wgsl");
51
+ reflection = Object.freeze({
52
+ entryPoints: reflected.entryPoints.length,
53
+ bindings: reflected.bindings.length,
54
+ overrides: reflected.overrides.length,
55
+ structs: Object.freeze(reflected.structs.map((item) => item.name).sort()),
56
+ featuresRequired: Object.freeze([...reflected.featuresRequired].sort()),
57
+ });
58
+ }
59
+ catch (error) {
60
+ diagnostics.push(createSkenoraDiagnostic({
61
+ code: "wgsl-reflection-failed",
62
+ stage: "compile",
63
+ message: error instanceof Error
64
+ ? error.message
65
+ : "@vgpu/wgsl could not reflect generated WGSL",
66
+ recoverable: false,
67
+ causeCode: error instanceof Error ? error.name : "UnknownError",
68
+ }));
69
+ return createReport("invalid", artifact, reflection, "not-run", diagnostics);
70
+ }
71
+ const device = options.device;
72
+ if (!device) {
73
+ diagnostics.push(createSkenoraDiagnostic({
74
+ code: "wgsl-device-validation-not-run",
75
+ severity: "warning",
76
+ stage: "environment",
77
+ message: "Generated WGSL parsed and reflected, but no WebGPU device validated it",
78
+ recoverable: true,
79
+ repair: "Pass an active GPUDevice-compatible validator to inspectMaterialProgramWgsl().",
80
+ }));
81
+ return createReport("unverified", artifact, reflection, "not-run", diagnostics);
82
+ }
83
+ try {
84
+ const module = device.createShaderModule({
85
+ code: artifact.source,
86
+ label: "skenora-material-program-wgsl-inspection",
87
+ });
88
+ const compilation = await module.getCompilationInfo();
89
+ for (const message of compilation.messages) {
90
+ diagnostics.push(createSkenoraDiagnostic({
91
+ code: `wgsl-device-${message.type}`,
92
+ severity: message.type === "error" ? "error" : message.type,
93
+ stage: "compile",
94
+ message: message.message,
95
+ recoverable: false,
96
+ details: {
97
+ ...(message.lineNum === undefined ? {} : { line: message.lineNum }),
98
+ ...(message.linePos === undefined
99
+ ? {}
100
+ : { column: message.linePos }),
101
+ ...(message.offset === undefined ? {} : { offset: message.offset }),
102
+ ...(message.length === undefined ? {} : { length: message.length }),
103
+ },
104
+ }));
105
+ }
106
+ const failed = compilation.messages.some((message) => message.type === "error");
107
+ return createReport(failed ? "invalid" : "valid", artifact, reflection, failed ? "failed" : "passed", diagnostics);
108
+ }
109
+ catch (error) {
110
+ diagnostics.push(createSkenoraDiagnostic({
111
+ code: "wgsl-device-validation-failed",
112
+ stage: "compile",
113
+ message: error instanceof Error
114
+ ? error.message
115
+ : "WebGPU device validation failed",
116
+ recoverable: true,
117
+ causeCode: error instanceof Error ? error.name : "UnknownError",
118
+ }));
119
+ return createReport("invalid", artifact, reflection, "failed", diagnostics);
120
+ }
121
+ }
122
+ function createReport(status, artifact, reflection, deviceValidation, diagnostics) {
123
+ return Object.freeze({
124
+ version: 1,
125
+ status,
126
+ parser: "@vgpu/wgsl@0.3.1",
127
+ ...(artifact === undefined ? {} : { artifact }),
128
+ reflection,
129
+ deviceValidation,
130
+ diagnostics: finalizeSkenoraDiagnostics(diagnostics),
131
+ });
132
+ }
133
+ //# sourceMappingURL=wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgsl.js","sourceRoot":"","sources":["../src/wgsl.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@skenora/tooling",
3
+ "version": "0.1.2",
4
+ "description": "Offline diagnostics, documentation, CLI, and transport-neutral MCP tooling for Skenora.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "files": [
8
+ "bin",
9
+ "dist",
10
+ "resources",
11
+ "README.md"
12
+ ],
13
+ "bin": {
14
+ "skenora": "./bin/skenora.mjs"
15
+ },
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js",
20
+ "default": "./dist/index.js"
21
+ },
22
+ "./mcp": {
23
+ "types": "./dist/mcp.d.ts",
24
+ "import": "./dist/mcp.js",
25
+ "default": "./dist/mcp.js"
26
+ },
27
+ "./mcp/http": {
28
+ "types": "./dist/mcp-http.d.ts",
29
+ "import": "./dist/mcp-http.js",
30
+ "default": "./dist/mcp-http.js"
31
+ },
32
+ "./wgsl": {
33
+ "types": "./dist/wgsl.d.ts",
34
+ "import": "./dist/wgsl.js",
35
+ "default": "./dist/wgsl.js"
36
+ }
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "dependencies": {
42
+ "@vgpu/wgsl": "0.3.1",
43
+ "@skenora/procedural": "0.1.2",
44
+ "@skenora/scene-plan": "0.1.2",
45
+ "@skenora/contracts": "0.1.2"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.json && node ../../scripts/prepare-package-output.mjs dist",
49
+ "typecheck": "tsc -p tsconfig.json --noEmit"
50
+ },
51
+ "main": "./dist/index.js",
52
+ "types": "./dist/index.d.ts"
53
+ }
@@ -0,0 +1,16 @@
1
+ # Diagnostics and repair
2
+
3
+ Use `checkSceneInput(input)` for a pure deterministic report. It accepts native
4
+ `skenora.scene`, `skenora.scene.blueprint`, and `skenora.scene.patch` version 1
5
+ inputs. JSON strings are parsed once; invalid JSON and unsupported schemas are
6
+ reported without throwing.
7
+
8
+ `status: "valid"` means the supplied data passed the checks that were possible
9
+ with the supplied context. A Blueprint with external resources is compiled only
10
+ when resource bindings are available. The report's `summary.compiled` field
11
+ distinguishes structural validation from a complete native-document compile.
12
+
13
+ Diagnostics are deduplicated and sorted by path, stage, severity, code, and
14
+ message. `recoverable` describes whether a caller may repair and retry; it does
15
+ not downgrade an error. `repair` is safe public guidance and never contains
16
+ private host errors, credentials, runtime objects, or stack traces.
@@ -0,0 +1,26 @@
1
+ # Skenora offline tooling
2
+
3
+ Skenora keeps authored truth in `SceneDocumentData`. Babylon objects are a
4
+ disposable runtime projection and must never be serialized back as authored
5
+ truth. Use SceneBlueprint for declarative creation, ScenePatch for targeted
6
+ changes, and `checkSceneInput()` or `skenora check` before execution.
7
+
8
+ The shared diagnostic envelope is versioned and JSON-safe. Every diagnostic
9
+ has a code, severity, stage, message, and optional path, identity, repair, and
10
+ details fields. Consumers should branch on `code`, not parse `message`.
11
+
12
+ Runtime GPU health is separate from static validity. `RuntimeSession.probe()`
13
+ or a renderer facade performs a real render and pixel readback. Only that path
14
+ can return `healthy`; Node-only doctor runs return `unverified`.
15
+
16
+ Public authored material programs remain bounded `MaterialProgram` graphs.
17
+ Raw GLSL, WGSL, Babylon handles, arbitrary URLs, and executable JavaScript are
18
+ not accepted scene data.
19
+
20
+ `skenora mcp` serves the public read-only information tools over stdio;
21
+ `skenora mcp --transport http` serves the same surface on loopback HTTP.
22
+ Applications may inject protected ScenePlan tools for an active Editor, but the
23
+ host must authenticate the caller, resolve an opaque `editorHandle`, authorize
24
+ every call, bind write approval to the canonical plan intent, and require
25
+ revision/idempotency data for writes. Inspection returns a revision-bound,
26
+ paginated safe outline rather than raw resource locators.
@@ -0,0 +1,17 @@
1
+ # Runtime backend snapshot and probe
2
+
3
+ `getBackendSnapshot()` returns an observed, detached snapshot of the active
4
+ Babylon backend: WebGL version, shader language, context state, device feature
5
+ flags and numeric limits, effective quality state, and Skenora capability
6
+ availability. The snapshot does not claim that a frame rendered successfully.
7
+
8
+ `await probe()` renders the active scene and reads one pixel from the GPU. Its
9
+ verdict is:
10
+
11
+ - `healthy`: render and readback both completed;
12
+ - `unhealthy`: an attempted render/readback or an observed backend error failed;
13
+ - `unverified`: no real render could be attempted, such as no active camera.
14
+
15
+ Load a valid SceneDocument before probing. Serialize the returned report
16
+ unchanged and pass it to `skenora doctor --probe-report report.json` when a
17
+ machine-readable environment report is needed outside the browser.