project-graph-mcp 2.3.1 → 2.3.2

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 (54) hide show
  1. package/package.json +1 -1
  2. package/vendor/symbiote-node/engine/AgentUICommands.js +100 -0
  3. package/vendor/symbiote-node/engine/Executor.js +371 -0
  4. package/vendor/symbiote-node/engine/Graph.js +314 -0
  5. package/vendor/symbiote-node/engine/GraphServer.js +353 -0
  6. package/vendor/symbiote-node/engine/HandlerLoader.js +145 -0
  7. package/vendor/symbiote-node/engine/History.js +83 -0
  8. package/vendor/symbiote-node/engine/Lifecycle.js +118 -0
  9. package/vendor/symbiote-node/engine/Persistence.js +84 -0
  10. package/vendor/symbiote-node/engine/Registry.js +264 -0
  11. package/vendor/symbiote-node/engine/SocketTypes.js +79 -0
  12. package/vendor/symbiote-node/engine/cli.js +404 -0
  13. package/vendor/symbiote-node/engine/index.js +56 -0
  14. package/vendor/symbiote-node/engine/nanoid.js +28 -0
  15. package/vendor/symbiote-node/engine/package.json +26 -0
  16. package/vendor/symbiote-node/engine/packs/ai/beat-detect.handler.js +215 -0
  17. package/vendor/symbiote-node/engine/packs/ai/content-adapt.handler.js +238 -0
  18. package/vendor/symbiote-node/engine/packs/ai/face-detect.handler.js +287 -0
  19. package/vendor/symbiote-node/engine/packs/ai/grok-generate.handler.js +565 -0
  20. package/vendor/symbiote-node/engine/packs/ai/kling-lipsync.handler.js +414 -0
  21. package/vendor/symbiote-node/engine/packs/ai/lesson-generate.handler.js +343 -0
  22. package/vendor/symbiote-node/engine/packs/ai/opencode.handler.js +164 -0
  23. package/vendor/symbiote-node/engine/packs/ai/replicate-lipsync.handler.js +341 -0
  24. package/vendor/symbiote-node/engine/packs/ai/tts.handler.js +241 -0
  25. package/vendor/symbiote-node/engine/packs/ai/whisper.handler.js +191 -0
  26. package/vendor/symbiote-node/engine/packs/data/db-query.handler.js +67 -0
  27. package/vendor/symbiote-node/engine/packs/data/news-accumulate.handler.js +281 -0
  28. package/vendor/symbiote-node/engine/packs/data/personas.handler.js +160 -0
  29. package/vendor/symbiote-node/engine/packs/data/prompt-loader.handler.js +193 -0
  30. package/vendor/symbiote-node/engine/packs/data/roles.handler.js +216 -0
  31. package/vendor/symbiote-node/engine/packs/data/rss-feed.handler.js +244 -0
  32. package/vendor/symbiote-node/engine/packs/debug/inject.handler.js +52 -0
  33. package/vendor/symbiote-node/engine/packs/flow/agent.handler.js +73 -0
  34. package/vendor/symbiote-node/engine/packs/flow/if.handler.js +107 -0
  35. package/vendor/symbiote-node/engine/packs/flow/loop.handler.js +58 -0
  36. package/vendor/symbiote-node/engine/packs/flow/merge.handler.js +60 -0
  37. package/vendor/symbiote-node/engine/packs/flow/retry.handler.js +65 -0
  38. package/vendor/symbiote-node/engine/packs/flow/switch.handler.js +64 -0
  39. package/vendor/symbiote-node/engine/packs/flow/wait-all.handler.js +39 -0
  40. package/vendor/symbiote-node/engine/packs/io/http-request.handler.js +82 -0
  41. package/vendor/symbiote-node/engine/packs/io/read-file.handler.js +60 -0
  42. package/vendor/symbiote-node/engine/packs/io/write-file.handler.js +63 -0
  43. package/vendor/symbiote-node/engine/packs/transform/anchor-match.handler.js +494 -0
  44. package/vendor/symbiote-node/engine/packs/transform/effects-skeleton.handler.js +417 -0
  45. package/vendor/symbiote-node/engine/packs/transform/json-parse.handler.js +43 -0
  46. package/vendor/symbiote-node/engine/packs/transform/lipsync-select.handler.js +339 -0
  47. package/vendor/symbiote-node/engine/packs/transform/riopla-adapt.handler.js +432 -0
  48. package/vendor/symbiote-node/engine/packs/transform/set.handler.js +57 -0
  49. package/vendor/symbiote-node/engine/packs/transform/template-builder.handler.js +134 -0
  50. package/vendor/symbiote-node/engine/packs/transform/template.handler.js +79 -0
  51. package/vendor/symbiote-node/engine/packs/transform/timeline-build.handler.js +399 -0
  52. package/vendor/symbiote-node/engine/packs/util/delay.handler.js +39 -0
  53. package/vendor/symbiote-node/engine/packs/util/log.handler.js +44 -0
  54. package/vendor/symbiote-node/engine/packs/video-pack.js +323 -0
@@ -0,0 +1,323 @@
1
+ /**
2
+ * video-pack.js - Video domain pack for agi-graph
3
+ *
4
+ * Registers video-specific node types and socket types.
5
+ * Extracted from symbiote-video/src/graph/NodeTypes.js + NodeProcessors.js.
6
+ *
7
+ * @module agi-graph/packs/video-pack
8
+ */
9
+
10
+ import { registerPack } from '../index.js';
11
+
12
+ /**
13
+ * Video-domain socket types
14
+ */
15
+ const socketTypes = {
16
+ image: { color: '#C79650', label: 'Image', compatible: ['image'] },
17
+ audio: { color: '#C1990E', label: 'Audio', compatible: ['audio'] },
18
+ timeline: { color: '#5090C7', label: 'Timeline', compatible: ['timeline'] },
19
+ skeleton: { color: '#90C750', label: 'Skeleton', compatible: ['skeleton'] },
20
+ effect: { color: '#C750C7', label: 'Effect', compatible: ['effect'] },
21
+ };
22
+
23
+ /**
24
+ * Video node type definitions
25
+ */
26
+ const nodes = [
27
+ // ─── Source ─────────────────────────────────────────────────────────
28
+ {
29
+ type: 'source/audio',
30
+ category: 'source',
31
+ icon: 'music_note',
32
+ driver: {
33
+ description: 'Audio source file',
34
+ capabilities: ['source', 'audio'],
35
+ inputs: [],
36
+ outputs: [
37
+ { name: 'audio', type: 'audio' },
38
+ { name: 'duration', type: 'float' },
39
+ ],
40
+ params: {
41
+ src: { type: 'string', required: true, description: 'Audio file path or URL' },
42
+ volume: { type: 'float', default: 1.0, min: 0, max: 2 },
43
+ },
44
+ },
45
+ process: (_inputs, params) => ({
46
+ audio: { src: params.src, volume: params.volume },
47
+ duration: params.duration || 0,
48
+ }),
49
+ },
50
+ {
51
+ type: 'source/webp-sequence',
52
+ category: 'source',
53
+ icon: 'movie',
54
+ driver: {
55
+ description: 'WebP image sequence as video frames',
56
+ capabilities: ['source', 'video'],
57
+ inputs: [],
58
+ outputs: [
59
+ { name: 'frames', type: 'image' },
60
+ { name: 'frameCount', type: 'int' },
61
+ ],
62
+ params: {
63
+ directory: { type: 'string', required: true },
64
+ pattern: { type: 'string', default: '*.webp' },
65
+ fps: { type: 'int', default: 30, min: 1, max: 120 },
66
+ },
67
+ },
68
+ process: (_inputs, params) => ({
69
+ frames: { directory: params.directory, pattern: params.pattern, fps: params.fps },
70
+ frameCount: params.frameCount || 0,
71
+ }),
72
+ },
73
+ {
74
+ type: 'source/image',
75
+ category: 'source',
76
+ icon: 'image',
77
+ driver: {
78
+ description: 'Static image source',
79
+ capabilities: ['source', 'image'],
80
+ inputs: [],
81
+ outputs: [{ name: 'image', type: 'image' }],
82
+ params: {
83
+ src: { type: 'string', required: true },
84
+ fit: { type: 'string', default: 'cover', enum: ['cover', 'contain', 'fill', 'none'] },
85
+ },
86
+ },
87
+ process: (_inputs, params) => ({
88
+ image: { src: params.src, fit: params.fit },
89
+ }),
90
+ },
91
+ {
92
+ type: 'source/text',
93
+ category: 'source',
94
+ icon: 'text_fields',
95
+ driver: {
96
+ description: 'Text source for overlays and subtitles',
97
+ capabilities: ['source', 'text'],
98
+ inputs: [],
99
+ outputs: [{ name: 'text', type: 'string' }],
100
+ params: {
101
+ content: { type: 'string', default: '' },
102
+ style: { type: 'string', default: 'default' },
103
+ },
104
+ },
105
+ process: (_inputs, params) => ({
106
+ text: { content: params.content, style: params.style },
107
+ }),
108
+ },
109
+
110
+ // ─── Analysis ──────────────────────────────────────────────────────
111
+ {
112
+ type: 'analysis/beat-analyzer',
113
+ category: 'analysis',
114
+ icon: 'graphic_eq',
115
+ driver: {
116
+ description: 'Analyzes audio for beats, energy, and generates effect skeleton',
117
+ capabilities: ['analysis', 'audio', 'ai'],
118
+ inputs: [{ name: 'audio', type: 'audio', required: true }],
119
+ outputs: [
120
+ { name: 'skeleton', type: 'skeleton' },
121
+ { name: 'beats', type: 'float' },
122
+ { name: 'energy', type: 'float' },
123
+ ],
124
+ params: {
125
+ energyPerSecond: { type: 'int', default: 10, min: 1, max: 100 },
126
+ strongThreshold: { type: 'float', default: 1.3, min: 0.5, max: 3 },
127
+ },
128
+ },
129
+ process: (inputs, params) => ({
130
+ skeleton: {
131
+ intensityZones: [],
132
+ fadeZones: [],
133
+ dropPoints: [],
134
+ beatMarkers: [],
135
+ transitionAnchors: [],
136
+ },
137
+ beats: [],
138
+ energy: [],
139
+ }),
140
+ },
141
+ {
142
+ type: 'analysis/ai-director',
143
+ category: 'analysis',
144
+ icon: 'smart_toy',
145
+ driver: {
146
+ description: 'AI-driven timeline composition from skeleton and prompt',
147
+ capabilities: ['analysis', 'ai', 'llm'],
148
+ inputs: [
149
+ { name: 'skeleton', type: 'skeleton', required: true },
150
+ { name: 'prompt', type: 'string' },
151
+ ],
152
+ outputs: [{ name: 'timeline', type: 'timeline' }],
153
+ params: {
154
+ model: { type: 'string', default: 'auto' },
155
+ temperature: { type: 'float', default: 0.7, min: 0, max: 2 },
156
+ },
157
+ constraints: { requiresSecret: 'OPENAI_API_KEY' },
158
+ },
159
+ },
160
+
161
+ // ─── Processing ────────────────────────────────────────────────────
162
+ {
163
+ type: 'processing/physics-vfx',
164
+ category: 'processing',
165
+ icon: 'bolt',
166
+ driver: {
167
+ description: 'Physics-based visual effects synced to beats',
168
+ capabilities: ['effects', 'animation'],
169
+ inputs: [
170
+ { name: 'input', type: 'any' },
171
+ { name: 'beats', type: 'float' },
172
+ ],
173
+ outputs: [{ name: 'output', type: 'effect' }],
174
+ params: {
175
+ preset: { type: 'string', default: 'bounceIn', enum: ['bounceIn', 'dropImpact', 'glitch', 'shake', 'zoom', 'rubberBand', 'pulse'] },
176
+ beatSync: { type: 'boolean', default: true },
177
+ intensity: { type: 'float', default: 1.0, min: 0, max: 3 },
178
+ },
179
+ },
180
+ },
181
+ {
182
+ type: 'processing/color-correction',
183
+ category: 'processing',
184
+ icon: 'palette',
185
+ driver: {
186
+ description: 'Color grading and correction filters',
187
+ capabilities: ['effects', 'color'],
188
+ inputs: [{ name: 'input', type: 'image', required: true }],
189
+ outputs: [{ name: 'output', type: 'image' }],
190
+ params: {
191
+ brightness: { type: 'float', default: 0, min: -100, max: 100 },
192
+ contrast: { type: 'float', default: 0, min: -100, max: 100 },
193
+ saturation: { type: 'float', default: 0, min: -100, max: 100 },
194
+ hueRotate: { type: 'float', default: 0, min: 0, max: 360 },
195
+ },
196
+ },
197
+ },
198
+ {
199
+ type: 'processing/transition',
200
+ category: 'processing',
201
+ icon: 'shuffle',
202
+ driver: {
203
+ description: 'Transition effect between two sources',
204
+ capabilities: ['effects', 'transition'],
205
+ inputs: [
206
+ { name: 'from', type: 'image', required: true },
207
+ { name: 'to', type: 'image', required: true },
208
+ ],
209
+ outputs: [{ name: 'output', type: 'image' }],
210
+ params: {
211
+ type: { type: 'string', default: 'fade', enum: ['fade', 'slide', 'wipe', 'zoom', 'dissolve'] },
212
+ duration: { type: 'int', default: 30, min: 1 },
213
+ direction: { type: 'string', default: 'left', enum: ['left', 'right', 'up', 'down'] },
214
+ },
215
+ },
216
+ },
217
+
218
+ // ─── Composition ───────────────────────────────────────────────────
219
+ {
220
+ type: 'composition/layout',
221
+ category: 'composition',
222
+ icon: 'grid_view',
223
+ driver: {
224
+ description: 'Positions content in the viewport',
225
+ capabilities: ['composition', 'layout'],
226
+ inputs: [{ name: 'content', type: 'any', required: true }],
227
+ outputs: [{ name: 'output', type: 'image' }],
228
+ params: {
229
+ anchor: { type: 'string', default: 'center' },
230
+ x: { type: 'string', default: '50%' },
231
+ y: { type: 'string', default: '50%' },
232
+ width: { type: 'string', default: '100%' },
233
+ height: { type: 'string', default: '100%' },
234
+ rotation: { type: 'float', default: 0 },
235
+ },
236
+ },
237
+ },
238
+ {
239
+ type: 'composition/blend',
240
+ category: 'composition',
241
+ icon: 'theaters',
242
+ driver: {
243
+ description: 'Blends/composites two image layers',
244
+ capabilities: ['composition', 'blend'],
245
+ inputs: [
246
+ { name: 'base', type: 'image', required: true },
247
+ { name: 'overlay', type: 'image', required: true },
248
+ ],
249
+ outputs: [{ name: 'output', type: 'image' }],
250
+ params: {
251
+ mode: { type: 'string', default: 'normal', enum: ['normal', 'multiply', 'screen', 'overlay', 'add'] },
252
+ opacity: { type: 'float', default: 1.0, min: 0, max: 1 },
253
+ },
254
+ },
255
+ },
256
+ {
257
+ type: 'composition/timeline',
258
+ category: 'composition',
259
+ icon: 'timer',
260
+ driver: {
261
+ description: 'Assembles layers into a timeline for rendering',
262
+ capabilities: ['composition', 'timeline'],
263
+ inputs: [
264
+ { name: 'layers', type: 'any', required: true },
265
+ { name: 'dynamics', type: 'skeleton' },
266
+ ],
267
+ outputs: [{ name: 'timeline', type: 'timeline' }],
268
+ params: {
269
+ fps: { type: 'int', default: 30, min: 1, max: 120 },
270
+ duration: { type: 'string', default: 'auto' },
271
+ },
272
+ },
273
+ },
274
+
275
+ // ─── Output ────────────────────────────────────────────────────────
276
+ {
277
+ type: 'output/viewport',
278
+ category: 'output',
279
+ icon: 'desktop_windows',
280
+ driver: {
281
+ description: 'Preview viewport for real-time monitoring',
282
+ capabilities: ['output', 'preview'],
283
+ inputs: [{ name: 'timeline', type: 'timeline', required: true }],
284
+ outputs: [],
285
+ params: {
286
+ width: { type: 'int', default: 1080, min: 1 },
287
+ height: { type: 'int', default: 1920, min: 1 },
288
+ background: { type: 'string', default: '#000000' },
289
+ },
290
+ },
291
+ },
292
+ {
293
+ type: 'output/render',
294
+ category: 'output',
295
+ icon: 'videocam',
296
+ driver: {
297
+ description: 'Renders timeline to video file',
298
+ capabilities: ['output', 'render'],
299
+ inputs: [{ name: 'timeline', type: 'timeline', required: true }],
300
+ outputs: [],
301
+ params: {
302
+ format: { type: 'string', default: 'mp4', enum: ['mp4', 'webm', 'mov'] },
303
+ codec: { type: 'string', default: 'h264', enum: ['h264', 'h265', 'vp9', 'av1'] },
304
+ quality: { type: 'string', default: 'high', enum: ['low', 'medium', 'high', 'lossless'] },
305
+ preset: { type: 'string', default: 'vertical', enum: ['vertical', 'horizontal', 'square'] },
306
+ },
307
+ },
308
+ },
309
+ ];
310
+
311
+ /**
312
+ * Register the video pack
313
+ */
314
+ export function registerVideoPack() {
315
+ registerPack({
316
+ name: 'video',
317
+ socketTypes,
318
+ nodes,
319
+ });
320
+ }
321
+
322
+ // Auto-register when imported
323
+ registerVideoPack();