@vib3code/sdk 2.0.1 → 2.0.3-canary.75a3290
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/CHANGELOG.md +36 -0
- package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
- package/DOCS/CLI_ONBOARDING.md +1 -1
- package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
- package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
- package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
- package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
- package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
- package/DOCS/PRODUCT_STRATEGY.md +63 -0
- package/DOCS/README.md +103 -0
- package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
- package/DOCS/ROADMAP.md +111 -0
- package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
- package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
- package/DOCS/STATUS.md +24 -0
- package/DOCS/SYSTEM_INVENTORY.md +33 -30
- package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
- package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
- package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
- package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
- package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
- package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
- package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
- package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +127 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +142 -0
- package/DOCS/dev-tracks/README.md +10 -0
- package/README.md +26 -13
- package/cpp/CMakeLists.txt +236 -0
- package/cpp/bindings/embind.cpp +269 -0
- package/cpp/build.sh +129 -0
- package/cpp/geometry/Crystal.cpp +103 -0
- package/cpp/geometry/Fractal.cpp +136 -0
- package/cpp/geometry/GeometryGenerator.cpp +262 -0
- package/cpp/geometry/KleinBottle.cpp +71 -0
- package/cpp/geometry/Sphere.cpp +134 -0
- package/cpp/geometry/Tesseract.cpp +94 -0
- package/cpp/geometry/Tetrahedron.cpp +83 -0
- package/cpp/geometry/Torus.cpp +65 -0
- package/cpp/geometry/WarpFunctions.cpp +238 -0
- package/cpp/geometry/Wave.cpp +85 -0
- package/cpp/include/vib3_ffi.h +238 -0
- package/cpp/math/Mat4x4.cpp +409 -0
- package/cpp/math/Mat4x4.hpp +209 -0
- package/cpp/math/Projection.cpp +142 -0
- package/cpp/math/Projection.hpp +148 -0
- package/cpp/math/Rotor4D.cpp +322 -0
- package/cpp/math/Rotor4D.hpp +204 -0
- package/cpp/math/Vec4.cpp +303 -0
- package/cpp/math/Vec4.hpp +225 -0
- package/cpp/src/vib3_ffi.cpp +607 -0
- package/cpp/tests/Geometry_test.cpp +213 -0
- package/cpp/tests/Mat4x4_test.cpp +494 -0
- package/cpp/tests/Projection_test.cpp +298 -0
- package/cpp/tests/Rotor4D_test.cpp +423 -0
- package/cpp/tests/Vec4_test.cpp +489 -0
- package/package.json +40 -27
- package/src/agent/index.js +1 -3
- package/src/agent/mcp/MCPServer.js +918 -0
- package/src/agent/mcp/index.js +1 -1
- package/src/agent/mcp/stdio-server.js +264 -0
- package/src/agent/mcp/tools.js +454 -0
- package/src/cli/index.js +374 -44
- package/src/core/CanvasManager.js +97 -204
- package/src/core/ErrorReporter.js +1 -1
- package/src/core/Parameters.js +1 -1
- package/src/core/VIB3Engine.js +93 -4
- package/src/core/VitalitySystem.js +53 -0
- package/src/core/index.js +18 -0
- package/src/core/renderers/FacetedRendererAdapter.js +10 -9
- package/src/core/renderers/HolographicRendererAdapter.js +13 -9
- package/src/core/renderers/QuantumRendererAdapter.js +11 -7
- package/src/creative/AestheticMapper.js +628 -0
- package/src/creative/ChoreographyPlayer.js +481 -0
- package/src/creative/index.js +11 -0
- package/src/export/TradingCardManager.js +3 -4
- package/src/export/index.js +11 -1
- package/src/faceted/FacetedSystem.js +241 -388
- package/src/holograms/HolographicVisualizer.js +29 -12
- package/src/holograms/RealHolographicSystem.js +194 -43
- package/src/math/index.js +7 -7
- package/src/polychora/PolychoraSystem.js +77 -0
- package/src/quantum/QuantumEngine.js +103 -66
- package/src/quantum/QuantumVisualizer.js +7 -2
- package/src/reactivity/index.js +3 -5
- package/src/render/LayerPresetManager.js +372 -0
- package/src/render/LayerReactivityBridge.js +344 -0
- package/src/render/LayerRelationshipGraph.js +610 -0
- package/src/render/MultiCanvasBridge.js +148 -25
- package/src/render/UnifiedRenderBridge.js +3 -0
- package/src/render/index.js +27 -2
- package/src/scene/index.js +4 -4
- package/src/shaders/faceted/faceted.frag.glsl +220 -80
- package/src/shaders/faceted/faceted.frag.wgsl +138 -97
- package/src/shaders/holographic/holographic.frag.glsl +28 -9
- package/src/shaders/holographic/holographic.frag.wgsl +107 -38
- package/src/shaders/quantum/quantum.frag.glsl +1 -0
- package/src/shaders/quantum/quantum.frag.wgsl +1 -1
- package/src/testing/ParallelTestFramework.js +2 -2
- package/src/viewer/GalleryUI.js +17 -0
- package/src/viewer/ViewerPortal.js +2 -2
- package/src/viewer/index.js +1 -1
- package/tools/headless-renderer.js +258 -0
- package/tools/shader-sync-verify.js +8 -4
- package/tools/site-analysis/all-reports.json +32 -0
- package/tools/site-analysis/combined-analysis.md +50 -0
- package/tools/site-analyzer.mjs +779 -0
- package/tools/visual-catalog/capture.js +276 -0
- package/tools/visual-catalog/composite.js +138 -0
- package/types/adaptive-sdk.d.ts +204 -5
- package/types/agent/cli.d.ts +78 -0
- package/types/agent/index.d.ts +18 -0
- package/types/agent/mcp.d.ts +87 -0
- package/types/agent/telemetry.d.ts +190 -0
- package/types/core/VIB3Engine.d.ts +26 -0
- package/types/core/index.d.ts +261 -0
- package/types/creative/AestheticMapper.d.ts +72 -0
- package/types/creative/ChoreographyPlayer.d.ts +96 -0
- package/types/creative/index.d.ts +17 -0
- package/types/export/index.d.ts +243 -0
- package/types/geometry/index.d.ts +164 -0
- package/types/math/index.d.ts +214 -0
- package/types/render/LayerPresetManager.d.ts +78 -0
- package/types/render/LayerReactivityBridge.d.ts +85 -0
- package/types/render/LayerRelationshipGraph.d.ts +174 -0
- package/types/render/index.d.ts +3 -0
- package/types/scene/index.d.ts +204 -0
- package/types/systems/index.d.ts +244 -0
- package/types/variations/index.d.ts +62 -0
- package/types/viewer/index.d.ts +225 -0
- /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
- /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
- /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
- /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
- /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
package/src/agent/mcp/tools.js
CHANGED
|
@@ -395,6 +395,460 @@ export const toolDefinitions = {
|
|
|
395
395
|
type: 'object',
|
|
396
396
|
properties: {}
|
|
397
397
|
}
|
|
398
|
+
},
|
|
399
|
+
|
|
400
|
+
// ===== AGENT-POWER TOOLS (Phase 7 — Agent Harness) =====
|
|
401
|
+
|
|
402
|
+
describe_visual_state: {
|
|
403
|
+
name: 'describe_visual_state',
|
|
404
|
+
description: 'Returns a structured natural-language description of the current visualization state. Useful for multimodal agents to understand what the visualization looks like without a screenshot. Includes system, geometry, color mood, motion character, and complexity assessment.',
|
|
405
|
+
inputSchema: {
|
|
406
|
+
type: 'object',
|
|
407
|
+
properties: {}
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
|
|
411
|
+
batch_set_parameters: {
|
|
412
|
+
name: 'batch_set_parameters',
|
|
413
|
+
description: 'Atomically sets multiple parameters including rotation, visual, and system in one call. Prevents intermediate render states. More efficient than calling set_rotation + set_visual_parameters separately.',
|
|
414
|
+
inputSchema: {
|
|
415
|
+
type: 'object',
|
|
416
|
+
properties: {
|
|
417
|
+
system: {
|
|
418
|
+
type: 'string',
|
|
419
|
+
enum: ['quantum', 'faceted', 'holographic'],
|
|
420
|
+
description: 'Optional: switch system first'
|
|
421
|
+
},
|
|
422
|
+
geometry: {
|
|
423
|
+
type: 'integer',
|
|
424
|
+
minimum: 0,
|
|
425
|
+
maximum: 23,
|
|
426
|
+
description: 'Geometry index'
|
|
427
|
+
},
|
|
428
|
+
rotation: {
|
|
429
|
+
type: 'object',
|
|
430
|
+
description: '6D rotation angles (all optional)',
|
|
431
|
+
properties: {
|
|
432
|
+
XY: { type: 'number', minimum: -6.28, maximum: 6.28 },
|
|
433
|
+
XZ: { type: 'number', minimum: -6.28, maximum: 6.28 },
|
|
434
|
+
YZ: { type: 'number', minimum: -6.28, maximum: 6.28 },
|
|
435
|
+
XW: { type: 'number', minimum: -6.28, maximum: 6.28 },
|
|
436
|
+
YW: { type: 'number', minimum: -6.28, maximum: 6.28 },
|
|
437
|
+
ZW: { type: 'number', minimum: -6.28, maximum: 6.28 }
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
visual: {
|
|
441
|
+
type: 'object',
|
|
442
|
+
description: 'Visual parameters (all optional)',
|
|
443
|
+
properties: {
|
|
444
|
+
hue: { type: 'integer', minimum: 0, maximum: 360 },
|
|
445
|
+
saturation: { type: 'number', minimum: 0, maximum: 1 },
|
|
446
|
+
intensity: { type: 'number', minimum: 0, maximum: 1 },
|
|
447
|
+
speed: { type: 'number', minimum: 0.1, maximum: 3 },
|
|
448
|
+
chaos: { type: 'number', minimum: 0, maximum: 1 },
|
|
449
|
+
morphFactor: { type: 'number', minimum: 0, maximum: 2 },
|
|
450
|
+
gridDensity: { type: 'number', minimum: 4, maximum: 100 },
|
|
451
|
+
dimension: { type: 'number', minimum: 3.0, maximum: 4.5 }
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
preset: {
|
|
455
|
+
type: 'string',
|
|
456
|
+
enum: ['ambient', 'reactive', 'immersive', 'energetic', 'calm', 'cinematic'],
|
|
457
|
+
description: 'Optional: apply behavior preset after setting params'
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
|
|
463
|
+
create_timeline: {
|
|
464
|
+
name: 'create_timeline',
|
|
465
|
+
description: 'Creates a ParameterTimeline animation from a track specification. Supports multi-parameter keyframe animation with per-keyframe easing, BPM sync, and loop modes. Returns timeline ID for playback control.',
|
|
466
|
+
inputSchema: {
|
|
467
|
+
type: 'object',
|
|
468
|
+
properties: {
|
|
469
|
+
name: { type: 'string', description: 'Timeline name' },
|
|
470
|
+
duration_ms: { type: 'integer', minimum: 100, maximum: 600000, description: 'Total duration in milliseconds' },
|
|
471
|
+
bpm: { type: 'number', minimum: 20, maximum: 300, description: 'Optional BPM for beat-sync quantization' },
|
|
472
|
+
loop_mode: {
|
|
473
|
+
type: 'string',
|
|
474
|
+
enum: ['loop', 'bounce', 'once'],
|
|
475
|
+
default: 'once',
|
|
476
|
+
description: 'Playback loop mode'
|
|
477
|
+
},
|
|
478
|
+
tracks: {
|
|
479
|
+
type: 'object',
|
|
480
|
+
description: 'Parameter tracks. Each key is a parameter name, value is array of keyframes [{time, value, easing}]',
|
|
481
|
+
additionalProperties: {
|
|
482
|
+
type: 'array',
|
|
483
|
+
items: {
|
|
484
|
+
type: 'object',
|
|
485
|
+
properties: {
|
|
486
|
+
time: { type: 'number', description: 'Time in ms from start' },
|
|
487
|
+
value: { type: 'number', description: 'Parameter value at this keyframe' },
|
|
488
|
+
easing: {
|
|
489
|
+
type: 'string',
|
|
490
|
+
enum: ['linear', 'easeIn', 'easeOut', 'easeInOut', 'quadIn', 'quadOut', 'cubicIn', 'cubicOut', 'elastic', 'bounce', 'spring', 'overshoot', 'sine', 'exponential'],
|
|
491
|
+
default: 'easeInOut',
|
|
492
|
+
description: 'Easing function for interpolation TO this keyframe'
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
required: ['time', 'value']
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
required: ['duration_ms', 'tracks']
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
|
|
504
|
+
play_transition: {
|
|
505
|
+
name: 'play_transition',
|
|
506
|
+
description: 'Plays a smooth animated transition from current parameter values to target values, or a sequence of transitions. Uses the TransitionAnimator system with configurable easing.',
|
|
507
|
+
inputSchema: {
|
|
508
|
+
type: 'object',
|
|
509
|
+
properties: {
|
|
510
|
+
sequence: {
|
|
511
|
+
type: 'array',
|
|
512
|
+
description: 'Array of transition steps. Each step smoothly animates to target params.',
|
|
513
|
+
items: {
|
|
514
|
+
type: 'object',
|
|
515
|
+
properties: {
|
|
516
|
+
params: {
|
|
517
|
+
type: 'object',
|
|
518
|
+
description: 'Target parameter values (any VIB3+ parameter)',
|
|
519
|
+
additionalProperties: { type: 'number' }
|
|
520
|
+
},
|
|
521
|
+
duration: { type: 'integer', minimum: 50, maximum: 30000, default: 1000, description: 'Step duration in ms' },
|
|
522
|
+
easing: {
|
|
523
|
+
type: 'string',
|
|
524
|
+
enum: ['linear', 'easeIn', 'easeOut', 'easeInOut', 'quadIn', 'quadOut', 'cubicIn', 'cubicOut', 'elastic', 'bounce', 'spring', 'overshoot', 'sine', 'exponential'],
|
|
525
|
+
default: 'easeInOut'
|
|
526
|
+
},
|
|
527
|
+
delay: { type: 'integer', minimum: 0, default: 0, description: 'Delay before this step starts (ms)' }
|
|
528
|
+
},
|
|
529
|
+
required: ['params']
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
},
|
|
533
|
+
required: ['sequence']
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
|
|
537
|
+
apply_color_preset: {
|
|
538
|
+
name: 'apply_color_preset',
|
|
539
|
+
description: 'Applies one of 22 themed color presets that set hue, saturation, intensity, and optionally post-processing to create a cohesive visual theme.',
|
|
540
|
+
inputSchema: {
|
|
541
|
+
type: 'object',
|
|
542
|
+
properties: {
|
|
543
|
+
preset: {
|
|
544
|
+
type: 'string',
|
|
545
|
+
enum: ['Ocean', 'Lava', 'Neon', 'Monochrome', 'Sunset', 'Aurora', 'Cyberpunk', 'Forest', 'Desert', 'Galaxy', 'Ice', 'Fire', 'Toxic', 'Royal', 'Pastel', 'Retro', 'Midnight', 'Tropical', 'Ethereal', 'Volcanic', 'Holographic', 'Vaporwave'],
|
|
546
|
+
description: 'Color preset name'
|
|
547
|
+
}
|
|
548
|
+
},
|
|
549
|
+
required: ['preset']
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
|
|
553
|
+
set_post_processing: {
|
|
554
|
+
name: 'set_post_processing',
|
|
555
|
+
description: 'Configures post-processing effects pipeline. Supports 14 composable effects and 7 preset chains. Effects are applied in order.',
|
|
556
|
+
inputSchema: {
|
|
557
|
+
type: 'object',
|
|
558
|
+
properties: {
|
|
559
|
+
effects: {
|
|
560
|
+
type: 'array',
|
|
561
|
+
description: 'Ordered list of effects to apply',
|
|
562
|
+
items: {
|
|
563
|
+
type: 'object',
|
|
564
|
+
properties: {
|
|
565
|
+
name: {
|
|
566
|
+
type: 'string',
|
|
567
|
+
enum: ['bloom', 'chromaticAberration', 'vignette', 'filmGrain', 'scanlines', 'pixelate', 'blur', 'sharpen', 'colorGrade', 'noise', 'distort', 'glitch', 'rgbShift', 'feedback'],
|
|
568
|
+
description: 'Effect name'
|
|
569
|
+
},
|
|
570
|
+
intensity: { type: 'number', minimum: 0, maximum: 1, default: 0.5, description: 'Effect strength' },
|
|
571
|
+
enabled: { type: 'boolean', default: true }
|
|
572
|
+
},
|
|
573
|
+
required: ['name']
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
chain_preset: {
|
|
577
|
+
type: 'string',
|
|
578
|
+
description: 'Alternative: apply a named preset chain instead of individual effects'
|
|
579
|
+
},
|
|
580
|
+
clear_first: {
|
|
581
|
+
type: 'boolean',
|
|
582
|
+
default: true,
|
|
583
|
+
description: 'Clear existing effects before applying new ones'
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
|
|
589
|
+
create_choreography: {
|
|
590
|
+
name: 'create_choreography',
|
|
591
|
+
description: 'Creates a multi-scene choreography specification with system transitions, timelines, audio config, and post-processing per scene. This is the most powerful agent tool — it allows designing complete synchronized visual performances that would be extremely difficult to create manually.',
|
|
592
|
+
inputSchema: {
|
|
593
|
+
type: 'object',
|
|
594
|
+
properties: {
|
|
595
|
+
name: { type: 'string', description: 'Choreography name' },
|
|
596
|
+
duration_ms: { type: 'integer', minimum: 1000, description: 'Total choreography duration' },
|
|
597
|
+
bpm: { type: 'number', minimum: 20, maximum: 300, description: 'Optional BPM for beat sync' },
|
|
598
|
+
scenes: {
|
|
599
|
+
type: 'array',
|
|
600
|
+
description: 'Ordered scene definitions. Each scene has a time range, system/geometry, and parameter timeline.',
|
|
601
|
+
items: {
|
|
602
|
+
type: 'object',
|
|
603
|
+
properties: {
|
|
604
|
+
time_start: { type: 'integer', minimum: 0, description: 'Scene start time (ms)' },
|
|
605
|
+
time_end: { type: 'integer', description: 'Scene end time (ms)' },
|
|
606
|
+
system: { type: 'string', enum: ['quantum', 'faceted', 'holographic'] },
|
|
607
|
+
geometry: { type: 'integer', minimum: 0, maximum: 23 },
|
|
608
|
+
transition_in: {
|
|
609
|
+
type: 'object',
|
|
610
|
+
description: 'How this scene enters (crossfade, cut, etc.)',
|
|
611
|
+
properties: {
|
|
612
|
+
type: { type: 'string', enum: ['cut', 'crossfade', 'wipe', 'dissolve', 'zoom'] },
|
|
613
|
+
duration: { type: 'integer', minimum: 0 }
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
tracks: {
|
|
617
|
+
type: 'object',
|
|
618
|
+
description: 'Parameter timeline tracks for this scene (same format as create_timeline)',
|
|
619
|
+
additionalProperties: {
|
|
620
|
+
type: 'array',
|
|
621
|
+
items: {
|
|
622
|
+
type: 'object',
|
|
623
|
+
properties: {
|
|
624
|
+
time: { type: 'number' },
|
|
625
|
+
value: { type: 'number' },
|
|
626
|
+
easing: { type: 'string' }
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
},
|
|
631
|
+
color_preset: { type: 'string', description: 'Color preset for this scene' },
|
|
632
|
+
post_processing: {
|
|
633
|
+
type: 'array',
|
|
634
|
+
items: { type: 'string' },
|
|
635
|
+
description: 'Post-processing effects active during this scene'
|
|
636
|
+
},
|
|
637
|
+
audio: {
|
|
638
|
+
type: 'object',
|
|
639
|
+
description: 'Audio reactivity config for this scene'
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
required: ['time_start', 'time_end', 'system']
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
required: ['name', 'duration_ms', 'scenes']
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
|
|
650
|
+
// ===== VISUAL FEEDBACK TOOLS (Phase 7.1 — Agent Harness) =====
|
|
651
|
+
|
|
652
|
+
capture_screenshot: {
|
|
653
|
+
name: 'capture_screenshot',
|
|
654
|
+
description: 'Captures the current visualization as a base64-encoded PNG image by compositing all 5 canvas layers. Only works in browser context. Returns image data that multimodal agents can analyze for visual feedback.',
|
|
655
|
+
inputSchema: {
|
|
656
|
+
type: 'object',
|
|
657
|
+
properties: {
|
|
658
|
+
width: { type: 'integer', minimum: 64, maximum: 2048, default: 512, description: 'Output image width' },
|
|
659
|
+
height: { type: 'integer', minimum: 64, maximum: 2048, default: 512, description: 'Output image height' },
|
|
660
|
+
format: {
|
|
661
|
+
type: 'string',
|
|
662
|
+
enum: ['png', 'jpeg', 'webp'],
|
|
663
|
+
default: 'png',
|
|
664
|
+
description: 'Image format'
|
|
665
|
+
},
|
|
666
|
+
quality: { type: 'number', minimum: 0.1, maximum: 1.0, default: 0.92, description: 'JPEG/WebP quality' }
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
|
|
671
|
+
design_from_description: {
|
|
672
|
+
name: 'design_from_description',
|
|
673
|
+
description: 'Maps a natural-language aesthetic description to VIB3+ parameters. Understands emotions (serene, energetic, mysterious), styles (minimal, intricate, organic), colors (ocean, neon, cyberpunk), motion (flowing, pulsing, hypnotic), depth (deep, flat), and geometry (spherical, fractal, crystal). Combine multiple words for precise targeting.',
|
|
674
|
+
inputSchema: {
|
|
675
|
+
type: 'object',
|
|
676
|
+
properties: {
|
|
677
|
+
description: {
|
|
678
|
+
type: 'string',
|
|
679
|
+
description: 'Space-separated aesthetic descriptors. Examples: "serene ocean deep minimal", "energetic neon geometric", "mysterious galaxy intricate hypnotic"'
|
|
680
|
+
},
|
|
681
|
+
apply: {
|
|
682
|
+
type: 'boolean',
|
|
683
|
+
default: false,
|
|
684
|
+
description: 'If true, immediately apply the resolved parameters to the engine'
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
required: ['description']
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
|
|
691
|
+
get_aesthetic_vocabulary: {
|
|
692
|
+
name: 'get_aesthetic_vocabulary',
|
|
693
|
+
description: 'Returns the full vocabulary of aesthetic descriptor words organized by category (emotions, styles, colors, motion, depth, geometry). Use this to discover what descriptions the system understands.',
|
|
694
|
+
inputSchema: {
|
|
695
|
+
type: 'object',
|
|
696
|
+
properties: {}
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
|
|
700
|
+
play_choreography: {
|
|
701
|
+
name: 'play_choreography',
|
|
702
|
+
description: 'Loads and plays a choreography specification on the engine. Requires a choreography spec (from create_choreography) or a stored choreography ID. Controls: play, pause, stop, seek.',
|
|
703
|
+
inputSchema: {
|
|
704
|
+
type: 'object',
|
|
705
|
+
properties: {
|
|
706
|
+
choreography: {
|
|
707
|
+
type: 'object',
|
|
708
|
+
description: 'Full choreography spec (from create_choreography output). Provide this OR choreography_id.'
|
|
709
|
+
},
|
|
710
|
+
choreography_id: {
|
|
711
|
+
type: 'string',
|
|
712
|
+
description: 'ID of a previously created choreography (from create_choreography)'
|
|
713
|
+
},
|
|
714
|
+
action: {
|
|
715
|
+
type: 'string',
|
|
716
|
+
enum: ['play', 'pause', 'stop', 'seek'],
|
|
717
|
+
default: 'play',
|
|
718
|
+
description: 'Playback action'
|
|
719
|
+
},
|
|
720
|
+
seek_percent: {
|
|
721
|
+
type: 'number',
|
|
722
|
+
minimum: 0,
|
|
723
|
+
maximum: 1,
|
|
724
|
+
description: 'For seek action: position as 0-1 percentage'
|
|
725
|
+
},
|
|
726
|
+
loop: {
|
|
727
|
+
type: 'boolean',
|
|
728
|
+
default: false,
|
|
729
|
+
description: 'Loop the choreography'
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
|
|
735
|
+
control_timeline: {
|
|
736
|
+
name: 'control_timeline',
|
|
737
|
+
description: 'Controls playback of a previously created timeline (from create_timeline). Actions: play, pause, stop, seek, set_speed.',
|
|
738
|
+
inputSchema: {
|
|
739
|
+
type: 'object',
|
|
740
|
+
properties: {
|
|
741
|
+
timeline_id: {
|
|
742
|
+
type: 'string',
|
|
743
|
+
description: 'ID of the timeline to control'
|
|
744
|
+
},
|
|
745
|
+
action: {
|
|
746
|
+
type: 'string',
|
|
747
|
+
enum: ['play', 'pause', 'stop', 'seek', 'set_speed'],
|
|
748
|
+
description: 'Playback control action'
|
|
749
|
+
},
|
|
750
|
+
seek_percent: {
|
|
751
|
+
type: 'number',
|
|
752
|
+
minimum: 0,
|
|
753
|
+
maximum: 1,
|
|
754
|
+
description: 'For seek: position as 0-1 percentage'
|
|
755
|
+
},
|
|
756
|
+
speed: {
|
|
757
|
+
type: 'number',
|
|
758
|
+
minimum: 0.1,
|
|
759
|
+
maximum: 10,
|
|
760
|
+
description: 'For set_speed: playback speed multiplier'
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
required: ['timeline_id', 'action']
|
|
764
|
+
}
|
|
765
|
+
},
|
|
766
|
+
|
|
767
|
+
// Layer Relationship Tools (Phase 8)
|
|
768
|
+
set_layer_profile: {
|
|
769
|
+
name: 'set_layer_profile',
|
|
770
|
+
description: 'Loads a named layer relationship profile that configures how the 5 canvas layers relate to each other. Profiles: holographic (default), symmetry, chord, storm, legacy (original static behavior).',
|
|
771
|
+
inputSchema: {
|
|
772
|
+
type: 'object',
|
|
773
|
+
properties: {
|
|
774
|
+
profile: {
|
|
775
|
+
type: 'string',
|
|
776
|
+
enum: ['holographic', 'symmetry', 'chord', 'storm', 'legacy'],
|
|
777
|
+
description: 'Named profile to load'
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
required: ['profile']
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
|
|
784
|
+
set_layer_relationship: {
|
|
785
|
+
name: 'set_layer_relationship',
|
|
786
|
+
description: 'Sets the relationship type for a specific layer relative to the keystone. Available relationships: echo (attenuated follower), mirror (inverted rotation/hue), complement (color opposite), harmonic (musical intervals), reactive (amplifies changes), chase (delayed follower).',
|
|
787
|
+
inputSchema: {
|
|
788
|
+
type: 'object',
|
|
789
|
+
properties: {
|
|
790
|
+
layer: {
|
|
791
|
+
type: 'string',
|
|
792
|
+
enum: ['background', 'shadow', 'content', 'highlight', 'accent'],
|
|
793
|
+
description: 'Target layer name'
|
|
794
|
+
},
|
|
795
|
+
relationship: {
|
|
796
|
+
type: 'string',
|
|
797
|
+
enum: ['echo', 'mirror', 'complement', 'harmonic', 'reactive', 'chase'],
|
|
798
|
+
description: 'Relationship preset name'
|
|
799
|
+
},
|
|
800
|
+
config: {
|
|
801
|
+
type: 'object',
|
|
802
|
+
description: 'Optional config overrides for the relationship (e.g., { opacity: 0.5, gain: 3 })'
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
required: ['layer', 'relationship']
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
|
|
809
|
+
set_layer_keystone: {
|
|
810
|
+
name: 'set_layer_keystone',
|
|
811
|
+
description: 'Changes which layer acts as the keystone (driver) for the layer relationship graph. Other layers derive their parameters from the keystone through relationship functions.',
|
|
812
|
+
inputSchema: {
|
|
813
|
+
type: 'object',
|
|
814
|
+
properties: {
|
|
815
|
+
layer: {
|
|
816
|
+
type: 'string',
|
|
817
|
+
enum: ['background', 'shadow', 'content', 'highlight', 'accent'],
|
|
818
|
+
description: 'Layer to designate as keystone'
|
|
819
|
+
}
|
|
820
|
+
},
|
|
821
|
+
required: ['layer']
|
|
822
|
+
}
|
|
823
|
+
},
|
|
824
|
+
|
|
825
|
+
get_layer_config: {
|
|
826
|
+
name: 'get_layer_config',
|
|
827
|
+
description: 'Returns the current layer relationship configuration including keystone, profile, and per-layer relationships with their config parameters.',
|
|
828
|
+
inputSchema: {
|
|
829
|
+
type: 'object',
|
|
830
|
+
properties: {}
|
|
831
|
+
}
|
|
832
|
+
},
|
|
833
|
+
|
|
834
|
+
tune_layer_relationship: {
|
|
835
|
+
name: 'tune_layer_relationship',
|
|
836
|
+
description: 'Hot-patches a layer relationship config without replacing the full graph. Merges provided config values into the existing relationship (e.g., increase reactive gain, shift harmonic hue angle).',
|
|
837
|
+
inputSchema: {
|
|
838
|
+
type: 'object',
|
|
839
|
+
properties: {
|
|
840
|
+
layer: {
|
|
841
|
+
type: 'string',
|
|
842
|
+
enum: ['background', 'shadow', 'content', 'highlight', 'accent'],
|
|
843
|
+
description: 'Layer to tune'
|
|
844
|
+
},
|
|
845
|
+
config: {
|
|
846
|
+
type: 'object',
|
|
847
|
+
description: 'Config values to merge (e.g., { opacity: 0.6, gain: 3.0, hueAngle: 120 })'
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
required: ['layer', 'config']
|
|
851
|
+
}
|
|
398
852
|
}
|
|
399
853
|
};
|
|
400
854
|
|