@nexart/codemode-sdk 1.8.4 → 1.10.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 (38) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +120 -1
  3. package/dist/cjs/browser.cjs +1 -1
  4. package/dist/cjs/browser.js +1 -1
  5. package/dist/cjs/core.cjs +406 -1
  6. package/dist/cjs/core.js +397 -2
  7. package/dist/cjs/node.cjs +1 -1
  8. package/dist/cjs/node.js +1 -1
  9. package/dist/esm/browser.cjs +1 -1
  10. package/dist/esm/browser.js +1 -1
  11. package/dist/esm/core.cjs +406 -1
  12. package/dist/esm/core.js +397 -2
  13. package/dist/esm/node.cjs +1 -1
  14. package/dist/esm/node.js +1 -1
  15. package/dist/types/sdk/codemode/attestation.d.ts +24 -0
  16. package/dist/types/sdk/codemode/attestation.d.ts.map +1 -0
  17. package/dist/types/sdk/codemode/canonicalJson.d.ts +16 -0
  18. package/dist/types/sdk/codemode/canonicalJson.d.ts.map +1 -0
  19. package/dist/types/sdk/codemode/cerProtocol.d.ts +40 -0
  20. package/dist/types/sdk/codemode/cerProtocol.d.ts.map +1 -0
  21. package/dist/types/sdk/codemode/core-index.d.ts +9 -1
  22. package/dist/types/sdk/codemode/core-index.d.ts.map +1 -1
  23. package/dist/types/sdk/codemode/entry/browser.d.ts +1 -1
  24. package/dist/types/sdk/codemode/entry/browser.d.ts.map +1 -1
  25. package/dist/types/sdk/codemode/nodeReceipt.d.ts +65 -0
  26. package/dist/types/sdk/codemode/nodeReceipt.d.ts.map +1 -0
  27. package/dist/types/sdk/codemode/runtime.d.ts +1 -1
  28. package/dist/types/sdk/codemode/runtime.d.ts.map +1 -1
  29. package/dist/types/sdk/codemode/types.d.ts +96 -0
  30. package/dist/types/sdk/codemode/types.d.ts.map +1 -1
  31. package/dist/types/sdk/codemode/verifyDetailed.d.ts +25 -0
  32. package/dist/types/sdk/codemode/verifyDetailed.d.ts.map +1 -0
  33. package/dist/types/sdk/codemode/version.d.ts +2 -2
  34. package/dist/types/sdk/codemode/version.d.ts.map +1 -1
  35. package/examples/sketch-minimal.js +27 -0
  36. package/examples/sketch-vars.js +59 -0
  37. package/examples/sketch.js +24 -0
  38. package/package.json +8 -2
@@ -149,6 +149,102 @@ export interface ExecuteCodeModeResult {
149
149
  frames?: ImageData[];
150
150
  metadata: ProtocolMetadata;
151
151
  }
152
+ /**
153
+ * ─────────────────────────────────────────────────────────────────────────────
154
+ * Verification Reason Codes (v1.9.0)
155
+ * ─────────────────────────────────────────────────────────────────────────────
156
+ *
157
+ * Stable, string-valued reason codes returned by all Code Mode verification
158
+ * functions. Additive-only: existing codes will never be renamed or removed.
159
+ */
160
+ export declare const CodeVerifyCode: {
161
+ readonly OK: "OK";
162
+ readonly CERTIFICATE_HASH_MISMATCH: "CERTIFICATE_HASH_MISMATCH";
163
+ readonly SNAPSHOT_HASH_MISMATCH: "SNAPSHOT_HASH_MISMATCH";
164
+ readonly RENDER_HASH_MISMATCH: "RENDER_HASH_MISMATCH";
165
+ readonly INVALID_SHA256_FORMAT: "INVALID_SHA256_FORMAT";
166
+ readonly CANONICALIZATION_ERROR: "CANONICALIZATION_ERROR";
167
+ readonly SCHEMA_ERROR: "SCHEMA_ERROR";
168
+ readonly NODE_RECEIPT_MISSING: "NODE_RECEIPT_MISSING";
169
+ readonly NODE_RECEIPT_KEY_NOT_FOUND: "NODE_RECEIPT_KEY_NOT_FOUND";
170
+ readonly NODE_RECEIPT_INVALID_SIGNATURE: "NODE_RECEIPT_INVALID_SIGNATURE";
171
+ readonly NODE_RECEIPT_KEY_FORMAT_UNSUPPORTED: "NODE_RECEIPT_KEY_FORMAT_UNSUPPORTED";
172
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
173
+ };
174
+ export type CodeVerifyCode = typeof CodeVerifyCode[keyof typeof CodeVerifyCode];
175
+ /**
176
+ * Verification result returned by Code Mode verification functions.
177
+ * `ok` — true on success
178
+ * `code` — stable machine-readable reason code (CodeVerifyCode)
179
+ * `details` — optional human-readable detail lines
180
+ */
181
+ export interface CodeVerificationResult {
182
+ ok: boolean;
183
+ code: CodeVerifyCode;
184
+ details?: string[];
185
+ }
186
+ /**
187
+ * ─────────────────────────────────────────────────────────────────────────────
188
+ * Signed Attestation Receipt — Code Mode (v1.9.0)
189
+ * ─────────────────────────────────────────────────────────────────────────────
190
+ *
191
+ * Payload signed by the attestation node over a Code Mode snapshot bundle.
192
+ * The signature is Ed25519 over the canonical JSON bytes of this object.
193
+ */
194
+ export interface SignedAttestationReceipt {
195
+ receiptVersion: 'attestation.receipt.v1';
196
+ attestationId: string;
197
+ attestedAt: string;
198
+ nodeId: string;
199
+ attestorKeyId: string;
200
+ nodeRuntimeHash: string;
201
+ certificateHash: string;
202
+ protocolVersion: string;
203
+ [key: string]: unknown;
204
+ }
205
+ /**
206
+ * Node Keys Document
207
+ * Fetched from /.well-known/nexart-node.json on the attestation node.
208
+ */
209
+ export interface NodeKeysDocument {
210
+ nodeId: string;
211
+ activeKid?: string;
212
+ keys: Array<{
213
+ kid: string;
214
+ alg: 'Ed25519';
215
+ use: 'sig';
216
+ publicKeyJwk?: {
217
+ kty: 'OKP';
218
+ crv: 'Ed25519';
219
+ x: string;
220
+ };
221
+ publicKey?: string;
222
+ publicKeySpkiB64?: string;
223
+ createdAt?: string;
224
+ }>;
225
+ }
226
+ /**
227
+ * Result of node receipt signature verification (Code Mode variant).
228
+ * Alias of CodeVerificationResult — kept as a distinct named type for
229
+ * clarity in function signatures.
230
+ */
231
+ export type NodeReceiptVerifyResult = CodeVerificationResult;
232
+ /**
233
+ * Normalised attestation receipt extracted from any Code Mode bundle format.
234
+ * Returned by getAttestationReceipt().
235
+ */
236
+ export interface CodeAttestationReceipt {
237
+ attestationId: string;
238
+ attestedAt: string;
239
+ nodeId?: string;
240
+ attestorKeyId?: string;
241
+ nodeRuntimeHash?: string;
242
+ certificateHash?: string;
243
+ protocolVersion?: string;
244
+ receipt?: SignedAttestationReceipt;
245
+ signature?: string;
246
+ [key: string]: unknown;
247
+ }
152
248
  /**
153
249
  * Builder Manifest (v1.6.0)
154
250
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * verifyCodeModeSnapshotDetailed — protocol-aligned Code Mode snapshot verifier
3
+ *
4
+ * Returns a CerVerificationResult conforming to the CER Protocol spec.
5
+ *
6
+ * bundleIntegrity — PASS if snapshot structure is valid AND (when outputHash
7
+ * is provided) the output hash matches the snapshot value.
8
+ * nodeSignature — always SKIPPED (Code Mode snapshots carry no node signature)
9
+ * receiptConsistency — always SKIPPED (same reason)
10
+ */
11
+ import { type CerVerificationResult } from './cerProtocol';
12
+ export interface VerifyCodeModeOptions {
13
+ /** Actual output hash (sha256:...) to compare against snapshot.outputHash. */
14
+ outputHash?: string;
15
+ /** Actual code hash to compare against snapshot.codeHash. */
16
+ codeHash?: string;
17
+ }
18
+ /**
19
+ * Verify a Code Mode snapshot and return a structured CerVerificationResult.
20
+ *
21
+ * @param snapshot - The NexArtSnapshotV1 object to verify
22
+ * @param options - Optional actual hashes to compare against the snapshot
23
+ */
24
+ export declare function verifyCodeModeSnapshotDetailed(snapshot: unknown, options?: VerifyCodeModeOptions): CerVerificationResult;
25
+ //# sourceMappingURL=verifyDetailed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyDetailed.d.ts","sourceRoot":"","sources":["../../../../verifyDetailed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAA6B,KAAK,qBAAqB,EAAqC,MAAM,eAAe,CAAC;AAEzH,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,qBAA0B,GAClC,qBAAqB,CAuCvB"}
@@ -8,11 +8,11 @@
8
8
  * See package.json for the canonical npm version.
9
9
  */
10
10
  /** SDK version - must match package.json version */
11
- export declare const SDK_VERSION = "1.8.4";
11
+ export declare const SDK_VERSION = "1.10.0";
12
12
  /** Protocol version - defines runtime semantics and determinism guarantees */
13
13
  export declare const PROTOCOL_VERSION = "1.2.0";
14
14
  /** Protocol phase - phase 3 = stable, production-ready */
15
15
  export declare const PROTOCOL_PHASE = 3;
16
16
  /** Combined version string for display */
17
- export declare const VERSION_STRING = "v1.8.4 (Protocol v1.2.0)";
17
+ export declare const VERSION_STRING = "v1.10.0 (Protocol v1.2.0)";
18
18
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,oDAAoD;AACpD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,0DAA0D;AAC1D,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,0CAA0C;AAC1C,eAAO,MAAM,cAAc,6BAAoD,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,oDAAoD;AACpD,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,0DAA0D;AAC1D,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,0CAA0C;AAC1C,eAAO,MAAM,cAAc,8BAAoD,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Minimal NexArt Code Mode Sketch
3
+ *
4
+ * A simple sketch demonstrating basic canvas operations.
5
+ * No randomness - produces identical output every run.
6
+ *
7
+ * Canonical size: 1950x2400 (enforced by canonical renderer)
8
+ */
9
+
10
+ createCanvas(1950, 2400);
11
+ background(20, 20, 30);
12
+
13
+ noStroke();
14
+
15
+ fill(255, 100, 100);
16
+ ellipse(width / 2, height / 3, 600, 600);
17
+
18
+ fill(100, 255, 100);
19
+ ellipse(width / 3, height * 2 / 3, 400, 400);
20
+
21
+ fill(100, 100, 255);
22
+ ellipse(width * 2 / 3, height * 2 / 3, 400, 400);
23
+
24
+ stroke(255);
25
+ strokeWeight(4);
26
+ noFill();
27
+ rect(100, 100, width - 200, height - 200, 50);
@@ -0,0 +1,59 @@
1
+ /**
2
+ * VAR + Random Sketch - Demonstrates Determinism
3
+ *
4
+ * This sketch uses VAR parameters and random() to show that
5
+ * NexArt Code Mode produces identical output for the same seed.
6
+ *
7
+ * VAR[0]: Number of circles (0-100 maps to 10-50)
8
+ * VAR[1]: Circle size multiplier (0-100 maps to 0.5-2.0)
9
+ * VAR[2]: Color hue shift (0-100 maps to 0-360)
10
+ *
11
+ * Canonical size: 1950x2400 (enforced by canonical renderer)
12
+ *
13
+ * Usage:
14
+ * nexart run sketch-vars.js --seed 12345 --vars 50,75,25
15
+ */
16
+
17
+ createCanvas(1950, 2400);
18
+ background(10, 10, 20);
19
+
20
+ const numCircles = Math.floor(map(VAR[0], 0, 100, 10, 50));
21
+ const sizeMultiplier = map(VAR[1], 0, 100, 0.5, 2.0);
22
+ const hueShift = map(VAR[2], 0, 100, 0, 360);
23
+
24
+ colorMode(HSB, 360, 100, 100, 100);
25
+
26
+ noStroke();
27
+
28
+ for (let i = 0; i < numCircles; i++) {
29
+ const x = random(100, width - 100);
30
+ const y = random(100, height - 100);
31
+ const baseSize = random(50, 200) * sizeMultiplier;
32
+ const hue = (random(360) + hueShift) % 360;
33
+ const sat = random(60, 100);
34
+ const bright = random(70, 100);
35
+ const alpha = random(40, 80);
36
+
37
+ fill(hue, sat, bright, alpha);
38
+ ellipse(x, y, baseSize, baseSize);
39
+ }
40
+
41
+ stroke(0, 0, 100, 50);
42
+ strokeWeight(2);
43
+ noFill();
44
+
45
+ for (let i = 0; i < 20; i++) {
46
+ const x1 = random(width);
47
+ const y1 = random(height);
48
+ const x2 = random(width);
49
+ const y2 = random(height);
50
+ line(x1, y1, x2, y2);
51
+ }
52
+
53
+ colorMode(RGB, 255);
54
+ fill(255);
55
+ noStroke();
56
+ textSize(48);
57
+ textAlign(CENTER, TOP);
58
+ text(`Seed: ${SEED}`, width / 2, 50);
59
+ text(`VAR: [${VAR[0]}, ${VAR[1]}, ${VAR[2]}]`, width / 2, 120);
@@ -0,0 +1,24 @@
1
+ function setup() {
2
+ const brightness = map(VAR[0], 0, 100, 20, 245);
3
+ background(brightness);
4
+
5
+ const diameter = map(VAR[1], 0, 100, 200, 1400);
6
+
7
+ // Deterministic palette choice (no random dependency)
8
+ const paletteIndex = floor(map(VAR[2], 0, 100, 0, 2.9999));
9
+
10
+ const palettes = [
11
+ { main: [255, 100, 120], accent: [100, 200, 255] },
12
+ { main: [100, 220, 180], accent: [255, 180, 100] },
13
+ { main: [180, 120, 255], accent: [255, 220, 100] }
14
+ ];
15
+ const palette = palettes[paletteIndex];
16
+
17
+ noStroke();
18
+
19
+ fill(palette.main[0], palette.main[1], palette.main[2]);
20
+ ellipse(width / 2, height / 2, diameter, diameter);
21
+
22
+ fill(palette.accent[0], palette.accent[1], palette.accent[2]);
23
+ ellipse(width / 2, height / 2, diameter * 0.4, diameter * 0.4);
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexart/codemode-sdk",
3
- "version": "1.8.4",
3
+ "version": "1.10.0",
4
4
  "description": "NexArt Code Mode SDK - Deterministic, reproducible, verifiable generative art runtime. Agent-first design for AI coding assistants.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/browser.cjs",
@@ -43,7 +43,8 @@
43
43
  "build:types": "tsc -p tsconfig.types.json",
44
44
  "build:esm": "tsup --config tsup.config.ts --format esm",
45
45
  "build:cjs": "tsup --config tsup.config.ts --format cjs",
46
- "test": "npx tsx smoke-test.ts",
46
+ "test": "npx tsx smoke-test.ts && npx tsx tests/attestation.test.ts",
47
+ "test:attestation": "npx tsx tests/attestation.test.ts",
47
48
  "test:node": "node scripts/smoke-node.mjs && node scripts/smoke-node.cjs",
48
49
  "example:basic": "npx tsx examples/basic.ts",
49
50
  "example:verify": "npx tsx examples/verify.ts",
@@ -82,7 +83,12 @@
82
83
  "publishConfig": {
83
84
  "access": "public"
84
85
  },
86
+ "dependencies": {
87
+ "@noble/ed25519": "^3.0.0",
88
+ "@noble/hashes": "^1.7.0"
89
+ },
85
90
  "devDependencies": {
91
+ "@types/node": "^20.0.0",
86
92
  "tsup": "^8.0.0",
87
93
  "typescript": "^5.0.0"
88
94
  }