langflower 0.0.8 → 0.0.10
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/package.json +2 -2
- package/ui-dist/{chunk-Y6VMBLSJ.js → chunk-7UMVYN3A.js} +1 -1
- package/ui-dist/{chunk-6DQ2XSRW.js → chunk-MDGXX73Z.js} +3 -3
- package/ui-dist/index.html +2 -2
- package/ui-dist/main-Z7CPFXFA.js +313 -0
- package/ui-dist/styles-2TMDAUD7.css +1 -0
- package/vendor/common-nodes/dist/ai/chat-completion-stream.d.ts +2 -0
- package/vendor/common-nodes/dist/ai/critique/node.d.ts +246 -0
- package/vendor/common-nodes/dist/ai/critique/node.js +2 -2
- package/vendor/common-nodes/dist/ai/fake-llm/node.d.ts +246 -0
- package/vendor/common-nodes/dist/ai/features/chat-completion-stream.d.ts +53 -0
- package/vendor/common-nodes/dist/ai/features/chat-completion-stream.js +1 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/autokick-recovery.d.ts +13 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/autokick-recovery.js +17 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/classify-llm-failure.d.ts +2 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/classify-llm-failure.js +113 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/dead-loop-detector.d.ts +28 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/dead-loop-detector.js +194 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/live-get-tools.d.ts +9 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/live-get-tools.js +21 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-reducer.d.ts +2 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-reducer.js +204 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-types.d.ts +120 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-types.js +39 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/normalize-llm-recovery-policy.d.ts +2 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/normalize-llm-recovery-policy.js +59 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/normalize-tool-result.d.ts +1 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/normalize-tool-result.js +7 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/observe-provider-stream.d.ts +43 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/observe-provider-stream.js +96 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-agent-loop.d.ts +29 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-agent-loop.js +44 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-llm-loop.d.ts +74 -0
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-llm-loop.js +658 -0
- package/vendor/common-nodes/dist/ai/features/llm-role-preset.d.ts +69 -0
- package/vendor/common-nodes/dist/ai/features/llm-role-preset.js +265 -0
- package/vendor/common-nodes/dist/ai/features/llm-session/llm-session-shell.d.ts +141 -0
- package/vendor/common-nodes/dist/ai/features/llm-session/llm-session-shell.js +193 -0
- package/vendor/common-nodes/dist/ai/features/llm-session/run-session-machine.d.ts +21 -0
- package/vendor/common-nodes/dist/ai/features/llm-session/run-session-machine.js +118 -0
- package/vendor/common-nodes/dist/ai/features/openai/context-length-error.d.ts +14 -0
- package/vendor/common-nodes/dist/ai/features/openai/context-length-error.js +63 -0
- package/vendor/common-nodes/dist/ai/features/openai/create-chat-completion-stream.d.ts +19 -0
- package/vendor/common-nodes/dist/ai/features/openai/create-chat-completion-stream.js +182 -0
- package/vendor/common-nodes/dist/ai/features/openai/list-provider-models.d.ts +28 -0
- package/vendor/common-nodes/dist/ai/features/openai/list-provider-models.js +52 -0
- package/vendor/common-nodes/dist/ai/features/openai/llm-context-compaction.d.ts +31 -0
- package/vendor/common-nodes/dist/ai/features/openai/llm-context-compaction.js +326 -0
- package/vendor/common-nodes/dist/ai/features/openai/normalize-compaction-params.d.ts +14 -0
- package/vendor/common-nodes/dist/ai/features/openai/normalize-compaction-params.js +21 -0
- package/vendor/common-nodes/dist/ai/features/openai/prepare-chat-completion.d.ts +30 -0
- package/vendor/common-nodes/dist/ai/features/openai/prepare-chat-completion.js +132 -0
- package/vendor/common-nodes/dist/ai/features/path-choice/control-tools.d.ts +20 -0
- package/vendor/common-nodes/dist/ai/features/path-choice/control-tools.js +70 -0
- package/vendor/common-nodes/dist/ai/features/path-choice/run-reactive-path-choice-loop.d.ts +32 -0
- package/vendor/common-nodes/dist/ai/features/path-choice/run-reactive-path-choice-loop.js +93 -0
- package/vendor/common-nodes/dist/ai/features/prompt/build-effective-system-prompt.d.ts +9 -0
- package/vendor/common-nodes/dist/ai/features/prompt/build-effective-system-prompt.js +21 -0
- package/vendor/common-nodes/dist/ai/features/prompt/normalize-max-iterations.d.ts +13 -0
- package/vendor/common-nodes/dist/ai/features/prompt/normalize-max-iterations.js +23 -0
- package/vendor/common-nodes/dist/ai/features/prompt/resolve-chat-provider-model.d.ts +10 -0
- package/vendor/common-nodes/dist/ai/features/prompt/resolve-chat-provider-model.js +8 -0
- package/vendor/common-nodes/dist/ai/features/run-host-services.d.ts +54 -0
- package/vendor/common-nodes/dist/ai/features/run-host-services.js +29 -0
- package/vendor/common-nodes/dist/ai/features/scripted-chat-completion-stream.d.ts +17 -0
- package/vendor/common-nodes/dist/ai/features/scripted-chat-completion-stream.js +61 -0
- package/vendor/common-nodes/dist/ai/features/sub-agent-protocol.d.ts +40 -0
- package/vendor/common-nodes/dist/ai/features/sub-agent-protocol.js +44 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-compaction-ui-schema.d.ts +14 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-compaction-ui-schema.js +18 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-panel-ui-schema.d.ts +80 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-panel-ui-schema.js +76 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-recovery-ui-schema.d.ts +113 -0
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-recovery-ui-schema.js +131 -0
- package/vendor/common-nodes/dist/ai/features/wait-for-subagent-result.d.ts +7 -0
- package/vendor/common-nodes/dist/ai/features/wait-for-subagent-result.js +31 -0
- package/vendor/common-nodes/dist/ai/llm-loop/autokick-recovery.d.ts +13 -0
- package/vendor/common-nodes/dist/ai/llm-loop/autokick-recovery.js +17 -0
- package/vendor/common-nodes/dist/ai/llm-loop/dead-loop-detector.d.ts +28 -0
- package/vendor/common-nodes/dist/ai/llm-loop/dead-loop-detector.js +194 -0
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-reducer.js +36 -0
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-types.d.ts +35 -0
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-types.js +19 -0
- package/vendor/common-nodes/dist/ai/llm-loop/normalize-llm-recovery-policy.js +52 -9
- package/vendor/common-nodes/dist/ai/llm-loop/operators/observe-provider-stream.d.ts +8 -2
- package/vendor/common-nodes/dist/ai/llm-loop/operators/observe-provider-stream.js +43 -13
- package/vendor/common-nodes/dist/ai/llm-loop/run-llm-loop.d.ts +3 -5
- package/vendor/common-nodes/dist/ai/llm-loop/run-llm-loop.js +116 -1
- package/vendor/common-nodes/dist/ai/llm-recovery-ui-schema.d.ts +82 -0
- package/vendor/common-nodes/dist/ai/llm-recovery-ui-schema.js +95 -0
- package/vendor/common-nodes/dist/ai/llm-session-shell.d.ts +4 -9
- package/vendor/common-nodes/dist/ai/llm-session-shell.js +2 -4
- package/vendor/common-nodes/dist/ai/nodes/critique/node.d.ts +588 -0
- package/vendor/common-nodes/dist/ai/nodes/critique/node.js +227 -0
- package/vendor/common-nodes/dist/ai/nodes/fake-llm/node.d.ts +571 -0
- package/vendor/common-nodes/dist/ai/nodes/fake-llm/node.js +201 -0
- package/vendor/common-nodes/dist/ai/nodes/openai-llm/node.d.ts +587 -0
- package/vendor/common-nodes/dist/ai/nodes/openai-llm/node.js +84 -0
- package/vendor/common-nodes/dist/ai/nodes/review/node.d.ts +593 -0
- package/vendor/common-nodes/dist/ai/nodes/review/node.js +227 -0
- package/vendor/common-nodes/dist/ai/nodes/sub-agent/node.d.ts +630 -0
- package/vendor/common-nodes/dist/ai/nodes/sub-agent/node.js +417 -0
- package/vendor/common-nodes/dist/ai/openai/create-chat-completion-stream.js +6 -0
- package/vendor/common-nodes/dist/ai/openai/prepare-chat-completion.d.ts +2 -0
- package/vendor/common-nodes/dist/ai/openai/prepare-chat-completion.js +18 -0
- package/vendor/common-nodes/dist/ai/openai-llm/node.d.ts +246 -0
- package/vendor/common-nodes/dist/ai/review/node.d.ts +246 -0
- package/vendor/common-nodes/dist/ai/review/node.js +2 -2
- package/vendor/common-nodes/dist/ai/sub-agent/node.d.ts +246 -0
- package/vendor/common-nodes/dist/ai/sub-agent/node.js +2 -2
- package/vendor/common-nodes/dist/catalog.js +9 -5
- package/vendor/common-nodes/dist/compile-custom-nodes/node.d.ts +21 -0
- package/vendor/common-nodes/dist/compile-custom-nodes/node.js +45 -0
- package/vendor/common-nodes/dist/crawl/crawl/node.js +1 -1
- package/vendor/common-nodes/dist/crawl/fetch-url/node.js +1 -1
- package/vendor/common-nodes/dist/flow/repeat/node.js +6 -1
- package/vendor/common-nodes/dist/langflower-tools/emit-registration-tools.d.ts +18 -0
- package/vendor/common-nodes/dist/langflower-tools/emit-registration-tools.js +29 -0
- package/vendor/common-nodes/dist/langflower-tools/node.d.ts +20 -0
- package/vendor/common-nodes/dist/langflower-tools/node.js +77 -0
- package/vendor/common-nodes/dist/mcp/mcp-http/node.d.ts +4 -4
- package/vendor/common-nodes/dist/mcp/mcp-http/node.js +9 -10
- package/vendor/common-nodes/dist/mcp/mcp-stdio/node.d.ts +4 -4
- package/vendor/common-nodes/dist/mcp/mcp-stdio/node.js +9 -10
- package/vendor/common-nodes/dist/text/append-file/node.js +1 -1
- package/vendor/common-nodes/dist/text/read-file/node.js +1 -1
- package/vendor/common-nodes/dist/text/write-file/node.js +1 -1
- package/vendor/common-nodes/dist/tools/collect-agent-tool-handles.d.ts +4 -4
- package/vendor/common-nodes/dist/tools/collect-agent-tool-handles.js +3 -11
- package/vendor/common-nodes/dist/tools/inventory-tool-round.d.ts +1 -11
- package/vendor/common-nodes/dist/tools/inventory-tool-round.js +0 -84
- package/vendor/common-nodes/dist/tools/tool-collection/node.d.ts +20 -0
- package/vendor/common-nodes/dist/tools/tool-collection/node.js +42 -0
- package/vendor/common-nodes/package.json +9 -13
- package/vendor/compiler/dist/compile-project-nodes.d.ts +2 -1
- package/vendor/compiler/dist/compile-project-nodes.js +35 -6
- package/vendor/compiler/dist/resolve-host-types.d.ts +0 -5
- package/vendor/compiler/dist/resolve-host-types.js +0 -8
- package/vendor/compiler/package.json +1 -1
- package/vendor/node-sdk/dist/node-factory/define-llm-node/default-llm-ports.d.ts +3 -7
- package/vendor/node-sdk/dist/node-factory/define-llm-node/default-llm-ports.js +4 -44
- package/vendor/node-sdk/dist/node-factory/define-llm-node/define-llm-node.d.ts +4 -6
- package/vendor/node-sdk/dist/node-factory/define-llm-node/define-llm-node.js +4 -6
- package/vendor/node-sdk/dist/node-factory/define-llm-node/llm-inventory-wire.d.ts +1 -0
- package/vendor/node-sdk/dist/node-factory/define-llm-node/llm-inventory-wire.js +1 -0
- package/vendor/node-sdk/dist/node-factory/define-llm-node/recovery-notice.d.ts +8 -0
- package/vendor/node-sdk/dist/node-factory/define-llm-node/recovery-notice.js +14 -0
- package/vendor/node-sdk/dist/node-factory/define-mcp/mcp-handle.d.ts +3 -4
- package/vendor/node-sdk/dist/node-factory/define-mcp/mcp-handle.js +1 -1
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/types.d.ts +2 -4
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/ui-schema-inference.d.ts +1 -1
- package/vendor/node-sdk/package.json +1 -1
- package/vendor/runtime/dist/port-feed-override.d.ts +13 -0
- package/vendor/runtime/dist/port-feed-override.js +21 -0
- package/vendor/runtime/dist/port-signal-from-response.d.ts +15 -0
- package/vendor/runtime/dist/port-signal-from-response.js +48 -0
- package/vendor/runtime/dist/runtime-editor.d.ts +5 -1
- package/vendor/runtime/dist/runtime-editor.js +19 -0
- package/vendor/runtime/dist/runtime-runner.d.ts +8 -3
- package/vendor/runtime/dist/runtime-runner.js +108 -87
- package/vendor/runtime/dist/runtime.d.ts +3 -1
- package/vendor/runtime/dist/runtime.js +1 -0
- package/vendor/runtime/dist/testing/workflows/workflow-events.d.ts +10 -6
- package/vendor/runtime/dist/testing/workflows/workflow-events.js +21 -31
- package/vendor/runtime/dist/types.d.ts +52 -40
- package/vendor/runtime/dist/types.js +5 -1
- package/vendor/runtime/package.json +1 -1
- package/vendor/server/dist/bridge/attach-langflower-bridge.js +3 -2
- package/vendor/server/dist/bridge/bridge-event-log.js +17 -102
- package/vendor/server/dist/bridge/build-execution-context.d.ts +5 -2
- package/vendor/server/dist/bridge/build-execution-context.js +48 -8
- package/vendor/server/dist/bridge/forward-runner-event.d.ts +1 -1
- package/vendor/server/dist/bridge/forward-runner-event.js +7 -12
- package/vendor/server/dist/bridge/get-live-wired-tools.d.ts +13 -0
- package/vendor/server/dist/bridge/get-live-wired-tools.js +83 -0
- package/vendor/server/dist/bridge/langflower-tools-rpc.d.ts +7 -0
- package/vendor/server/dist/bridge/langflower-tools-rpc.js +29 -0
- package/vendor/server/dist/bridge/wire-custom-palette-handlers.d.ts +2 -1
- package/vendor/server/dist/bridge/wire-custom-palette-handlers.js +3 -5
- package/vendor/server/dist/bridge/wire-runner-handlers.js +17 -10
- package/vendor/server/dist/bridge/wire-workflow-handlers.js +23 -9
- package/vendor/server/dist/checkpoint/run-checkpoint-session.d.ts +1 -1
- package/vendor/server/dist/checkpoint/run-checkpoint-session.js +10 -9
- package/vendor/server/dist/palette/compile-and-hot-swap-custom-nodes.d.ts +10 -0
- package/vendor/server/dist/palette/compile-and-hot-swap-custom-nodes.js +23 -0
- package/vendor/server/dist/session/reset-session-execution-feed.d.ts +6 -0
- package/vendor/server/dist/session/reset-session-execution-feed.js +8 -0
- package/vendor/server/dist/workflow/apply-editor-mutation.d.ts +5 -0
- package/vendor/server/dist/workflow/apply-editor-mutation.js +32 -0
- package/vendor/server/skeleton/instructions.md +9 -5
- package/vendor/server/skeleton/nodes/my-nodes/README.md +4 -3
- package/vendor/server/skeleton/nodes/my-nodes/package.json +1 -1
- package/vendor/server/skeleton/skills/langflower-helper/SKILL.md +82 -38
- package/vendor/server/skeleton/skills/langflower-helper/architecture.md +29 -10
- package/vendor/server/skeleton/skills/langflower-helper/layout.md +16 -15
- package/vendor/server/skeleton/skills/langflower-node-writer/SKILL.md +19 -9
- package/vendor/server/skeleton/skills/langflower-workflow-writer/SKILL.md +23 -15
- package/vendor/server/skeleton/workflows/kb-create.json +15 -43
- package/vendor/server/skeleton/workflows/kb-navigate.json +8 -22
- package/vendor/server/skeleton/workflows/simple-coder.json +18 -46
- package/vendor/server/skeleton/workflows/starter.json +35 -22
- package/vendor/shared/dist/execution/derive-run-settle-outcome.d.ts +1 -1
- package/vendor/shared/dist/execution/derive-run-settle-outcome.js +4 -3
- package/vendor/shared/dist/execution/derive-run-settle-outcome.test.js +18 -15
- package/vendor/shared/dist/langflower-bus-config.d.ts +6 -14
- package/vendor/shared/dist/langflower-bus-config.js +4 -12
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.js +6 -0
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.test.js +30 -0
- package/vendor/shared/dist/langflower-ws-waits.d.ts +9 -14
- package/vendor/shared/dist/langflower-ws-waits.js +14 -14
- package/vendor/websocket-bridge/dist/bridge-codec.d.ts +1 -0
- package/vendor/websocket-bridge/dist/bridge-codec.js +11 -11
- package/vendor/websocket-bridge/dist/bridge-frame.js +1 -1
- package/vendor/websocket-bridge/dist/bridge-subjects.d.ts +1 -1
- package/vendor/websocket-bridge/dist/bridge-subjects.js +2 -2
- package/vendor/websocket-bridge/dist/bridge-types.d.ts +13 -1
- package/vendor/websocket-bridge/dist/create-client.js +3 -3
- package/vendor/websocket-bridge/dist/create-server.js +12 -6
- package/vendor/websocket-bridge/package.json +8 -0
- package/ui-dist/main-ECEWAM6V.js +0 -311
- package/ui-dist/styles-EOXODOI7.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";@layer properties;:root{--ngd-colors-gray-100: #ffffff;--ngd-colors-gray-200: #f7f7f7;--ngd-colors-gray-300: #edeff3;--ngd-colors-gray-400: #d5d8e0;--ngd-colors-gray-450: #c2c0c0;--ngd-colors-gray-500: #6f7480;--ngd-colors-gray-600: #4d5059;--ngd-colors-gray-650: #383a40;--ngd-colors-gray-700: #27282b;--ngd-colors-gray-800: #151516;--ngd-colors-gray-900-5: rgba(7, 7, 8, .05);--ngd-colors-gray-900-20: rgba(7, 7, 8, .2);--ngd-colors-gray-900-50: rgba(7, 7, 8, .5);--ngd-colors-acc1-400: #a977ff;--ngd-colors-acc1-500: #9140ff;--ngd-colors-acc1-500-40: rgba(145, 64, 255, .4);--ngd-colors-acc1-500-50: rgba(145, 64, 255, .5);--ngd-colors-acc1-600: #891aff;--ngd-colors-acc4-500: #1096e7}:root{--ngd-shadow: var(--ngd-colors-gray-900-20);--ngd-txt-primary-default: var(--ngd-colors-gray-800);--ngd-nav-button-primary-default: var(--ngd-colors-gray-600);--ngd-nav-button-primary-pressed: var(--ngd-colors-acc1-600);--ngd-nav-button-primary-hover: var(--ngd-colors-gray-900-5);--ngd-nav-button-primary-disabled: var(--ngd-colors-gray-450);--ngd-diagram-background-color: var(--ngd-colors-gray-200);--ngd-ui-bg-primary-default: var(--ngd-colors-gray-100);--ngd-ui-bg-tertiary-default: var(--ngd-colors-gray-200);--ngd-ui-stroke-primary-focus: var(--ngd-colors-gray-500);--ngd-pt-stroke-primary-default: var(--ngd-colors-gray-600);--ngd-node-bg-primary-default: var(--ngd-colors-gray-100);--ngd-node-stroke-primary-default: var(--ngd-colors-gray-400);--ngd-node-stroke-primary-hover: var(--ngd-colors-acc1-500);--ngd-node-port-fill-default: var(--ngd-colors-gray-100);--ngd-node-port-fill-active: var(--ngd-colors-acc1-500);--ngd-node-port-stroke-default: var(--ngd-colors-gray-500);--ngd-node-port-stroke-active: var(--ngd-colors-gray-100);--ngd-transform-box: var(--ngd-colors-acc4-500);--ngd-focus-ring-node-active: var(--ngd-colors-acc1-500-40);--ngd-button-gray-bg-default: var(--ngd-colors-gray-500);--ngd-button-gray-bg-hover: var(--ngd-colors-gray-600);--ngd-button-gray-bg-active: var(--ngd-colors-gray-650);--ngd-default-edge-label-bg-primary-default: var(--ngd-colors-gray-100);--ngd-background-line-minor-color: var(--ngd-colors-gray-450);--ngd-background-line-major-color: var(--ngd-colors-gray-500);--ngd-ui-border-color: var(--ngd-colors-gray-300);--ngd-minimap-bg-primary-default: var(--ngd-colors-gray-100);--ngd-minimap-stroke-primary-default: var(--ngd-colors-gray-400)}html[data-theme=dark]{--ngd-shadow: var(--ngd-colors-gray-900-50);--ngd-txt-primary-default: var(--ngd-colors-gray-100);--ngd-nav-button-primary-default: var(--ngd-colors-gray-400);--ngd-nav-button-primary-pressed: var(--ngd-colors-acc1-500);--ngd-nav-button-primary-hover: var(--ngd-colors-gray-900-5);--ngd-nav-button-primary-disabled: var(--ngd-colors-gray-600);--ngd-diagram-background-color: var(--ngd-colors-gray-800);--ngd-ui-bg-primary-default: var(--ngd-colors-gray-700);--ngd-ui-bg-tertiary-default: var(--ngd-colors-gray-800);--ngd-ui-stroke-primary-focus: var(--ngd-colors-gray-500);--ngd-pt-stroke-primary-default: var(--ngd-colors-gray-200);--ngd-node-bg-primary-default: var(--ngd-colors-gray-700);--ngd-node-stroke-primary-default: var(--ngd-colors-gray-600);--ngd-node-stroke-primary-hover: var(--ngd-colors-acc1-400);--ngd-node-port-fill-default: var(--ngd-colors-gray-100);--ngd-node-port-fill-active: var(--ngd-colors-acc1-500);--ngd-node-port-stroke-default: var(--ngd-colors-gray-500);--ngd-node-port-stroke-active: var(--ngd-colors-gray-100);--ngd-transform-box: var(--ngd-colors-acc4-500);--ngd-focus-ring-node-active: var(--ngd-colors-acc1-500-40);--ngd-button-gray-bg-default: var(--ngd-colors-gray-650);--ngd-button-gray-bg-hover: var(--ngd-colors-gray-600);--ngd-button-gray-bg-active: var(--ngd-colors-gray-500);--ngd-default-edge-label-bg-primary-default: var(--ngd-colors-gray-700);--ngd-background-line-minor-color: var(--ngd-colors-gray-700);--ngd-background-line-major-color: var(--ngd-colors-gray-600);--ngd-ui-border-color: var(--ngd-colors-gray-700);--ngd-minimap-bg-primary-default: var(--ngd-colors-gray-700);--ngd-minimap-stroke-primary-default: var(--ngd-colors-gray-600)}:root{--ngd-node-background-color: var(--ngd-node-bg-primary-default);--ngd-node-border-color: var(--ngd-node-stroke-primary-default);--ngd-node-border-color-hover: var(--ngd-node-stroke-primary-hover);--ngd-node-border-radius: .75rem;--ngd-node-border-size: .0625rem;--ngd-group-border-color: var(--ngd-ui-stroke-primary-focus);--ngd-group-border-color-hover: var(--ngd-pt-stroke-primary-default);--ngd-group-border-color-highlight: var(--ngd-colors-acc1-500);--ngd-group-box-shadow-color-highlight: var(--ngd-colors-acc1-500-50);--ngd-group-background-color-highlight: var(--ngd-colors-gray-400);--ngd-group-border-radius: .75rem;--ngd-group-highlight-size: 1.25rem;--ngd-selected-node-box-shadow: 0 0 0 .25rem var(--ngd-focus-ring-node-active);--ngd-rotate-handle-size: 2rem;--ngd-rotate-handle-distance: 2rem;--ngd-rotate-handle-background-color: var(--ngd-button-gray-bg-default);--ngd-rotate-handle-background-color-hover: var(--ngd-button-gray-bg-hover);--ngd-rotate-handle-background-color-active: var(--ngd-button-gray-bg-active);--ngd-rotate-handle-xy: calc(-.7071 * var(--ngd-rotate-handle-distance));--ngd-rotate-handle-top: var(--ngd-rotate-handle-xy);--ngd-rotate-handle-right: var(--ngd-rotate-handle-xy);--ngd-resize-line-border-width: .0625rem;--ngd-resize-line-border-style: solid;--ngd-resize-line-border-color: var(--ngd-transform-box);--ngd-resize-handle-size: .375rem;--ngd-resize-handle-background-color: var(--ngd-ui-bg-primary-default);--ngd-resize-handle-border-size: .0625rem;--ngd-resize-handle-border-style: solid;--ngd-resize-handle-border-color: var(--ngd-transform-box);--ngd-resize-handle-border-radius: 0;--ngd-port-size: .25rem;--ngd-port-background-color: var(--ngd-node-port-fill-default);--ngd-port-border-color: var(--ngd-node-port-stroke-default);--ngd-port-border-size: .125rem;--ngd-port-border-radius: 50%;--ngd-port-background-color-hover: var(--ngd-node-port-fill-active);--ngd-port-border-color-hover: var(--ngd-node-port-stroke-active);--ngd-port-border-size-hover: .25rem;--ngd-default-edge-stroke: var(--ngd-colors-gray-500);--ngd-default-edge-stroke-hover: var(--ngd-colors-gray-700);--ngd-default-edge-stroke-selected: var(--ngd-colors-acc1-500);--ngd-box-selection-border-color: #961ce7;--ngd-box-selection-border-size: 1px;--ngd-box-selection-background: rgba(43, 91, 213, .12);--ngd-default-edge-label-background-color: var(--ngd-default-edge-label-bg-primary-default);--ngd-default-edge-label-color: var(--ngd-txt-primary-default);--ngd-default-edge-label-border-color: var(--ngd-colors-gray-500);--ngd-background-dot-color: var(--ngd-colors-gray-500);--ngd-background-line-minor-width: .5;--ngd-background-line-major-width: 1;--ngd-background-line-minor-opacity: .5;--ngd-background-line-major-opacity: .6;--ngd-minimap-background: var(--ngd-minimap-bg-primary-default);--ngd-minimap-border-color: var(--ngd-minimap-stroke-primary-default);--ngd-minimap-shadow-color: var(--ngd-shadow);--ngd-minimap-border-radius: 1rem;--ngd-minimap-padding: .5rem;--ngd-minimap-margin: 1rem;--ngd-minimap-node-color: var(--ngd-colors-gray-400);--ngd-minimap-node-opacity: .8;--ngd-minimap-diagram-bounds-opacity: .3;--ngd-minimap-diagram-bounds-color: var(--ngd-colors-gray-400);--ngd-minimap-viewport-stroke-color: var(--ngd-colors-gray-400);--ngd-minimap-viewport-stroke-width: 1;--ngd-nav-button-color: var(--ngd-nav-button-primary-default);--ngd-nav-button-size: 1.25rem;--ngd-nav-button-border-radius: .5rem;--ngd-nav-button-padding: .6875rem;--ngd-nav-button-background-color-hover: var(--ngd-nav-button-primary-hover);--ngd-nav-button-color-active: var(--ngd-nav-button-primary-pressed);--ngd-nav-button-color-disabled: var(--ngd-nav-button-primary-disabled);--ngd-zoom-controls-font-size: .8125rem;--ngd-zoom-controls-font-weight: 500;--ngd-zoom-controls-color: var(--ngd-nav-button-primary-default)}.ng-diagram-port-hoverable .ng-diagram-port:hover,.ng-diagram-port-hoverable .ng-diagram-port.custom-content:hover .content-projection,.ng-diagram-port-hoverable-over-node:hover:not(:has(.ng-diagram-rotate-handle:hover)):not(:has([data-rotating])) .ng-diagram-port.custom-content .content-projection,.ng-diagram-port-hoverable-over-node:hover:not(:has(.ng-diagram-rotate-handle:hover)):not(:has([data-rotating])) .ng-diagram-port{background-color:var(--ngd-port-background-color-hover);border-color:var(--ngd-port-background-color-hover);outline:calc(1px + var(--ngd-port-border-size)) solid var(--ngd-port-background-color-hover);outline-offset:-1px;box-shadow:0 0 0 var(--ngd-port-border-size-hover) var(--ngd-port-border-color-hover)}.ng-diagram-node-wrapper:not(.ng-diagram-node-selected){transition:box-shadow .1s ease-in-out}.ng-diagram-node-wrapper.ng-diagram-group-highlight,.ng-diagram-node-wrapper.ng-diagram-group.ng-diagram-group-highlight{border-color:var(--ngd-group-border-color-highlight);box-shadow:0 0 var(--ngd-group-highlight-size) 0 var(--ngd-group-box-shadow-color-highlight) inset}.ng-diagram-node-wrapper.ng-diagram-node-selected{box-shadow:var(--ngd-selected-node-box-shadow)}ng-diagram *,ng-diagram *:before,ng-diagram *:after{box-sizing:border-box}@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: Inter, ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--color-red-300: oklch(80.8% .114 19.571);--color-red-700: oklch(50.5% .213 27.518);--color-amber-50: oklch(98.7% .022 95.277);--color-amber-100: oklch(96.2% .059 95.617);--color-amber-300: oklch(87.9% .169 91.605);--color-amber-400: oklch(82.8% .189 84.429);--color-amber-500: oklch(76.9% .188 70.08);--color-amber-600: oklch(66.6% .179 58.318);--color-amber-700: oklch(55.5% .163 48.998);--color-amber-800: oklch(47.3% .137 46.201);--color-amber-900: oklch(41.4% .112 45.904);--color-amber-950: oklch(27.9% .077 45.635);--color-emerald-50: oklch(97.9% .021 166.113);--color-emerald-100: oklch(95% .052 163.051);--color-emerald-300: oklch(84.5% .143 164.978);--color-emerald-400: oklch(76.5% .177 163.223);--color-emerald-500: oklch(69.6% .17 162.48);--color-emerald-600: oklch(59.6% .145 163.225);--color-emerald-700: oklch(50.8% .118 165.612);--color-emerald-950: oklch(26.2% .051 172.552);--color-sky-50: oklch(97.7% .013 236.62);--color-sky-100: oklch(95.1% .026 236.824);--color-sky-300: oklch(82.8% .111 230.318);--color-sky-400: oklch(74.6% .16 232.661);--color-sky-500: oklch(68.5% .169 237.323);--color-sky-700: oklch(50% .134 242.749);--color-sky-950: oklch(29.3% .066 243.157);--color-violet-400: oklch(70.2% .183 293.541);--color-rose-50: oklch(96.9% .015 12.422);--color-rose-100: oklch(94.1% .03 12.58);--color-rose-300: oklch(81% .117 11.638);--color-rose-400: oklch(71.2% .194 13.428);--color-rose-500: oklch(64.5% .246 16.439);--color-rose-600: oklch(58.6% .253 17.585);--color-rose-700: oklch(51.4% .222 16.935);--color-rose-800: oklch(45.5% .188 13.697);--color-rose-950: oklch(27.1% .105 12.094);--color-zinc-50: oklch(98.5% 0 0);--color-zinc-100: oklch(96.7% .001 286.375);--color-zinc-200: oklch(92% .004 286.32);--color-zinc-300: oklch(87.1% .006 286.286);--color-zinc-400: oklch(70.5% .015 286.067);--color-zinc-500: oklch(55.2% .016 285.938);--color-zinc-600: oklch(44.2% .017 285.786);--color-zinc-700: oklch(37% .013 285.805);--color-zinc-800: oklch(27.4% .006 286.033);--color-zinc-900: oklch(21% .006 285.885);--color-zinc-950: oklch(14.1% .005 285.823);--color-white: #fff;--spacing: .25rem;--container-md: 28rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--font-weight-medium: 500;--font-weight-semibold: 600;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-3{right:calc(var(--spacing) * 3)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-full{left:100%}.z-0{z-index:0}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[3\]{z-index:3}.container{width:100%}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.mx-1{margin-inline:var(--spacing)}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-12{height:calc(var(--spacing) * 12)}.h-\[2lh\]{height:2lh}.h-full{height:100%}.h-screen{height:100vh}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-72{max-height:calc(var(--spacing) * 72)}.min-h-0{min-height:0}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[calc\(var\(--lf-control-h\)\+1\.1rem\)\]{min-height:calc(var(--lf-control-h) + 1.1rem)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.w-max{width:max-content}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-\[92\%\]{max-width:92%}.max-w-\[min\(24rem\,calc\(100vw-2rem\)\)\]{max-width:min(24rem,calc(100vw - 2rem))}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.resize-none{resize:none}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-tl-md{border-top-left-radius:var(--radius-md)}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-300\/80{border-color:color-mix(in srgb,oklch(87.9% .169 91.605) 80%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-amber-300\/80{border-color:color-mix(in oklab,var(--color-amber-300) 80%,transparent)}}.border-amber-400{border-color:var(--color-amber-400)}.border-emerald-400{border-color:var(--color-emerald-400)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-400{border-color:var(--color-rose-400)}.border-sky-400{border-color:var(--color-sky-400)}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-300{border-color:var(--color-zinc-300)}.border-zinc-400{border-color:var(--color-zinc-400)}.border-zinc-900{border-color:var(--color-zinc-900)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/90{background-color:color-mix(in srgb,oklch(98.5% 0 0) 90%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-zinc-50\/90{background-color:color-mix(in oklab,var(--color-zinc-50) 90%,transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-400{background-color:var(--color-zinc-400)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-gradient-to-b{--tw-gradient-position: to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position: to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-white{--tw-gradient-from: var(--color-white);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-40\%{--tw-gradient-from-position: 40%}.from-45\%{--tw-gradient-from-position: 45%}.to-transparent{--tw-gradient-to: transparent;--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-1{padding-top:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-11{padding-top:calc(var(--spacing) * 11)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-4{--tw-leading: calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading: calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading: calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-red-700{color:var(--color-red-700)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-sky-700{color:var(--color-sky-700)}.text-white{color:var(--color-white)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-800{color:var(--color-zinc-800)}.text-zinc-900{color:var(--color-zinc-900)}.text-zinc-950{color:var(--color-zinc-950)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-70{opacity:70%}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-violet-400{--tw-ring-color: var(--color-violet-400)}.ring-zinc-400\/20{--tw-ring-color: color-mix(in srgb, oklch(70.5% .015 286.067) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.ring-zinc-400\/20{--tw-ring-color: color-mix(in oklab, var(--color-zinc-400) 20%, transparent)}}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\:block:is(:where(.group):focus-within *){display:block}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}}.placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}@media(hover:hover){.hover\:border-zinc-400:hover{border-color:var(--color-zinc-400)}}@media(hover:hover){.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}}@media(hover:hover){.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}}@media(hover:hover){.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}}@media(hover:hover){.hover\:bg-rose-100:hover{background-color:var(--color-rose-100)}}@media(hover:hover){.hover\:bg-sky-100:hover{background-color:var(--color-sky-100)}}@media(hover:hover){.hover\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}}@media(hover:hover){.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}}@media(hover:hover){.hover\:bg-zinc-400:hover{background-color:var(--color-zinc-400)}}@media(hover:hover){.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}}@media(hover:hover){.hover\:text-zinc-700:hover{color:var(--color-zinc-700)}}@media(hover:hover){.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-zinc-400:focus{border-color:var(--color-zinc-400)}.focus\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style: none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:50%}.dark\:border-amber-500:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-amber-500)}.dark\:border-amber-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-amber-700)}.dark\:border-amber-700\/60:where([data-theme=dark],[data-theme=dark] *){border-color:color-mix(in srgb,oklch(55.5% .163 48.998) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:border-amber-700\/60:where([data-theme=dark],[data-theme=dark] *){border-color:color-mix(in oklab,var(--color-amber-700) 60%,transparent)}}.dark\:border-amber-800:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-amber-800)}.dark\:border-emerald-500:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-emerald-500)}.dark\:border-rose-500:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-rose-500)}.dark\:border-rose-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-rose-700)}.dark\:border-rose-800:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-rose-800)}.dark\:border-sky-500:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-sky-500)}.dark\:border-zinc-100:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-zinc-100)}.dark\:border-zinc-500:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-zinc-500)}.dark\:border-zinc-600:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-zinc-600)}.dark\:border-zinc-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-zinc-700)}.dark\:border-zinc-800:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-zinc-800)}.dark\:bg-amber-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(27.9% .077 45.635) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-amber-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-amber-950) 40%,transparent)}}.dark\:bg-emerald-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(26.2% .051 172.552) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-emerald-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-emerald-950) 40%,transparent)}}.dark\:bg-rose-950\/30:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(27.1% .105 12.094) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-rose-950\/30:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-rose-950) 30%,transparent)}}.dark\:bg-rose-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(27.1% .105 12.094) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-rose-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-rose-950) 40%,transparent)}}.dark\:bg-sky-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(29.3% .066 243.157) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-sky-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-sky-950) 40%,transparent)}}.dark\:bg-zinc-100:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-zinc-100)}.dark\:bg-zinc-800:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-zinc-900)}.dark\:bg-zinc-950:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(14.1% .005 285.823) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-zinc-950\/40:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-zinc-950) 40%,transparent)}}.dark\:bg-zinc-950\/60:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(14.1% .005 285.823) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-zinc-950\/60:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-zinc-950) 60%,transparent)}}.dark\:bg-zinc-950\/90:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in srgb,oklch(14.1% .005 285.823) 90%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-zinc-950\/90:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab,var(--color-zinc-950) 90%,transparent)}}.dark\:from-zinc-900:where([data-theme=dark],[data-theme=dark] *){--tw-gradient-from: var(--color-zinc-900);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-amber-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-amber-100)}.dark\:text-amber-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-amber-300)}.dark\:text-amber-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-amber-400)}.dark\:text-emerald-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-emerald-300)}.dark\:text-emerald-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-emerald-400)}.dark\:text-red-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-red-300)}.dark\:text-rose-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-rose-300)}.dark\:text-rose-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-rose-400)}.dark\:text-sky-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-sky-300)}.dark\:text-zinc-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-100)}.dark\:text-zinc-200:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-200)}.dark\:text-zinc-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-300)}.dark\:text-zinc-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-400)}.dark\:text-zinc-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-500)}.dark\:text-zinc-900:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-900)}.dark\:placeholder\:text-zinc-500:where([data-theme=dark],[data-theme=dark] *)::placeholder{color:var(--color-zinc-500)}@media(hover:hover){.dark\:hover\:border-zinc-500:where([data-theme=dark],[data-theme=dark] *):hover{border-color:var(--color-zinc-500)}}@media(hover:hover){.dark\:hover\:bg-amber-900\/50:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(41.4% .112 45.904) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/50:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-amber-900) 50%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-amber-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(27.9% .077 45.635) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-amber-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-amber-950) 60%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-emerald-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(26.2% .051 172.552) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-emerald-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-emerald-950) 60%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-rose-950\/30:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(27.1% .105 12.094) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-rose-950\/30:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-rose-950) 30%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-rose-950\/40:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(27.1% .105 12.094) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-rose-950\/40:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-rose-950) 40%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-rose-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(27.1% .105 12.094) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-rose-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-rose-950) 60%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-sky-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in srgb,oklch(29.3% .066 243.157) 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-sky-950\/60:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--color-sky-950) 60%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-white:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-white)}}@media(hover:hover){.dark\:hover\:bg-zinc-200:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-zinc-200)}}@media(hover:hover){.dark\:hover\:bg-zinc-500:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-zinc-500)}}@media(hover:hover){.dark\:hover\:bg-zinc-700:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-zinc-700)}}@media(hover:hover){.dark\:hover\:bg-zinc-800:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-zinc-800)}}@media(hover:hover){.dark\:hover\:text-zinc-200:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-zinc-200)}}.dark\:focus\:border-zinc-500:where([data-theme=dark],[data-theme=dark] *):focus{border-color:var(--color-zinc-500)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}}:root{--lf-control-h: 2rem;--lf-btn-pad: calc(var(--lf-control-h) / 2)}@layer components{.lf-composer-pill{display:inline-flex;align-items:center;justify-content:center;height:var(--lf-control-h);padding:0 var(--lf-btn-pad);border-radius:9999px;font-size:.75rem;line-height:1;font-weight:500;transition-property:color,background-color,border-color,opacity;transition-duration:.15s}.lf-composer-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--lf-control-h);height:var(--lf-control-h);padding:0;border-radius:9999px;transition-property:color,background-color,border-color,opacity;transition-duration:.15s}}html,body{height:100%;margin:0}body{background-color:var(--color-zinc-50);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-zinc-950);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-zinc-950)}body:where([data-theme=dark],[data-theme=dark] *){color:var(--color-zinc-100)}button,textarea{font:inherit}@layer base{button:not(:disabled):not([aria-disabled=true]){cursor:pointer}button:disabled,button[aria-disabled=true]{cursor:not-allowed}}.lf-feed-row--hovered{border-radius:.5rem;background-color:#8b5cf61a}html[data-theme=dark] .lf-feed-row--hovered{background-color:#a78bfa1f}lf-edge:hover:not(.lf-edge--selected){--edge-stroke: rgb(74 108 182)}html[data-theme=dark] lf-edge:hover:not(.lf-edge--selected){--edge-stroke: rgb(120 160 220)}lf-edge.lf-edge--pulse ng-diagram-base-edge path{animation:lf-edge-pulse .3s ease-out}@keyframes lf-edge-pulse{0%{stroke:#10b981;stroke-width:3;filter:drop-shadow(0 0 6px rgba(16,185,129,.9))}to{stroke:var(--edge-stroke, var(--ngd-default-edge-stroke));stroke-width:2;filter:none}}.lf-port-anchor.lf-port-anchor--pulse{--ngd-port-border-color: rgb(16 185 129);--ngd-port-background-color: rgb(167 243 208);--ngd-port-size: .45rem;animation:lf-port-pulse .45s ease-in-out infinite}html[data-theme=dark] .lf-port-anchor.lf-port-anchor--pulse{--ngd-port-border-color: rgb(52 211 153);--ngd-port-background-color: rgb(6 78 59);animation-name:lf-port-pulse-dark}@keyframes lf-port-pulse{0%,to{box-shadow:0 0 #10b98100}50%{box-shadow:0 0 0 4px #10b981b3}}@keyframes lf-port-pulse-dark{0%,to{box-shadow:0 0 #34d39900}50%{box-shadow:0 0 0 4px #34d399b3}}lf-edge.lf-edge--pending ng-diagram-base-edge path{stroke:#ca8a04;stroke-width:3}lf-edge.lf-edge--error ng-diagram-base-edge path{stroke:#f43f5e;stroke-width:3}lf-edge.lf-edge--value ng-diagram-base-edge path{stroke:#10b981;stroke-width:3}html[data-theme=dark] lf-edge.lf-edge--value ng-diagram-base-edge path{stroke:#34d399}html[data-theme=dark] lf-edge.lf-edge--pending ng-diagram-base-edge path{stroke:#facc15}html[data-theme=dark] lf-edge.lf-edge--error ng-diagram-base-edge path{stroke:#fb7185}.lf-scroll{scrollbar-width:thin;scrollbar-color:rgb(212,212,216) transparent}.lf-scroll::-webkit-scrollbar{width:8px;height:8px}.lf-scroll::-webkit-scrollbar-button{display:none;width:0;height:0}.lf-scroll::-webkit-scrollbar-track{background:transparent}.lf-scroll::-webkit-scrollbar-thumb{background-color:#d4d4d8;border-radius:9999px;border:2px solid transparent;background-clip:content-box}.lf-scroll::-webkit-scrollbar-thumb:hover{background-color:#a1a1aa}.lf-scroll::-webkit-scrollbar-corner{background:transparent}html[data-theme=dark] .lf-scroll{scrollbar-color:rgb(63,63,70) transparent}html[data-theme=dark] .lf-scroll::-webkit-scrollbar-thumb{background-color:#3f3f46}html[data-theme=dark] .lf-scroll::-webkit-scrollbar-thumb:hover{background-color:#52525b}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false;}@property --tw-gradient-via-stops{syntax: "*"; inherits: false;}@property --tw-gradient-from-position{syntax: "<length-percentage>"; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: "<length-percentage>"; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: "<length-percentage>"; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial}}}
|
|
@@ -46,6 +46,8 @@ export type CreateChatCompletionStreamArgs = {
|
|
|
46
46
|
readonly messages: readonly ChatCompletionMessage[];
|
|
47
47
|
readonly tools?: readonly ChatCompletionToolDefinition[];
|
|
48
48
|
readonly signal?: ChatCompletionAbortSignal;
|
|
49
|
+
readonly frequency_penalty?: number;
|
|
50
|
+
readonly presence_penalty?: number;
|
|
49
51
|
};
|
|
50
52
|
/** OpenAI-compatible chat stream factory (credentials resolved server-side). */
|
|
51
53
|
export type CreateChatCompletionStream = (args: CreateChatCompletionStreamArgs) => Promise<AsyncIterable<ChatCompletionStreamChunk>>;
|
|
@@ -116,6 +116,88 @@ export declare const critiqueNode: {
|
|
|
116
116
|
readonly min: 0;
|
|
117
117
|
readonly max: 32;
|
|
118
118
|
readonly step: 1;
|
|
119
|
+
}, {
|
|
120
|
+
readonly field: "autokickOnIdle";
|
|
121
|
+
readonly type: "boolean";
|
|
122
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
123
|
+
readonly default: boolean;
|
|
124
|
+
}, {
|
|
125
|
+
readonly field: "deadLoopEnabled";
|
|
126
|
+
readonly type: "boolean";
|
|
127
|
+
readonly label: "Detect repetition dead loops";
|
|
128
|
+
readonly default: boolean;
|
|
129
|
+
}, {
|
|
130
|
+
readonly field: "maxAutokickAttempts";
|
|
131
|
+
readonly type: "number";
|
|
132
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
133
|
+
readonly default: number;
|
|
134
|
+
readonly min: 0;
|
|
135
|
+
readonly max: 1000;
|
|
136
|
+
readonly step: 1;
|
|
137
|
+
}, {
|
|
138
|
+
readonly field: "autokickBackoffMs";
|
|
139
|
+
readonly type: "number";
|
|
140
|
+
readonly label: "Autokick backoff base (ms)";
|
|
141
|
+
readonly default: number;
|
|
142
|
+
readonly min: 1000;
|
|
143
|
+
readonly step: 1000;
|
|
144
|
+
}, {
|
|
145
|
+
readonly field: "autokickMaxBackoffMs";
|
|
146
|
+
readonly type: "number";
|
|
147
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
148
|
+
readonly default: number;
|
|
149
|
+
readonly min: 1000;
|
|
150
|
+
readonly step: 1000;
|
|
151
|
+
}, {
|
|
152
|
+
readonly field: "autokickUserMessage";
|
|
153
|
+
readonly type: "string";
|
|
154
|
+
readonly label: "Autokick kick message";
|
|
155
|
+
readonly default: string;
|
|
156
|
+
}, {
|
|
157
|
+
readonly field: "autokickPenaltyFrequency";
|
|
158
|
+
readonly type: "number";
|
|
159
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
160
|
+
readonly default: number;
|
|
161
|
+
readonly min: -2;
|
|
162
|
+
readonly max: 2;
|
|
163
|
+
readonly step: 0.1;
|
|
164
|
+
}, {
|
|
165
|
+
readonly field: "autokickPenaltyPresence";
|
|
166
|
+
readonly type: "number";
|
|
167
|
+
readonly label: "Autokick presence_penalty delta";
|
|
168
|
+
readonly default: number;
|
|
169
|
+
readonly min: -2;
|
|
170
|
+
readonly max: 2;
|
|
171
|
+
readonly step: 0.1;
|
|
172
|
+
}, {
|
|
173
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
174
|
+
readonly type: "number";
|
|
175
|
+
readonly label: "Dead-loop window (tokens)";
|
|
176
|
+
readonly default: number;
|
|
177
|
+
readonly min: 10;
|
|
178
|
+
readonly max: 8000;
|
|
179
|
+
readonly step: 1;
|
|
180
|
+
}, {
|
|
181
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
182
|
+
readonly type: "number";
|
|
183
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
184
|
+
readonly default: number;
|
|
185
|
+
readonly min: 1;
|
|
186
|
+
readonly step: 1;
|
|
187
|
+
}, {
|
|
188
|
+
readonly field: "deadLoopMinRepetitions";
|
|
189
|
+
readonly type: "number";
|
|
190
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
191
|
+
readonly default: number;
|
|
192
|
+
readonly min: 1;
|
|
193
|
+
readonly step: 1;
|
|
194
|
+
}, {
|
|
195
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
196
|
+
readonly type: "number";
|
|
197
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
198
|
+
readonly default: number;
|
|
199
|
+
readonly min: 1;
|
|
200
|
+
readonly step: 1;
|
|
119
201
|
}];
|
|
120
202
|
readonly bypassPorts: Record<string, import("@langflower/node-sdk").WireType>;
|
|
121
203
|
readonly inputsConfigs: readonly [import("@langflower/node-sdk").InputPortMeta<import("@langflower/node-sdk").ExecutionContext<readonly [...({
|
|
@@ -224,6 +306,88 @@ export declare const critiqueNode: {
|
|
|
224
306
|
readonly min: 0;
|
|
225
307
|
readonly max: 32;
|
|
226
308
|
readonly step: 1;
|
|
309
|
+
}, {
|
|
310
|
+
readonly field: "autokickOnIdle";
|
|
311
|
+
readonly type: "boolean";
|
|
312
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
313
|
+
readonly default: boolean;
|
|
314
|
+
}, {
|
|
315
|
+
readonly field: "deadLoopEnabled";
|
|
316
|
+
readonly type: "boolean";
|
|
317
|
+
readonly label: "Detect repetition dead loops";
|
|
318
|
+
readonly default: boolean;
|
|
319
|
+
}, {
|
|
320
|
+
readonly field: "maxAutokickAttempts";
|
|
321
|
+
readonly type: "number";
|
|
322
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
323
|
+
readonly default: number;
|
|
324
|
+
readonly min: 0;
|
|
325
|
+
readonly max: 1000;
|
|
326
|
+
readonly step: 1;
|
|
327
|
+
}, {
|
|
328
|
+
readonly field: "autokickBackoffMs";
|
|
329
|
+
readonly type: "number";
|
|
330
|
+
readonly label: "Autokick backoff base (ms)";
|
|
331
|
+
readonly default: number;
|
|
332
|
+
readonly min: 1000;
|
|
333
|
+
readonly step: 1000;
|
|
334
|
+
}, {
|
|
335
|
+
readonly field: "autokickMaxBackoffMs";
|
|
336
|
+
readonly type: "number";
|
|
337
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
338
|
+
readonly default: number;
|
|
339
|
+
readonly min: 1000;
|
|
340
|
+
readonly step: 1000;
|
|
341
|
+
}, {
|
|
342
|
+
readonly field: "autokickUserMessage";
|
|
343
|
+
readonly type: "string";
|
|
344
|
+
readonly label: "Autokick kick message";
|
|
345
|
+
readonly default: string;
|
|
346
|
+
}, {
|
|
347
|
+
readonly field: "autokickPenaltyFrequency";
|
|
348
|
+
readonly type: "number";
|
|
349
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
350
|
+
readonly default: number;
|
|
351
|
+
readonly min: -2;
|
|
352
|
+
readonly max: 2;
|
|
353
|
+
readonly step: 0.1;
|
|
354
|
+
}, {
|
|
355
|
+
readonly field: "autokickPenaltyPresence";
|
|
356
|
+
readonly type: "number";
|
|
357
|
+
readonly label: "Autokick presence_penalty delta";
|
|
358
|
+
readonly default: number;
|
|
359
|
+
readonly min: -2;
|
|
360
|
+
readonly max: 2;
|
|
361
|
+
readonly step: 0.1;
|
|
362
|
+
}, {
|
|
363
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
364
|
+
readonly type: "number";
|
|
365
|
+
readonly label: "Dead-loop window (tokens)";
|
|
366
|
+
readonly default: number;
|
|
367
|
+
readonly min: 10;
|
|
368
|
+
readonly max: 8000;
|
|
369
|
+
readonly step: 1;
|
|
370
|
+
}, {
|
|
371
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
372
|
+
readonly type: "number";
|
|
373
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
374
|
+
readonly default: number;
|
|
375
|
+
readonly min: 1;
|
|
376
|
+
readonly step: 1;
|
|
377
|
+
}, {
|
|
378
|
+
readonly field: "deadLoopMinRepetitions";
|
|
379
|
+
readonly type: "number";
|
|
380
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
381
|
+
readonly default: number;
|
|
382
|
+
readonly min: 1;
|
|
383
|
+
readonly step: 1;
|
|
384
|
+
}, {
|
|
385
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
386
|
+
readonly type: "number";
|
|
387
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
388
|
+
readonly default: number;
|
|
389
|
+
readonly min: 1;
|
|
390
|
+
readonly step: 1;
|
|
227
391
|
}], import("@langflower/node-sdk/llm").LlmExecutionCaps>>, ...import("@langflower/node-sdk").InputPortMeta<unknown>[]];
|
|
228
392
|
readonly outputsConfigs: (import("@langflower/node-sdk").OutputParams & import("@langflower/node-sdk").PortMeta)[];
|
|
229
393
|
readonly getInstance: () => import("@langflower/node-sdk").ReactiveNodeInstance<readonly [...({
|
|
@@ -332,6 +496,88 @@ export declare const critiqueNode: {
|
|
|
332
496
|
readonly min: 0;
|
|
333
497
|
readonly max: 32;
|
|
334
498
|
readonly step: 1;
|
|
499
|
+
}, {
|
|
500
|
+
readonly field: "autokickOnIdle";
|
|
501
|
+
readonly type: "boolean";
|
|
502
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
503
|
+
readonly default: boolean;
|
|
504
|
+
}, {
|
|
505
|
+
readonly field: "deadLoopEnabled";
|
|
506
|
+
readonly type: "boolean";
|
|
507
|
+
readonly label: "Detect repetition dead loops";
|
|
508
|
+
readonly default: boolean;
|
|
509
|
+
}, {
|
|
510
|
+
readonly field: "maxAutokickAttempts";
|
|
511
|
+
readonly type: "number";
|
|
512
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
513
|
+
readonly default: number;
|
|
514
|
+
readonly min: 0;
|
|
515
|
+
readonly max: 1000;
|
|
516
|
+
readonly step: 1;
|
|
517
|
+
}, {
|
|
518
|
+
readonly field: "autokickBackoffMs";
|
|
519
|
+
readonly type: "number";
|
|
520
|
+
readonly label: "Autokick backoff base (ms)";
|
|
521
|
+
readonly default: number;
|
|
522
|
+
readonly min: 1000;
|
|
523
|
+
readonly step: 1000;
|
|
524
|
+
}, {
|
|
525
|
+
readonly field: "autokickMaxBackoffMs";
|
|
526
|
+
readonly type: "number";
|
|
527
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
528
|
+
readonly default: number;
|
|
529
|
+
readonly min: 1000;
|
|
530
|
+
readonly step: 1000;
|
|
531
|
+
}, {
|
|
532
|
+
readonly field: "autokickUserMessage";
|
|
533
|
+
readonly type: "string";
|
|
534
|
+
readonly label: "Autokick kick message";
|
|
535
|
+
readonly default: string;
|
|
536
|
+
}, {
|
|
537
|
+
readonly field: "autokickPenaltyFrequency";
|
|
538
|
+
readonly type: "number";
|
|
539
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
540
|
+
readonly default: number;
|
|
541
|
+
readonly min: -2;
|
|
542
|
+
readonly max: 2;
|
|
543
|
+
readonly step: 0.1;
|
|
544
|
+
}, {
|
|
545
|
+
readonly field: "autokickPenaltyPresence";
|
|
546
|
+
readonly type: "number";
|
|
547
|
+
readonly label: "Autokick presence_penalty delta";
|
|
548
|
+
readonly default: number;
|
|
549
|
+
readonly min: -2;
|
|
550
|
+
readonly max: 2;
|
|
551
|
+
readonly step: 0.1;
|
|
552
|
+
}, {
|
|
553
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
554
|
+
readonly type: "number";
|
|
555
|
+
readonly label: "Dead-loop window (tokens)";
|
|
556
|
+
readonly default: number;
|
|
557
|
+
readonly min: 10;
|
|
558
|
+
readonly max: 8000;
|
|
559
|
+
readonly step: 1;
|
|
560
|
+
}, {
|
|
561
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
562
|
+
readonly type: "number";
|
|
563
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
564
|
+
readonly default: number;
|
|
565
|
+
readonly min: 1;
|
|
566
|
+
readonly step: 1;
|
|
567
|
+
}, {
|
|
568
|
+
readonly field: "deadLoopMinRepetitions";
|
|
569
|
+
readonly type: "number";
|
|
570
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
571
|
+
readonly default: number;
|
|
572
|
+
readonly min: 1;
|
|
573
|
+
readonly step: 1;
|
|
574
|
+
}, {
|
|
575
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
576
|
+
readonly type: "number";
|
|
577
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
578
|
+
readonly default: number;
|
|
579
|
+
readonly min: 1;
|
|
580
|
+
readonly step: 1;
|
|
335
581
|
}], import("@langflower/node-sdk/llm").LlmExecutionCaps>;
|
|
336
582
|
readonly paletteSecondary?: true;
|
|
337
583
|
readonly description?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { filter, map, Observable } from 'rxjs';
|
|
2
|
-
import { defineLlmNode, isSteerControlPayload, } from '@langflower/node-sdk/llm';
|
|
2
|
+
import { defineLlmNode, isSteerControlPayload, toLlmRecoveryPortValue, } from '@langflower/node-sdk/llm';
|
|
3
3
|
import { collectAgentToolHandles } from '../../tools/collect-agent-tool-handles.js';
|
|
4
4
|
import { buildEffectiveSystemPrompt } from '../build-effective-system-prompt.js';
|
|
5
5
|
import { resolveChatProviderModel } from '../resolve-chat-provider-model.js';
|
|
@@ -206,7 +206,7 @@ export const critiqueNode = defineLlmNode({
|
|
|
206
206
|
const toolLog$ = cycle$.pipeValue(demuxByKind('toolLog', (chunk) => chunk.text));
|
|
207
207
|
const recovery$ = cycle$.pipeValue(demuxByKind('recoveryNotice', (chunk) => {
|
|
208
208
|
const notice = chunk;
|
|
209
|
-
return
|
|
209
|
+
return toLlmRecoveryPortValue(notice);
|
|
210
210
|
}));
|
|
211
211
|
const response$ = cycle$.pipeValue(demuxByKind('accept', (chunk) => chunk
|
|
212
212
|
.result));
|
|
@@ -102,6 +102,88 @@ export declare const fakeLlmNode: {
|
|
|
102
102
|
readonly min: 0;
|
|
103
103
|
readonly max: 32;
|
|
104
104
|
readonly step: 1;
|
|
105
|
+
}, {
|
|
106
|
+
readonly field: "autokickOnIdle";
|
|
107
|
+
readonly type: "boolean";
|
|
108
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
109
|
+
readonly default: boolean;
|
|
110
|
+
}, {
|
|
111
|
+
readonly field: "deadLoopEnabled";
|
|
112
|
+
readonly type: "boolean";
|
|
113
|
+
readonly label: "Detect repetition dead loops";
|
|
114
|
+
readonly default: boolean;
|
|
115
|
+
}, {
|
|
116
|
+
readonly field: "maxAutokickAttempts";
|
|
117
|
+
readonly type: "number";
|
|
118
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
119
|
+
readonly default: number;
|
|
120
|
+
readonly min: 0;
|
|
121
|
+
readonly max: 1000;
|
|
122
|
+
readonly step: 1;
|
|
123
|
+
}, {
|
|
124
|
+
readonly field: "autokickBackoffMs";
|
|
125
|
+
readonly type: "number";
|
|
126
|
+
readonly label: "Autokick backoff base (ms)";
|
|
127
|
+
readonly default: number;
|
|
128
|
+
readonly min: 1000;
|
|
129
|
+
readonly step: 1000;
|
|
130
|
+
}, {
|
|
131
|
+
readonly field: "autokickMaxBackoffMs";
|
|
132
|
+
readonly type: "number";
|
|
133
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
134
|
+
readonly default: number;
|
|
135
|
+
readonly min: 1000;
|
|
136
|
+
readonly step: 1000;
|
|
137
|
+
}, {
|
|
138
|
+
readonly field: "autokickUserMessage";
|
|
139
|
+
readonly type: "string";
|
|
140
|
+
readonly label: "Autokick kick message";
|
|
141
|
+
readonly default: string;
|
|
142
|
+
}, {
|
|
143
|
+
readonly field: "autokickPenaltyFrequency";
|
|
144
|
+
readonly type: "number";
|
|
145
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
146
|
+
readonly default: number;
|
|
147
|
+
readonly min: -2;
|
|
148
|
+
readonly max: 2;
|
|
149
|
+
readonly step: 0.1;
|
|
150
|
+
}, {
|
|
151
|
+
readonly field: "autokickPenaltyPresence";
|
|
152
|
+
readonly type: "number";
|
|
153
|
+
readonly label: "Autokick presence_penalty delta";
|
|
154
|
+
readonly default: number;
|
|
155
|
+
readonly min: -2;
|
|
156
|
+
readonly max: 2;
|
|
157
|
+
readonly step: 0.1;
|
|
158
|
+
}, {
|
|
159
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
160
|
+
readonly type: "number";
|
|
161
|
+
readonly label: "Dead-loop window (tokens)";
|
|
162
|
+
readonly default: number;
|
|
163
|
+
readonly min: 10;
|
|
164
|
+
readonly max: 8000;
|
|
165
|
+
readonly step: 1;
|
|
166
|
+
}, {
|
|
167
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
168
|
+
readonly type: "number";
|
|
169
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
170
|
+
readonly default: number;
|
|
171
|
+
readonly min: 1;
|
|
172
|
+
readonly step: 1;
|
|
173
|
+
}, {
|
|
174
|
+
readonly field: "deadLoopMinRepetitions";
|
|
175
|
+
readonly type: "number";
|
|
176
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
177
|
+
readonly default: number;
|
|
178
|
+
readonly min: 1;
|
|
179
|
+
readonly step: 1;
|
|
180
|
+
}, {
|
|
181
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
182
|
+
readonly type: "number";
|
|
183
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
184
|
+
readonly default: number;
|
|
185
|
+
readonly min: 1;
|
|
186
|
+
readonly step: 1;
|
|
105
187
|
}, {
|
|
106
188
|
readonly field: "tokenDelayMs";
|
|
107
189
|
readonly type: "number";
|
|
@@ -205,6 +287,88 @@ export declare const fakeLlmNode: {
|
|
|
205
287
|
readonly min: 0;
|
|
206
288
|
readonly max: 32;
|
|
207
289
|
readonly step: 1;
|
|
290
|
+
}, {
|
|
291
|
+
readonly field: "autokickOnIdle";
|
|
292
|
+
readonly type: "boolean";
|
|
293
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
294
|
+
readonly default: boolean;
|
|
295
|
+
}, {
|
|
296
|
+
readonly field: "deadLoopEnabled";
|
|
297
|
+
readonly type: "boolean";
|
|
298
|
+
readonly label: "Detect repetition dead loops";
|
|
299
|
+
readonly default: boolean;
|
|
300
|
+
}, {
|
|
301
|
+
readonly field: "maxAutokickAttempts";
|
|
302
|
+
readonly type: "number";
|
|
303
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
304
|
+
readonly default: number;
|
|
305
|
+
readonly min: 0;
|
|
306
|
+
readonly max: 1000;
|
|
307
|
+
readonly step: 1;
|
|
308
|
+
}, {
|
|
309
|
+
readonly field: "autokickBackoffMs";
|
|
310
|
+
readonly type: "number";
|
|
311
|
+
readonly label: "Autokick backoff base (ms)";
|
|
312
|
+
readonly default: number;
|
|
313
|
+
readonly min: 1000;
|
|
314
|
+
readonly step: 1000;
|
|
315
|
+
}, {
|
|
316
|
+
readonly field: "autokickMaxBackoffMs";
|
|
317
|
+
readonly type: "number";
|
|
318
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
319
|
+
readonly default: number;
|
|
320
|
+
readonly min: 1000;
|
|
321
|
+
readonly step: 1000;
|
|
322
|
+
}, {
|
|
323
|
+
readonly field: "autokickUserMessage";
|
|
324
|
+
readonly type: "string";
|
|
325
|
+
readonly label: "Autokick kick message";
|
|
326
|
+
readonly default: string;
|
|
327
|
+
}, {
|
|
328
|
+
readonly field: "autokickPenaltyFrequency";
|
|
329
|
+
readonly type: "number";
|
|
330
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
331
|
+
readonly default: number;
|
|
332
|
+
readonly min: -2;
|
|
333
|
+
readonly max: 2;
|
|
334
|
+
readonly step: 0.1;
|
|
335
|
+
}, {
|
|
336
|
+
readonly field: "autokickPenaltyPresence";
|
|
337
|
+
readonly type: "number";
|
|
338
|
+
readonly label: "Autokick presence_penalty delta";
|
|
339
|
+
readonly default: number;
|
|
340
|
+
readonly min: -2;
|
|
341
|
+
readonly max: 2;
|
|
342
|
+
readonly step: 0.1;
|
|
343
|
+
}, {
|
|
344
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
345
|
+
readonly type: "number";
|
|
346
|
+
readonly label: "Dead-loop window (tokens)";
|
|
347
|
+
readonly default: number;
|
|
348
|
+
readonly min: 10;
|
|
349
|
+
readonly max: 8000;
|
|
350
|
+
readonly step: 1;
|
|
351
|
+
}, {
|
|
352
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
353
|
+
readonly type: "number";
|
|
354
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
355
|
+
readonly default: number;
|
|
356
|
+
readonly min: 1;
|
|
357
|
+
readonly step: 1;
|
|
358
|
+
}, {
|
|
359
|
+
readonly field: "deadLoopMinRepetitions";
|
|
360
|
+
readonly type: "number";
|
|
361
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
362
|
+
readonly default: number;
|
|
363
|
+
readonly min: 1;
|
|
364
|
+
readonly step: 1;
|
|
365
|
+
}, {
|
|
366
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
367
|
+
readonly type: "number";
|
|
368
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
369
|
+
readonly default: number;
|
|
370
|
+
readonly min: 1;
|
|
371
|
+
readonly step: 1;
|
|
208
372
|
}, {
|
|
209
373
|
readonly field: "tokenDelayMs";
|
|
210
374
|
readonly type: "number";
|
|
@@ -308,6 +472,88 @@ export declare const fakeLlmNode: {
|
|
|
308
472
|
readonly min: 0;
|
|
309
473
|
readonly max: 32;
|
|
310
474
|
readonly step: 1;
|
|
475
|
+
}, {
|
|
476
|
+
readonly field: "autokickOnIdle";
|
|
477
|
+
readonly type: "boolean";
|
|
478
|
+
readonly label: "Autokick on idle and dead-loop";
|
|
479
|
+
readonly default: boolean;
|
|
480
|
+
}, {
|
|
481
|
+
readonly field: "deadLoopEnabled";
|
|
482
|
+
readonly type: "boolean";
|
|
483
|
+
readonly label: "Detect repetition dead loops";
|
|
484
|
+
readonly default: boolean;
|
|
485
|
+
}, {
|
|
486
|
+
readonly field: "maxAutokickAttempts";
|
|
487
|
+
readonly type: "number";
|
|
488
|
+
readonly label: "Max autokick reconnects (0 = unlimited)";
|
|
489
|
+
readonly default: number;
|
|
490
|
+
readonly min: 0;
|
|
491
|
+
readonly max: 1000;
|
|
492
|
+
readonly step: 1;
|
|
493
|
+
}, {
|
|
494
|
+
readonly field: "autokickBackoffMs";
|
|
495
|
+
readonly type: "number";
|
|
496
|
+
readonly label: "Autokick backoff base (ms)";
|
|
497
|
+
readonly default: number;
|
|
498
|
+
readonly min: 1000;
|
|
499
|
+
readonly step: 1000;
|
|
500
|
+
}, {
|
|
501
|
+
readonly field: "autokickMaxBackoffMs";
|
|
502
|
+
readonly type: "number";
|
|
503
|
+
readonly label: "Autokick backoff clamp (ms)";
|
|
504
|
+
readonly default: number;
|
|
505
|
+
readonly min: 1000;
|
|
506
|
+
readonly step: 1000;
|
|
507
|
+
}, {
|
|
508
|
+
readonly field: "autokickUserMessage";
|
|
509
|
+
readonly type: "string";
|
|
510
|
+
readonly label: "Autokick kick message";
|
|
511
|
+
readonly default: string;
|
|
512
|
+
}, {
|
|
513
|
+
readonly field: "autokickPenaltyFrequency";
|
|
514
|
+
readonly type: "number";
|
|
515
|
+
readonly label: "Autokick frequency_penalty delta";
|
|
516
|
+
readonly default: number;
|
|
517
|
+
readonly min: -2;
|
|
518
|
+
readonly max: 2;
|
|
519
|
+
readonly step: 0.1;
|
|
520
|
+
}, {
|
|
521
|
+
readonly field: "autokickPenaltyPresence";
|
|
522
|
+
readonly type: "number";
|
|
523
|
+
readonly label: "Autokick presence_penalty delta";
|
|
524
|
+
readonly default: number;
|
|
525
|
+
readonly min: -2;
|
|
526
|
+
readonly max: 2;
|
|
527
|
+
readonly step: 0.1;
|
|
528
|
+
}, {
|
|
529
|
+
readonly field: "deadLoopMaxWindowTokens";
|
|
530
|
+
readonly type: "number";
|
|
531
|
+
readonly label: "Dead-loop window (tokens)";
|
|
532
|
+
readonly default: number;
|
|
533
|
+
readonly min: 10;
|
|
534
|
+
readonly max: 8000;
|
|
535
|
+
readonly step: 1;
|
|
536
|
+
}, {
|
|
537
|
+
readonly field: "deadLoopConsecutiveThreshold";
|
|
538
|
+
readonly type: "number";
|
|
539
|
+
readonly label: "Dead-loop consecutive identical deltas";
|
|
540
|
+
readonly default: number;
|
|
541
|
+
readonly min: 1;
|
|
542
|
+
readonly step: 1;
|
|
543
|
+
}, {
|
|
544
|
+
readonly field: "deadLoopMinRepetitions";
|
|
545
|
+
readonly type: "number";
|
|
546
|
+
readonly label: "Dead-loop cyclic repetitions";
|
|
547
|
+
readonly default: number;
|
|
548
|
+
readonly min: 1;
|
|
549
|
+
readonly step: 1;
|
|
550
|
+
}, {
|
|
551
|
+
readonly field: "deadLoopMinPatternTokens";
|
|
552
|
+
readonly type: "number";
|
|
553
|
+
readonly label: "Dead-loop min pattern tokens";
|
|
554
|
+
readonly default: number;
|
|
555
|
+
readonly min: 1;
|
|
556
|
+
readonly step: 1;
|
|
311
557
|
}, {
|
|
312
558
|
readonly field: "tokenDelayMs";
|
|
313
559
|
readonly type: "number";
|