Skip to content

[Partner Nodes] feat(Tripo3d): add new "Import 3D" node#14466

Merged
bigcat88 merged 1 commit into
masterfrom
feat/api-nodes/tripo-import-model
Jun 14, 2026
Merged

[Partner Nodes] feat(Tripo3d): add new "Import 3D" node#14466
bigcat88 merged 1 commit into
masterfrom
feat/api-nodes/tripo-import-model

Conversation

@bigcat88

@bigcat88 bigcat88 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

PR adds new node for these endpoints: https://platform.tripo3d.ai/docs/upload-sts and https://platform.tripo3d.ai/docs/import-model
New node is free, and allows to process existing 3D models with Tripo API (rig, re-target rigged, ..)

API Node PR Checklist

Scope

  • Is API Node Change

Pricing & Billing

  • Need pricing update
  • No pricing update

If Need pricing update:

  • Metronome rate cards updated
  • Auto‑billing tests updated and passing

QA

  • QA done
  • QA not required

Comms

  • Informed Kosinkadink

Signed-off-by: bigcat88 <bigcat88@icloud.com>
@coderabbitai

coderabbitai Bot commented Jun 14, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

comfy_api_nodes/nodes_tripo.py receives two additions. TripoTextureNode gains an optional texture_prompt string input in its schema and execute signature; the stripped prompt is included in TripoTextureModelRequest only when non-empty. A new TripoImportModelNode class is introduced that accepts a 3D model file, rejects GLTF format explicitly, enforces a 150 MB size limit, uploads the file via upload_3d_model_to_comfyapi, posts to Tripo's import endpoint using TripoImportModelRequest, polls the resulting task until it reaches a terminal state, and returns a MODEL_TASK_ID. The node is registered in TripoExtension.get_node_list().

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: adding a new 'Import 3D' node for Tripo3D integration, which aligns with the raw summary showing a new TripoImportModelNode.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description clearly relates to the changeset, detailing the addition of a new TripoImportModelNode for processing 3D models with Tripo API endpoints.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
comfy_api_nodes/nodes_tripo.py (1)

598-598: 💤 Low value

Avoid calling .strip() twice.

The stripped value is computed twice. Consider caching it for efficiency.

♻️ Proposed refactor
+        stripped_prompt = texture_prompt.strip()
         response = await sync_op(
             cls,
             endpoint=ApiEndpoint(path="/proxy/tripo/v2/openapi/task", method="POST"),
             response_model=TripoTaskResponse,
             data=TripoTextureModelRequest(
                 original_model_task_id=model_task_id,
                 texture=texture,
                 pbr=pbr,
                 texture_seed=texture_seed,
                 texture_quality=texture_quality,
                 texture_alignment=texture_alignment,
-                texture_prompt=TripoTexturePrompt(text=texture_prompt.strip()) if texture_prompt.strip() else None,
+                texture_prompt=TripoTexturePrompt(text=stripped_prompt) if stripped_prompt else None,
             ),
         )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@comfy_api_nodes/nodes_tripo.py` at line 598, The texture_prompt.strip()
method is being called twice on the same line - once in the conditional check
and once when creating the TripoTexturePrompt object. Cache the stripped value
in a temporary variable (such as stripped_texture_prompt) before the conditional
statement, then use that cached variable both in the condition and as the
argument to TripoTexturePrompt to avoid redundant string operations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@comfy_api_nodes/nodes_tripo.py`:
- Around line 995-1009: The poll_op call at line 995 is missing the
completed_statuses parameter, which causes polling to continue until
max_poll_attempts exhausts when tasks enter terminal failure states like
UNKNOWN, BANNED, or EXPIRED instead of failing immediately. Add the
completed_statuses=[TripoTaskStatus.SUCCESS] parameter to the poll_op function
call to explicitly define terminal success states and match the polling pattern
used elsewhere, ensuring deterministic behavior for all terminal states.

---

Nitpick comments:
In `@comfy_api_nodes/nodes_tripo.py`:
- Line 598: The texture_prompt.strip() method is being called twice on the same
line - once in the conditional check and once when creating the
TripoTexturePrompt object. Cache the stripped value in a temporary variable
(such as stripped_texture_prompt) before the conditional statement, then use
that cached variable both in the condition and as the argument to
TripoTexturePrompt to avoid redundant string operations.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3609300c-8507-48e6-bc12-565f463b36e9

📥 Commits

Reviewing files that changed from the base of the PR and between a1d95f3 and b5e7f6a.

⛔ Files ignored due to path filters (1)
  • comfy_api_nodes/apis/tripo.py is excluded by !comfy_api_nodes/apis/**
📒 Files selected for processing (1)
  • comfy_api_nodes/nodes_tripo.py

Comment thread comfy_api_nodes/nodes_tripo.py
@bigcat88 bigcat88 merged commit 5897d0c into master Jun 14, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants