@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.
- package/README.md +32 -0
- package/bin/skenora-mcp-http.mjs +131 -0
- package/bin/skenora-mcp.mjs +50 -0
- package/bin/skenora.mjs +388 -0
- package/dist/doctor.d.ts +3 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +109 -0
- package/dist/doctor.js.map +1 -0
- package/dist/examples.d.ts +26 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +207 -0
- package/dist/examples.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-http.d.ts +16 -0
- package/dist/mcp-http.d.ts.map +1 -0
- package/dist/mcp-http.js +279 -0
- package/dist/mcp-http.js.map +1 -0
- package/dist/mcp.d.ts +79 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +817 -0
- package/dist/mcp.js.map +1 -0
- package/dist/resources.d.ts +24 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +141 -0
- package/dist/resources.js.map +1 -0
- package/dist/wgsl.d.ts +42 -0
- package/dist/wgsl.d.ts.map +1 -0
- package/dist/wgsl.js +133 -0
- package/dist/wgsl.js.map +1 -0
- package/package.json +53 -0
- package/resources/docs/diagnostics.md +16 -0
- package/resources/docs/overview.md +26 -0
- package/resources/docs/runtime-probe.md +17 -0
- package/resources/examples/gallery.json +1818 -0
- package/resources/examples/invalid-scene.json +9 -0
- package/resources/examples/valid-scene.json +69 -0
- package/resources/llms-full.txt +52 -0
- package/resources/llms.txt +19 -0
- package/resources/manifest.json +97 -0
- package/resources/schemas/example-manifest.schema.json +454 -0
- package/resources/schemas/scene-check-report.schema.json +36 -0
package/dist/mcp.js.map
ADDED
|
@@ -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":"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"}
|
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
|
package/dist/wgsl.js.map
ADDED
|
@@ -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.
|