@womp/spark-agent 5.6.1 → 5.7.1

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 (43) hide show
  1. package/README.md +424 -421
  2. package/dist/agent-run.d.ts +1 -1
  3. package/dist/agent.d.ts +2 -0
  4. package/dist/agent.js +3 -1
  5. package/dist/capabilities/geometry.js +14 -14
  6. package/dist/capabilities/materials.js +14 -14
  7. package/dist/capabilities/openscad-instructions.js +77 -77
  8. package/dist/capabilities/operations.js +28 -28
  9. package/dist/capabilities/scene.js +81 -81
  10. package/dist/capabilities/wompify.js +10 -10
  11. package/dist/client.d.ts +7 -0
  12. package/dist/client.js +14 -0
  13. package/dist/geometry/schemas/backend-schema.json +3393 -3393
  14. package/dist/geometry/schemas/flowir-dialect.json +1023 -1023
  15. package/dist/geometry.js +6 -6
  16. package/dist/goals.d.ts +43 -0
  17. package/dist/goals.js +37 -0
  18. package/dist/materials/recipes.js +266 -266
  19. package/dist/materials/reference.js +94 -94
  20. package/dist/materials/structure.js +10 -10
  21. package/dist/materials/surface-recipes.js +6 -6
  22. package/dist/prompt.js +74 -74
  23. package/dist/server/executor.d.ts +1 -1
  24. package/dist/server/executor.js +2 -0
  25. package/dist/server/express.js +18 -0
  26. package/dist/server/fixtures/materials/matte-blue.json +14 -14
  27. package/dist/server/fixtures/materials/polished-copper.json +14 -14
  28. package/dist/server/goal-evaluator.d.ts +29 -0
  29. package/dist/server/goal-evaluator.js +55 -0
  30. package/dist/server/index.d.ts +4 -0
  31. package/dist/server/index.js +4 -0
  32. package/dist/server/service.d.ts +17 -0
  33. package/dist/server/service.js +204 -5
  34. package/dist/server/sqlite-store.d.ts +2 -0
  35. package/dist/server/sqlite-store.js +45 -38
  36. package/dist/server/store.d.ts +2 -0
  37. package/dist/server/store.js +12 -3
  38. package/dist/server/types.d.ts +6 -0
  39. package/dist/ui.d.ts +7 -3
  40. package/dist/ui.js +3 -1
  41. package/dist/wompify.d.ts +11 -0
  42. package/dist/wompify.js +11 -2
  43. package/package.json +140 -140
package/dist/ui.d.ts CHANGED
@@ -3,6 +3,7 @@ export { sparkErrorDiagnostics, sparkErrorDiagnosticsSchema, type SparkErrorDiag
3
3
  import type { InferUIMessageChunk, UIMessage } from "ai";
4
4
  import type { SceneScreenshotOptions } from "./capabilities/scene.js";
5
5
  import { z } from "zod";
6
+ export type { SparkGoal, SparkGoalCommand } from "./goals.js";
6
7
  import type { ExecutionReceipt, SparkSkill } from "./capabilities.js";
7
8
  export { DEFAULT_MODEL_ID, getSparkModel, REASONING_EFFORT_LABELS, resolveReasoningEffort, SPARK_MODELS, } from "./models.js";
8
9
  export type { ModelProvider, ReasoningEffort, SparkModel } from "./models.js";
@@ -19,6 +20,7 @@ export type SparkArtifact = {
19
20
  };
20
21
  export type SparkMessageMetadata = {
21
22
  createdAt: string;
23
+ goalContinuation?: boolean;
22
24
  completedAt?: string;
23
25
  durationMs?: number;
24
26
  runId?: string;
@@ -150,14 +152,15 @@ export declare const sparkArtifactSchema: z.ZodObject<{
150
152
  }, z.core.$strip>;
151
153
  export declare const sparkMessageMetadataSchema: z.ZodObject<{
152
154
  createdAt: z.ZodString;
155
+ goalContinuation: z.ZodOptional<z.ZodBoolean>;
153
156
  completedAt: z.ZodOptional<z.ZodString>;
154
157
  durationMs: z.ZodOptional<z.ZodNumber>;
155
158
  runId: z.ZodOptional<z.ZodString>;
156
159
  runStatus: z.ZodOptional<z.ZodEnum<{
160
+ completed: "completed";
157
161
  queued: "queued";
158
162
  running: "running";
159
163
  requires_action: "requires_action";
160
- completed: "completed";
161
164
  failed: "failed";
162
165
  cancelled: "cancelled";
163
166
  incomplete: "incomplete";
@@ -249,10 +252,10 @@ export declare const sparkDataPartSchemas: {
249
252
  readonly "run-status": z.ZodObject<{
250
253
  runId: z.ZodString;
251
254
  status: z.ZodEnum<{
255
+ completed: "completed";
252
256
  queued: "queued";
253
257
  running: "running";
254
258
  requires_action: "requires_action";
255
- completed: "completed";
256
259
  failed: "failed";
257
260
  cancelled: "cancelled";
258
261
  incomplete: "incomplete";
@@ -319,4 +322,5 @@ export declare const sparkDataPartSchemas: {
319
322
  usage: z.ZodOptional<z.ZodUnknown>;
320
323
  }, z.core.$strip>;
321
324
  };
322
- export { parseWompifyCommand, WOMPIFY_PRESETS, wompifyPrompt, type WompifyRequest } from "./wompify.js";
325
+ export { parseWompifyCommand, WOMPIFY_PRESETS, wompifyPrompt, wompifyContext, wompifyContextSchema, type WompifyRequest, type WompifyContext } from "./wompify.js";
326
+ export { parseSparkGoalCommand, DEFAULT_GOAL_CREDITS } from "./goals.js";
package/dist/ui.js CHANGED
@@ -43,6 +43,7 @@ export const sparkArtifactSchema = z.object({
43
43
  });
44
44
  export const sparkMessageMetadataSchema = z.object({
45
45
  createdAt: z.string().datetime(),
46
+ goalContinuation: z.boolean().optional(),
46
47
  completedAt: z.string().datetime().optional(),
47
48
  durationMs: z.number().nonnegative().optional(),
48
49
  runId: z.string().optional(),
@@ -79,4 +80,5 @@ export const sparkDataPartSchemas = {
79
80
  usage: z.unknown().optional(),
80
81
  }),
81
82
  };
82
- export { parseWompifyCommand, WOMPIFY_PRESETS, wompifyPrompt } from "./wompify.js";
83
+ export { parseWompifyCommand, WOMPIFY_PRESETS, wompifyPrompt, wompifyContext, wompifyContextSchema } from "./wompify.js";
84
+ export { parseSparkGoalCommand, DEFAULT_GOAL_CREDITS } from "./goals.js";
package/dist/wompify.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  export declare const WOMPIFY_PRESETS: {
2
3
  readonly simple: {
3
4
  readonly label: "Simple";
@@ -15,6 +16,16 @@ export declare const WOMPIFY_PRESETS: {
15
16
  export type WompifyRequest = {
16
17
  preset: keyof typeof WOMPIFY_PRESETS;
17
18
  };
19
+ export declare const wompifyContextSchema: z.ZodObject<{
20
+ referenceNamePrefix: z.ZodString;
21
+ preset: z.ZodEnum<{
22
+ simple: "simple";
23
+ high: "high";
24
+ ultra: "ultra";
25
+ }>;
26
+ }, z.core.$strip>;
27
+ export type WompifyContext = z.infer<typeof wompifyContextSchema>;
28
+ export declare function wompifyContext(context?: WompifyContext): string | undefined;
18
29
  export declare function wompifyPrompt(preset: WompifyRequest["preset"], referenceName: string, note?: string): string;
19
30
  export declare function parseWompifyCommand(text: string): {
20
31
  preset: WompifyRequest["preset"];
package/dist/wompify.js CHANGED
@@ -1,11 +1,20 @@
1
+ import { z } from "zod";
1
2
  export const WOMPIFY_PRESETS = {
2
3
  simple: { label: "Simple", instructions: "Prioritize the main forms, proportions, silhouettes and colors, with a compact editable construction." },
3
4
  high: { label: "High res", instructions: "Refine both the main forms and smaller characteristic shapes, checking each region from multiple views." },
4
5
  ultra: { label: "Ultra", instructions: "Target the closest practical geometric match, including subtle contours and small modeled details, with thorough close-up comparisons." },
5
6
  };
7
+ export const wompifyContextSchema = z.object({
8
+ referenceNamePrefix: z.string().trim().min(1).max(200),
9
+ preset: z.enum(["simple", "high", "ultra"]),
10
+ });
11
+ export function wompifyContext(context) {
12
+ if (!context)
13
+ return undefined;
14
+ return `Use the mesh-wompify skill for reference name prefix ${JSON.stringify(context.referenceNamePrefix)} at tier ${WOMPIFY_PRESETS[context.preset].label}. Stop if that skill is unavailable.`;
15
+ }
6
16
  export function wompifyPrompt(preset, referenceName, note = "") {
7
- return `Wompify ${JSON.stringify(referenceName)} using the mesh-wompify skill; stop if that skill is unavailable.
8
- Selected tier: ${WOMPIFY_PRESETS[preset].label}.${note.trim() ? `\nUser request: ${note.trim()}` : ""}`;
17
+ return `Wompify ${JSON.stringify(referenceName)} at tier ${WOMPIFY_PRESETS[preset].label}.${note.trim() ? `\n${note.trim()}` : ""}`;
9
18
  }
10
19
  export function parseWompifyCommand(text) {
11
20
  const match = /^\/wompify (simple|high|ultra)(?:\n([\s\S]*))?$/u.exec(text.trim());
package/package.json CHANGED
@@ -1,140 +1,140 @@
1
- {
2
- "name": "@womp/spark-agent",
3
- "version": "5.6.1",
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
- "release:pack": "node scripts/npm-release.mjs pack"
107
- },
108
- "dependencies": {
109
- "@ai-sdk/anthropic": "4.0.50",
110
- "@ai-sdk/google": "4.0.69",
111
- "@ai-sdk/openai": "4.0.63",
112
- "@jitl/quickjs-wasmfile-release-sync": "0.32.0",
113
- "@womp/flowir": "0.3.0",
114
- "@womp/kakapo-sdk": "0.7.3",
115
- "ai": "7.0.95",
116
- "eventsource-parser": "^3.0.6",
117
- "express": "^5.2.1",
118
- "lodash": "4.18.1",
119
- "quickjs-emscripten-core": "0.32.0",
120
- "zod": "4.5.4"
121
- },
122
- "devDependencies": {
123
- "@ai-sdk/react": "^4.0.77",
124
- "@types/express": "^5.0.5",
125
- "@types/lodash": "4.17.24",
126
- "@types/node": "^24.0.0",
127
- "@types/react": "^19.2.17",
128
- "@types/react-dom": "^19.2.3",
129
- "@vitejs/plugin-react": "^6.0.4",
130
- "concurrently": "^9.2.1",
131
- "lucide-react": "^1.26.0",
132
- "react": "^19.2.8",
133
- "react-dom": "^19.2.8",
134
- "react-markdown": "^10.1.0",
135
- "remark-gfm": "^4.0.1",
136
- "tsx": "^4.23.1",
137
- "typescript": "^5.9.3",
138
- "vite": "^8.1.5"
139
- }
140
- }
1
+ {
2
+ "name": "@womp/spark-agent",
3
+ "version": "5.7.1",
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
+ "release:pack": "node scripts/npm-release.mjs pack"
107
+ },
108
+ "dependencies": {
109
+ "@ai-sdk/anthropic": "4.0.50",
110
+ "@ai-sdk/google": "4.0.69",
111
+ "@ai-sdk/openai": "4.0.63",
112
+ "@jitl/quickjs-wasmfile-release-sync": "0.32.0",
113
+ "@womp/flowir": "0.3.0",
114
+ "@womp/kakapo-sdk": "0.7.3",
115
+ "ai": "7.0.95",
116
+ "eventsource-parser": "^3.0.6",
117
+ "express": "^5.2.1",
118
+ "lodash": "4.18.1",
119
+ "quickjs-emscripten-core": "0.32.0",
120
+ "zod": "4.5.4"
121
+ },
122
+ "devDependencies": {
123
+ "@ai-sdk/react": "^4.0.77",
124
+ "@types/express": "^5.0.5",
125
+ "@types/lodash": "4.17.24",
126
+ "@types/node": "^24.0.0",
127
+ "@types/react": "^19.2.17",
128
+ "@types/react-dom": "^19.2.3",
129
+ "@vitejs/plugin-react": "^6.0.4",
130
+ "concurrently": "^9.2.1",
131
+ "lucide-react": "^1.26.0",
132
+ "react": "^19.2.8",
133
+ "react-dom": "^19.2.8",
134
+ "react-markdown": "^10.1.0",
135
+ "remark-gfm": "^4.0.1",
136
+ "tsx": "^4.23.1",
137
+ "typescript": "^5.9.3",
138
+ "vite": "^8.1.5"
139
+ }
140
+ }