@dpantani/tdmcp 0.5.0 → 0.6.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.
package/README.md CHANGED
@@ -82,8 +82,8 @@ You set up **two sides**: your **AI** (so it gets the tdmcp tools) and
82
82
  **Cursor**? Paste this one message in:
83
83
 
84
84
  ```text
85
- Install and connect tdmcp for me by reading and following
86
- https://raw.githubusercontent.com/Pantani/tdmcp/main/tdmcp-install-prompt.md
85
+ Install and connect tdmcp for me using the official install guide:
86
+ https://pantani.github.io/tdmcp/guide/install
87
87
  Do every step yourself; only stop when you need me to paste one line into TouchDesigner.
88
88
  ```
89
89
 
@@ -110,7 +110,7 @@ Open TouchDesigner, open the **Textport** (`Dialogs → Textport and DATs`), pas
110
110
  this **one line** and press Enter:
111
111
 
112
112
  ```python
113
- import urllib.request; exec(urllib.request.urlopen("https://raw.githubusercontent.com/Pantani/tdmcp/main/td/bootstrap.py").read().decode())
113
+ import urllib.request; exec(urllib.request.urlopen("https://github.com/Pantani/tdmcp/raw/main/td/bootstrap.py").read().decode())
114
114
  ```
115
115
 
116
116
  You should see `[tdmcp] bridge running on port 9980 (/project1/tdmcp_bridge)`. ✅
@@ -136,7 +136,7 @@ the [prompt cookbook](https://pantani.github.io/tdmcp/guide/prompt-cookbook).
136
136
 
137
137
  ## What you can do
138
138
 
139
- **175 tools** across three layers, plus library/packaging and Obsidian vault integrations — from
139
+ **179 tools** across three layers, plus library/packaging and Obsidian vault integrations — from
140
140
  one-line artist generators (`create_feedback_network`, `create_audio_reactive`,
141
141
  `create_particle_system`, `create_generative_art`, …) to building blocks
142
142
  (`create_control_panel`, `animate_parameter`, `create_external_io` for
@@ -278,9 +278,9 @@ declare const RecipeSchema: z.ZodObject<{
278
278
  node: z.ZodString;
279
279
  name: z.ZodString;
280
280
  kind: z.ZodDefault<z.ZodEnum<{
281
+ color: "color";
281
282
  float: "float";
282
283
  vec: "vec";
283
- color: "color";
284
284
  }>>;
285
285
  value: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodNumber>]>>;
286
286
  label: z.ZodOptional<z.ZodString>;
@@ -441,6 +441,26 @@ declare class TouchDesignerClient {
441
441
  outputs?: string[] | undefined;
442
442
  family?: string | undefined;
443
443
  errors?: string[] | undefined;
444
+ flags?: {
445
+ bypass?: boolean | undefined;
446
+ render?: boolean | undefined;
447
+ display?: boolean | undefined;
448
+ lock?: boolean | undefined;
449
+ allowCooking?: boolean | undefined;
450
+ cloneImmune?: boolean | undefined;
451
+ is_clone?: boolean | undefined;
452
+ clone?: string | null | undefined;
453
+ } | undefined;
454
+ wires_in?: {
455
+ in_index: number | null;
456
+ from: string;
457
+ out_index: number;
458
+ }[] | undefined;
459
+ nodeX?: number | undefined;
460
+ nodeY?: number | undefined;
461
+ comment?: string | undefined;
462
+ color?: number[] | undefined;
463
+ tags?: string[] | undefined;
444
464
  }>;
445
465
  updateNodeParameters(path: string, parameters: Record<string, unknown>): Promise<{
446
466
  path: string;
@@ -452,6 +472,26 @@ declare class TouchDesignerClient {
452
472
  outputs?: string[] | undefined;
453
473
  family?: string | undefined;
454
474
  errors?: string[] | undefined;
475
+ flags?: {
476
+ bypass?: boolean | undefined;
477
+ render?: boolean | undefined;
478
+ display?: boolean | undefined;
479
+ lock?: boolean | undefined;
480
+ allowCooking?: boolean | undefined;
481
+ cloneImmune?: boolean | undefined;
482
+ is_clone?: boolean | undefined;
483
+ clone?: string | null | undefined;
484
+ } | undefined;
485
+ wires_in?: {
486
+ in_index: number | null;
487
+ from: string;
488
+ out_index: number;
489
+ }[] | undefined;
490
+ nodeX?: number | undefined;
491
+ nodeY?: number | undefined;
492
+ comment?: string | undefined;
493
+ color?: number[] | undefined;
494
+ tags?: string[] | undefined;
455
495
  }>;
456
496
  executePythonScript(script: string, returnOutput?: boolean): Promise<{
457
497
  result?: unknown;
@@ -514,6 +554,71 @@ declare class TouchDesignerClient {
514
554
  total_cook_time_ms?: number | undefined;
515
555
  gpu_memory_mb?: number | undefined;
516
556
  }>;
557
+ connectNodes(sourcePath: string, targetPath: string, sourceOutput?: number, targetInput?: number): Promise<{
558
+ source_path: string;
559
+ target_path: string;
560
+ source_output: number;
561
+ connected: boolean;
562
+ requested_input?: number | undefined;
563
+ actual_input?: number | undefined;
564
+ }>;
565
+ disconnectNodes(toPath: string, fromPath?: string, toInput?: number): Promise<{
566
+ to_path: string;
567
+ removed: {
568
+ input: number;
569
+ from: string;
570
+ }[];
571
+ warnings: string[];
572
+ from_path?: string | null | undefined;
573
+ to_input?: number | null | undefined;
574
+ }>;
575
+ readParameterModes(path: string, keys?: string[], nonDefaultOnly?: boolean): Promise<{
576
+ path: string;
577
+ type: string;
578
+ name: string;
579
+ parameters: {
580
+ name: string;
581
+ mode: string;
582
+ value?: unknown;
583
+ expr?: string | undefined;
584
+ bind_expr?: string | undefined;
585
+ export_op?: string | undefined;
586
+ }[];
587
+ warnings: string[];
588
+ }>;
589
+ setParameterMode(path: string, param: string, mode: string, expr?: string, value?: unknown): Promise<{
590
+ path: string;
591
+ param: string;
592
+ mode: string;
593
+ readback_mode: string;
594
+ readback_expr: string;
595
+ }>;
596
+ getDatText(path: string): Promise<{
597
+ path: string;
598
+ text: string;
599
+ is_table: boolean;
600
+ num_rows: number;
601
+ num_cols: number;
602
+ }>;
603
+ putDatText(path: string, text: string): Promise<{
604
+ path: string;
605
+ old_length: number;
606
+ new_length: number;
607
+ }>;
608
+ getLogs(severity?: string, maxLines?: number, scope?: string): Promise<{
609
+ lines: {
610
+ source: string;
611
+ message: string;
612
+ severity: string;
613
+ type: string;
614
+ absframe?: number | undefined;
615
+ frame?: number | undefined;
616
+ }[];
617
+ count: number;
618
+ available: boolean;
619
+ warnings: string[];
620
+ error_dat?: string | undefined;
621
+ }>;
517
622
  }
518
623
 
519
624
  /** Shared dependencies injected into every tool handler (keeps handlers testable). */