@womp/spark-agent 4.4.0 → 5.0.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 (53) hide show
  1. package/.env.example +6 -0
  2. package/README.md +58 -97
  3. package/dist/bench-camera.d.ts +9 -0
  4. package/dist/bench-camera.js +32 -0
  5. package/dist/bounded-output.js +8 -19
  6. package/dist/capabilities/geometry.d.ts +0 -3
  7. package/dist/capabilities/geometry.js +7 -8
  8. package/dist/capabilities/openscad-instructions.d.ts +1 -1
  9. package/dist/capabilities/openscad-instructions.js +80 -81
  10. package/dist/capabilities/openscad.d.ts +0 -3
  11. package/dist/capabilities/openscad.js +1 -2
  12. package/dist/capabilities/scene.d.ts +4 -11
  13. package/dist/capabilities/scene.js +39 -52
  14. package/dist/generated/geometry-declarations.d.ts +1 -1
  15. package/dist/generated/geometry-declarations.js +1 -1
  16. package/dist/generated/openscad-declarations.d.ts +1 -1
  17. package/dist/generated/openscad-declarations.js +1 -1
  18. package/dist/generated/scene-declarations.d.ts +1 -1
  19. package/dist/generated/scene-declarations.js +1 -1
  20. package/dist/native-executor.js +2 -2
  21. package/dist/openscad.d.ts +1 -2
  22. package/dist/openscad.js +1 -19
  23. package/dist/quickjs-executor.js +1 -1
  24. package/dist/repair-state.d.ts +2 -0
  25. package/dist/repair-state.js +15 -0
  26. package/dist/run-metrics.js +21 -7
  27. package/dist/runtime.d.ts +1 -5
  28. package/dist/runtime.js +8 -14
  29. package/dist/scene-environment.js +1 -1
  30. package/dist/scene-health.d.ts +1 -2
  31. package/dist/scene-health.js +13 -22
  32. package/dist/scene-operations.d.ts +5 -5
  33. package/dist/scene-operations.js +24 -43
  34. package/dist/sdk-geometry-host.d.ts +2 -2
  35. package/dist/sdk-geometry-host.js +44 -61
  36. package/dist/sdk-openscad-host.js +63 -102
  37. package/dist/sdk-scene-health-host.d.ts +2 -1
  38. package/dist/sdk-scene-health-host.js +54 -4
  39. package/dist/sdk-scene-host.d.ts +29 -5
  40. package/dist/sdk-scene-host.js +34 -31
  41. package/dist/sdk-scene-screenshot.d.ts +2 -2
  42. package/dist/sdk-scene-screenshot.js +3 -15
  43. package/dist/server/scene-access.d.ts +4 -0
  44. package/dist/server/scene-access.js +40 -0
  45. package/dist/server/standalone.js +24 -19
  46. package/dist/simple-bench-prompts.d.ts +5 -28
  47. package/dist/simple-bench-prompts.js +2 -1
  48. package/dist/simple-bench.js +11 -23
  49. package/dist/womp-scene-api.d.ts +30 -0
  50. package/dist/womp-scene-api.js +106 -24
  51. package/package.json +139 -139
  52. package/dist/server/scene-initialization.d.ts +0 -3
  53. package/dist/server/scene-initialization.js +0 -44
package/package.json CHANGED
@@ -1,139 +1,139 @@
1
- {
2
- "name": "@womp/spark-agent",
3
- "version": "4.4.0",
4
- "description": "Portable skills-based AI agent with local and durable chat transports for Womp",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "bin": {
9
- "spark-agent": "dist/cli.js",
10
- "simple-bench": "dist/simple-bench-cli.js",
11
- "agent-run": "dist/agent-run-cli.js"
12
- },
13
- "exports": {
14
- "./browser": {
15
- "types": "./dist/browser.d.ts",
16
- "import": "./dist/browser.js",
17
- "default": "./dist/browser.js"
18
- },
19
- "./capabilities": {
20
- "types": "./dist/capabilities.d.ts",
21
- "import": "./dist/capabilities.js",
22
- "default": "./dist/capabilities.js"
23
- },
24
- "./kakapo": {
25
- "types": "./dist/kakapo.d.ts",
26
- "import": "./dist/kakapo.js",
27
- "default": "./dist/kakapo.js"
28
- },
29
- "./geometry": {
30
- "types": "./dist/geometry.d.ts",
31
- "import": "./dist/geometry.js",
32
- "default": "./dist/geometry.js"
33
- },
34
- "./openscad": {
35
- "types": "./dist/openscad.d.ts",
36
- "import": "./dist/openscad.js",
37
- "default": "./dist/openscad.js"
38
- },
39
- "./quickjs": {
40
- "types": "./dist/quickjs-executor.d.ts",
41
- "import": "./dist/quickjs-executor.js",
42
- "default": "./dist/quickjs-executor.js"
43
- },
44
- ".": {
45
- "types": "./dist/index.d.ts",
46
- "import": "./dist/index.js",
47
- "default": "./dist/index.js"
48
- },
49
- "./ui": {
50
- "types": "./dist/ui.d.ts",
51
- "import": "./dist/ui.js",
52
- "default": "./dist/ui.js"
53
- },
54
- "./client": {
55
- "types": "./dist/client.d.ts",
56
- "import": "./dist/client.js",
57
- "default": "./dist/client.js"
58
- },
59
- "./server": {
60
- "types": "./dist/server/index.d.ts",
61
- "import": "./dist/server/index.js",
62
- "default": "./dist/server/index.js"
63
- },
64
- "./express": {
65
- "types": "./dist/server/express.d.ts",
66
- "import": "./dist/server/express.js",
67
- "default": "./dist/server/express.js"
68
- },
69
- "./package.json": "./package.json"
70
- },
71
- "files": [
72
- "dist/**/*.js",
73
- "dist/**/*.d.ts",
74
- "dist/server/fixtures/**/*.json",
75
- "dist/geometry/schemas/**/*.json",
76
- "README.md"
77
- ],
78
- "sideEffects": false,
79
- "engines": {
80
- "node": ">=22.13"
81
- },
82
- "repository": {
83
- "type": "git",
84
- "url": "git+https://github.com/wompxyz/spark-agent.git"
85
- },
86
- "publishConfig": {
87
- "access": "public"
88
- },
89
- "license": "MIT",
90
- "scripts": {
91
- "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
92
- "build": "yarn clean && node scripts/generate-skill-declarations.mjs && tsc -p tsconfig.json && node scripts/copy-fixtures.mjs",
93
- "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p web/tsconfig.json",
94
- "lint": "yarn typecheck",
95
- "dev": "yarn build && concurrently --kill-others \"yarn dev:server\" \"yarn dev:web\"",
96
- "dev:server": "tsx src/cli.ts",
97
- "simple-bench": "tsx src/simple-bench-cli.ts",
98
- "agent-run": "tsx src/agent-run-cli.ts",
99
- "dev:demo-account": "yarn build && concurrently --kill-others \"yarn dev:server --profile demo-account\" \"yarn dev:web\"",
100
- "dev:web": "vite --config web/vite.config.ts",
101
- "start": "node dist/cli.js",
102
- "web:build": "yarn build && tsc --noEmit -p web/tsconfig.json && vite build --config web/vite.config.ts",
103
- "test": "yarn build && tsx --tsconfig tsconfig.json --test test/**/*.test.ts && node --input-type=module -e \"await Promise.all([import('@womp/spark-agent'), import('@womp/spark-agent/ui'), import('@womp/spark-agent/client'), import('@womp/spark-agent/server'), import('@womp/spark-agent/express'), import('@womp/spark-agent/kakapo'), import('@womp/spark-agent/geometry'), import('@womp/spark-agent/openscad')])\"",
104
- "test:live": "tsx --tsconfig tsconfig.json test/womp-scene-api.live.ts",
105
- "prepack": "yarn build"
106
- },
107
- "dependencies": {
108
- "@ai-sdk/anthropic": "4.0.50",
109
- "@ai-sdk/google": "4.0.69",
110
- "@ai-sdk/openai": "4.0.63",
111
- "@jitl/quickjs-wasmfile-release-sync": "0.32.0",
112
- "@womp/flowir": "0.3.0",
113
- "@womp/kakapo-sdk": "0.5.0",
114
- "ai": "7.0.95",
115
- "eventsource-parser": "^3.0.6",
116
- "express": "^5.2.1",
117
- "lodash": "4.18.1",
118
- "quickjs-emscripten-core": "0.32.0",
119
- "zod": "4.5.4"
120
- },
121
- "devDependencies": {
122
- "@ai-sdk/react": "^4.0.77",
123
- "@types/express": "^5.0.5",
124
- "@types/lodash": "4.17.24",
125
- "@types/node": "^24.0.0",
126
- "@types/react": "^19.2.17",
127
- "@types/react-dom": "^19.2.3",
128
- "@vitejs/plugin-react": "^6.0.4",
129
- "concurrently": "^9.2.1",
130
- "lucide-react": "^1.26.0",
131
- "react": "^19.2.8",
132
- "react-dom": "^19.2.8",
133
- "react-markdown": "^10.1.0",
134
- "remark-gfm": "^4.0.1",
135
- "tsx": "^4.23.1",
136
- "typescript": "^5.9.3",
137
- "vite": "^8.1.5"
138
- }
139
- }
1
+ {
2
+ "name": "@womp/spark-agent",
3
+ "version": "5.0.0",
4
+ "description": "Portable skills-based AI agent with local and durable chat transports for Womp",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "spark-agent": "dist/cli.js",
10
+ "simple-bench": "dist/simple-bench-cli.js",
11
+ "agent-run": "dist/agent-run-cli.js"
12
+ },
13
+ "exports": {
14
+ "./browser": {
15
+ "types": "./dist/browser.d.ts",
16
+ "import": "./dist/browser.js",
17
+ "default": "./dist/browser.js"
18
+ },
19
+ "./capabilities": {
20
+ "types": "./dist/capabilities.d.ts",
21
+ "import": "./dist/capabilities.js",
22
+ "default": "./dist/capabilities.js"
23
+ },
24
+ "./kakapo": {
25
+ "types": "./dist/kakapo.d.ts",
26
+ "import": "./dist/kakapo.js",
27
+ "default": "./dist/kakapo.js"
28
+ },
29
+ "./geometry": {
30
+ "types": "./dist/geometry.d.ts",
31
+ "import": "./dist/geometry.js",
32
+ "default": "./dist/geometry.js"
33
+ },
34
+ "./openscad": {
35
+ "types": "./dist/openscad.d.ts",
36
+ "import": "./dist/openscad.js",
37
+ "default": "./dist/openscad.js"
38
+ },
39
+ "./quickjs": {
40
+ "types": "./dist/quickjs-executor.d.ts",
41
+ "import": "./dist/quickjs-executor.js",
42
+ "default": "./dist/quickjs-executor.js"
43
+ },
44
+ ".": {
45
+ "types": "./dist/index.d.ts",
46
+ "import": "./dist/index.js",
47
+ "default": "./dist/index.js"
48
+ },
49
+ "./ui": {
50
+ "types": "./dist/ui.d.ts",
51
+ "import": "./dist/ui.js",
52
+ "default": "./dist/ui.js"
53
+ },
54
+ "./client": {
55
+ "types": "./dist/client.d.ts",
56
+ "import": "./dist/client.js",
57
+ "default": "./dist/client.js"
58
+ },
59
+ "./server": {
60
+ "types": "./dist/server/index.d.ts",
61
+ "import": "./dist/server/index.js",
62
+ "default": "./dist/server/index.js"
63
+ },
64
+ "./express": {
65
+ "types": "./dist/server/express.d.ts",
66
+ "import": "./dist/server/express.js",
67
+ "default": "./dist/server/express.js"
68
+ },
69
+ "./package.json": "./package.json"
70
+ },
71
+ "files": [
72
+ "dist/**/*.js",
73
+ "dist/**/*.d.ts",
74
+ "dist/server/fixtures/**/*.json",
75
+ "dist/geometry/schemas/**/*.json",
76
+ "README.md"
77
+ ],
78
+ "sideEffects": false,
79
+ "engines": {
80
+ "node": ">=22.13"
81
+ },
82
+ "repository": {
83
+ "type": "git",
84
+ "url": "git+https://github.com/wompxyz/spark-agent.git"
85
+ },
86
+ "publishConfig": {
87
+ "access": "public"
88
+ },
89
+ "license": "MIT",
90
+ "scripts": {
91
+ "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
92
+ "build": "yarn clean && node scripts/generate-skill-declarations.mjs && tsc -p tsconfig.json && node scripts/copy-fixtures.mjs",
93
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p web/tsconfig.json",
94
+ "lint": "yarn typecheck",
95
+ "dev": "yarn build && concurrently --kill-others \"yarn dev:server\" \"yarn dev:web\"",
96
+ "dev:server": "tsx src/cli.ts",
97
+ "simple-bench": "tsx src/simple-bench-cli.ts",
98
+ "agent-run": "tsx src/agent-run-cli.ts",
99
+ "dev:demo-account": "yarn build && concurrently --kill-others \"yarn dev:server --profile demo-account\" \"yarn dev:web\"",
100
+ "dev:web": "vite --config web/vite.config.ts",
101
+ "start": "node dist/cli.js",
102
+ "web:build": "yarn build && tsc --noEmit -p web/tsconfig.json && vite build --config web/vite.config.ts",
103
+ "test": "yarn build && tsx --tsconfig tsconfig.json --test test/**/*.test.ts && node --input-type=module -e \"await Promise.all([import('@womp/spark-agent'), import('@womp/spark-agent/ui'), import('@womp/spark-agent/client'), import('@womp/spark-agent/server'), import('@womp/spark-agent/express'), import('@womp/spark-agent/kakapo'), import('@womp/spark-agent/geometry'), import('@womp/spark-agent/openscad')])\"",
104
+ "test:live": "tsx --tsconfig tsconfig.json test/womp-scene-api.live.ts",
105
+ "prepack": "yarn build"
106
+ },
107
+ "dependencies": {
108
+ "@ai-sdk/anthropic": "4.0.50",
109
+ "@ai-sdk/google": "4.0.69",
110
+ "@ai-sdk/openai": "4.0.63",
111
+ "@jitl/quickjs-wasmfile-release-sync": "0.32.0",
112
+ "@womp/flowir": "0.3.0",
113
+ "@womp/kakapo-sdk": "0.7.0",
114
+ "ai": "7.0.95",
115
+ "eventsource-parser": "^3.0.6",
116
+ "express": "^5.2.1",
117
+ "lodash": "4.18.1",
118
+ "quickjs-emscripten-core": "0.32.0",
119
+ "zod": "4.5.4"
120
+ },
121
+ "devDependencies": {
122
+ "@ai-sdk/react": "^4.0.77",
123
+ "@types/express": "^5.0.5",
124
+ "@types/lodash": "4.17.24",
125
+ "@types/node": "^24.0.0",
126
+ "@types/react": "^19.2.17",
127
+ "@types/react-dom": "^19.2.3",
128
+ "@vitejs/plugin-react": "^6.0.4",
129
+ "concurrently": "^9.2.1",
130
+ "lucide-react": "^1.26.0",
131
+ "react": "^19.2.8",
132
+ "react-dom": "^19.2.8",
133
+ "react-markdown": "^10.1.0",
134
+ "remark-gfm": "^4.0.1",
135
+ "tsx": "^4.23.1",
136
+ "typescript": "^5.9.3",
137
+ "vite": "^8.1.5"
138
+ }
139
+ }
@@ -1,3 +0,0 @@
1
- import { type KakapoAPI } from "@womp/kakapo-sdk";
2
- /** Only for the standalone host's direct, atomic native Kakapo connection. */
3
- export declare function initializeStandaloneScene(api: Pick<KakapoAPI, "rpc" | "refreshScene">, signal: AbortSignal): Promise<void>;
@@ -1,44 +0,0 @@
1
- import { KakapoSceneCommitError } from "@womp/kakapo-sdk";
2
- /** Only for the standalone host's direct, atomic native Kakapo connection. */
3
- export async function initializeStandaloneScene(api, signal) {
4
- signal.throwIfAborted();
5
- const response = await api.rpc("scene_state_get");
6
- signal.throwIfAborted();
7
- const snapshot = typeof response === "string" ? JSON.parse(response) : response;
8
- if (snapshot === null || typeof snapshot !== "object" || Array.isArray(snapshot)) {
9
- throw new Error("Kakapo returned an invalid scene snapshot during scene initialization.");
10
- }
11
- const additions = [];
12
- if (snapshot.ext === undefined)
13
- additions.push({ op: "add", path: "/ext", value: {} });
14
- for (const key of ["materials", "shaders"]) {
15
- if (snapshot.storage[key] === undefined) {
16
- additions.push({ op: "add", path: `/storage/${key}`, value: {} });
17
- }
18
- }
19
- if (snapshot.storage.openscad === undefined) {
20
- additions.push({ op: "add", path: "/storage/openscad", value: { scripts: {} } });
21
- }
22
- else if (snapshot.storage.openscad.scripts === undefined) {
23
- additions.push({ op: "add", path: "/storage/openscad/scripts", value: {} });
24
- }
25
- if (additions.length === 0)
26
- return;
27
- // The SDK requires /ext; native resource updates require per-ID patch paths.
28
- // Initialize missing collections so later edits address individual resources.
29
- // The whole-scene test rejects concurrent changes before editing begins.
30
- let result;
31
- try {
32
- result = await api.rpc("scene_state_patch", [JSON.stringify([
33
- { op: "test", path: "", value: snapshot },
34
- ...additions,
35
- ])]);
36
- }
37
- catch (error) {
38
- throw new KakapoSceneCommitError("unknown", error);
39
- }
40
- if (result !== undefined && result !== null && result !== "") {
41
- throw new KakapoSceneCommitError("unknown", new Error(`Scene initialization was not acknowledged: ${JSON.stringify(result)}`));
42
- }
43
- await api.refreshScene();
44
- }