Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
Python Linting / Run Pylint (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.10, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.11, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.12, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-unix-nightly (12.1, , linux, 3.11, [self-hosted Linux], nightly) (push) Has been cancelled
Execution Tests / test (macos-latest) (push) Has been cancelled
Execution Tests / test (ubuntu-latest) (push) Has been cancelled
Execution Tests / test (windows-latest) (push) Has been cancelled
Test server launches without errors / test (push) Has been cancelled
Unit Tests / test (macos-latest) (push) Has been cancelled
Unit Tests / test (ubuntu-latest) (push) Has been cancelled
Unit Tests / test (windows-2022) (push) Has been cancelled
Includes 30 custom nodes committed directly, 7 Civitai-exclusive loras stored via Git LFS, and a setup script that installs all dependencies and downloads HuggingFace-hosted models on vast.ai. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
78 lines
3.4 KiB
JavaScript
78 lines
3.4 KiB
JavaScript
import { app, api, ComfyWidgets, LiteGraph, TLGraphNode } from './comfy/index.js';
|
|
import { commonPrefix, displayContext } from './common.js';
|
|
app.registerExtension({
|
|
name: 'Crystools.Debugger.ConsoleAny',
|
|
beforeRegisterNodeDef(nodeType, nodeData, appFromArg) {
|
|
if (nodeData.name === 'Show any [Crystools]') {
|
|
displayContext(nodeType, appFromArg, 3);
|
|
}
|
|
},
|
|
});
|
|
app.registerExtension({
|
|
name: 'Crystools.Debugger.Metadata',
|
|
registerCustomNodes() {
|
|
class MetadataNode extends TLGraphNode {
|
|
constructor() {
|
|
super(`${commonPrefix} Show Metadata `);
|
|
Object.defineProperty(this, "fillMetadataWidget", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: () => {
|
|
return app.graphToPrompt()
|
|
.then((workflow) => {
|
|
let result = 'inactive';
|
|
if (this.widgets?.length !== 4) {
|
|
console.error('Something is wrong with the widgets, should be 4!');
|
|
return 'error';
|
|
}
|
|
const output = this.widgets[0];
|
|
const active = this.widgets[1]?.value;
|
|
const parsed = this.widgets[2]?.value;
|
|
let what = this.widgets[3]?.value.toLowerCase();
|
|
if (active) {
|
|
what = what === 'prompt' ? 'output' : what;
|
|
result = workflow[what];
|
|
if (parsed) {
|
|
result = JSON.stringify(result, null, 2);
|
|
}
|
|
else {
|
|
result = JSON.stringify(result);
|
|
}
|
|
}
|
|
if (output) {
|
|
output.value = result;
|
|
}
|
|
else {
|
|
console.error('Something is wrong with the widgets, output is undefined!');
|
|
return 'error';
|
|
}
|
|
return result;
|
|
});
|
|
}
|
|
});
|
|
this.serialize_widgets = false;
|
|
this.isVirtualNode = true;
|
|
const widget = ComfyWidgets.STRING(this, '', [
|
|
'', { default: '', multiline: true },
|
|
], app).widget;
|
|
widget.inputEl.readOnly = true;
|
|
ComfyWidgets.BOOLEAN(this, 'Active', [
|
|
'', { default: true },
|
|
]);
|
|
ComfyWidgets.BOOLEAN(this, 'Parsed', [
|
|
'', { default: true },
|
|
]);
|
|
ComfyWidgets.COMBO(this, 'What', [
|
|
['Prompt', 'Workflow'], { default: 'Prompt' },
|
|
]);
|
|
api.addEventListener('executed', this.fillMetadataWidget, false);
|
|
}
|
|
}
|
|
LiteGraph.registerNodeType('Show Metadata [Crystools]', MetadataNode);
|
|
MetadataNode.category = `crystools ${commonPrefix}/Debugger`;
|
|
MetadataNode.shape = LiteGraph.BOX_SHAPE;
|
|
MetadataNode.title = `${commonPrefix} Show Metadata`;
|
|
},
|
|
});
|