@inneranimalmedia/agentsam-sdk 2.3.0 → 2.4.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.
- package/examples/cad/blender-box-with-hole.recipe.json +71 -0
- package/package.json +3 -1
- package/packages/identity/package.json +1 -1
- package/protocol/cad/blender-recipe.schema.json +92 -0
- package/protocol/capabilities/manifest.json +76 -0
- package/services/cad/blender/adapter.py +603 -0
- package/src/cli.js +9 -0
- package/src/commands/cad.js +138 -0
- package/src/lib/cad/blender.js +340 -0
- package/src/lib/cad/index.js +15 -0
- package/test/blender-cad.test.mjs +146 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"units": {
|
|
4
|
+
"system": "METRIC",
|
|
5
|
+
"scale_length": 0.001,
|
|
6
|
+
"length_unit": "MILLIMETERS"
|
|
7
|
+
},
|
|
8
|
+
"operations": [
|
|
9
|
+
{
|
|
10
|
+
"op": "clear_scene"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"op": "add",
|
|
14
|
+
"primitive": "cube",
|
|
15
|
+
"name": "Plate",
|
|
16
|
+
"size": 2,
|
|
17
|
+
"scale": [40, 25, 2]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"op": "bevel",
|
|
21
|
+
"object": "Plate",
|
|
22
|
+
"width": 0.08,
|
|
23
|
+
"segments": 3,
|
|
24
|
+
"apply": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"op": "add",
|
|
28
|
+
"primitive": "cylinder",
|
|
29
|
+
"name": "CenterHole",
|
|
30
|
+
"vertices": 64,
|
|
31
|
+
"radius": 6,
|
|
32
|
+
"depth": 10
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"op": "boolean",
|
|
36
|
+
"object": "Plate",
|
|
37
|
+
"with": "CenterHole",
|
|
38
|
+
"operation": "DIFFERENCE",
|
|
39
|
+
"apply": true,
|
|
40
|
+
"delete_operand": true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"op": "material",
|
|
44
|
+
"name": "AgentSam Blue",
|
|
45
|
+
"base_color": [0.08, 0.2, 0.8, 1.0],
|
|
46
|
+
"metallic": 0.15,
|
|
47
|
+
"roughness": 0.35
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"op": "assign_material",
|
|
51
|
+
"object": "Plate",
|
|
52
|
+
"material": "AgentSam Blue"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"op": "add_camera",
|
|
56
|
+
"name": "Preview Camera",
|
|
57
|
+
"location": [110, -110, 85],
|
|
58
|
+
"rotation": [1.0472, 0, 0.7854],
|
|
59
|
+
"lens": 55,
|
|
60
|
+
"active": true
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"op": "add_light",
|
|
64
|
+
"name": "Key Light",
|
|
65
|
+
"type": "AREA",
|
|
66
|
+
"location": [60, -60, 100],
|
|
67
|
+
"energy": 1200,
|
|
68
|
+
"size": 60
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inneranimalmedia/agentsam-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Portable AgentSam SDK and CLI kits for local scaffolding, repository intelligence, incremental indexing, identity adapters, and verified dependency maintenance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"./identity/auth-portal/preview": "./packages/identity/scripts/preview-auth-portal.mjs",
|
|
45
45
|
"./package.json": "./package.json",
|
|
46
46
|
"./security": "./src/security/index.js",
|
|
47
|
+
"./cad": "./src/lib/cad/index.js",
|
|
47
48
|
"./cad-docker": "./src/lib/cad-docker.js"
|
|
48
49
|
},
|
|
49
50
|
"bin": {
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
"services/knowledge/package.json",
|
|
65
66
|
"services/knowledge/package-lock.json",
|
|
66
67
|
"services/cad/server.py",
|
|
68
|
+
"services/cad/blender",
|
|
67
69
|
"bin",
|
|
68
70
|
"README.md",
|
|
69
71
|
"LICENSE",
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.inneranimalmedia.com/agentsam/cad/blender-recipe.schema.json",
|
|
4
|
+
"title": "AgentSam Blender modeling recipe",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "operations"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"units": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"properties": {
|
|
14
|
+
"system": { "enum": ["NONE", "METRIC", "IMPERIAL"] },
|
|
15
|
+
"scale_length": { "type": "number", "exclusiveMinimum": 0 },
|
|
16
|
+
"length_unit": { "type": "string", "minLength": 1 }
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"operations": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"minItems": 1,
|
|
22
|
+
"maxItems": 256,
|
|
23
|
+
"items": { "$ref": "#/$defs/operation" }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"$defs": {
|
|
27
|
+
"vec3": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"prefixItems": [{ "type": "number" }, { "type": "number" }, { "type": "number" }],
|
|
30
|
+
"items": false,
|
|
31
|
+
"minItems": 3,
|
|
32
|
+
"maxItems": 3
|
|
33
|
+
},
|
|
34
|
+
"vec4": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"prefixItems": [{ "type": "number" }, { "type": "number" }, { "type": "number" }, { "type": "number" }],
|
|
37
|
+
"items": false,
|
|
38
|
+
"minItems": 4,
|
|
39
|
+
"maxItems": 4
|
|
40
|
+
},
|
|
41
|
+
"operation": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"required": ["op"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"op": {
|
|
46
|
+
"enum": ["clear_scene", "add", "transform", "duplicate", "delete", "join", "bevel", "solidify", "array", "mirror", "boolean", "material", "assign_material", "add_camera", "add_light"]
|
|
47
|
+
},
|
|
48
|
+
"primitive": { "enum": ["cube", "uv_sphere", "ico_sphere", "cylinder", "cone", "plane", "torus"] },
|
|
49
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
50
|
+
"object": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
51
|
+
"with": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
52
|
+
"objects": { "type": "array", "minItems": 2, "maxItems": 128, "items": { "type": "string", "minLength": 1, "maxLength": 160 } },
|
|
53
|
+
"location": { "$ref": "#/$defs/vec3" },
|
|
54
|
+
"rotation": { "$ref": "#/$defs/vec3" },
|
|
55
|
+
"scale": { "$ref": "#/$defs/vec3" },
|
|
56
|
+
"size": { "type": "number" },
|
|
57
|
+
"radius": { "type": "number" },
|
|
58
|
+
"radius1": { "type": "number" },
|
|
59
|
+
"radius2": { "type": "number" },
|
|
60
|
+
"depth": { "type": "number" },
|
|
61
|
+
"segments": { "type": "integer" },
|
|
62
|
+
"rings": { "type": "integer" },
|
|
63
|
+
"vertices": { "type": "integer" },
|
|
64
|
+
"subdivisions": { "type": "integer" },
|
|
65
|
+
"major_segments": { "type": "integer" },
|
|
66
|
+
"minor_segments": { "type": "integer" },
|
|
67
|
+
"major_radius": { "type": "number" },
|
|
68
|
+
"minor_radius": { "type": "number" },
|
|
69
|
+
"width": { "type": "number" },
|
|
70
|
+
"thickness": { "type": "number" },
|
|
71
|
+
"offset": { "type": "number" },
|
|
72
|
+
"count": { "type": "integer" },
|
|
73
|
+
"relative_offset": { "$ref": "#/$defs/vec3" },
|
|
74
|
+
"axes": { "type": "string", "pattern": "^[XYZxyz]+$" },
|
|
75
|
+
"operation": { "enum": ["UNION", "DIFFERENCE", "INTERSECT"] },
|
|
76
|
+
"apply": { "type": "boolean" },
|
|
77
|
+
"delete_operand": { "type": "boolean" },
|
|
78
|
+
"limit_method": { "enum": ["NONE", "ANGLE", "WEIGHT", "VGROUP"] },
|
|
79
|
+
"material": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
80
|
+
"base_color": { "$ref": "#/$defs/vec4" },
|
|
81
|
+
"metallic": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
82
|
+
"roughness": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
83
|
+
"clear": { "type": "boolean" },
|
|
84
|
+
"active": { "type": "boolean" },
|
|
85
|
+
"lens": { "type": "number" },
|
|
86
|
+
"type": { "enum": ["POINT", "SUN", "SPOT", "AREA"] },
|
|
87
|
+
"energy": { "type": "number", "minimum": 0 },
|
|
88
|
+
"color": { "$ref": "#/$defs/vec3" }
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -174,6 +174,82 @@
|
|
|
174
174
|
"model_required": false,
|
|
175
175
|
"side_effects": "network+filesystem",
|
|
176
176
|
"status": "stable"
|
|
177
|
+
},
|
|
178
|
+
"blender.status": {
|
|
179
|
+
"id": "blender.status",
|
|
180
|
+
"kind": "capability",
|
|
181
|
+
"version": 1,
|
|
182
|
+
"domain": "cad",
|
|
183
|
+
"runtime": "node+blender",
|
|
184
|
+
"package": "@inneranimalmedia/agentsam-sdk/cad",
|
|
185
|
+
"export": "blenderStatus",
|
|
186
|
+
"cli": "agentsam cad blender status --json",
|
|
187
|
+
"description": "Discover an already-installed native Blender runtime and report its executable and version.",
|
|
188
|
+
"deterministic": true,
|
|
189
|
+
"model_required": false,
|
|
190
|
+
"side_effects": "none",
|
|
191
|
+
"status": "experimental"
|
|
192
|
+
},
|
|
193
|
+
"blender.inspect": {
|
|
194
|
+
"id": "blender.inspect",
|
|
195
|
+
"kind": "capability",
|
|
196
|
+
"version": 1,
|
|
197
|
+
"domain": "cad",
|
|
198
|
+
"runtime": "node+blender",
|
|
199
|
+
"package": "@inneranimalmedia/agentsam-sdk/cad",
|
|
200
|
+
"export": "blenderInspect",
|
|
201
|
+
"cli": "agentsam cad blender inspect <model.blend> --json",
|
|
202
|
+
"description": "Inspect a Blender scene headlessly without saving or mutating the source file.",
|
|
203
|
+
"deterministic": true,
|
|
204
|
+
"model_required": false,
|
|
205
|
+
"side_effects": "none",
|
|
206
|
+
"status": "experimental"
|
|
207
|
+
},
|
|
208
|
+
"blender.build": {
|
|
209
|
+
"id": "blender.build",
|
|
210
|
+
"kind": "capability",
|
|
211
|
+
"version": 1,
|
|
212
|
+
"domain": "cad",
|
|
213
|
+
"runtime": "node+blender",
|
|
214
|
+
"package": "@inneranimalmedia/agentsam-sdk/cad",
|
|
215
|
+
"export": "blenderBuild",
|
|
216
|
+
"cli": "agentsam cad blender build <recipe.json> --out <model.blend> --json",
|
|
217
|
+
"description": "Create or modify Blender geometry through a bounded declarative modeling recipe without arbitrary Python execution.",
|
|
218
|
+
"deterministic": false,
|
|
219
|
+
"model_required": false,
|
|
220
|
+
"side_effects": "artifact-write",
|
|
221
|
+
"input_schema": "protocol/cad/blender-recipe.schema.json",
|
|
222
|
+
"status": "experimental"
|
|
223
|
+
},
|
|
224
|
+
"blender.render_preview": {
|
|
225
|
+
"id": "blender.render_preview",
|
|
226
|
+
"kind": "capability",
|
|
227
|
+
"version": 1,
|
|
228
|
+
"domain": "cad",
|
|
229
|
+
"runtime": "node+blender",
|
|
230
|
+
"package": "@inneranimalmedia/agentsam-sdk/cad",
|
|
231
|
+
"export": "blenderRenderPreview",
|
|
232
|
+
"cli": "agentsam cad blender render-preview <model.blend> --out <preview.png> --json",
|
|
233
|
+
"description": "Render a bounded preview from an existing Blender scene and return a content hash receipt.",
|
|
234
|
+
"deterministic": false,
|
|
235
|
+
"model_required": false,
|
|
236
|
+
"side_effects": "artifact-write",
|
|
237
|
+
"status": "experimental"
|
|
238
|
+
},
|
|
239
|
+
"blender.export": {
|
|
240
|
+
"id": "blender.export",
|
|
241
|
+
"kind": "capability",
|
|
242
|
+
"version": 1,
|
|
243
|
+
"domain": "cad",
|
|
244
|
+
"runtime": "node+blender",
|
|
245
|
+
"package": "@inneranimalmedia/agentsam-sdk/cad",
|
|
246
|
+
"export": "blenderExport",
|
|
247
|
+
"cli": "agentsam cad blender export <model.blend> --format <glb|stl|obj> --out <artifact> --json",
|
|
248
|
+
"description": "Export selected Blender scene content to GLB, STL, or OBJ with versioned SHA-256 artifact evidence.",
|
|
249
|
+
"deterministic": false,
|
|
250
|
+
"model_required": false,
|
|
251
|
+
"side_effects": "artifact-write",
|
|
252
|
+
"status": "experimental"
|
|
177
253
|
}
|
|
178
254
|
}
|
|
179
255
|
}
|