Image and video generation run on the user's own GPU server. ComfyUI is the
common self-hosted backend, so this adds a provider for its HTTP API that the
generation operations can call.
- Core: API-format workflow templates with a small placeholder format
({{prompt}}, {{width}}, {{seed}}, ...) that is validated and filled without
evaluating anything. Defaults: text-to-image and image-to-image on core nodes
for any SD-family checkpoint, and text/image-to-video on ComfyUI's core
LTX-Video nodes; a README lists the placeholders and model files.
- Adapters: createComfyUiProvider submits a workflow, polls its history,
uploads input images and downloads outputs through the address-checked fetch
used for other self-hosted model servers, with timeouts, capped reads and
readable errors. A custom workflow from settings replaces the default it
matches. Cancelling dequeues or interrupts only its own prompt. GPU status
counts memory ComfyUI can free for itself as available.
- Contracts: input schemas for generate_image, generate_video and edit_image.
- Tests: an in-process ComfyUI emulator, a provider-neutral generation
conformance suite and provider tests, all offline.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u
76 lines
2.3 KiB
JSON
76 lines
2.3 KiB
JSON
{
|
|
"name": "@rakazo/core",
|
|
"version": "0.1.0",
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"exports": {
|
|
".": {
|
|
"types": "./src/index.ts",
|
|
"development": "./src/index.ts",
|
|
"default": "./src/index.ts"
|
|
},
|
|
"./node/load-root-env": {
|
|
"types": "./src/node/load-root-env.ts",
|
|
"development": "./src/node/load-root-env.ts",
|
|
"default": "./src/node/load-root-env.ts"
|
|
},
|
|
"./node/approval-effect-key": {
|
|
"types": "./src/approval-effect-key.ts",
|
|
"development": "./src/approval-effect-key.ts",
|
|
"default": "./src/approval-effect-key.ts"
|
|
},
|
|
"./node/screen-proxy-response": {
|
|
"types": "./src/node/screen-proxy-response.ts",
|
|
"development": "./src/node/screen-proxy-response.ts",
|
|
"default": "./src/node/screen-proxy-response.ts"
|
|
},
|
|
"./node/git-checkout": {
|
|
"types": "./src/git-checkout.ts",
|
|
"development": "./src/git-checkout.ts",
|
|
"default": "./src/git-checkout.ts"
|
|
},
|
|
"./plot": {
|
|
"types": "./src/plot/plot-spec.ts",
|
|
"development": "./src/plot/plot-spec.ts",
|
|
"default": "./src/plot/plot-spec.ts"
|
|
},
|
|
"./media/workflows": {
|
|
"types": "./src/media/workflow-template.ts",
|
|
"development": "./src/media/workflow-template.ts",
|
|
"default": "./src/media/workflow-template.ts"
|
|
},
|
|
"./node/desktop-runtime": {
|
|
"types": "./src/node/desktop-runtime.ts",
|
|
"development": "./src/node/desktop-runtime.ts",
|
|
"default": "./src/node/desktop-runtime.ts"
|
|
},
|
|
"./node/screen-capability": {
|
|
"types": "./src/node/screen-capability.ts",
|
|
"development": "./src/node/screen-capability.ts",
|
|
"default": "./src/node/screen-capability.ts"
|
|
},
|
|
"./git-checkout": {
|
|
"types": "./src/git-checkout.ts",
|
|
"development": "./src/git-checkout.ts",
|
|
"default": "./src/git-checkout.ts"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"check": "tsc --noEmit -p tsconfig.json",
|
|
"test": "vitest run --root ../.. packages/core/src"
|
|
},
|
|
"dependencies": {
|
|
"@rakazo/contracts": "workspace:*",
|
|
"dotenv": "17.4.2",
|
|
"@observablehq/plot": "0.6.17",
|
|
"d3-dsv": "3.0.1",
|
|
"croner": "10.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"fast-check": "4.10.0",
|
|
"typescript": "7.0.2",
|
|
"vitest": "4.1.11",
|
|
"@types/d3-dsv": "3.0.7"
|
|
}
|
|
}
|