{"owner":"FlowiseAI","repo":"Flowise","hasSkills":true,"totalSkillsCount":112,"totalTokensCount":45677,"categories":["anthropic-skill","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"Flowise":{"command":"npx","args":["-y","@modelcontextprotocol/server-Flowise"]}}},"found":["packages/ui/jsconfig.json","packages/server/nodemon.json","packages/server/README.md","packages/ui/README-ZH.md","packages/ui/README.md","packages/ui/package.json","packages/server/package.json","packages/server/tsconfig.json","packages/server/README-ZH.md","packages/observe/package.json","packages/observe/README.md","packages/observe/ARCHITECTURE.md","packages/observe/TESTS.md","packages/observe/tsconfig.json","packages/components/models.json","packages/components/package.json","packages/components/README.md","packages/components/README-ZH.md","packages/components/tsconfig.json","packages/api-documentation/nodemon.json","packages/api-documentation/package.json","packages/api-documentation/README.md","packages/api-documentation/README-ZH.md","packages/api-documentation/tsconfig.json","packages/agentflow/ARCHITECTURE.md","packages/agentflow/CHANGELOG.md","packages/agentflow/package.json","packages/agentflow/README.md","packages/agentflow/TESTS.md","packages/agentflow/tsconfig.json","packages/ui/public/manifest.json","packages/observe/examples/package.json","packages/observe/examples/package-lock.json","packages/observe/examples/README.md","packages/observe/examples/tsconfig.json","packages/agentflow/examples/package.json","packages/agentflow/examples/package-lock.json","packages/agentflow/examples/README.md","packages/agentflow/examples/tsconfig.json","packages/server/marketplaces/tools/Add Hubspot Contact.json","packages/server/marketplaces/tools/Create Airtable Record.json","packages/server/marketplaces/tools/Get Current DateTime.json","packages/server/marketplaces/tools/Get Stock Mover.json","packages/server/marketplaces/tools/Make Webhook.json","packages/server/marketplaces/tools/Perplexity AI Search.json","packages/server/marketplaces/tools/Print or Export Text Document.json","packages/server/marketplaces/tools/Send Discord Message.json","packages/server/marketplaces/tools/Send Slack Message.json","packages/server/marketplaces/tools/Send Teams Message.json","packages/server/marketplaces/tools/SendGrid Email.json","packages/server/marketplaces/tools/Spider Web Scraper.json","packages/server/marketplaces/tools/Spider Web Search & Scrape.json","packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json","packages/server/marketplaces/chatflows/Context Chat Engine.json","packages/server/marketplaces/chatflows/Conversation Chain.json","packages/server/marketplaces/chatflows/Conversational Agent.json","packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json","packages/server/marketplaces/chatflows/CSV Agent.json","packages/server/marketplaces/chatflows/Github Docs QnA.json","packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json","packages/server/marketplaces/chatflows/Image Generation.json","packages/server/marketplaces/chatflows/Input Moderation.json","packages/server/marketplaces/chatflows/List Output Parser.json","packages/server/marketplaces/chatflows/LLM Chain.json","packages/server/marketplaces/chatflows/Local QnA.json","packages/server/marketplaces/chatflows/Multiple Documents QnA.json","packages/server/marketplaces/chatflows/OpenAI Assistant.json","packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json","packages/server/marketplaces/chatflows/Prompt Chaining.json","packages/server/marketplaces/chatflows/Query Engine.json","packages/server/marketplaces/chatflows/ReAct Agent.json","packages/server/marketplaces/chatflows/Replicate LLM.json","packages/server/marketplaces/chatflows/Simple Chat Engine.json","packages/server/marketplaces/chatflows/SQL DB Chain.json","packages/server/marketplaces/chatflows/SubQuestion Query Engine.json","packages/server/marketplaces/chatflows/Tool Agent.json","packages/server/marketplaces/agentflowsv2/Agentic RAG.json","packages/server/marketplaces/agentflowsv2/Agents Handoff.json","packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json","packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json","packages/server/marketplaces/agentflowsv2/Human In The Loop.json","packages/server/marketplaces/agentflowsv2/Interacting With API.json","packages/server/marketplaces/agentflowsv2/Iterations.json","packages/server/marketplaces/agentflowsv2/Simple RAG.json","packages/server/marketplaces/agentflowsv2/SQL Agent.json","packages/server/marketplaces/agentflowsv2/Structured Output.json","packages/server/marketplaces/agentflowsv2/Supervisor Worker.json","packages/server/marketplaces/agentflowsv2/Translator.json","packages/server/marketplaces/agentflowsv2/Workplace Chat.json","packages/server/marketplaces/agentflows/Agentic RAG.json","packages/server/marketplaces/agentflows/Branch Out Merge In.json","packages/server/marketplaces/agentflows/Customer Support Team Agents.json","packages/server/marketplaces/agentflows/Essay Writing & Grading.json","packages/server/marketplaces/agentflows/Human In Loop RAG.json","packages/server/marketplaces/agentflows/Lead Outreach.json","packages/server/marketplaces/agentflows/Multi Agents.json","packages/server/marketplaces/agentflows/Patient Concierge.json","packages/server/marketplaces/agentflows/Plan and Execute.json","packages/server/marketplaces/agentflows/Portfolio Management Team.json","packages/server/marketplaces/agentflows/Prompt Engineering Team.json","packages/server/marketplaces/agentflows/Software Team.json","packages/server/marketplaces/agentflows/Support Routing System.json","packages/server/marketplaces/agentflows/Text to SQL.json","packages/server/src/enterprise/LICENSE.md","packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md","packages/components/nodes/documentloaders/Unstructured/README.md","packages/components/nodes/documentloaders/S3File/README.md","packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md","packages/components/nodes/chatmodels/AzureChatOpenAI/README.md","packages/components/nodes/llms/Azure OpenAI/README.md","packages/components/nodes/recordmanager/PostgresRecordManager/README.md","packages/components/nodes/vectorstores/Postgres/README.md"],"skills":{"packages/ui/jsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"module\": \"commonjs\",\n        \"paths\": {\n            \"@/*\": [\"./src/*\"]\n        }\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\"]\n}\n","packages/server/nodemon.json":"{\n    \"ignore\": [\"**/*.spec.ts\", \".git\", \"node_modules\"],\n    \"watch\": [\"commands\", \"index.ts\", \"src\"],\n    \"exec\": \"pnpm start\",\n    \"ext\": \"ts\"\n}\n","packages/server/README.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\nEnglish | [中文](./README-ZH.md)\n\n<h3>Build AI Agents, Visually</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡Quick Start\n\n1. Install Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. Start Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. Open [http://localhost:3000](http://localhost:3000)\n\n## 🌱 Env Variables\n\nFlowise support different environment variables to configure your instance. You can specify the following variables in the `.env` file inside `packages/server` folder. Read [more](https://github.com/FlowiseAI/Flowise/blob/main/CONTRIBUTING.md#-env-variables)\n\nYou can also specify the env variables when using `npx`. For example:\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 Tests\n\nWe use [Cypress](https://github.com/cypress-io) for our e2e testing. If you want to run the test suite in dev mode please follow this guide:\n\n```sh\ncd Flowise/packages/server\npnpm install\n./node_modules/.bin/cypress install\npnpm build\n#Only for writing new tests on local dev -> pnpm run cypress:open\npnpm run e2e\n```\n\n## 📖 Documentation\n\n[Flowise Docs](https://docs.flowiseai.com/)\n\n## 🌐 Self Host\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>Others</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![Deploy on RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ Flowise Cloud\n\n[Get Started with Flowise Cloud](https://flowiseai.com/)\n\n## 🙋 Support\n\nFeel free to ask any questions, raise problems, and request new features in [discussion](https://github.com/FlowiseAI/Flowise/discussions)\n\n## 🙌 Contributing\n\nSee [contributing guide](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md). Reach out to us at [Discord](https://discord.gg/jbaHfsRVBW) if you have any questions or issues.\n\n## 📄 License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","packages/ui/README-ZH.md":"<!-- markdownlint-disable MD030 -->\n\n# 流程界面\n\n[English](./README.md) | 中文\n\nFlowise 的 React 前端界面。\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n安装：\n\n```bash\nnpm i flowise-ui\n```\n\n## 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","packages/ui/README.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise UI\n\nEnglish | [中文](./README-ZH.md)\n\nReact frontend ui for Flowise.\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\nInstall:\n\n```bash\nnpm i flowise-ui\n```\n\n## License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","packages/ui/package.json":"{\n    \"name\": \"flowise-ui\",\n    \"version\": \"3.1.4\",\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"HenryHeng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@codemirror/lang-javascript\": \"^6.2.1\",\n        \"@codemirror/lang-json\": \"^6.0.1\",\n        \"@codemirror/lang-markdown\": \"^6.2.5\",\n        \"@codemirror/view\": \"^6.26.3\",\n        \"@emotion/cache\": \"^11.4.0\",\n        \"@emotion/react\": \"^11.10.6\",\n        \"@emotion/styled\": \"^11.10.6\",\n        \"@lezer/highlight\": \"^1.2.1\",\n        \"@microsoft/fetch-event-source\": \"^2.0.1\",\n        \"@mui/base\": \"5.0.0-beta.40\",\n        \"@mui/icons-material\": \"5.0.3\",\n        \"@mui/lab\": \"5.0.0-alpha.156\",\n        \"@mui/material\": \"5.15.0\",\n        \"@mui/system\": \"^6.4.3\",\n        \"@mui/x-data-grid\": \"6.8.0\",\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@reduxjs/toolkit\": \"^2.2.7\",\n        \"@tabler/icons-react\": \"^3.30.0\",\n        \"@tiptap/core\": \"^3.20.4\",\n        \"@tiptap/extension-code-block-lowlight\": \"^3.20.4\",\n        \"@tiptap/extension-mention\": \"^3.20.4\",\n        \"@tiptap/extension-placeholder\": \"^3.20.4\",\n        \"@tiptap/markdown\": \"^3.20.4\",\n        \"@tiptap/pm\": \"^3.20.4\",\n        \"@tiptap/react\": \"^3.20.4\",\n        \"@tiptap/starter-kit\": \"^3.20.4\",\n        \"@uiw/codemirror-theme-sublime\": \"^4.21.21\",\n        \"@uiw/codemirror-theme-vscode\": \"^4.21.21\",\n        \"@uiw/react-codemirror\": \"^4.21.21\",\n        \"axios\": \"1.15.0\",\n        \"clsx\": \"^1.1.1\",\n        \"dompurify\": \"^3.2.6\",\n        \"dotenv\": \"^16.0.0\",\n        \"flowise-embed\": \"latest\",\n        \"flowise-embed-react\": \"latest\",\n        \"flowise-react-json-view\": \"*\",\n        \"formik\": \"^2.2.6\",\n        \"framer-motion\": \"^4.1.13\",\n        \"history\": \"^5.0.0\",\n        \"html-react-parser\": \"^3.0.4\",\n        \"lodash\": \"^4.17.21\",\n        \"lowlight\": \"^3.3.0\",\n        \"moment\": \"^2.29.3\",\n        \"notistack\": \"^2.0.4\",\n        \"prop-types\": \"^15.7.2\",\n        \"react\": \"^18.2.0\",\n        \"react-code-blocks\": \"^0.1.6\",\n        \"react-color\": \"^2.19.3\",\n        \"react-datepicker\": \"^4.21.0\",\n        \"react-device-detect\": \"^1.17.0\",\n        \"react-dom\": \"^18.2.0\",\n        \"react-markdown\": \"^8.0.6\",\n        \"react-perfect-scrollbar\": \"^1.5.8\",\n        \"react-redux\": \"^8.0.5\",\n        \"react-rewards\": \"^2.1.0\",\n        \"react-router\": \"~6.3.0\",\n        \"react-router-dom\": \"~6.3.0\",\n        \"react-syntax-highlighter\": \"^15.5.0\",\n        \"reactflow\": \"^11.5.6\",\n        \"recharts\": \"^2.12.6\",\n        \"redux\": \"^4.0.5\",\n        \"rehype-mathjax\": \"^4.0.2\",\n        \"rehype-raw\": \"^7.0.0\",\n        \"remark-gfm\": \"^3.0.1\",\n        \"remark-math\": \"^5.1.1\",\n        \"showdown\": \"^2.1.0\",\n        \"tippy.js\": \"^6.3.7\",\n        \"uuid\": \"^10.0.0\",\n        \"yup\": \"^0.32.9\"\n    },\n    \"scripts\": {\n        \"dev\": \"vite\",\n        \"start\": \"vite\",\n        \"build\": \"vite build\",\n        \"test\": \"jest\",\n        \"clean\": \"rimraf build\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\"\n    },\n    \"babel\": {\n        \"presets\": [\n            [\n                \"@babel/preset-env\",\n                {\n                    \"targets\": {\n                        \"node\": \"current\"\n                    }\n                }\n            ],\n            \"@babel/preset-react\"\n        ]\n    },\n    \"browserslist\": {\n        \"production\": [\n            \">0.2%\",\n            \"not dead\",\n            \"not op_mini all\"\n        ],\n        \"development\": [\n            \"last 1 chrome version\",\n            \"last 1 firefox version\",\n            \"last 1 safari version\"\n        ]\n    },\n    \"devDependencies\": {\n        \"@babel/eslint-parser\": \"^7.15.8\",\n        \"@babel/plugin-proposal-private-property-in-object\": \"^7.21.11\",\n        \"@testing-library/jest-dom\": \"^5.11.10\",\n        \"@testing-library/react\": \"^14.0.0\",\n        \"@testing-library/user-event\": \"^12.8.3\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"jest\": \"^29.7.0\",\n        \"pretty-quick\": \"^3.1.3\",\n        \"react-scripts\": \"^5.0.1\",\n        \"rimraf\": \"^5.0.5\",\n        \"sass\": \"^1.42.1\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-pwa\": \"^0.17.0\",\n        \"vite-plugin-react-js-support\": \"^1.0.7\"\n    }\n}\n","packages/server/package.json":"{\n    \"name\": \"flowise\",\n    \"version\": \"3.1.4\",\n    \"description\": \"Flowiseai Server\",\n    \"main\": \"dist/index\",\n    \"types\": \"dist/index.d.ts\",\n    \"bin\": {\n        \"flowise\": \"./bin/run\"\n    },\n    \"files\": [\n        \"bin\",\n        \"marketplaces\",\n        \"dist\",\n        \"npm-shrinkwrap.json\",\n        \"oclif.manifest.json\",\n        \"oauth2.html\"\n    ],\n    \"oclif\": {\n        \"bin\": \"flowise\",\n        \"commands\": \"./dist/commands\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && rimraf dist/enterprise/emails && gulp\",\n        \"start\": \"run-script-os\",\n        \"clean\": \"rimraf dist\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"start:windows\": \"cd bin && run start\",\n        \"start:default\": \"cd bin && ./run start\",\n        \"start-worker:windows\": \"cd bin && run worker\",\n        \"start-worker:default\": \"cd bin && ./run worker\",\n        \"user\": \"run-script-os\",\n        \"user:windows\": \"cd bin && run user\",\n        \"user:default\": \"cd bin && ./run user\",\n        \"dev\": \"nodemon\",\n        \"oclif-dev\": \"run-script-os\",\n        \"oclif-dev:windows\": \"cd bin && dev start\",\n        \"oclif-dev:default\": \"cd bin && ./dev start\",\n        \"postpack\": \"shx rm -f oclif.manifest.json\",\n        \"prepack\": \"pnpm build && oclif manifest && oclif readme\",\n        \"typeorm\": \"typeorm-ts-node-commonjs\",\n        \"typeorm:migration-generate\": \"pnpm typeorm migration:generate -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-run\": \"pnpm typeorm migration:run -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-revert\": \"pnpm typeorm migration:revert -d ./src/utils/typeormDataSource.ts\",\n        \"watch\": \"tsc --watch\",\n        \"version\": \"oclif readme && git add README.md\",\n        \"cypress:open\": \"cypress open\",\n        \"cypress:run\": \"cypress run\",\n        \"e2e\": \"start-server-and-test dev http://localhost:3000 cypress:run\",\n        \"cypress:ci\": \"START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run\",\n        \"test\": \"jest\",\n        \"test:watch\": \"jest --watch\",\n        \"test:coverage\": \"jest --coverage\"\n    },\n    \"keywords\": [],\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"Henry Heng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"engines\": {\n        \"node\": \"^24\"\n    },\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@aws-sdk/client-secrets-manager\": \"^3.1014.0\",\n        \"@bull-board/api\": \"^6.11.0\",\n        \"@bull-board/express\": \"^6.11.0\",\n        \"@modelcontextprotocol/sdk\": \"1.29.0\",\n        \"@google-cloud/logging-winston\": \"^6.0.0\",\n        \"@keyv/redis\": \"^4.2.0\",\n        \"@oclif/core\": \"4.0.7\",\n        \"@opentelemetry/api\": \"1.9.0\",\n        \"@opentelemetry/auto-instrumentations-node\": \"^0.52.0\",\n        \"@opentelemetry/core\": \"1.27.0\",\n        \"@opentelemetry/exporter-metrics-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/resources\": \"1.27.0\",\n        \"@opentelemetry/sdk-metrics\": \"1.27.0\",\n        \"@opentelemetry/sdk-node\": \"^0.54.0\",\n        \"@opentelemetry/sdk-trace-base\": \"1.27.0\",\n        \"@opentelemetry/semantic-conventions\": \"1.27.0\",\n        \"@types/bcryptjs\": \"^2.4.6\",\n        \"@types/lodash\": \"^4.17.20\",\n        \"@types/passport\": \"^1.0.16\",\n        \"@types/passport-jwt\": \"^4.0.1\",\n        \"@types/passport-local\": \"^1.0.38\",\n        \"async-mutex\": \"^0.4.0\",\n        \"axios\": \"1.15.0\",\n        \"bcryptjs\": \"^2.4.3\",\n        \"bullmq\": \"5.45.2\",\n        \"cache-manager\": \"^6.3.2\",\n        \"connect-pg-simple\": \"^10.0.0\",\n        \"connect-redis\": \"^8.0.1\",\n        \"connect-sqlite3\": \"^0.9.15\",\n        \"content-disposition\": \"0.5.4\",\n        \"cookie-parser\": \"^1.4.6\",\n        \"cors\": \"^2.8.5\",\n        \"crypto-js\": \"^4.1.1\",\n        \"csv-parser\": \"^3.0.0\",\n        \"dotenv\": \"^16.0.0\",\n        \"express\": \"^4.17.3\",\n        \"express-mysql-session\": \"^3.0.3\",\n        \"express-rate-limit\": \"^6.9.0\",\n        \"express-session\": \"^1.18.1\",\n        \"flowise-components\": \"workspace:^\",\n        \"flowise-nim-container-manager\": \"^1.0.11\",\n        \"flowise-ui\": \"workspace:^\",\n        \"geoip-lite\": \"^1.4.10\",\n        \"global-agent\": \"^3.0.0\",\n        \"gulp\": \"^4.0.2\",\n        \"handlebars\": \"^4.7.8\",\n        \"http-errors\": \"^2.0.0\",\n        \"http-status-codes\": \"^2.3.0\",\n        \"jsonwebtoken\": \"^9.0.2\",\n        \"jwt-decode\": \"^4.0.0\",\n        \"langchainhub\": \"^0.0.11\",\n        \"lodash\": \"^4.17.21\",\n        \"moment\": \"^2.29.3\",\n        \"moment-timezone\": \"^0.5.34\",\n        \"multer\": \"2.2.0\",\n        \"multer-azure-blob-storage\": \"^1.2.0\",\n        \"multer-cloud-storage\": \"^4.0.0\",\n        \"multer-s3\": \"^3.0.1\",\n        \"mysql2\": \"^3.11.3\",\n        \"nanoid\": \"3\",\n        \"node-cron\": \"^4.2.1\",\n        \"nodemailer\": \"^7.0.7\",\n        \"openai\": \"6.19.0\",\n        \"passport\": \"^0.7.0\",\n        \"passport-auth0\": \"^1.4.4\",\n        \"passport-cookie\": \"^1.0.9\",\n        \"passport-github\": \"^1.1.0\",\n        \"passport-google-oauth20\": \"^2.0.0\",\n        \"passport-jwt\": \"^4.0.1\",\n        \"passport-local\": \"^1.0.0\",\n        \"passport-openidconnect\": \"^0.1.2\",\n        \"pg\": \"^8.11.1\",\n        \"posthog-node\": \"^3.5.0\",\n        \"prom-client\": \"^15.1.3\",\n        \"rate-limit-redis\": \"^4.2.0\",\n        \"reflect-metadata\": \"^0.1.13\",\n        \"s3-streamlogger\": \"^1.11.0\",\n        \"sanitize-html\": \"^2.11.0\",\n        \"sqlite3\": \"^5.1.6\",\n        \"stripe\": \"^15.6.0\",\n        \"turndown\": \"^7.2.0\",\n        \"typeorm\": \"^0.3.28\",\n        \"uuid\": \"^10.0.0\",\n        \"winston\": \"^3.9.0\",\n        \"winston-azure-blob\": \"^1.5.0\",\n        \"winston-daily-rotate-file\": \"^5.0.0\",\n        \"zod\": \"^3.25.76 || ^4\"\n    },\n    \"devDependencies\": {\n        \"@types/content-disposition\": \"0.5.8\",\n        \"@types/cookie-parser\": \"^1.4.7\",\n        \"@types/cors\": \"^2.8.12\",\n        \"@types/crypto-js\": \"^4.1.1\",\n        \"@types/express-session\": \"^1.18.0\",\n        \"@types/geoip-lite\": \"^1.4.4\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/jsonwebtoken\": \"^9.0.6\",\n        \"@types/multer\": \"^1.4.7\",\n        \"@types/multer-s3\": \"^3.0.3\",\n        \"@types/nodemailer\": \"^6.4.15\",\n        \"@types/passport-auth0\": \"^1.0.9\",\n        \"@types/passport-github\": \"^1.1.12\",\n        \"@types/passport-openidconnect\": \"^0.1.3\",\n        \"@types/sanitize-html\": \"^2.9.5\",\n        \"@types/supertest\": \"^6.0.3\",\n        \"@types/turndown\": \"^5.0.5\",\n        \"concurrently\": \"^7.1.0\",\n        \"cypress\": \"^13.13.0\",\n        \"jest\": \"^29.7.0\",\n        \"nodemon\": \"^2.0.22\",\n        \"oclif\": \"^4.20.5\",\n        \"rimraf\": \"^5.0.5\",\n        \"run-script-os\": \"^1.1.6\",\n        \"shx\": \"^0.3.3\",\n        \"start-server-and-test\": \"^2.0.3\",\n        \"supertest\": \"^7.1.0\",\n        \"ts-jest\": \"^29.3.2\",\n        \"ts-node\": \"^10.7.0\",\n        \"tsc-watch\": \"^6.0.4\",\n        \"typescript\": \"^5.4.5\"\n    }\n}\n","packages/server/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"lib\": [\"es2021\"],\n        \"target\": \"es2021\" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,\n        \"experimentalDecorators\": true /* Enable experimental support for TC39 stage 2 draft decorators. */,\n        \"emitDecoratorMetadata\": true /* Emit design-type metadata for decorated declarations in source files. */,\n        \"module\": \"commonjs\" /* Specify what module code is generated. */,\n        \"outDir\": \"dist\",\n        \"esModuleInterop\": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,\n        \"forceConsistentCasingInFileNames\": true /* Ensure that casing is correct in imports. */,\n        \"strict\": true /* Enable all strict type-checking options. */,\n        \"skipLibCheck\": true /* Skip type checking all .d.ts files. */,\n        \"sourceMap\": true,\n        \"strictPropertyInitialization\": false,\n        \"declaration\": true\n    },\n    \"include\": [\"src/**/*.ts\"],\n    \"exclude\": [\"node_modules\"]\n}\n","packages/server/README-ZH.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\n[English](./README.md) | 中文\n\n<h3>以可视化方式构建 AI Agents</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡ 快速入门\n\n1. 安装 Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. 启动 Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. 打开[http://localhost:3000](http://localhost:3000)\n\n## 🌱 环境变量\n\nFlowise 支持不同的环境变量来配置您的实例。您可以在`packages/server`文件夹中的`.env`文件中指定以下变量。阅读[更多](https://docs.flowiseai.com/configuration/environment-variables)\n\n您还可以在使用`npx`时指定环境变量。例如：\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 文档\n\n[Flowise 文档](https://docs.flowiseai.com/)\n\n## 🌐 自托管\n\n在您现有的基础设施中部署自托管的 Flowise，我们支持各种[部署](https://docs.flowiseai.com/configuration/deployment)\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>其他</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![在 Railway 上部署](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![部署到 Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![部署到 Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![部署到 RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ 云托管\n\n[开始使用云托管](https://flowiseai.com/)\n\n## 🙋 支持\n\n在[讨论区](https://github.com/FlowiseAI/Flowise/discussions)中随时提出任何问题、报告问题和请求新功能。\n\n## 🙌 贡献\n\n请参阅[贡献指南](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md)。如果您有任何问题或问题，请在[Discord](https://discord.gg/jbaHfsRVBW)上与我们联系。\n\n## 📄 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","packages/observe/package.json":"{\n    \"name\": \"@flowiseai/observe\",\n    \"version\": \"0.0.0-dev.1\",\n    \"description\": \"Embeddable React components for observing AI agent executions, evaluations, and runtime activity\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/FlowiseAI/Flowise.git\",\n        \"directory\": \"packages/observe\"\n    },\n    \"homepage\": \"https://github.com/FlowiseAI/Flowise/tree/main/packages/observe#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/FlowiseAI/Flowise/issues\"\n    },\n    \"keywords\": [\n        \"flowise\",\n        \"flowiseai\",\n        \"observe\",\n        \"executions\",\n        \"observability\",\n        \"react\",\n        \"llm\",\n        \"ai\",\n        \"agent\"\n    ],\n    \"publishConfig\": {\n        \"access\": \"public\",\n        \"registry\": \"https://registry.npmjs.org\"\n    },\n    \"main\": \"./dist/index.umd.js\",\n    \"module\": \"./dist/index.js\",\n    \"types\": \"./dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": \"./dist/index.js\",\n            \"require\": \"./dist/index.umd.js\",\n            \"types\": \"./dist/index.d.ts\"\n        }\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"sideEffects\": false,\n    \"scripts\": {\n        \"build\": \"tsc && vite build\",\n        \"clean\": \"rimraf dist\",\n        \"dev\": \"vite\",\n        \"dev:example\": \"vite --config examples/vite.config.ts\",\n        \"format\": \"prettier --write \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"format:check\": \"prettier --check \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"lint\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\"\",\n        \"lint:fix\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\" --fix\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"prepublishOnly\": \"npm run clean && npm run build\",\n        \"test\": \"jest\",\n        \"test:coverage\": \"jest --coverage\",\n        \"test:watch\": \"jest --watch\"\n    },\n    \"peerDependencies\": {\n        \"@emotion/react\": \"^11.10.0\",\n        \"@emotion/styled\": \"^11.10.0\",\n        \"@mui/icons-material\": \"^5.0.0\",\n        \"@mui/material\": \"^5.15.0\",\n        \"react\": \"^18.2.0\",\n        \"react-dom\": \"^18.2.0\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@tabler/icons-react\": \"^3.7.0\",\n        \"axios\": \"1.15.0\",\n        \"date-fns\": \"^3.6.0\",\n        \"flowise-react-json-view\": \"^1.21.7\",\n        \"lodash\": \"^4.17.21\",\n        \"react-markdown\": \"^9.0.1\",\n        \"react-syntax-highlighter\": \"15.5.0\",\n        \"remark-gfm\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@testing-library/jest-dom\": \"^6.6.3\",\n        \"@testing-library/react\": \"^14.3.1\",\n        \"@testing-library/user-event\": \"^14.5.2\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/lodash\": \"^4.14.195\",\n        \"@types/react\": \"^18.2.0\",\n        \"@types/react-dom\": \"^18.2.0\",\n        \"@types/react-syntax-highlighter\": \"15.5.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^8.18.2\",\n        \"@typescript-eslint/parser\": \"^8.18.2\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"eslint-import-resolver-typescript\": \"4.4.4\",\n        \"eslint-plugin-import\": \"^2.29.0\",\n        \"eslint-plugin-markdown\": \"^3.0.1\",\n        \"eslint-plugin-simple-import-sort\": \"^12.0.0\",\n        \"jest\": \"^29.7.0\",\n        \"jest-environment-jsdom\": \"^29.7.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"ts-jest\": \"^29.3.2\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-dts\": \"^3.7.0\"\n    }\n}\n","packages/observe/README.md":"# @flowiseai/observe\n\n[![Version](https://img.shields.io/npm/v/@flowiseai/observe)](https://www.npmjs.com/package/@flowiseai/observe)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md)\n\n> Embeddable React components for visualizing AI agent runtime observability — executions, evaluations, and more\n\n## ⚠️ Status\n\n**This package is currently under active development.**\n\n-   🚧 Components are not yet fully functional\n-   ❌ End-to-end functionality is not complete\n-   🔄 Features are still being implemented and tested\n-   ⚡ APIs may change before stable release\n-   📝 Documentation is being updated as development progresses\n\n**Cannot be used in production. For development and testing purposes only.**\n\n## Overview\n\n`@flowiseai/observe` is the runtime observability SDK for Flowise. It provides embeddable React components for viewing execution traces, node-level step details, and human-in-the-loop interactions for AI agent workflows built with Flowise.\n\nThis is the \"Observe\" layer of the Build-Run-Observe trio alongside `@flowiseai/agentflow` (Build).\n\n## Features\n\n-   **Execution List** — Filterable, paginated table of agent executions across all agentflows, or scoped to a single agentflow via `agentflowId`\n-   **Execution Detail** — Resizable split-pane with a sidebar node tree and a right-side step viewer\n-   **Node Step Viewer** — Renders markdown, JSON, raw code, and HTML output per node step, with rendered/raw toggle\n-   **Token / Cost / Time Metrics** — Per-node execution metrics displayed inline\n-   **Auto-Poll** — Automatically refreshes while a run is `INPROGRESS`, stops on terminal state\n-   **HITL Support** — Approve/Reject buttons for human-input nodes when `onHumanInput` callback is provided\n-   **State + Date Filters** — Filter by execution state and date range\n-   **Single-Row and Bulk Delete** — Opt-in trash icon on row hover, plus bulk delete via checkbox selection\n-   **Dark Mode** — Full light/dark theme support via design tokens and CSS variables\n-   **SDK-Owned Theme** — No host theme required; `ObserveProvider` injects its own MUI theme\n\n## Installation\n\n```bash\npnpm add @flowiseai/observe\n```\n\n**Peer Dependencies:**\n\n```bash\npnpm add react react-dom @mui/material @mui/icons-material @emotion/react @emotion/styled\n```\n\n> Note: ReactFlow is **not** a peer dependency. `@flowiseai/observe` is a viewer only — no canvas.\n\n## Basic Usage\n\n### Execution List\n\nDisplays all executions across every agentflow. Pass `agentflowId` to scope the list to a single flow — useful when embedding next to a specific agentflow canvas.\n\n```tsx\nimport { ExecutionsViewer, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            {/* All agentflows */}\n            <ExecutionsViewer allowDelete={true} pollInterval={3000} />\n\n            {/* Scoped to one agentflow */}\n            <ExecutionsViewer agentflowId='uuid-of-the-agentflow' allowDelete={true} pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### Standalone Execution Detail\n\nRenders the full step viewer for a single execution by ID — useful for deep-linking into a specific trace.\n\n```tsx\nimport { ExecutionDetail, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            <ExecutionDetail executionId='uuid-of-the-execution' pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### With HITL Callback\n\nThe `onHumanInput` callback is how the host application handles human-in-the-loop responses. The SDK delegates routing entirely to the consumer — OSS calls Flowise directly, DevSite routes through the AgentForge proxy.\n\n```tsx\n<ExecutionsViewer\n    onHumanInput={async (agentflowId, params) => {\n        // OSS: call Flowise prediction endpoint directly\n        await fetch(`/api/v1/prediction/${agentflowId}`, {\n            method: 'POST',\n            headers: { Authorization: `Bearer ${token}` },\n            body: JSON.stringify(params.humanInput)\n        })\n        // DevSite: route through AgentForge proxy instead\n    }}\n/>\n```\n\nWhen `onHumanInput` is not provided, Approve/Reject buttons are not rendered. No auth complexity leaks into the SDK.\n\n### With Request Interceptor\n\n`token` and `requestInterceptor` are both optional and compose: if both are provided, the Bearer header is set first, then the interceptor runs and can extend or override it.\n\n**API key (default):**\n\n```tsx\n// token alone — sets Authorization: Bearer header automatically\n<ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n    {/* your app */}\n</ObserveProvider>\n```\n\n**OSS session auth** — embedding inside the Flowise UI where a session cookie already exists:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n**DevSite proxy auth** — inject AgentForge proxy headers:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='https://...'\n    requestInterceptor={(config) => {\n        config.headers['x-agentforge-token'] = getProxyToken()\n        return config\n    }}\n>\n    {/* your app */}\n</ObserveProvider>\n```\n\nIf the interceptor throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds. Only pass trusted, developer-authored functions — never user-generated input.\n\n## Props\n\n### `<ObserveProvider>`\n\nRoot provider. Wraps `ExecutionsViewer` or `ExecutionDetail`. Injects the MUI theme, API client, and config context.\n\n<!-- prettier-ignore -->\n| Prop                  | Type                                                                      | Default        | Description                                                                                   |\n| --------------------- | ------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------- |\n| `apiBaseUrl`          | `string`                                                                  | **(required)** | Flowise API server base URL                                                                   |\n| `token`               | `string`                                                                  | —              | API key — sets `Authorization: Bearer <token>`. Optional when using `requestInterceptor`. |\n| `requestInterceptor`  | `(config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig`     | —              | Customize outgoing requests. Runs after Bearer header is set — can extend or override it. See [Request Interceptor](#with-request-interceptor) below. |\n| `isDarkMode`          | `boolean`                                                                 | `false`        | Use dark mode theme                                                                           |\n| `children`            | `ReactNode`                                                               | **(required)** | `ExecutionsViewer`, `ExecutionDetail`, or both                                                |\n\n### `<ExecutionsViewer>`\n\nFilterable, paginated list of executions. Clicking a row opens `ExecutionDetail` in a side drawer. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop             | Type                                                                | Default | Description                                                                         |\n| ---------------- | ------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------- |\n| `agentflowId`    | `string`                                                            | —       | Scope list to a single agentflow. Omit for full cross-agent list.                   |\n| `allowDelete`    | `boolean`                                                           | `false` | Show trash icon on row hover with inline confirm dialog                             |\n| `pollInterval`   | `number`                                                            | `3000`  | Auto-poll interval in ms while any execution is INPROGRESS. `0` = off              |\n| `initialFilters` | `Partial<ExecutionFilters>`                                         | —       | Pre-set filter values on mount                                                      |\n| `onHumanInput`   | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —       | HITL callback. Approve/Reject buttons hidden when not provided                      |\n\n### `<ExecutionDetail>`\n\nResizable split-pane viewer for a single execution. Left sidebar shows the node tree; right panel shows `NodeExecutionDetail` for the selected step. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop           | Type                                                                | Default        | Description                                                        |\n| -------------- | ------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------ |\n| `executionId`  | `string`                                                            | **(required)** | UUID of the execution to display                                   |\n| `pollInterval` | `number`                                                            | `3000`         | Auto-poll interval in ms while execution is INPROGRESS. `0` = off |\n| `onHumanInput` | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —              | HITL callback. Approve/Reject buttons hidden when not provided     |\n| `onClose`      | `() => void`                                                        | —              | Called when the panel is dismissed (dismissible contexts only)     |\n\n### Auto-Poll Behavior\n\nBoth `ExecutionsViewer` and `ExecutionDetail` auto-refresh while `state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → polling stops immediately\n```\n\nSet `pollInterval={0}` to disable auto-poll and rely on the manual refresh button only.\n\n### Deletion\n\nOpt-in via `allowDelete={true}` on `ExecutionsViewer`. Shows a trash icon on row hover. Clicking opens an inline confirm dialog. The SDK calls `DELETE /api/v1/executions` internally on confirm.\n\n> Bulk delete is available via checkbox selection in the table header.\n\n## Types\n\n```typescript\ntype ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED'\n\ninterface Execution {\n    id: string\n    executionData: string // JSON-serialized NodeExecutionData[]\n    state: ExecutionState\n    agentflowId: string\n    sessionId?: string\n    isPublic: boolean\n    createdDate: string\n    updatedDate: string\n    agentflow?: { id: string; name: string }\n}\n\ninterface NodeExecutionData {\n    nodeLabel: string\n    nodeId: string\n    data: unknown // rendered content (markdown string, object, etc.)\n    previousNodeIds: string[]\n    status: ExecutionState\n    name?: string\n    iterationIndex?: number\n    parentNodeId?: string\n    output?: unknown\n}\n\ninterface HumanInputParams {\n    question: string\n    chatId: string\n    humanInput: {\n        type: 'proceed' | 'reject'\n        startNodeId: string\n        feedback?: string\n    }\n}\n\ninterface ExecutionFilters {\n    state: ExecutionState | ''\n    startDate: string\n    endDate: string\n    sessionId: string\n    agentflowName: string // M2 only\n}\n```\n\n## Development\n\n```bash\n# Install dependencies (from monorepo root)\npnpm install\n\n# Build the package\npnpm build\n\n# Run tests\npnpm test\n\n# Run examples dev server\ncd examples && pnpm install && pnpm dev\n```\n\nCopy `examples/.env.example` to `examples/.env` and fill in your values before running the dev server.\n\nVisit the [examples](./examples/README.md) directory for usage demos. See [ARCHITECTURE.md](./ARCHITECTURE.md) for internal structure and design patterns.\n\n## Publishing\n\n### Version Update\n\n```bash\n# Prerelease (for testing / EA)\nnpm version prerelease --preid=dev   # 0.0.0-dev.1 → 0.0.0-dev.2\n\n# Patch / Minor / Major (stable)\nnpm version patch                    # 0.0.1\nnpm version minor                    # 0.1.0\nnpm version major                    # 1.0.0\n```\n\n### Verify Before Publishing\n\n```bash\npnpm build\nnpm pack --dry-run\nnpm publish --dry-run\n```\n\n### Publish\n\n```bash\n# EA / prerelease — tagged so npm install won't pick it up by default\nnpm publish --tag dev\n\n# Stable release\nnpm publish\n```\n\n> The `prepublishOnly` script runs `clean` and `build` automatically before every publish.\n\n## Documentation\n\n-   [ARCHITECTURE.md](./ARCHITECTURE.md) — Internal architecture, layer rules, and patterns\n-   [Examples](./examples/README.md) — Running the demo app\n\n## License\n\nApache-2.0 — see the repository root [LICENSE.md](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md) for details.\n\n---\n\nPart of the [Flowise](https://github.com/FlowiseAI/Flowise) ecosystem\n","packages/observe/ARCHITECTURE.md":"# @flowiseai/observe - Architecture\n\nThis document describes the internal architecture of the `@flowiseai/observe` package.\n\n## Overview\n\nThe package follows a **Domain-Driven Modular Architecture** with clear separation of concerns — the same four-layer structure as `@flowiseai/agentflow`. The goal is to keep UI primitives, business logic, API communication, and domain features cleanly separated, so individual features (executions, evaluations, chat history) can be added, tested, and removed without disturbing each other.\n\n```\nsrc/\n├── index.ts                    # Public Package API (\"Public Face\")\n│\n├── atoms/                      # ⚛️ UI Primitives (\"What it looks like\" (Dumb))\n├── features/                   # 🧩 Domain Features (\"What it does\" (Smart))\n├── core/                       # 🧠 Business Logic (\"Business Rules\" (Types/Logic))\n└── infrastructure/             # 🌐 External Services (\"Outside World\" (API/Storage))\n```\n\n---\n\n## Directory Structure\n\n### `atoms/` - UI Primitives\n\n**\"What it looks like.\"** Tiny, irreducible UI components with no business logic. Shared building blocks used across features.\n\nExample layout (illustrative — not exhaustive; check the directory for the current set):\n\n```\natoms/\n├── StatusIndicator.tsx     # Execution / node status icon (INPROGRESS, FINISHED, ERROR…)\n├── MetricsDisplay.tsx      # Token / cost / time metrics row\n├── NodeIcon.tsx            # AGENTFLOW_ICONS-driven avatar for a node type\n├── …                       # Other primitives as the SDK grows\n└── index.ts                # Central export\n```\n\n**Rules:**\n\n-   Must be \"dumb\" and stateless (or minimal local state for animations)\n-   No business logic\n-   No API calls\n-   Imported by features, never the reverse\n-   **Forbidden**: Importing from `features/` or `infrastructure/` — only `core/types`, `core/theme`, and `core/primitives`\n\n**Goal:** 100% visual consistency across all observe features.\n\n---\n\n### `features/` - Domain Features\n\n**\"What it does.\"** Self-contained domain modules. Each feature owns its components, hooks, and feature-local utilities. Adding a new observability feature (evaluations, chat history, MALT) means adding a new directory here — it does not touch existing feature exports.\n\nExample layout (illustrative — not exhaustive; the `executions` feature currently has more sub-components and hooks than shown here):\n\n```\nfeatures/\n├── executions/             # Execution viewer\n│   ├── components/\n│   │   ├── ExecutionsViewer.tsx      # Filterable list + pagination + resizable detail drawer\n│   │   ├── ExecutionDetail.tsx       # Resizable split-pane: tree sidebar + node detail\n│   │   ├── ExecutionTreeSidebar.tsx  # @mui/x-tree-view RichTreeView with custom slot\n│   │   ├── NodeExecutionDetail.tsx   # Step viewer: markdown/JSON/code/HTML renderers, HITL\n│   │   ├── ExecutionsListTable.tsx   # Sortable/selectable MUI table\n│   │   └── …                         # Other components (chat bubbles, panels) as the feature grows\n│   ├── hooks/\n│   │   ├── useExecutionPoll.ts       # Auto-poll while INPROGRESS, stop on terminal state\n│   │   ├── useExecutionTree.ts       # Build ExecutionTreeNode[] from flat NodeExecutionData[]\n│   │   ├── useResizableSidebar.ts    # Drag-to-resize width state (left- or right-anchored panels)\n│   │   └── …                         # Other feature-local hooks\n│   └── index.ts                      # Public API for this feature\n│\n└── (evaluations/)          # Future — GA\n    └── (chat-history/)     # Future — GA\n```\n\n**Rules:**\n\n-   Each feature has an `index.ts` gatekeeper — only re-export what consumers need\n-   **Features never import from other features directly** — if two features share logic, move it to `core/`\n-   Feature-specific utilities stay in the feature folder\n-   Hooks are co-located with their feature\n\n**Goal:** High cohesion. Deleting a feature folder should not break other features.\n\n---\n\n### `core/` - Business Logic\n\n**\"The Brain.\"** Framework-agnostic types, utilities, and the MUI theme factory. No React components, no API calls.\n\nExample layout (illustrative — not exhaustive; new sub-files land under `types/`, `primitives/`, and `utils/` as the SDK grows):\n\n```\ncore/\n├── types/\n│   ├── execution.ts        # Execution, ExecutionState, NodeExecutionData,\n│   │                       # ExecutionTreeNode, HumanInputParams\n│   ├── observe.ts          # ObserveBaseProps, ExecutionsViewerProps,\n│   │                       # ExecutionDetailProps, ExecutionFilters\n│   ├── nodeDetail.ts       # ChatMessage, ConditionEntry, AvailableToolEntry, …\n│   └── index.ts\n│\n├── primitives/             # Domain-free, safe to import from atoms/\n│   ├── agentflowIcons.ts   # AGENTFLOW_ICONS registry (icon + color per node type)\n│   ├── json.ts             # JSON tokenizer / safe parser\n│   └── index.ts\n│\n├── utils/                  # Domain-aware helpers — not importable from atoms/\n│   ├── guards.ts           # Type predicates over core/types/* shapes\n│   ├── tools.ts            # Tool-call extraction / resolution\n│   └── index.ts\n│\n└── theme/\n    ├── tokens.ts               # Color palette, spacing, shadows\n    ├── createObserveTheme.ts   # MUI theme factory (isDarkMode toggle)\n    └── index.ts\n```\n\n**Rules:**\n\n-   **No React components** — pure TypeScript only\n-   No browser-specific APIs unless unavoidable\n-   No side effects\n-   Can be tested in isolation\n\n#### `core/primitives/` vs `core/utils/`\n\n-   **`primitives/`** — Domain-free utilities with no knowledge of executions or node data. **Safe to import from `atoms/`.**\n-   **`utils/`** — Domain-aware utilities (e.g., execution state helpers). **Only importable by `features/` and `infrastructure/`.**\n\nWhen adding a utility, ask: _\"Does this function need to know what an Execution or NodeExecutionData is?\"_ If no → `primitives/`. If yes → `utils/`.\n\n**Goal:** Framework-agnostic source of truth.\n\n---\n\n### `infrastructure/` - External Services\n\n**\"The Outside World.\"** API client factory and React context providers.\n\nExample layout (illustrative — not exhaustive; new API modules land under `api/` as features grow):\n\n```\ninfrastructure/\n├── api/\n│   ├── client.ts           # bindApiClient(apiBaseUrl, token) — axios with Bearer header\n│   ├── executions.ts       # createExecutionsApi(client): getAllExecutions, getExecutionById,\n│   │                       # deleteExecutions, updateExecution\n│   └── index.ts\n│\n└── store/\n    └── ObserveContext.tsx  # ObserveProvider, useObserveApi(), useObserveConfig()\n```\n\n**Rules:**\n\n-   All external communication goes through `infrastructure/api/`\n-   Contexts are internal — composed in `ObserveProvider`, not exported directly to consumers\n-   `useObserveApi()` throws if called outside `ObserveProvider` (fast failure)\n\n**Goal:** Wrap external dependencies so they can be mocked in tests.\n\n---\n\n## Dependency Flow\n\n**Dependencies must only flow downwards.**\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                  Root Files (Public API)                │\n│                       (index.ts)                        │\n│                   \"The Public Face\"                     │\n└─────────────────────────────────────────────────────────┘\n                           │\n                           ▼\n┌─────────────────────────────────────────────────────────┐\n│                      features/                          │\n│   (executions, evaluations, chat-history, …)            │\n│                   \"What it does\"                        │\n└─────────────────────────────────────────────────────────┘\n          │                                    │\n          ▼                                    ▼\n┌──────────────────┐              ┌────────────────────────┐\n│      atoms/      │              │    infrastructure/     │\n│  (UI primitives) │              │    (api, store)        │\n│ \"What it looks   │              │ \"The Outside World\"    │\n│     like\"        │              │                        │\n└──────────────────┘              └────────────────────────┘\n          │                                    │\n          └──────────────┬─────────────────────┘\n                         ▼\n              ┌─────────────────────┐\n              │        core/        │\n              │  (types, theme,     │\n              │   primitives)       │\n              │     \"The Brain\"     │\n              └─────────────────────┘\n```\n\n**Import Rules:**\n\n-   `features` → `atoms`, `infrastructure`, `core` ✅\n-   `infrastructure` → `core` ✅\n-   `atoms` → `core/types`, `core/theme`, `core/primitives` only ✅\n-   `core` → nothing (leaf node) ✅\n-   **No reverse imports** — enforced by ESLint `import/no-restricted-paths`\n\n---\n\n## Observe-Specific Patterns\n\n### `ObserveProvider` — Root Provider\n\n`ObserveProvider` composes three providers:\n\n```tsx\n<ThemeProvider theme={createObserveTheme(isDarkMode)}>\n    <ObserveApiContext.Provider value={api}>\n        <ObserveConfigContext.Provider value={config}>{children}</ObserveConfigContext.Provider>\n    </ObserveApiContext.Provider>\n</ThemeProvider>\n```\n\n-   `ObserveApiContext` — holds the bound axios client (created once from `apiBaseUrl` + `token` + `requestInterceptor`)\n-   `ObserveConfigContext` — holds `isDarkMode` and other display config\n-   Features call `useObserveApi()` to get the client; they never construct it themselves\n\n### Request Interceptor — Auth Bridging\n\nThe SDK sends `Authorization: Bearer <token>` by default. Different consumers authenticate differently:\n\n| Consumer                     | Auth mechanism                              | How to configure                                       |\n| ---------------------------- | ------------------------------------------- | ------------------------------------------------------ |\n| DevSite                      | AgentForge proxy headers                    | `requestInterceptor` to inject proxy token             |\n| OSS (embedded in Flowise UI) | Session cookie + `x-request-from: internal` | `requestInterceptor` to set `withCredentials` + header |\n| OSS (standalone / external)  | Flowise API key                             | `token` prop (default)                                 |\n\n`requestInterceptor` is a callback on the Axios request config, identical in shape to the one in `@flowiseai/agentflow`:\n\n```ts\ninterface ObserveBaseProps {\n    requestInterceptor?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig\n}\n```\n\nIt is passed to `bindApiClient` and registered via `axios.interceptors.request.use`. If the callback throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds safely.\n\n**OSS session auth example:**\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n`requestInterceptor` should only be provided by trusted, developer-authored code — never from user input or dynamically evaluated strings.\n\n### Auto-Poll (`useExecutionPoll`)\n\n`useExecutionPoll` sets up a `setInterval` while `execution.state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → interval cleared immediately\n```\n\n-   `pollInterval={0}` disables auto-poll entirely\n-   `refresh()` is returned for manual refresh buttons\n-   The hook clears the interval on unmount\n\n### Execution Tree (`useExecutionTree`)\n\n`useExecutionTree` converts the flat `NodeExecutionData[]` stored as JSON in `execution.executionData` into a hierarchical `ExecutionTreeNode[]`. Two parenting mechanisms run in sequence (mirrors legacy `ExecutionDetails.jsx` `buildTreeData`):\n\n1. **`previousNodeIds` parent→child** — each non-iteration node attaches to the most-recent prior instance of any node listed in its `previousNodeIds`. Nodes with empty / unmatched `previousNodeIds` become roots. The \"most recent\" rule disambiguates when the same `nodeId` runs more than once (e.g. inside a loop).\n2. **Iteration grouping** — children with `parentNodeId` + `iterationIndex` are bundled into virtual `Iteration #N` container nodes (`isVirtualNode: true`) under the iteration agent's most-recent instance, then linked to one another inside the iteration via the same `previousNodeIds` rule (restricted to same-iteration siblings).\n\nTree-node ids are `${nodeId}_${arrayIndex}` so duplicate `nodeId`s remain addressable. The tree is consumed by `ExecutionTreeSidebar` (a `RichTreeView` slot) inside `ExecutionDetail`.\n\n### HITL Callback — Opaque Consumer Contract\n\nThe `onHumanInput` prop is intentionally opaque:\n\n```ts\ninterface ExecutionsViewerProps {\n    onHumanInput?: (agentflowId: string, params: HumanInputParams) => Promise<void>\n}\n```\n\n-   In OSS: consumer calls the Flowise prediction endpoint directly\n-   In DevSite: consumer routes through the AgentForge proxy\n\nThe SDK never calls the prediction API itself. Approve/Reject buttons are only rendered when `onHumanInput` is provided AND the node is a human input node in INPROGRESS state. This keeps auth and routing logic entirely out of the SDK.\n\n### Tenant Isolation\n\nTenant isolation is handled server-side by Flowise's `ExtendRequestContextMiddleware` via request headers. The SDK does not accept or pass a `tenantId` prop — the API returns only what the authenticated token is permitted to see.\n\n---\n\n## Gatekeeper Pattern\n\nEach module exposes only what's needed via its `index.ts`:\n\n```typescript\n// features/executions/index.ts (illustrative — re-export only what consumers need)\n// ✅ Public API\nexport { ExecutionsViewer } from './components/ExecutionsViewer'\nexport { ExecutionDetail } from './components/ExecutionDetail'\nexport { NodeExecutionDetail } from './components/NodeExecutionDetail'\nexport { useExecutionPoll } from './hooks/useExecutionPoll'\nexport { useExecutionTree } from './hooks/useExecutionTree'\n\n// ❌ Internal sub-components (e.g. ExecutionTreeSidebar, ChatMessageBubble) and helpers stay private\n```\n\n---\n\n## Adding a New Feature\n\nAdding evaluations, chat history, or MALT follows the same pattern:\n\n1. Create a folder under `features/`:\n\n    ```\n    features/evaluations/\n    ├── components/\n    │   └── EvaluationsViewer.tsx\n    ├── hooks/\n    │   └── useEvaluationPoll.ts\n    └── index.ts\n    ```\n\n2. Add the API module under `infrastructure/api/`:\n\n    ```\n    infrastructure/api/\n    └── evaluations.ts   # createEvaluationsApi(client)\n    ```\n\n3. Add any new types to `core/types/` (e.g., `evaluation.ts`)\n\n4. Export only from the feature's `index.ts`, then re-export from the package `src/index.ts`\n\n5. Import from infrastructure/core, never from other features:\n\n    ```typescript\n    // ✅ Good\n    import { useObserveApi } from '../../../infrastructure/store'\n    import type { Execution } from '../../../core/types'\n\n    // ❌ Bad — cross-feature import\n    import { ExecutionDetail } from '../executions/components/ExecutionDetail'\n    ```\n\n---\n\n## Root Files (`src/index.ts`)\n\nThe barrel export exposes only the public surface. Example shape (illustrative — refer to `src/index.ts` for the current set):\n\n```typescript\n// Components\nexport { ExecutionsViewer, ExecutionDetail, NodeExecutionDetail } from './features/executions'\nexport { ObserveProvider } from './infrastructure/store'\n\n// Hooks (for consumers building custom UIs on top of observe infrastructure)\nexport { useExecutionPoll, useExecutionTree } from './features/executions'\nexport { useObserveApi, useObserveConfig } from './infrastructure/store'\n\n// Types\nexport type { ExecutionsViewerProps, ExecutionDetailProps, ExecutionFilters } from './core/types'\nexport type { Execution, ExecutionState, NodeExecutionData, HumanInputParams, AgentflowRef } from './core/types'\n```\n\nEverything else is internal implementation detail.\n\n---\n\n## Development Principles\n\n### Barrel Exports\n\nEvery directory has an `index.ts` gatekeeper.\n\n**✅ Good:**\n\n```typescript\nimport { StatusIcon } from '../../atoms'\nimport { useObserveApi } from '../../infrastructure/store'\n```\n\n**❌ Bad:**\n\n```typescript\n// Never deep-link into files\nimport { StatusIcon } from '../../atoms/StatusIcon'\nimport { useObserveApi } from '../../infrastructure/store/ObserveContext'\n```\n\n### Naming Conventions\n\n| Type        | Convention                  | Example                      |\n| ----------- | --------------------------- | ---------------------------- |\n| Component   | PascalCase.tsx              | `ExecutionDetail.tsx`        |\n| Hook        | camelCase.ts (`use` prefix) | `useExecutionPoll.ts`        |\n| Logic/Types | camelCase.ts                | `execution.ts`, `observe.ts` |\n| API module  | camelCase.ts                | `executions.ts`              |\n| Styles      | kebab-case (co-located)     | `executions.css`             |\n\n### Theme Token Ordering\n\nInside `core/theme/tokens.ts`, all maps are ordered alphanumerically: `baseColors`, top-level `tokens` groups, subgroups, and keys (e.g. `gray50 < gray75 < gray100 < gray200`). Each `{ dark, light }` / `{ dark, light, main }` pair follows the same rule. Keep new entries in order so diffs stay small.\n\n### Type Location Rule\n\nDomain types live in `core/types/`, **not** alongside their primary component, when they cross any of these boundaries:\n\n-   Imported by a hook (`features/*/hooks/*`)\n-   Imported by another component in a different file\n-   Used in a public API exported via `src/index.ts`\n\nComponent-internal types (props interfaces, file-private shapes used only inside the file that defines the component) stay co-located. The rule prevents the inversion where a hook reaches \"upward\" into a sibling component file just to read a type.\n\nProps interfaces (e.g. `ChatMessageBubbleProps`) are **always** file-local — never lift them to `core/types/` even if another component would re-use one. Re-using a props interface across components is a code smell on its own; the right fix is a shared underlying type, not a shared props interface.\n\nPredicates that narrow into a `core/types/` shape (e.g. `isChatMessageArray(value): value is ChatMessage[]`) live in `core/utils/` next to other domain-aware helpers — never in `atoms/` (atoms cannot import from `core/utils`, only from `core/primitives`).\n\nExample layout:\n\n-   `core/types/nodeDetail.ts` — `ChatMessage`, `ConditionEntry`, `AvailableToolEntry`, `UsedToolEntry`, `UsedToolRef`, `ToolNodeRef`, `NormalizedToolCall`\n-   `core/utils/guards.ts` — `isChatMessageArray`, `isConditionArray`, `isAvailableToolArray`, `isUsedToolArray`\n-   `core/utils/tools.ts` — `resolveTool`, `extractToolCalls` (consumed by `ChatMessageBubble` + `ToolAccordionList`)\n","packages/observe/TESTS.md":"# Observe Skill\n\nPath: `packages/observe/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/TESTS.md)","packages/observe/tsconfig.json":"# Observe Skill\n\nPath: `packages/observe/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/tsconfig.json)","packages/components/models.json":"# Components Skill\n\nPath: `packages/components/models.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/models.json)","packages/components/package.json":"# Components Skill\n\nPath: `packages/components/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/package.json)","packages/components/README.md":"# components Documentation\n\nPath: `packages/components/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README.md)","packages/components/README-ZH.md":"# Components Skill\n\nPath: `packages/components/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README-ZH.md)","packages/components/tsconfig.json":"# Components Skill\n\nPath: `packages/components/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/tsconfig.json)","packages/api-documentation/nodemon.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/nodemon.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/nodemon.json)","packages/api-documentation/package.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/package.json)","packages/api-documentation/README.md":"# api-documentation Documentation\n\nPath: `packages/api-documentation/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README.md)","packages/api-documentation/README-ZH.md":"# Api-documentation Skill\n\nPath: `packages/api-documentation/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README-ZH.md)","packages/api-documentation/tsconfig.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/tsconfig.json)","packages/agentflow/ARCHITECTURE.md":"# Agentflow Skill\n\nPath: `packages/agentflow/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/ARCHITECTURE.md)","packages/agentflow/CHANGELOG.md":"# Agentflow Skill\n\nPath: `packages/agentflow/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/CHANGELOG.md)","packages/agentflow/package.json":"# Agentflow Skill\n\nPath: `packages/agentflow/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/package.json)","packages/agentflow/README.md":"# agentflow Documentation\n\nPath: `packages/agentflow/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/README.md)","packages/agentflow/TESTS.md":"# Agentflow Skill\n\nPath: `packages/agentflow/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/TESTS.md)","packages/agentflow/tsconfig.json":"# Agentflow Skill\n\nPath: `packages/agentflow/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/tsconfig.json)","packages/ui/public/manifest.json":"# Public Skill\n\nPath: `packages/ui/public/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/public/manifest.json)","packages/observe/examples/package.json":"# Examples Skill\n\nPath: `packages/observe/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package.json)","packages/observe/examples/package-lock.json":"# Examples Skill\n\nPath: `packages/observe/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package-lock.json)","packages/observe/examples/README.md":"# examples Documentation\n\nPath: `packages/observe/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/README.md)","packages/observe/examples/tsconfig.json":"# Examples Skill\n\nPath: `packages/observe/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/tsconfig.json)","packages/agentflow/examples/package.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package.json)","packages/agentflow/examples/package-lock.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package-lock.json)","packages/agentflow/examples/README.md":"# examples Documentation\n\nPath: `packages/agentflow/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/README.md)","packages/agentflow/examples/tsconfig.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/tsconfig.json)","packages/server/marketplaces/tools/Add Hubspot Contact.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Add Hubspot Contact.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Add Hubspot Contact.json)","packages/server/marketplaces/tools/Create Airtable Record.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Create Airtable Record.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Create Airtable Record.json)","packages/server/marketplaces/tools/Get Current DateTime.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Current DateTime.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Current DateTime.json)","packages/server/marketplaces/tools/Get Stock Mover.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Stock Mover.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Stock Mover.json)","packages/server/marketplaces/tools/Make Webhook.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Make Webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Make Webhook.json)","packages/server/marketplaces/tools/Perplexity AI Search.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Perplexity AI Search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Perplexity AI Search.json)","packages/server/marketplaces/tools/Print or Export Text Document.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Print or Export Text Document.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Print or Export Text Document.json)","packages/server/marketplaces/tools/Send Discord Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Discord Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Discord Message.json)","packages/server/marketplaces/tools/Send Slack Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Slack Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Slack Message.json)","packages/server/marketplaces/tools/Send Teams Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Teams Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Teams Message.json)","packages/server/marketplaces/tools/SendGrid Email.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/SendGrid Email.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/SendGrid Email.json)","packages/server/marketplaces/tools/Spider Web Scraper.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Scraper.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Scraper.json)","packages/server/marketplaces/tools/Spider Web Search & Scrape.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Search & Scrape.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Search & Scrape.json)","packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json)","packages/server/marketplaces/chatflows/Context Chat Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Context Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Context Chat Engine.json)","packages/server/marketplaces/chatflows/Conversation Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversation Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversation Chain.json)","packages/server/marketplaces/chatflows/Conversational Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Agent.json)","packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json)","packages/server/marketplaces/chatflows/CSV Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/CSV Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/CSV Agent.json)","packages/server/marketplaces/chatflows/Github Docs QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Github Docs QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Github Docs QnA.json)","packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json)","packages/server/marketplaces/chatflows/Image Generation.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Image Generation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Image Generation.json)","packages/server/marketplaces/chatflows/Input Moderation.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Input Moderation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Input Moderation.json)","packages/server/marketplaces/chatflows/List Output Parser.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/List Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/List Output Parser.json)","packages/server/marketplaces/chatflows/LLM Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/LLM Chain.json)","packages/server/marketplaces/chatflows/Local QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Local QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Local QnA.json)","packages/server/marketplaces/chatflows/Multiple Documents QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Multiple Documents QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Multiple Documents QnA.json)","packages/server/marketplaces/chatflows/OpenAI Assistant.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAI Assistant.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAI Assistant.json)","packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json)","packages/server/marketplaces/chatflows/Prompt Chaining.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Prompt Chaining.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Prompt Chaining.json)","packages/server/marketplaces/chatflows/Query Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Query Engine.json)","packages/server/marketplaces/chatflows/ReAct Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/ReAct Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/ReAct Agent.json)","packages/server/marketplaces/chatflows/Replicate LLM.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Replicate LLM.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Replicate LLM.json)","packages/server/marketplaces/chatflows/Simple Chat Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Simple Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Simple Chat Engine.json)","packages/server/marketplaces/chatflows/SQL DB Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SQL DB Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SQL DB Chain.json)","packages/server/marketplaces/chatflows/SubQuestion Query Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SubQuestion Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SubQuestion Query Engine.json)","packages/server/marketplaces/chatflows/Tool Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Tool Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Tool Agent.json)","packages/server/marketplaces/agentflowsv2/Agentic RAG.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agentic RAG.json)","packages/server/marketplaces/agentflowsv2/Agents Handoff.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agents Handoff.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agents Handoff.json)","packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json)","packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json)","packages/server/marketplaces/agentflowsv2/Human In The Loop.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Human In The Loop.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Human In The Loop.json)","packages/server/marketplaces/agentflowsv2/Interacting With API.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Interacting With API.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Interacting With API.json)","packages/server/marketplaces/agentflowsv2/Iterations.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Iterations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Iterations.json)","packages/server/marketplaces/agentflowsv2/Simple RAG.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Simple RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Simple RAG.json)","packages/server/marketplaces/agentflowsv2/SQL Agent.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/SQL Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/SQL Agent.json)","packages/server/marketplaces/agentflowsv2/Structured Output.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Structured Output.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Structured Output.json)","packages/server/marketplaces/agentflowsv2/Supervisor Worker.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Supervisor Worker.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Supervisor Worker.json)","packages/server/marketplaces/agentflowsv2/Translator.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Translator.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Translator.json)","packages/server/marketplaces/agentflowsv2/Workplace Chat.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Workplace Chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Workplace Chat.json)","packages/server/marketplaces/agentflows/Agentic RAG.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Agentic RAG.json)","packages/server/marketplaces/agentflows/Branch Out Merge In.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Branch Out Merge In.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Branch Out Merge In.json)","packages/server/marketplaces/agentflows/Customer Support Team Agents.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Customer Support Team Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Customer Support Team Agents.json)","packages/server/marketplaces/agentflows/Essay Writing & Grading.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Essay Writing & Grading.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Essay Writing & Grading.json)","packages/server/marketplaces/agentflows/Human In Loop RAG.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Human In Loop RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Human In Loop RAG.json)","packages/server/marketplaces/agentflows/Lead Outreach.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Lead Outreach.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Lead Outreach.json)","packages/server/marketplaces/agentflows/Multi Agents.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Multi Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Multi Agents.json)","packages/server/marketplaces/agentflows/Patient Concierge.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Patient Concierge.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Patient Concierge.json)","packages/server/marketplaces/agentflows/Plan and Execute.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Plan and Execute.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Plan and Execute.json)","packages/server/marketplaces/agentflows/Portfolio Management Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Portfolio Management Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Portfolio Management Team.json)","packages/server/marketplaces/agentflows/Prompt Engineering Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Prompt Engineering Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Prompt Engineering Team.json)","packages/server/marketplaces/agentflows/Software Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Software Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Software Team.json)","packages/server/marketplaces/agentflows/Support Routing System.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Support Routing System.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Support Routing System.json)","packages/server/marketplaces/agentflows/Text to SQL.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Text to SQL.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Text to SQL.json)","packages/server/src/enterprise/LICENSE.md":"# Enterprise Skill\n\nPath: `packages/server/src/enterprise/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/src/enterprise/LICENSE.md)","packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md":"# AzureOpenAIEmbedding Documentation\n\nPath: `packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md)","packages/components/nodes/documentloaders/Unstructured/README.md":"# Unstructured Documentation\n\nPath: `packages/components/nodes/documentloaders/Unstructured/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/Unstructured/README.md)","packages/components/nodes/documentloaders/S3File/README.md":"# S3File Documentation\n\nPath: `packages/components/nodes/documentloaders/S3File/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/S3File/README.md)","packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md":"# ChatNemoGuardrails Documentation\n\nPath: `packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md)","packages/components/nodes/chatmodels/AzureChatOpenAI/README.md":"# AzureChatOpenAI Documentation\n\nPath: `packages/components/nodes/chatmodels/AzureChatOpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md)","packages/components/nodes/llms/Azure OpenAI/README.md":"# Azure OpenAI Documentation\n\nPath: `packages/components/nodes/llms/Azure OpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/llms/Azure OpenAI/README.md)","packages/components/nodes/recordmanager/PostgresRecordManager/README.md":"# PostgresRecordManager Documentation\n\nPath: `packages/components/nodes/recordmanager/PostgresRecordManager/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/recordmanager/PostgresRecordManager/README.md)","packages/components/nodes/vectorstores/Postgres/README.md":"# Postgres Documentation\n\nPath: `packages/components/nodes/vectorstores/Postgres/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/vectorstores/Postgres/README.md)"},"files":{"packages/ui/jsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"module\": \"commonjs\",\n        \"paths\": {\n            \"@/*\": [\"./src/*\"]\n        }\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\"]\n}\n","packages/server/nodemon.json":"{\n    \"ignore\": [\"**/*.spec.ts\", \".git\", \"node_modules\"],\n    \"watch\": [\"commands\", \"index.ts\", \"src\"],\n    \"exec\": \"pnpm start\",\n    \"ext\": \"ts\"\n}\n","packages/server/README.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\nEnglish | [中文](./README-ZH.md)\n\n<h3>Build AI Agents, Visually</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡Quick Start\n\n1. Install Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. Start Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. Open [http://localhost:3000](http://localhost:3000)\n\n## 🌱 Env Variables\n\nFlowise support different environment variables to configure your instance. You can specify the following variables in the `.env` file inside `packages/server` folder. Read [more](https://github.com/FlowiseAI/Flowise/blob/main/CONTRIBUTING.md#-env-variables)\n\nYou can also specify the env variables when using `npx`. For example:\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 Tests\n\nWe use [Cypress](https://github.com/cypress-io) for our e2e testing. If you want to run the test suite in dev mode please follow this guide:\n\n```sh\ncd Flowise/packages/server\npnpm install\n./node_modules/.bin/cypress install\npnpm build\n#Only for writing new tests on local dev -> pnpm run cypress:open\npnpm run e2e\n```\n\n## 📖 Documentation\n\n[Flowise Docs](https://docs.flowiseai.com/)\n\n## 🌐 Self Host\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>Others</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![Deploy on RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ Flowise Cloud\n\n[Get Started with Flowise Cloud](https://flowiseai.com/)\n\n## 🙋 Support\n\nFeel free to ask any questions, raise problems, and request new features in [discussion](https://github.com/FlowiseAI/Flowise/discussions)\n\n## 🙌 Contributing\n\nSee [contributing guide](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md). Reach out to us at [Discord](https://discord.gg/jbaHfsRVBW) if you have any questions or issues.\n\n## 📄 License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","packages/ui/README-ZH.md":"<!-- markdownlint-disable MD030 -->\n\n# 流程界面\n\n[English](./README.md) | 中文\n\nFlowise 的 React 前端界面。\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n安装：\n\n```bash\nnpm i flowise-ui\n```\n\n## 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","packages/ui/README.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise UI\n\nEnglish | [中文](./README-ZH.md)\n\nReact frontend ui for Flowise.\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\nInstall:\n\n```bash\nnpm i flowise-ui\n```\n\n## License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","packages/ui/package.json":"{\n    \"name\": \"flowise-ui\",\n    \"version\": \"3.1.4\",\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"HenryHeng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@codemirror/lang-javascript\": \"^6.2.1\",\n        \"@codemirror/lang-json\": \"^6.0.1\",\n        \"@codemirror/lang-markdown\": \"^6.2.5\",\n        \"@codemirror/view\": \"^6.26.3\",\n        \"@emotion/cache\": \"^11.4.0\",\n        \"@emotion/react\": \"^11.10.6\",\n        \"@emotion/styled\": \"^11.10.6\",\n        \"@lezer/highlight\": \"^1.2.1\",\n        \"@microsoft/fetch-event-source\": \"^2.0.1\",\n        \"@mui/base\": \"5.0.0-beta.40\",\n        \"@mui/icons-material\": \"5.0.3\",\n        \"@mui/lab\": \"5.0.0-alpha.156\",\n        \"@mui/material\": \"5.15.0\",\n        \"@mui/system\": \"^6.4.3\",\n        \"@mui/x-data-grid\": \"6.8.0\",\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@reduxjs/toolkit\": \"^2.2.7\",\n        \"@tabler/icons-react\": \"^3.30.0\",\n        \"@tiptap/core\": \"^3.20.4\",\n        \"@tiptap/extension-code-block-lowlight\": \"^3.20.4\",\n        \"@tiptap/extension-mention\": \"^3.20.4\",\n        \"@tiptap/extension-placeholder\": \"^3.20.4\",\n        \"@tiptap/markdown\": \"^3.20.4\",\n        \"@tiptap/pm\": \"^3.20.4\",\n        \"@tiptap/react\": \"^3.20.4\",\n        \"@tiptap/starter-kit\": \"^3.20.4\",\n        \"@uiw/codemirror-theme-sublime\": \"^4.21.21\",\n        \"@uiw/codemirror-theme-vscode\": \"^4.21.21\",\n        \"@uiw/react-codemirror\": \"^4.21.21\",\n        \"axios\": \"1.15.0\",\n        \"clsx\": \"^1.1.1\",\n        \"dompurify\": \"^3.2.6\",\n        \"dotenv\": \"^16.0.0\",\n        \"flowise-embed\": \"latest\",\n        \"flowise-embed-react\": \"latest\",\n        \"flowise-react-json-view\": \"*\",\n        \"formik\": \"^2.2.6\",\n        \"framer-motion\": \"^4.1.13\",\n        \"history\": \"^5.0.0\",\n        \"html-react-parser\": \"^3.0.4\",\n        \"lodash\": \"^4.17.21\",\n        \"lowlight\": \"^3.3.0\",\n        \"moment\": \"^2.29.3\",\n        \"notistack\": \"^2.0.4\",\n        \"prop-types\": \"^15.7.2\",\n        \"react\": \"^18.2.0\",\n        \"react-code-blocks\": \"^0.1.6\",\n        \"react-color\": \"^2.19.3\",\n        \"react-datepicker\": \"^4.21.0\",\n        \"react-device-detect\": \"^1.17.0\",\n        \"react-dom\": \"^18.2.0\",\n        \"react-markdown\": \"^8.0.6\",\n        \"react-perfect-scrollbar\": \"^1.5.8\",\n        \"react-redux\": \"^8.0.5\",\n        \"react-rewards\": \"^2.1.0\",\n        \"react-router\": \"~6.3.0\",\n        \"react-router-dom\": \"~6.3.0\",\n        \"react-syntax-highlighter\": \"^15.5.0\",\n        \"reactflow\": \"^11.5.6\",\n        \"recharts\": \"^2.12.6\",\n        \"redux\": \"^4.0.5\",\n        \"rehype-mathjax\": \"^4.0.2\",\n        \"rehype-raw\": \"^7.0.0\",\n        \"remark-gfm\": \"^3.0.1\",\n        \"remark-math\": \"^5.1.1\",\n        \"showdown\": \"^2.1.0\",\n        \"tippy.js\": \"^6.3.7\",\n        \"uuid\": \"^10.0.0\",\n        \"yup\": \"^0.32.9\"\n    },\n    \"scripts\": {\n        \"dev\": \"vite\",\n        \"start\": \"vite\",\n        \"build\": \"vite build\",\n        \"test\": \"jest\",\n        \"clean\": \"rimraf build\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\"\n    },\n    \"babel\": {\n        \"presets\": [\n            [\n                \"@babel/preset-env\",\n                {\n                    \"targets\": {\n                        \"node\": \"current\"\n                    }\n                }\n            ],\n            \"@babel/preset-react\"\n        ]\n    },\n    \"browserslist\": {\n        \"production\": [\n            \">0.2%\",\n            \"not dead\",\n            \"not op_mini all\"\n        ],\n        \"development\": [\n            \"last 1 chrome version\",\n            \"last 1 firefox version\",\n            \"last 1 safari version\"\n        ]\n    },\n    \"devDependencies\": {\n        \"@babel/eslint-parser\": \"^7.15.8\",\n        \"@babel/plugin-proposal-private-property-in-object\": \"^7.21.11\",\n        \"@testing-library/jest-dom\": \"^5.11.10\",\n        \"@testing-library/react\": \"^14.0.0\",\n        \"@testing-library/user-event\": \"^12.8.3\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"jest\": \"^29.7.0\",\n        \"pretty-quick\": \"^3.1.3\",\n        \"react-scripts\": \"^5.0.1\",\n        \"rimraf\": \"^5.0.5\",\n        \"sass\": \"^1.42.1\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-pwa\": \"^0.17.0\",\n        \"vite-plugin-react-js-support\": \"^1.0.7\"\n    }\n}\n","packages/server/package.json":"{\n    \"name\": \"flowise\",\n    \"version\": \"3.1.4\",\n    \"description\": \"Flowiseai Server\",\n    \"main\": \"dist/index\",\n    \"types\": \"dist/index.d.ts\",\n    \"bin\": {\n        \"flowise\": \"./bin/run\"\n    },\n    \"files\": [\n        \"bin\",\n        \"marketplaces\",\n        \"dist\",\n        \"npm-shrinkwrap.json\",\n        \"oclif.manifest.json\",\n        \"oauth2.html\"\n    ],\n    \"oclif\": {\n        \"bin\": \"flowise\",\n        \"commands\": \"./dist/commands\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && rimraf dist/enterprise/emails && gulp\",\n        \"start\": \"run-script-os\",\n        \"clean\": \"rimraf dist\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"start:windows\": \"cd bin && run start\",\n        \"start:default\": \"cd bin && ./run start\",\n        \"start-worker:windows\": \"cd bin && run worker\",\n        \"start-worker:default\": \"cd bin && ./run worker\",\n        \"user\": \"run-script-os\",\n        \"user:windows\": \"cd bin && run user\",\n        \"user:default\": \"cd bin && ./run user\",\n        \"dev\": \"nodemon\",\n        \"oclif-dev\": \"run-script-os\",\n        \"oclif-dev:windows\": \"cd bin && dev start\",\n        \"oclif-dev:default\": \"cd bin && ./dev start\",\n        \"postpack\": \"shx rm -f oclif.manifest.json\",\n        \"prepack\": \"pnpm build && oclif manifest && oclif readme\",\n        \"typeorm\": \"typeorm-ts-node-commonjs\",\n        \"typeorm:migration-generate\": \"pnpm typeorm migration:generate -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-run\": \"pnpm typeorm migration:run -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-revert\": \"pnpm typeorm migration:revert -d ./src/utils/typeormDataSource.ts\",\n        \"watch\": \"tsc --watch\",\n        \"version\": \"oclif readme && git add README.md\",\n        \"cypress:open\": \"cypress open\",\n        \"cypress:run\": \"cypress run\",\n        \"e2e\": \"start-server-and-test dev http://localhost:3000 cypress:run\",\n        \"cypress:ci\": \"START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run\",\n        \"test\": \"jest\",\n        \"test:watch\": \"jest --watch\",\n        \"test:coverage\": \"jest --coverage\"\n    },\n    \"keywords\": [],\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"Henry Heng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"engines\": {\n        \"node\": \"^24\"\n    },\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@aws-sdk/client-secrets-manager\": \"^3.1014.0\",\n        \"@bull-board/api\": \"^6.11.0\",\n        \"@bull-board/express\": \"^6.11.0\",\n        \"@modelcontextprotocol/sdk\": \"1.29.0\",\n        \"@google-cloud/logging-winston\": \"^6.0.0\",\n        \"@keyv/redis\": \"^4.2.0\",\n        \"@oclif/core\": \"4.0.7\",\n        \"@opentelemetry/api\": \"1.9.0\",\n        \"@opentelemetry/auto-instrumentations-node\": \"^0.52.0\",\n        \"@opentelemetry/core\": \"1.27.0\",\n        \"@opentelemetry/exporter-metrics-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/resources\": \"1.27.0\",\n        \"@opentelemetry/sdk-metrics\": \"1.27.0\",\n        \"@opentelemetry/sdk-node\": \"^0.54.0\",\n        \"@opentelemetry/sdk-trace-base\": \"1.27.0\",\n        \"@opentelemetry/semantic-conventions\": \"1.27.0\",\n        \"@types/bcryptjs\": \"^2.4.6\",\n        \"@types/lodash\": \"^4.17.20\",\n        \"@types/passport\": \"^1.0.16\",\n        \"@types/passport-jwt\": \"^4.0.1\",\n        \"@types/passport-local\": \"^1.0.38\",\n        \"async-mutex\": \"^0.4.0\",\n        \"axios\": \"1.15.0\",\n        \"bcryptjs\": \"^2.4.3\",\n        \"bullmq\": \"5.45.2\",\n        \"cache-manager\": \"^6.3.2\",\n        \"connect-pg-simple\": \"^10.0.0\",\n        \"connect-redis\": \"^8.0.1\",\n        \"connect-sqlite3\": \"^0.9.15\",\n        \"content-disposition\": \"0.5.4\",\n        \"cookie-parser\": \"^1.4.6\",\n        \"cors\": \"^2.8.5\",\n        \"crypto-js\": \"^4.1.1\",\n        \"csv-parser\": \"^3.0.0\",\n        \"dotenv\": \"^16.0.0\",\n        \"express\": \"^4.17.3\",\n        \"express-mysql-session\": \"^3.0.3\",\n        \"express-rate-limit\": \"^6.9.0\",\n        \"express-session\": \"^1.18.1\",\n        \"flowise-components\": \"workspace:^\",\n        \"flowise-nim-container-manager\": \"^1.0.11\",\n        \"flowise-ui\": \"workspace:^\",\n        \"geoip-lite\": \"^1.4.10\",\n        \"global-agent\": \"^3.0.0\",\n        \"gulp\": \"^4.0.2\",\n        \"handlebars\": \"^4.7.8\",\n        \"http-errors\": \"^2.0.0\",\n        \"http-status-codes\": \"^2.3.0\",\n        \"jsonwebtoken\": \"^9.0.2\",\n        \"jwt-decode\": \"^4.0.0\",\n        \"langchainhub\": \"^0.0.11\",\n        \"lodash\": \"^4.17.21\",\n        \"moment\": \"^2.29.3\",\n        \"moment-timezone\": \"^0.5.34\",\n        \"multer\": \"2.2.0\",\n        \"multer-azure-blob-storage\": \"^1.2.0\",\n        \"multer-cloud-storage\": \"^4.0.0\",\n        \"multer-s3\": \"^3.0.1\",\n        \"mysql2\": \"^3.11.3\",\n        \"nanoid\": \"3\",\n        \"node-cron\": \"^4.2.1\",\n        \"nodemailer\": \"^7.0.7\",\n        \"openai\": \"6.19.0\",\n        \"passport\": \"^0.7.0\",\n        \"passport-auth0\": \"^1.4.4\",\n        \"passport-cookie\": \"^1.0.9\",\n        \"passport-github\": \"^1.1.0\",\n        \"passport-google-oauth20\": \"^2.0.0\",\n        \"passport-jwt\": \"^4.0.1\",\n        \"passport-local\": \"^1.0.0\",\n        \"passport-openidconnect\": \"^0.1.2\",\n        \"pg\": \"^8.11.1\",\n        \"posthog-node\": \"^3.5.0\",\n        \"prom-client\": \"^15.1.3\",\n        \"rate-limit-redis\": \"^4.2.0\",\n        \"reflect-metadata\": \"^0.1.13\",\n        \"s3-streamlogger\": \"^1.11.0\",\n        \"sanitize-html\": \"^2.11.0\",\n        \"sqlite3\": \"^5.1.6\",\n        \"stripe\": \"^15.6.0\",\n        \"turndown\": \"^7.2.0\",\n        \"typeorm\": \"^0.3.28\",\n        \"uuid\": \"^10.0.0\",\n        \"winston\": \"^3.9.0\",\n        \"winston-azure-blob\": \"^1.5.0\",\n        \"winston-daily-rotate-file\": \"^5.0.0\",\n        \"zod\": \"^3.25.76 || ^4\"\n    },\n    \"devDependencies\": {\n        \"@types/content-disposition\": \"0.5.8\",\n        \"@types/cookie-parser\": \"^1.4.7\",\n        \"@types/cors\": \"^2.8.12\",\n        \"@types/crypto-js\": \"^4.1.1\",\n        \"@types/express-session\": \"^1.18.0\",\n        \"@types/geoip-lite\": \"^1.4.4\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/jsonwebtoken\": \"^9.0.6\",\n        \"@types/multer\": \"^1.4.7\",\n        \"@types/multer-s3\": \"^3.0.3\",\n        \"@types/nodemailer\": \"^6.4.15\",\n        \"@types/passport-auth0\": \"^1.0.9\",\n        \"@types/passport-github\": \"^1.1.12\",\n        \"@types/passport-openidconnect\": \"^0.1.3\",\n        \"@types/sanitize-html\": \"^2.9.5\",\n        \"@types/supertest\": \"^6.0.3\",\n        \"@types/turndown\": \"^5.0.5\",\n        \"concurrently\": \"^7.1.0\",\n        \"cypress\": \"^13.13.0\",\n        \"jest\": \"^29.7.0\",\n        \"nodemon\": \"^2.0.22\",\n        \"oclif\": \"^4.20.5\",\n        \"rimraf\": \"^5.0.5\",\n        \"run-script-os\": \"^1.1.6\",\n        \"shx\": \"^0.3.3\",\n        \"start-server-and-test\": \"^2.0.3\",\n        \"supertest\": \"^7.1.0\",\n        \"ts-jest\": \"^29.3.2\",\n        \"ts-node\": \"^10.7.0\",\n        \"tsc-watch\": \"^6.0.4\",\n        \"typescript\": \"^5.4.5\"\n    }\n}\n","packages/server/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"lib\": [\"es2021\"],\n        \"target\": \"es2021\" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,\n        \"experimentalDecorators\": true /* Enable experimental support for TC39 stage 2 draft decorators. */,\n        \"emitDecoratorMetadata\": true /* Emit design-type metadata for decorated declarations in source files. */,\n        \"module\": \"commonjs\" /* Specify what module code is generated. */,\n        \"outDir\": \"dist\",\n        \"esModuleInterop\": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,\n        \"forceConsistentCasingInFileNames\": true /* Ensure that casing is correct in imports. */,\n        \"strict\": true /* Enable all strict type-checking options. */,\n        \"skipLibCheck\": true /* Skip type checking all .d.ts files. */,\n        \"sourceMap\": true,\n        \"strictPropertyInitialization\": false,\n        \"declaration\": true\n    },\n    \"include\": [\"src/**/*.ts\"],\n    \"exclude\": [\"node_modules\"]\n}\n","packages/server/README-ZH.md":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\n[English](./README.md) | 中文\n\n<h3>以可视化方式构建 AI Agents</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡ 快速入门\n\n1. 安装 Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. 启动 Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. 打开[http://localhost:3000](http://localhost:3000)\n\n## 🌱 环境变量\n\nFlowise 支持不同的环境变量来配置您的实例。您可以在`packages/server`文件夹中的`.env`文件中指定以下变量。阅读[更多](https://docs.flowiseai.com/configuration/environment-variables)\n\n您还可以在使用`npx`时指定环境变量。例如：\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 文档\n\n[Flowise 文档](https://docs.flowiseai.com/)\n\n## 🌐 自托管\n\n在您现有的基础设施中部署自托管的 Flowise，我们支持各种[部署](https://docs.flowiseai.com/configuration/deployment)\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>其他</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![在 Railway 上部署](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![部署到 Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![部署到 Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![部署到 RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ 云托管\n\n[开始使用云托管](https://flowiseai.com/)\n\n## 🙋 支持\n\n在[讨论区](https://github.com/FlowiseAI/Flowise/discussions)中随时提出任何问题、报告问题和请求新功能。\n\n## 🙌 贡献\n\n请参阅[贡献指南](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md)。如果您有任何问题或问题，请在[Discord](https://discord.gg/jbaHfsRVBW)上与我们联系。\n\n## 📄 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","packages/observe/package.json":"{\n    \"name\": \"@flowiseai/observe\",\n    \"version\": \"0.0.0-dev.1\",\n    \"description\": \"Embeddable React components for observing AI agent executions, evaluations, and runtime activity\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/FlowiseAI/Flowise.git\",\n        \"directory\": \"packages/observe\"\n    },\n    \"homepage\": \"https://github.com/FlowiseAI/Flowise/tree/main/packages/observe#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/FlowiseAI/Flowise/issues\"\n    },\n    \"keywords\": [\n        \"flowise\",\n        \"flowiseai\",\n        \"observe\",\n        \"executions\",\n        \"observability\",\n        \"react\",\n        \"llm\",\n        \"ai\",\n        \"agent\"\n    ],\n    \"publishConfig\": {\n        \"access\": \"public\",\n        \"registry\": \"https://registry.npmjs.org\"\n    },\n    \"main\": \"./dist/index.umd.js\",\n    \"module\": \"./dist/index.js\",\n    \"types\": \"./dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": \"./dist/index.js\",\n            \"require\": \"./dist/index.umd.js\",\n            \"types\": \"./dist/index.d.ts\"\n        }\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"sideEffects\": false,\n    \"scripts\": {\n        \"build\": \"tsc && vite build\",\n        \"clean\": \"rimraf dist\",\n        \"dev\": \"vite\",\n        \"dev:example\": \"vite --config examples/vite.config.ts\",\n        \"format\": \"prettier --write \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"format:check\": \"prettier --check \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"lint\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\"\",\n        \"lint:fix\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\" --fix\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"prepublishOnly\": \"npm run clean && npm run build\",\n        \"test\": \"jest\",\n        \"test:coverage\": \"jest --coverage\",\n        \"test:watch\": \"jest --watch\"\n    },\n    \"peerDependencies\": {\n        \"@emotion/react\": \"^11.10.0\",\n        \"@emotion/styled\": \"^11.10.0\",\n        \"@mui/icons-material\": \"^5.0.0\",\n        \"@mui/material\": \"^5.15.0\",\n        \"react\": \"^18.2.0\",\n        \"react-dom\": \"^18.2.0\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@tabler/icons-react\": \"^3.7.0\",\n        \"axios\": \"1.15.0\",\n        \"date-fns\": \"^3.6.0\",\n        \"flowise-react-json-view\": \"^1.21.7\",\n        \"lodash\": \"^4.17.21\",\n        \"react-markdown\": \"^9.0.1\",\n        \"react-syntax-highlighter\": \"15.5.0\",\n        \"remark-gfm\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@testing-library/jest-dom\": \"^6.6.3\",\n        \"@testing-library/react\": \"^14.3.1\",\n        \"@testing-library/user-event\": \"^14.5.2\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/lodash\": \"^4.14.195\",\n        \"@types/react\": \"^18.2.0\",\n        \"@types/react-dom\": \"^18.2.0\",\n        \"@types/react-syntax-highlighter\": \"15.5.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^8.18.2\",\n        \"@typescript-eslint/parser\": \"^8.18.2\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"eslint-import-resolver-typescript\": \"4.4.4\",\n        \"eslint-plugin-import\": \"^2.29.0\",\n        \"eslint-plugin-markdown\": \"^3.0.1\",\n        \"eslint-plugin-simple-import-sort\": \"^12.0.0\",\n        \"jest\": \"^29.7.0\",\n        \"jest-environment-jsdom\": \"^29.7.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"ts-jest\": \"^29.3.2\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-dts\": \"^3.7.0\"\n    }\n}\n","packages/observe/README.md":"# @flowiseai/observe\n\n[![Version](https://img.shields.io/npm/v/@flowiseai/observe)](https://www.npmjs.com/package/@flowiseai/observe)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md)\n\n> Embeddable React components for visualizing AI agent runtime observability — executions, evaluations, and more\n\n## ⚠️ Status\n\n**This package is currently under active development.**\n\n-   🚧 Components are not yet fully functional\n-   ❌ End-to-end functionality is not complete\n-   🔄 Features are still being implemented and tested\n-   ⚡ APIs may change before stable release\n-   📝 Documentation is being updated as development progresses\n\n**Cannot be used in production. For development and testing purposes only.**\n\n## Overview\n\n`@flowiseai/observe` is the runtime observability SDK for Flowise. It provides embeddable React components for viewing execution traces, node-level step details, and human-in-the-loop interactions for AI agent workflows built with Flowise.\n\nThis is the \"Observe\" layer of the Build-Run-Observe trio alongside `@flowiseai/agentflow` (Build).\n\n## Features\n\n-   **Execution List** — Filterable, paginated table of agent executions across all agentflows, or scoped to a single agentflow via `agentflowId`\n-   **Execution Detail** — Resizable split-pane with a sidebar node tree and a right-side step viewer\n-   **Node Step Viewer** — Renders markdown, JSON, raw code, and HTML output per node step, with rendered/raw toggle\n-   **Token / Cost / Time Metrics** — Per-node execution metrics displayed inline\n-   **Auto-Poll** — Automatically refreshes while a run is `INPROGRESS`, stops on terminal state\n-   **HITL Support** — Approve/Reject buttons for human-input nodes when `onHumanInput` callback is provided\n-   **State + Date Filters** — Filter by execution state and date range\n-   **Single-Row and Bulk Delete** — Opt-in trash icon on row hover, plus bulk delete via checkbox selection\n-   **Dark Mode** — Full light/dark theme support via design tokens and CSS variables\n-   **SDK-Owned Theme** — No host theme required; `ObserveProvider` injects its own MUI theme\n\n## Installation\n\n```bash\npnpm add @flowiseai/observe\n```\n\n**Peer Dependencies:**\n\n```bash\npnpm add react react-dom @mui/material @mui/icons-material @emotion/react @emotion/styled\n```\n\n> Note: ReactFlow is **not** a peer dependency. `@flowiseai/observe` is a viewer only — no canvas.\n\n## Basic Usage\n\n### Execution List\n\nDisplays all executions across every agentflow. Pass `agentflowId` to scope the list to a single flow — useful when embedding next to a specific agentflow canvas.\n\n```tsx\nimport { ExecutionsViewer, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            {/* All agentflows */}\n            <ExecutionsViewer allowDelete={true} pollInterval={3000} />\n\n            {/* Scoped to one agentflow */}\n            <ExecutionsViewer agentflowId='uuid-of-the-agentflow' allowDelete={true} pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### Standalone Execution Detail\n\nRenders the full step viewer for a single execution by ID — useful for deep-linking into a specific trace.\n\n```tsx\nimport { ExecutionDetail, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            <ExecutionDetail executionId='uuid-of-the-execution' pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### With HITL Callback\n\nThe `onHumanInput` callback is how the host application handles human-in-the-loop responses. The SDK delegates routing entirely to the consumer — OSS calls Flowise directly, DevSite routes through the AgentForge proxy.\n\n```tsx\n<ExecutionsViewer\n    onHumanInput={async (agentflowId, params) => {\n        // OSS: call Flowise prediction endpoint directly\n        await fetch(`/api/v1/prediction/${agentflowId}`, {\n            method: 'POST',\n            headers: { Authorization: `Bearer ${token}` },\n            body: JSON.stringify(params.humanInput)\n        })\n        // DevSite: route through AgentForge proxy instead\n    }}\n/>\n```\n\nWhen `onHumanInput` is not provided, Approve/Reject buttons are not rendered. No auth complexity leaks into the SDK.\n\n### With Request Interceptor\n\n`token` and `requestInterceptor` are both optional and compose: if both are provided, the Bearer header is set first, then the interceptor runs and can extend or override it.\n\n**API key (default):**\n\n```tsx\n// token alone — sets Authorization: Bearer header automatically\n<ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n    {/* your app */}\n</ObserveProvider>\n```\n\n**OSS session auth** — embedding inside the Flowise UI where a session cookie already exists:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n**DevSite proxy auth** — inject AgentForge proxy headers:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='https://...'\n    requestInterceptor={(config) => {\n        config.headers['x-agentforge-token'] = getProxyToken()\n        return config\n    }}\n>\n    {/* your app */}\n</ObserveProvider>\n```\n\nIf the interceptor throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds. Only pass trusted, developer-authored functions — never user-generated input.\n\n## Props\n\n### `<ObserveProvider>`\n\nRoot provider. Wraps `ExecutionsViewer` or `ExecutionDetail`. Injects the MUI theme, API client, and config context.\n\n<!-- prettier-ignore -->\n| Prop                  | Type                                                                      | Default        | Description                                                                                   |\n| --------------------- | ------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------- |\n| `apiBaseUrl`          | `string`                                                                  | **(required)** | Flowise API server base URL                                                                   |\n| `token`               | `string`                                                                  | —              | API key — sets `Authorization: Bearer <token>`. Optional when using `requestInterceptor`. |\n| `requestInterceptor`  | `(config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig`     | —              | Customize outgoing requests. Runs after Bearer header is set — can extend or override it. See [Request Interceptor](#with-request-interceptor) below. |\n| `isDarkMode`          | `boolean`                                                                 | `false`        | Use dark mode theme                                                                           |\n| `children`            | `ReactNode`                                                               | **(required)** | `ExecutionsViewer`, `ExecutionDetail`, or both                                                |\n\n### `<ExecutionsViewer>`\n\nFilterable, paginated list of executions. Clicking a row opens `ExecutionDetail` in a side drawer. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop             | Type                                                                | Default | Description                                                                         |\n| ---------------- | ------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------- |\n| `agentflowId`    | `string`                                                            | —       | Scope list to a single agentflow. Omit for full cross-agent list.                   |\n| `allowDelete`    | `boolean`                                                           | `false` | Show trash icon on row hover with inline confirm dialog                             |\n| `pollInterval`   | `number`                                                            | `3000`  | Auto-poll interval in ms while any execution is INPROGRESS. `0` = off              |\n| `initialFilters` | `Partial<ExecutionFilters>`                                         | —       | Pre-set filter values on mount                                                      |\n| `onHumanInput`   | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —       | HITL callback. Approve/Reject buttons hidden when not provided                      |\n\n### `<ExecutionDetail>`\n\nResizable split-pane viewer for a single execution. Left sidebar shows the node tree; right panel shows `NodeExecutionDetail` for the selected step. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop           | Type                                                                | Default        | Description                                                        |\n| -------------- | ------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------ |\n| `executionId`  | `string`                                                            | **(required)** | UUID of the execution to display                                   |\n| `pollInterval` | `number`                                                            | `3000`         | Auto-poll interval in ms while execution is INPROGRESS. `0` = off |\n| `onHumanInput` | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —              | HITL callback. Approve/Reject buttons hidden when not provided     |\n| `onClose`      | `() => void`                                                        | —              | Called when the panel is dismissed (dismissible contexts only)     |\n\n### Auto-Poll Behavior\n\nBoth `ExecutionsViewer` and `ExecutionDetail` auto-refresh while `state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → polling stops immediately\n```\n\nSet `pollInterval={0}` to disable auto-poll and rely on the manual refresh button only.\n\n### Deletion\n\nOpt-in via `allowDelete={true}` on `ExecutionsViewer`. Shows a trash icon on row hover. Clicking opens an inline confirm dialog. The SDK calls `DELETE /api/v1/executions` internally on confirm.\n\n> Bulk delete is available via checkbox selection in the table header.\n\n## Types\n\n```typescript\ntype ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED'\n\ninterface Execution {\n    id: string\n    executionData: string // JSON-serialized NodeExecutionData[]\n    state: ExecutionState\n    agentflowId: string\n    sessionId?: string\n    isPublic: boolean\n    createdDate: string\n    updatedDate: string\n    agentflow?: { id: string; name: string }\n}\n\ninterface NodeExecutionData {\n    nodeLabel: string\n    nodeId: string\n    data: unknown // rendered content (markdown string, object, etc.)\n    previousNodeIds: string[]\n    status: ExecutionState\n    name?: string\n    iterationIndex?: number\n    parentNodeId?: string\n    output?: unknown\n}\n\ninterface HumanInputParams {\n    question: string\n    chatId: string\n    humanInput: {\n        type: 'proceed' | 'reject'\n        startNodeId: string\n        feedback?: string\n    }\n}\n\ninterface ExecutionFilters {\n    state: ExecutionState | ''\n    startDate: string\n    endDate: string\n    sessionId: string\n    agentflowName: string // M2 only\n}\n```\n\n## Development\n\n```bash\n# Install dependencies (from monorepo root)\npnpm install\n\n# Build the package\npnpm build\n\n# Run tests\npnpm test\n\n# Run examples dev server\ncd examples && pnpm install && pnpm dev\n```\n\nCopy `examples/.env.example` to `examples/.env` and fill in your values before running the dev server.\n\nVisit the [examples](./examples/README.md) directory for usage demos. See [ARCHITECTURE.md](./ARCHITECTURE.md) for internal structure and design patterns.\n\n## Publishing\n\n### Version Update\n\n```bash\n# Prerelease (for testing / EA)\nnpm version prerelease --preid=dev   # 0.0.0-dev.1 → 0.0.0-dev.2\n\n# Patch / Minor / Major (stable)\nnpm version patch                    # 0.0.1\nnpm version minor                    # 0.1.0\nnpm version major                    # 1.0.0\n```\n\n### Verify Before Publishing\n\n```bash\npnpm build\nnpm pack --dry-run\nnpm publish --dry-run\n```\n\n### Publish\n\n```bash\n# EA / prerelease — tagged so npm install won't pick it up by default\nnpm publish --tag dev\n\n# Stable release\nnpm publish\n```\n\n> The `prepublishOnly` script runs `clean` and `build` automatically before every publish.\n\n## Documentation\n\n-   [ARCHITECTURE.md](./ARCHITECTURE.md) — Internal architecture, layer rules, and patterns\n-   [Examples](./examples/README.md) — Running the demo app\n\n## License\n\nApache-2.0 — see the repository root [LICENSE.md](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md) for details.\n\n---\n\nPart of the [Flowise](https://github.com/FlowiseAI/Flowise) ecosystem\n","packages/observe/ARCHITECTURE.md":"# @flowiseai/observe - Architecture\n\nThis document describes the internal architecture of the `@flowiseai/observe` package.\n\n## Overview\n\nThe package follows a **Domain-Driven Modular Architecture** with clear separation of concerns — the same four-layer structure as `@flowiseai/agentflow`. The goal is to keep UI primitives, business logic, API communication, and domain features cleanly separated, so individual features (executions, evaluations, chat history) can be added, tested, and removed without disturbing each other.\n\n```\nsrc/\n├── index.ts                    # Public Package API (\"Public Face\")\n│\n├── atoms/                      # ⚛️ UI Primitives (\"What it looks like\" (Dumb))\n├── features/                   # 🧩 Domain Features (\"What it does\" (Smart))\n├── core/                       # 🧠 Business Logic (\"Business Rules\" (Types/Logic))\n└── infrastructure/             # 🌐 External Services (\"Outside World\" (API/Storage))\n```\n\n---\n\n## Directory Structure\n\n### `atoms/` - UI Primitives\n\n**\"What it looks like.\"** Tiny, irreducible UI components with no business logic. Shared building blocks used across features.\n\nExample layout (illustrative — not exhaustive; check the directory for the current set):\n\n```\natoms/\n├── StatusIndicator.tsx     # Execution / node status icon (INPROGRESS, FINISHED, ERROR…)\n├── MetricsDisplay.tsx      # Token / cost / time metrics row\n├── NodeIcon.tsx            # AGENTFLOW_ICONS-driven avatar for a node type\n├── …                       # Other primitives as the SDK grows\n└── index.ts                # Central export\n```\n\n**Rules:**\n\n-   Must be \"dumb\" and stateless (or minimal local state for animations)\n-   No business logic\n-   No API calls\n-   Imported by features, never the reverse\n-   **Forbidden**: Importing from `features/` or `infrastructure/` — only `core/types`, `core/theme`, and `core/primitives`\n\n**Goal:** 100% visual consistency across all observe features.\n\n---\n\n### `features/` - Domain Features\n\n**\"What it does.\"** Self-contained domain modules. Each feature owns its components, hooks, and feature-local utilities. Adding a new observability feature (evaluations, chat history, MALT) means adding a new directory here — it does not touch existing feature exports.\n\nExample layout (illustrative — not exhaustive; the `executions` feature currently has more sub-components and hooks than shown here):\n\n```\nfeatures/\n├── executions/             # Execution viewer\n│   ├── components/\n│   │   ├── ExecutionsViewer.tsx      # Filterable list + pagination + resizable detail drawer\n│   │   ├── ExecutionDetail.tsx       # Resizable split-pane: tree sidebar + node detail\n│   │   ├── ExecutionTreeSidebar.tsx  # @mui/x-tree-view RichTreeView with custom slot\n│   │   ├── NodeExecutionDetail.tsx   # Step viewer: markdown/JSON/code/HTML renderers, HITL\n│   │   ├── ExecutionsListTable.tsx   # Sortable/selectable MUI table\n│   │   └── …                         # Other components (chat bubbles, panels) as the feature grows\n│   ├── hooks/\n│   │   ├── useExecutionPoll.ts       # Auto-poll while INPROGRESS, stop on terminal state\n│   │   ├── useExecutionTree.ts       # Build ExecutionTreeNode[] from flat NodeExecutionData[]\n│   │   ├── useResizableSidebar.ts    # Drag-to-resize width state (left- or right-anchored panels)\n│   │   └── …                         # Other feature-local hooks\n│   └── index.ts                      # Public API for this feature\n│\n└── (evaluations/)          # Future — GA\n    └── (chat-history/)     # Future — GA\n```\n\n**Rules:**\n\n-   Each feature has an `index.ts` gatekeeper — only re-export what consumers need\n-   **Features never import from other features directly** — if two features share logic, move it to `core/`\n-   Feature-specific utilities stay in the feature folder\n-   Hooks are co-located with their feature\n\n**Goal:** High cohesion. Deleting a feature folder should not break other features.\n\n---\n\n### `core/` - Business Logic\n\n**\"The Brain.\"** Framework-agnostic types, utilities, and the MUI theme factory. No React components, no API calls.\n\nExample layout (illustrative — not exhaustive; new sub-files land under `types/`, `primitives/`, and `utils/` as the SDK grows):\n\n```\ncore/\n├── types/\n│   ├── execution.ts        # Execution, ExecutionState, NodeExecutionData,\n│   │                       # ExecutionTreeNode, HumanInputParams\n│   ├── observe.ts          # ObserveBaseProps, ExecutionsViewerProps,\n│   │                       # ExecutionDetailProps, ExecutionFilters\n│   ├── nodeDetail.ts       # ChatMessage, ConditionEntry, AvailableToolEntry, …\n│   └── index.ts\n│\n├── primitives/             # Domain-free, safe to import from atoms/\n│   ├── agentflowIcons.ts   # AGENTFLOW_ICONS registry (icon + color per node type)\n│   ├── json.ts             # JSON tokenizer / safe parser\n│   └── index.ts\n│\n├── utils/                  # Domain-aware helpers — not importable from atoms/\n│   ├── guards.ts           # Type predicates over core/types/* shapes\n│   ├── tools.ts            # Tool-call extraction / resolution\n│   └── index.ts\n│\n└── theme/\n    ├── tokens.ts               # Color palette, spacing, shadows\n    ├── createObserveTheme.ts   # MUI theme factory (isDarkMode toggle)\n    └── index.ts\n```\n\n**Rules:**\n\n-   **No React components** — pure TypeScript only\n-   No browser-specific APIs unless unavoidable\n-   No side effects\n-   Can be tested in isolation\n\n#### `core/primitives/` vs `core/utils/`\n\n-   **`primitives/`** — Domain-free utilities with no knowledge of executions or node data. **Safe to import from `atoms/`.**\n-   **`utils/`** — Domain-aware utilities (e.g., execution state helpers). **Only importable by `features/` and `infrastructure/`.**\n\nWhen adding a utility, ask: _\"Does this function need to know what an Execution or NodeExecutionData is?\"_ If no → `primitives/`. If yes → `utils/`.\n\n**Goal:** Framework-agnostic source of truth.\n\n---\n\n### `infrastructure/` - External Services\n\n**\"The Outside World.\"** API client factory and React context providers.\n\nExample layout (illustrative — not exhaustive; new API modules land under `api/` as features grow):\n\n```\ninfrastructure/\n├── api/\n│   ├── client.ts           # bindApiClient(apiBaseUrl, token) — axios with Bearer header\n│   ├── executions.ts       # createExecutionsApi(client): getAllExecutions, getExecutionById,\n│   │                       # deleteExecutions, updateExecution\n│   └── index.ts\n│\n└── store/\n    └── ObserveContext.tsx  # ObserveProvider, useObserveApi(), useObserveConfig()\n```\n\n**Rules:**\n\n-   All external communication goes through `infrastructure/api/`\n-   Contexts are internal — composed in `ObserveProvider`, not exported directly to consumers\n-   `useObserveApi()` throws if called outside `ObserveProvider` (fast failure)\n\n**Goal:** Wrap external dependencies so they can be mocked in tests.\n\n---\n\n## Dependency Flow\n\n**Dependencies must only flow downwards.**\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                  Root Files (Public API)                │\n│                       (index.ts)                        │\n│                   \"The Public Face\"                     │\n└─────────────────────────────────────────────────────────┘\n                           │\n                           ▼\n┌─────────────────────────────────────────────────────────┐\n│                      features/                          │\n│   (executions, evaluations, chat-history, …)            │\n│                   \"What it does\"                        │\n└─────────────────────────────────────────────────────────┘\n          │                                    │\n          ▼                                    ▼\n┌──────────────────┐              ┌────────────────────────┐\n│      atoms/      │              │    infrastructure/     │\n│  (UI primitives) │              │    (api, store)        │\n│ \"What it looks   │              │ \"The Outside World\"    │\n│     like\"        │              │                        │\n└──────────────────┘              └────────────────────────┘\n          │                                    │\n          └──────────────┬─────────────────────┘\n                         ▼\n              ┌─────────────────────┐\n              │        core/        │\n              │  (types, theme,     │\n              │   primitives)       │\n              │     \"The Brain\"     │\n              └─────────────────────┘\n```\n\n**Import Rules:**\n\n-   `features` → `atoms`, `infrastructure`, `core` ✅\n-   `infrastructure` → `core` ✅\n-   `atoms` → `core/types`, `core/theme`, `core/primitives` only ✅\n-   `core` → nothing (leaf node) ✅\n-   **No reverse imports** — enforced by ESLint `import/no-restricted-paths`\n\n---\n\n## Observe-Specific Patterns\n\n### `ObserveProvider` — Root Provider\n\n`ObserveProvider` composes three providers:\n\n```tsx\n<ThemeProvider theme={createObserveTheme(isDarkMode)}>\n    <ObserveApiContext.Provider value={api}>\n        <ObserveConfigContext.Provider value={config}>{children}</ObserveConfigContext.Provider>\n    </ObserveApiContext.Provider>\n</ThemeProvider>\n```\n\n-   `ObserveApiContext` — holds the bound axios client (created once from `apiBaseUrl` + `token` + `requestInterceptor`)\n-   `ObserveConfigContext` — holds `isDarkMode` and other display config\n-   Features call `useObserveApi()` to get the client; they never construct it themselves\n\n### Request Interceptor — Auth Bridging\n\nThe SDK sends `Authorization: Bearer <token>` by default. Different consumers authenticate differently:\n\n| Consumer                     | Auth mechanism                              | How to configure                                       |\n| ---------------------------- | ------------------------------------------- | ------------------------------------------------------ |\n| DevSite                      | AgentForge proxy headers                    | `requestInterceptor` to inject proxy token             |\n| OSS (embedded in Flowise UI) | Session cookie + `x-request-from: internal` | `requestInterceptor` to set `withCredentials` + header |\n| OSS (standalone / external)  | Flowise API key                             | `token` prop (default)                                 |\n\n`requestInterceptor` is a callback on the Axios request config, identical in shape to the one in `@flowiseai/agentflow`:\n\n```ts\ninterface ObserveBaseProps {\n    requestInterceptor?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig\n}\n```\n\nIt is passed to `bindApiClient` and registered via `axios.interceptors.request.use`. If the callback throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds safely.\n\n**OSS session auth example:**\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n`requestInterceptor` should only be provided by trusted, developer-authored code — never from user input or dynamically evaluated strings.\n\n### Auto-Poll (`useExecutionPoll`)\n\n`useExecutionPoll` sets up a `setInterval` while `execution.state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → interval cleared immediately\n```\n\n-   `pollInterval={0}` disables auto-poll entirely\n-   `refresh()` is returned for manual refresh buttons\n-   The hook clears the interval on unmount\n\n### Execution Tree (`useExecutionTree`)\n\n`useExecutionTree` converts the flat `NodeExecutionData[]` stored as JSON in `execution.executionData` into a hierarchical `ExecutionTreeNode[]`. Two parenting mechanisms run in sequence (mirrors legacy `ExecutionDetails.jsx` `buildTreeData`):\n\n1. **`previousNodeIds` parent→child** — each non-iteration node attaches to the most-recent prior instance of any node listed in its `previousNodeIds`. Nodes with empty / unmatched `previousNodeIds` become roots. The \"most recent\" rule disambiguates when the same `nodeId` runs more than once (e.g. inside a loop).\n2. **Iteration grouping** — children with `parentNodeId` + `iterationIndex` are bundled into virtual `Iteration #N` container nodes (`isVirtualNode: true`) under the iteration agent's most-recent instance, then linked to one another inside the iteration via the same `previousNodeIds` rule (restricted to same-iteration siblings).\n\nTree-node ids are `${nodeId}_${arrayIndex}` so duplicate `nodeId`s remain addressable. The tree is consumed by `ExecutionTreeSidebar` (a `RichTreeView` slot) inside `ExecutionDetail`.\n\n### HITL Callback — Opaque Consumer Contract\n\nThe `onHumanInput` prop is intentionally opaque:\n\n```ts\ninterface ExecutionsViewerProps {\n    onHumanInput?: (agentflowId: string, params: HumanInputParams) => Promise<void>\n}\n```\n\n-   In OSS: consumer calls the Flowise prediction endpoint directly\n-   In DevSite: consumer routes through the AgentForge proxy\n\nThe SDK never calls the prediction API itself. Approve/Reject buttons are only rendered when `onHumanInput` is provided AND the node is a human input node in INPROGRESS state. This keeps auth and routing logic entirely out of the SDK.\n\n### Tenant Isolation\n\nTenant isolation is handled server-side by Flowise's `ExtendRequestContextMiddleware` via request headers. The SDK does not accept or pass a `tenantId` prop — the API returns only what the authenticated token is permitted to see.\n\n---\n\n## Gatekeeper Pattern\n\nEach module exposes only what's needed via its `index.ts`:\n\n```typescript\n// features/executions/index.ts (illustrative — re-export only what consumers need)\n// ✅ Public API\nexport { ExecutionsViewer } from './components/ExecutionsViewer'\nexport { ExecutionDetail } from './components/ExecutionDetail'\nexport { NodeExecutionDetail } from './components/NodeExecutionDetail'\nexport { useExecutionPoll } from './hooks/useExecutionPoll'\nexport { useExecutionTree } from './hooks/useExecutionTree'\n\n// ❌ Internal sub-components (e.g. ExecutionTreeSidebar, ChatMessageBubble) and helpers stay private\n```\n\n---\n\n## Adding a New Feature\n\nAdding evaluations, chat history, or MALT follows the same pattern:\n\n1. Create a folder under `features/`:\n\n    ```\n    features/evaluations/\n    ├── components/\n    │   └── EvaluationsViewer.tsx\n    ├── hooks/\n    │   └── useEvaluationPoll.ts\n    └── index.ts\n    ```\n\n2. Add the API module under `infrastructure/api/`:\n\n    ```\n    infrastructure/api/\n    └── evaluations.ts   # createEvaluationsApi(client)\n    ```\n\n3. Add any new types to `core/types/` (e.g., `evaluation.ts`)\n\n4. Export only from the feature's `index.ts`, then re-export from the package `src/index.ts`\n\n5. Import from infrastructure/core, never from other features:\n\n    ```typescript\n    // ✅ Good\n    import { useObserveApi } from '../../../infrastructure/store'\n    import type { Execution } from '../../../core/types'\n\n    // ❌ Bad — cross-feature import\n    import { ExecutionDetail } from '../executions/components/ExecutionDetail'\n    ```\n\n---\n\n## Root Files (`src/index.ts`)\n\nThe barrel export exposes only the public surface. Example shape (illustrative — refer to `src/index.ts` for the current set):\n\n```typescript\n// Components\nexport { ExecutionsViewer, ExecutionDetail, NodeExecutionDetail } from './features/executions'\nexport { ObserveProvider } from './infrastructure/store'\n\n// Hooks (for consumers building custom UIs on top of observe infrastructure)\nexport { useExecutionPoll, useExecutionTree } from './features/executions'\nexport { useObserveApi, useObserveConfig } from './infrastructure/store'\n\n// Types\nexport type { ExecutionsViewerProps, ExecutionDetailProps, ExecutionFilters } from './core/types'\nexport type { Execution, ExecutionState, NodeExecutionData, HumanInputParams, AgentflowRef } from './core/types'\n```\n\nEverything else is internal implementation detail.\n\n---\n\n## Development Principles\n\n### Barrel Exports\n\nEvery directory has an `index.ts` gatekeeper.\n\n**✅ Good:**\n\n```typescript\nimport { StatusIcon } from '../../atoms'\nimport { useObserveApi } from '../../infrastructure/store'\n```\n\n**❌ Bad:**\n\n```typescript\n// Never deep-link into files\nimport { StatusIcon } from '../../atoms/StatusIcon'\nimport { useObserveApi } from '../../infrastructure/store/ObserveContext'\n```\n\n### Naming Conventions\n\n| Type        | Convention                  | Example                      |\n| ----------- | --------------------------- | ---------------------------- |\n| Component   | PascalCase.tsx              | `ExecutionDetail.tsx`        |\n| Hook        | camelCase.ts (`use` prefix) | `useExecutionPoll.ts`        |\n| Logic/Types | camelCase.ts                | `execution.ts`, `observe.ts` |\n| API module  | camelCase.ts                | `executions.ts`              |\n| Styles      | kebab-case (co-located)     | `executions.css`             |\n\n### Theme Token Ordering\n\nInside `core/theme/tokens.ts`, all maps are ordered alphanumerically: `baseColors`, top-level `tokens` groups, subgroups, and keys (e.g. `gray50 < gray75 < gray100 < gray200`). Each `{ dark, light }` / `{ dark, light, main }` pair follows the same rule. Keep new entries in order so diffs stay small.\n\n### Type Location Rule\n\nDomain types live in `core/types/`, **not** alongside their primary component, when they cross any of these boundaries:\n\n-   Imported by a hook (`features/*/hooks/*`)\n-   Imported by another component in a different file\n-   Used in a public API exported via `src/index.ts`\n\nComponent-internal types (props interfaces, file-private shapes used only inside the file that defines the component) stay co-located. The rule prevents the inversion where a hook reaches \"upward\" into a sibling component file just to read a type.\n\nProps interfaces (e.g. `ChatMessageBubbleProps`) are **always** file-local — never lift them to `core/types/` even if another component would re-use one. Re-using a props interface across components is a code smell on its own; the right fix is a shared underlying type, not a shared props interface.\n\nPredicates that narrow into a `core/types/` shape (e.g. `isChatMessageArray(value): value is ChatMessage[]`) live in `core/utils/` next to other domain-aware helpers — never in `atoms/` (atoms cannot import from `core/utils`, only from `core/primitives`).\n\nExample layout:\n\n-   `core/types/nodeDetail.ts` — `ChatMessage`, `ConditionEntry`, `AvailableToolEntry`, `UsedToolEntry`, `UsedToolRef`, `ToolNodeRef`, `NormalizedToolCall`\n-   `core/utils/guards.ts` — `isChatMessageArray`, `isConditionArray`, `isAvailableToolArray`, `isUsedToolArray`\n-   `core/utils/tools.ts` — `resolveTool`, `extractToolCalls` (consumed by `ChatMessageBubble` + `ToolAccordionList`)\n","packages/observe/TESTS.md":"# Observe Skill\n\nPath: `packages/observe/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/TESTS.md)","packages/observe/tsconfig.json":"# Observe Skill\n\nPath: `packages/observe/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/tsconfig.json)","packages/components/models.json":"# Components Skill\n\nPath: `packages/components/models.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/models.json)","packages/components/package.json":"# Components Skill\n\nPath: `packages/components/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/package.json)","packages/components/README.md":"# components Documentation\n\nPath: `packages/components/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README.md)","packages/components/README-ZH.md":"# Components Skill\n\nPath: `packages/components/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README-ZH.md)","packages/components/tsconfig.json":"# Components Skill\n\nPath: `packages/components/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/tsconfig.json)","packages/api-documentation/nodemon.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/nodemon.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/nodemon.json)","packages/api-documentation/package.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/package.json)","packages/api-documentation/README.md":"# api-documentation Documentation\n\nPath: `packages/api-documentation/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README.md)","packages/api-documentation/README-ZH.md":"# Api-documentation Skill\n\nPath: `packages/api-documentation/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README-ZH.md)","packages/api-documentation/tsconfig.json":"# Api-documentation Skill\n\nPath: `packages/api-documentation/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/tsconfig.json)","packages/agentflow/ARCHITECTURE.md":"# Agentflow Skill\n\nPath: `packages/agentflow/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/ARCHITECTURE.md)","packages/agentflow/CHANGELOG.md":"# Agentflow Skill\n\nPath: `packages/agentflow/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/CHANGELOG.md)","packages/agentflow/package.json":"# Agentflow Skill\n\nPath: `packages/agentflow/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/package.json)","packages/agentflow/README.md":"# agentflow Documentation\n\nPath: `packages/agentflow/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/README.md)","packages/agentflow/TESTS.md":"# Agentflow Skill\n\nPath: `packages/agentflow/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/TESTS.md)","packages/agentflow/tsconfig.json":"# Agentflow Skill\n\nPath: `packages/agentflow/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/tsconfig.json)","packages/ui/public/manifest.json":"# Public Skill\n\nPath: `packages/ui/public/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/public/manifest.json)","packages/observe/examples/package.json":"# Examples Skill\n\nPath: `packages/observe/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package.json)","packages/observe/examples/package-lock.json":"# Examples Skill\n\nPath: `packages/observe/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package-lock.json)","packages/observe/examples/README.md":"# examples Documentation\n\nPath: `packages/observe/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/README.md)","packages/observe/examples/tsconfig.json":"# Examples Skill\n\nPath: `packages/observe/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/tsconfig.json)","packages/agentflow/examples/package.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package.json)","packages/agentflow/examples/package-lock.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package-lock.json)","packages/agentflow/examples/README.md":"# examples Documentation\n\nPath: `packages/agentflow/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/README.md)","packages/agentflow/examples/tsconfig.json":"# Examples Skill\n\nPath: `packages/agentflow/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/tsconfig.json)","packages/server/marketplaces/tools/Add Hubspot Contact.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Add Hubspot Contact.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Add Hubspot Contact.json)","packages/server/marketplaces/tools/Create Airtable Record.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Create Airtable Record.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Create Airtable Record.json)","packages/server/marketplaces/tools/Get Current DateTime.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Current DateTime.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Current DateTime.json)","packages/server/marketplaces/tools/Get Stock Mover.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Stock Mover.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Stock Mover.json)","packages/server/marketplaces/tools/Make Webhook.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Make Webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Make Webhook.json)","packages/server/marketplaces/tools/Perplexity AI Search.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Perplexity AI Search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Perplexity AI Search.json)","packages/server/marketplaces/tools/Print or Export Text Document.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Print or Export Text Document.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Print or Export Text Document.json)","packages/server/marketplaces/tools/Send Discord Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Discord Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Discord Message.json)","packages/server/marketplaces/tools/Send Slack Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Slack Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Slack Message.json)","packages/server/marketplaces/tools/Send Teams Message.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Teams Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Teams Message.json)","packages/server/marketplaces/tools/SendGrid Email.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/SendGrid Email.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/SendGrid Email.json)","packages/server/marketplaces/tools/Spider Web Scraper.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Scraper.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Scraper.json)","packages/server/marketplaces/tools/Spider Web Search & Scrape.json":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Search & Scrape.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Search & Scrape.json)","packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json)","packages/server/marketplaces/chatflows/Context Chat Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Context Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Context Chat Engine.json)","packages/server/marketplaces/chatflows/Conversation Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversation Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversation Chain.json)","packages/server/marketplaces/chatflows/Conversational Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Agent.json)","packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json)","packages/server/marketplaces/chatflows/CSV Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/CSV Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/CSV Agent.json)","packages/server/marketplaces/chatflows/Github Docs QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Github Docs QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Github Docs QnA.json)","packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json)","packages/server/marketplaces/chatflows/Image Generation.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Image Generation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Image Generation.json)","packages/server/marketplaces/chatflows/Input Moderation.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Input Moderation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Input Moderation.json)","packages/server/marketplaces/chatflows/List Output Parser.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/List Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/List Output Parser.json)","packages/server/marketplaces/chatflows/LLM Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/LLM Chain.json)","packages/server/marketplaces/chatflows/Local QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Local QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Local QnA.json)","packages/server/marketplaces/chatflows/Multiple Documents QnA.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Multiple Documents QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Multiple Documents QnA.json)","packages/server/marketplaces/chatflows/OpenAI Assistant.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAI Assistant.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAI Assistant.json)","packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json)","packages/server/marketplaces/chatflows/Prompt Chaining.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Prompt Chaining.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Prompt Chaining.json)","packages/server/marketplaces/chatflows/Query Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Query Engine.json)","packages/server/marketplaces/chatflows/ReAct Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/ReAct Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/ReAct Agent.json)","packages/server/marketplaces/chatflows/Replicate LLM.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Replicate LLM.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Replicate LLM.json)","packages/server/marketplaces/chatflows/Simple Chat Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Simple Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Simple Chat Engine.json)","packages/server/marketplaces/chatflows/SQL DB Chain.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SQL DB Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SQL DB Chain.json)","packages/server/marketplaces/chatflows/SubQuestion Query Engine.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SubQuestion Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SubQuestion Query Engine.json)","packages/server/marketplaces/chatflows/Tool Agent.json":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Tool Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Tool Agent.json)","packages/server/marketplaces/agentflowsv2/Agentic RAG.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agentic RAG.json)","packages/server/marketplaces/agentflowsv2/Agents Handoff.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agents Handoff.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agents Handoff.json)","packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json)","packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json)","packages/server/marketplaces/agentflowsv2/Human In The Loop.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Human In The Loop.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Human In The Loop.json)","packages/server/marketplaces/agentflowsv2/Interacting With API.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Interacting With API.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Interacting With API.json)","packages/server/marketplaces/agentflowsv2/Iterations.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Iterations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Iterations.json)","packages/server/marketplaces/agentflowsv2/Simple RAG.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Simple RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Simple RAG.json)","packages/server/marketplaces/agentflowsv2/SQL Agent.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/SQL Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/SQL Agent.json)","packages/server/marketplaces/agentflowsv2/Structured Output.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Structured Output.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Structured Output.json)","packages/server/marketplaces/agentflowsv2/Supervisor Worker.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Supervisor Worker.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Supervisor Worker.json)","packages/server/marketplaces/agentflowsv2/Translator.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Translator.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Translator.json)","packages/server/marketplaces/agentflowsv2/Workplace Chat.json":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Workplace Chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Workplace Chat.json)","packages/server/marketplaces/agentflows/Agentic RAG.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Agentic RAG.json)","packages/server/marketplaces/agentflows/Branch Out Merge In.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Branch Out Merge In.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Branch Out Merge In.json)","packages/server/marketplaces/agentflows/Customer Support Team Agents.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Customer Support Team Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Customer Support Team Agents.json)","packages/server/marketplaces/agentflows/Essay Writing & Grading.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Essay Writing & Grading.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Essay Writing & Grading.json)","packages/server/marketplaces/agentflows/Human In Loop RAG.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Human In Loop RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Human In Loop RAG.json)","packages/server/marketplaces/agentflows/Lead Outreach.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Lead Outreach.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Lead Outreach.json)","packages/server/marketplaces/agentflows/Multi Agents.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Multi Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Multi Agents.json)","packages/server/marketplaces/agentflows/Patient Concierge.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Patient Concierge.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Patient Concierge.json)","packages/server/marketplaces/agentflows/Plan and Execute.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Plan and Execute.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Plan and Execute.json)","packages/server/marketplaces/agentflows/Portfolio Management Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Portfolio Management Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Portfolio Management Team.json)","packages/server/marketplaces/agentflows/Prompt Engineering Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Prompt Engineering Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Prompt Engineering Team.json)","packages/server/marketplaces/agentflows/Software Team.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Software Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Software Team.json)","packages/server/marketplaces/agentflows/Support Routing System.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Support Routing System.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Support Routing System.json)","packages/server/marketplaces/agentflows/Text to SQL.json":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Text to SQL.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Text to SQL.json)","packages/server/src/enterprise/LICENSE.md":"# Enterprise Skill\n\nPath: `packages/server/src/enterprise/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/src/enterprise/LICENSE.md)","packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md":"# AzureOpenAIEmbedding Documentation\n\nPath: `packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md)","packages/components/nodes/documentloaders/Unstructured/README.md":"# Unstructured Documentation\n\nPath: `packages/components/nodes/documentloaders/Unstructured/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/Unstructured/README.md)","packages/components/nodes/documentloaders/S3File/README.md":"# S3File Documentation\n\nPath: `packages/components/nodes/documentloaders/S3File/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/S3File/README.md)","packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md":"# ChatNemoGuardrails Documentation\n\nPath: `packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md)","packages/components/nodes/chatmodels/AzureChatOpenAI/README.md":"# AzureChatOpenAI Documentation\n\nPath: `packages/components/nodes/chatmodels/AzureChatOpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md)","packages/components/nodes/llms/Azure OpenAI/README.md":"# Azure OpenAI Documentation\n\nPath: `packages/components/nodes/llms/Azure OpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/llms/Azure OpenAI/README.md)","packages/components/nodes/recordmanager/PostgresRecordManager/README.md":"# PostgresRecordManager Documentation\n\nPath: `packages/components/nodes/recordmanager/PostgresRecordManager/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/recordmanager/PostgresRecordManager/README.md)","packages/components/nodes/vectorstores/Postgres/README.md":"# Postgres Documentation\n\nPath: `packages/components/nodes/vectorstores/Postgres/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/vectorstores/Postgres/README.md)"},"items":[{"name":"ARCHITECTURE.md","path":"packages/agentflow/ARCHITECTURE.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/ARCHITECTURE.md","title":"Agentflow Skill","category":"anthropic-skill","format":"markdown","content":"# Agentflow Skill\n\nPath: `packages/agentflow/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/ARCHITECTURE.md)","tokens":300,"sizeBytes":184},{"name":"CHANGELOG.md","path":"packages/agentflow/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/CHANGELOG.md","title":"Agentflow Skill","category":"anthropic-skill","format":"markdown","content":"# Agentflow Skill\n\nPath: `packages/agentflow/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/CHANGELOG.md)","tokens":300,"sizeBytes":178},{"name":"package-lock.json","path":"packages/agentflow/examples/package-lock.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package-lock.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/agentflow/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package-lock.json)","tokens":300,"sizeBytes":205},{"name":"package.json","path":"packages/agentflow/examples/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/agentflow/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package.json)","tokens":300,"sizeBytes":195},{"name":"tsconfig.json","path":"packages/agentflow/examples/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/tsconfig.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/agentflow/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/tsconfig.json)","tokens":300,"sizeBytes":197},{"name":"package.json","path":"packages/agentflow/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/package.json","title":"Agentflow Skill","category":"anthropic-skill","format":"json","content":"# Agentflow Skill\n\nPath: `packages/agentflow/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/package.json)","tokens":300,"sizeBytes":178},{"name":"TESTS.md","path":"packages/agentflow/TESTS.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/TESTS.md","title":"Agentflow Skill","category":"anthropic-skill","format":"markdown","content":"# Agentflow Skill\n\nPath: `packages/agentflow/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/TESTS.md)","tokens":300,"sizeBytes":170},{"name":"tsconfig.json","path":"packages/agentflow/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/tsconfig.json","title":"Agentflow Skill","category":"anthropic-skill","format":"json","content":"# Agentflow Skill\n\nPath: `packages/agentflow/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/tsconfig.json)","tokens":300,"sizeBytes":180},{"name":"nodemon.json","path":"packages/api-documentation/nodemon.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/nodemon.json","title":"Api-documentation Skill","category":"anthropic-skill","format":"json","content":"# Api-documentation Skill\n\nPath: `packages/api-documentation/nodemon.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/nodemon.json)","tokens":300,"sizeBytes":202},{"name":"package.json","path":"packages/api-documentation/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/package.json","title":"Api-documentation Skill","category":"anthropic-skill","format":"json","content":"# Api-documentation Skill\n\nPath: `packages/api-documentation/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/package.json)","tokens":300,"sizeBytes":202},{"name":"README-ZH.md","path":"packages/api-documentation/README-ZH.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README-ZH.md","title":"Api-documentation Skill","category":"anthropic-skill","format":"markdown","content":"# Api-documentation Skill\n\nPath: `packages/api-documentation/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README-ZH.md)","tokens":300,"sizeBytes":202},{"name":"tsconfig.json","path":"packages/api-documentation/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/tsconfig.json","title":"Api-documentation Skill","category":"anthropic-skill","format":"json","content":"# Api-documentation Skill\n\nPath: `packages/api-documentation/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/tsconfig.json)","tokens":300,"sizeBytes":204},{"name":"models.json","path":"packages/components/models.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/models.json","title":"Components Skill","category":"anthropic-skill","format":"json","content":"# Components Skill\n\nPath: `packages/components/models.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/models.json)","tokens":300,"sizeBytes":179},{"name":"package.json","path":"packages/components/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/package.json","title":"Components Skill","category":"anthropic-skill","format":"json","content":"# Components Skill\n\nPath: `packages/components/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/package.json)","tokens":300,"sizeBytes":181},{"name":"README-ZH.md","path":"packages/components/README-ZH.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README-ZH.md","title":"Components Skill","category":"anthropic-skill","format":"markdown","content":"# Components Skill\n\nPath: `packages/components/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README-ZH.md)","tokens":300,"sizeBytes":181},{"name":"tsconfig.json","path":"packages/components/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/tsconfig.json","title":"Components Skill","category":"anthropic-skill","format":"json","content":"# Components Skill\n\nPath: `packages/components/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/tsconfig.json)","tokens":300,"sizeBytes":183},{"name":"ARCHITECTURE.md","path":"packages/observe/ARCHITECTURE.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/ARCHITECTURE.md","title":"Observe Skill","category":"anthropic-skill","format":"markdown","content":"# @flowiseai/observe - Architecture\n\nThis document describes the internal architecture of the `@flowiseai/observe` package.\n\n## Overview\n\nThe package follows a **Domain-Driven Modular Architecture** with clear separation of concerns — the same four-layer structure as `@flowiseai/agentflow`. The goal is to keep UI primitives, business logic, API communication, and domain features cleanly separated, so individual features (executions, evaluations, chat history) can be added, tested, and removed without disturbing each other.\n\n```\nsrc/\n├── index.ts                    # Public Package API (\"Public Face\")\n│\n├── atoms/                      # ⚛️ UI Primitives (\"What it looks like\" (Dumb))\n├── features/                   # 🧩 Domain Features (\"What it does\" (Smart))\n├── core/                       # 🧠 Business Logic (\"Business Rules\" (Types/Logic))\n└── infrastructure/             # 🌐 External Services (\"Outside World\" (API/Storage))\n```\n\n---\n\n## Directory Structure\n\n### `atoms/` - UI Primitives\n\n**\"What it looks like.\"** Tiny, irreducible UI components with no business logic. Shared building blocks used across features.\n\nExample layout (illustrative — not exhaustive; check the directory for the current set):\n\n```\natoms/\n├── StatusIndicator.tsx     # Execution / node status icon (INPROGRESS, FINISHED, ERROR…)\n├── MetricsDisplay.tsx      # Token / cost / time metrics row\n├── NodeIcon.tsx            # AGENTFLOW_ICONS-driven avatar for a node type\n├── …                       # Other primitives as the SDK grows\n└── index.ts                # Central export\n```\n\n**Rules:**\n\n-   Must be \"dumb\" and stateless (or minimal local state for animations)\n-   No business logic\n-   No API calls\n-   Imported by features, never the reverse\n-   **Forbidden**: Importing from `features/` or `infrastructure/` — only `core/types`, `core/theme`, and `core/primitives`\n\n**Goal:** 100% visual consistency across all observe features.\n\n---\n\n### `features/` - Domain Features\n\n**\"What it does.\"** Self-contained domain modules. Each feature owns its components, hooks, and feature-local utilities. Adding a new observability feature (evaluations, chat history, MALT) means adding a new directory here — it does not touch existing feature exports.\n\nExample layout (illustrative — not exhaustive; the `executions` feature currently has more sub-components and hooks than shown here):\n\n```\nfeatures/\n├── executions/             # Execution viewer\n│   ├── components/\n│   │   ├── ExecutionsViewer.tsx      # Filterable list + pagination + resizable detail drawer\n│   │   ├── ExecutionDetail.tsx       # Resizable split-pane: tree sidebar + node detail\n│   │   ├── ExecutionTreeSidebar.tsx  # @mui/x-tree-view RichTreeView with custom slot\n│   │   ├── NodeExecutionDetail.tsx   # Step viewer: markdown/JSON/code/HTML renderers, HITL\n│   │   ├── ExecutionsListTable.tsx   # Sortable/selectable MUI table\n│   │   └── …                         # Other components (chat bubbles, panels) as the feature grows\n│   ├── hooks/\n│   │   ├── useExecutionPoll.ts       # Auto-poll while INPROGRESS, stop on terminal state\n│   │   ├── useExecutionTree.ts       # Build ExecutionTreeNode[] from flat NodeExecutionData[]\n│   │   ├── useResizableSidebar.ts    # Drag-to-resize width state (left- or right-anchored panels)\n│   │   └── …                         # Other feature-local hooks\n│   └── index.ts                      # Public API for this feature\n│\n└── (evaluations/)          # Future — GA\n    └── (chat-history/)     # Future — GA\n```\n\n**Rules:**\n\n-   Each feature has an `index.ts` gatekeeper — only re-export what consumers need\n-   **Features never import from other features directly** — if two features share logic, move it to `core/`\n-   Feature-specific utilities stay in the feature folder\n-   Hooks are co-located with their feature\n\n**Goal:** High cohesion. Deleting a feature folder should not break other features.\n\n---\n\n### `core/` - Business Logic\n\n**\"The Brain.\"** Framework-agnostic types, utilities, and the MUI theme factory. No React components, no API calls.\n\nExample layout (illustrative — not exhaustive; new sub-files land under `types/`, `primitives/`, and `utils/` as the SDK grows):\n\n```\ncore/\n├── types/\n│   ├── execution.ts        # Execution, ExecutionState, NodeExecutionData,\n│   │                       # ExecutionTreeNode, HumanInputParams\n│   ├── observe.ts          # ObserveBaseProps, ExecutionsViewerProps,\n│   │                       # ExecutionDetailProps, ExecutionFilters\n│   ├── nodeDetail.ts       # ChatMessage, ConditionEntry, AvailableToolEntry, …\n│   └── index.ts\n│\n├── primitives/             # Domain-free, safe to import from atoms/\n│   ├── agentflowIcons.ts   # AGENTFLOW_ICONS registry (icon + color per node type)\n│   ├── json.ts             # JSON tokenizer / safe parser\n│   └── index.ts\n│\n├── utils/                  # Domain-aware helpers — not importable from atoms/\n│   ├── guards.ts           # Type predicates over core/types/* shapes\n│   ├── tools.ts            # Tool-call extraction / resolution\n│   └── index.ts\n│\n└── theme/\n    ├── tokens.ts               # Color palette, spacing, shadows\n    ├── createObserveTheme.ts   # MUI theme factory (isDarkMode toggle)\n    └── index.ts\n```\n\n**Rules:**\n\n-   **No React components** — pure TypeScript only\n-   No browser-specific APIs unless unavoidable\n-   No side effects\n-   Can be tested in isolation\n\n#### `core/primitives/` vs `core/utils/`\n\n-   **`primitives/`** — Domain-free utilities with no knowledge of executions or node data. **Safe to import from `atoms/`.**\n-   **`utils/`** — Domain-aware utilities (e.g., execution state helpers). **Only importable by `features/` and `infrastructure/`.**\n\nWhen adding a utility, ask: _\"Does this function need to know what an Execution or NodeExecutionData is?\"_ If no → `primitives/`. If yes → `utils/`.\n\n**Goal:** Framework-agnostic source of truth.\n\n---\n\n### `infrastructure/` - External Services\n\n**\"The Outside World.\"** API client factory and React context providers.\n\nExample layout (illustrative — not exhaustive; new API modules land under `api/` as features grow):\n\n```\ninfrastructure/\n├── api/\n│   ├── client.ts           # bindApiClient(apiBaseUrl, token) — axios with Bearer header\n│   ├── executions.ts       # createExecutionsApi(client): getAllExecutions, getExecutionById,\n│   │                       # deleteExecutions, updateExecution\n│   └── index.ts\n│\n└── store/\n    └── ObserveContext.tsx  # ObserveProvider, useObserveApi(), useObserveConfig()\n```\n\n**Rules:**\n\n-   All external communication goes through `infrastructure/api/`\n-   Contexts are internal — composed in `ObserveProvider`, not exported directly to consumers\n-   `useObserveApi()` throws if called outside `ObserveProvider` (fast failure)\n\n**Goal:** Wrap external dependencies so they can be mocked in tests.\n\n---\n\n## Dependency Flow\n\n**Dependencies must only flow downwards.**\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                  Root Files (Public API)                │\n│                       (index.ts)                        │\n│                   \"The Public Face\"                     │\n└─────────────────────────────────────────────────────────┘\n                           │\n                           ▼\n┌─────────────────────────────────────────────────────────┐\n│                      features/                          │\n│   (executions, evaluations, chat-history, …)            │\n│                   \"What it does\"                        │\n└─────────────────────────────────────────────────────────┘\n          │                                    │\n          ▼                                    ▼\n┌──────────────────┐              ┌────────────────────────┐\n│      atoms/      │              │    infrastructure/     │\n│  (UI primitives) │              │    (api, store)        │\n│ \"What it looks   │              │ \"The Outside World\"    │\n│     like\"        │              │                        │\n└──────────────────┘              └────────────────────────┘\n          │                                    │\n          └──────────────┬─────────────────────┘\n                         ▼\n              ┌─────────────────────┐\n              │        core/        │\n              │  (types, theme,     │\n              │   primitives)       │\n              │     \"The Brain\"     │\n              └─────────────────────┘\n```\n\n**Import Rules:**\n\n-   `features` → `atoms`, `infrastructure`, `core` ✅\n-   `infrastructure` → `core` ✅\n-   `atoms` → `core/types`, `core/theme`, `core/primitives` only ✅\n-   `core` → nothing (leaf node) ✅\n-   **No reverse imports** — enforced by ESLint `import/no-restricted-paths`\n\n---\n\n## Observe-Specific Patterns\n\n### `ObserveProvider` — Root Provider\n\n`ObserveProvider` composes three providers:\n\n```tsx\n<ThemeProvider theme={createObserveTheme(isDarkMode)}>\n    <ObserveApiContext.Provider value={api}>\n        <ObserveConfigContext.Provider value={config}>{children}</ObserveConfigContext.Provider>\n    </ObserveApiContext.Provider>\n</ThemeProvider>\n```\n\n-   `ObserveApiContext` — holds the bound axios client (created once from `apiBaseUrl` + `token` + `requestInterceptor`)\n-   `ObserveConfigContext` — holds `isDarkMode` and other display config\n-   Features call `useObserveApi()` to get the client; they never construct it themselves\n\n### Request Interceptor — Auth Bridging\n\nThe SDK sends `Authorization: Bearer <token>` by default. Different consumers authenticate differently:\n\n| Consumer                     | Auth mechanism                              | How to configure                                       |\n| ---------------------------- | ------------------------------------------- | ------------------------------------------------------ |\n| DevSite                      | AgentForge proxy headers                    | `requestInterceptor` to inject proxy token             |\n| OSS (embedded in Flowise UI) | Session cookie + `x-request-from: internal` | `requestInterceptor` to set `withCredentials` + header |\n| OSS (standalone / external)  | Flowise API key                             | `token` prop (default)                                 |\n\n`requestInterceptor` is a callback on the Axios request config, identical in shape to the one in `@flowiseai/agentflow`:\n\n```ts\ninterface ObserveBaseProps {\n    requestInterceptor?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig\n}\n```\n\nIt is passed to `bindApiClient` and registered via `axios.interceptors.request.use`. If the callback throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds safely.\n\n**OSS session auth example:**\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n`requestInterceptor` should only be provided by trusted, developer-authored code — never from user input or dynamically evaluated strings.\n\n### Auto-Poll (`useExecutionPoll`)\n\n`useExecutionPoll` sets up a `setInterval` while `execution.state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → interval cleared immediately\n```\n\n-   `pollInterval={0}` disables auto-poll entirely\n-   `refresh()` is returned for manual refresh buttons\n-   The hook clears the interval on unmount\n\n### Execution Tree (`useExecutionTree`)\n\n`useExecutionTree` converts the flat `NodeExecutionData[]` stored as JSON in `execution.executionData` into a hierarchical `ExecutionTreeNode[]`. Two parenting mechanisms run in sequence (mirrors legacy `ExecutionDetails.jsx` `buildTreeData`):\n\n1. **`previousNodeIds` parent→child** — each non-iteration node attaches to the most-recent prior instance of any node listed in its `previousNodeIds`. Nodes with empty / unmatched `previousNodeIds` become roots. The \"most recent\" rule disambiguates when the same `nodeId` runs more than once (e.g. inside a loop).\n2. **Iteration grouping** — children with `parentNodeId` + `iterationIndex` are bundled into virtual `Iteration #N` container nodes (`isVirtualNode: true`) under the iteration agent's most-recent instance, then linked to one another inside the iteration via the same `previousNodeIds` rule (restricted to same-iteration siblings).\n\nTree-node ids are `${nodeId}_${arrayIndex}` so duplicate `nodeId`s remain addressable. The tree is consumed by `ExecutionTreeSidebar` (a `RichTreeView` slot) inside `ExecutionDetail`.\n\n### HITL Callback — Opaque Consumer Contract\n\nThe `onHumanInput` prop is intentionally opaque:\n\n```ts\ninterface ExecutionsViewerProps {\n    onHumanInput?: (agentflowId: string, params: HumanInputParams) => Promise<void>\n}\n```\n\n-   In OSS: consumer calls the Flowise prediction endpoint directly\n-   In DevSite: consumer routes through the AgentForge proxy\n\nThe SDK never calls the prediction API itself. Approve/Reject buttons are only rendered when `onHumanInput` is provided AND the node is a human input node in INPROGRESS state. This keeps auth and routing logic entirely out of the SDK.\n\n### Tenant Isolation\n\nTenant isolation is handled server-side by Flowise's `ExtendRequestContextMiddleware` via request headers. The SDK does not accept or pass a `tenantId` prop — the API returns only what the authenticated token is permitted to see.\n\n---\n\n## Gatekeeper Pattern\n\nEach module exposes only what's needed via its `index.ts`:\n\n```typescript\n// features/executions/index.ts (illustrative — re-export only what consumers need)\n// ✅ Public API\nexport { ExecutionsViewer } from './components/ExecutionsViewer'\nexport { ExecutionDetail } from './components/ExecutionDetail'\nexport { NodeExecutionDetail } from './components/NodeExecutionDetail'\nexport { useExecutionPoll } from './hooks/useExecutionPoll'\nexport { useExecutionTree } from './hooks/useExecutionTree'\n\n// ❌ Internal sub-components (e.g. ExecutionTreeSidebar, ChatMessageBubble) and helpers stay private\n```\n\n---\n\n## Adding a New Feature\n\nAdding evaluations, chat history, or MALT follows the same pattern:\n\n1. Create a folder under `features/`:\n\n    ```\n    features/evaluations/\n    ├── components/\n    │   └── EvaluationsViewer.tsx\n    ├── hooks/\n    │   └── useEvaluationPoll.ts\n    └── index.ts\n    ```\n\n2. Add the API module under `infrastructure/api/`:\n\n    ```\n    infrastructure/api/\n    └── evaluations.ts   # createEvaluationsApi(client)\n    ```\n\n3. Add any new types to `core/types/` (e.g., `evaluation.ts`)\n\n4. Export only from the feature's `index.ts`, then re-export from the package `src/index.ts`\n\n5. Import from infrastructure/core, never from other features:\n\n    ```typescript\n    // ✅ Good\n    import { useObserveApi } from '../../../infrastructure/store'\n    import type { Execution } from '../../../core/types'\n\n    // ❌ Bad — cross-feature import\n    import { ExecutionDetail } from '../executions/components/ExecutionDetail'\n    ```\n\n---\n\n## Root Files (`src/index.ts`)\n\nThe barrel export exposes only the public surface. Example shape (illustrative — refer to `src/index.ts` for the current set):\n\n```typescript\n// Components\nexport { ExecutionsViewer, ExecutionDetail, NodeExecutionDetail } from './features/executions'\nexport { ObserveProvider } from './infrastructure/store'\n\n// Hooks (for consumers building custom UIs on top of observe infrastructure)\nexport { useExecutionPoll, useExecutionTree } from './features/executions'\nexport { useObserveApi, useObserveConfig } from './infrastructure/store'\n\n// Types\nexport type { ExecutionsViewerProps, ExecutionDetailProps, ExecutionFilters } from './core/types'\nexport type { Execution, ExecutionState, NodeExecutionData, HumanInputParams, AgentflowRef } from './core/types'\n```\n\nEverything else is internal implementation detail.\n\n---\n\n## Development Principles\n\n### Barrel Exports\n\nEvery directory has an `index.ts` gatekeeper.\n\n**✅ Good:**\n\n```typescript\nimport { StatusIcon } from '../../atoms'\nimport { useObserveApi } from '../../infrastructure/store'\n```\n\n**❌ Bad:**\n\n```typescript\n// Never deep-link into files\nimport { StatusIcon } from '../../atoms/StatusIcon'\nimport { useObserveApi } from '../../infrastructure/store/ObserveContext'\n```\n\n### Naming Conventions\n\n| Type        | Convention                  | Example                      |\n| ----------- | --------------------------- | ---------------------------- |\n| Component   | PascalCase.tsx              | `ExecutionDetail.tsx`        |\n| Hook        | camelCase.ts (`use` prefix) | `useExecutionPoll.ts`        |\n| Logic/Types | camelCase.ts                | `execution.ts`, `observe.ts` |\n| API module  | camelCase.ts                | `executions.ts`              |\n| Styles      | kebab-case (co-located)     | `executions.css`             |\n\n### Theme Token Ordering\n\nInside `core/theme/tokens.ts`, all maps are ordered alphanumerically: `baseColors`, top-level `tokens` groups, subgroups, and keys (e.g. `gray50 < gray75 < gray100 < gray200`). Each `{ dark, light }` / `{ dark, light, main }` pair follows the same rule. Keep new entries in order so diffs stay small.\n\n### Type Location Rule\n\nDomain types live in `core/types/`, **not** alongside their primary component, when they cross any of these boundaries:\n\n-   Imported by a hook (`features/*/hooks/*`)\n-   Imported by another component in a different file\n-   Used in a public API exported via `src/index.ts`\n\nComponent-internal types (props interfaces, file-private shapes used only inside the file that defines the component) stay co-located. The rule prevents the inversion where a hook reaches \"upward\" into a sibling component file just to read a type.\n\nProps interfaces (e.g. `ChatMessageBubbleProps`) are **always** file-local — never lift them to `core/types/` even if another component would re-use one. Re-using a props interface across components is a code smell on its own; the right fix is a shared underlying type, not a shared props interface.\n\nPredicates that narrow into a `core/types/` shape (e.g. `isChatMessageArray(value): value is ChatMessage[]`) live in `core/utils/` next to other domain-aware helpers — never in `atoms/` (atoms cannot import from `core/utils`, only from `core/primitives`).\n\nExample layout:\n\n-   `core/types/nodeDetail.ts` — `ChatMessage`, `ConditionEntry`, `AvailableToolEntry`, `UsedToolEntry`, `UsedToolRef`, `ToolNodeRef`, `NormalizedToolCall`\n-   `core/utils/guards.ts` — `isChatMessageArray`, `isConditionArray`, `isAvailableToolArray`, `isUsedToolArray`\n-   `core/utils/tools.ts` — `resolveTool`, `extractToolCalls` (consumed by `ChatMessageBubble` + `ToolAccordionList`)\n","isInternal":false,"tokens":4343,"sizeBytes":20196},{"name":"package-lock.json","path":"packages/observe/examples/package-lock.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package-lock.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/observe/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package-lock.json)","tokens":300,"sizeBytes":201},{"name":"package.json","path":"packages/observe/examples/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/observe/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package.json)","tokens":300,"sizeBytes":191},{"name":"tsconfig.json","path":"packages/observe/examples/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/tsconfig.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/observe/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/tsconfig.json)","tokens":300,"sizeBytes":193},{"name":"package.json","path":"packages/observe/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/package.json","title":"@flowiseai/observe","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"@flowiseai/observe\",\n    \"version\": \"0.0.0-dev.1\",\n    \"description\": \"Embeddable React components for observing AI agent executions, evaluations, and runtime activity\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/FlowiseAI/Flowise.git\",\n        \"directory\": \"packages/observe\"\n    },\n    \"homepage\": \"https://github.com/FlowiseAI/Flowise/tree/main/packages/observe#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/FlowiseAI/Flowise/issues\"\n    },\n    \"keywords\": [\n        \"flowise\",\n        \"flowiseai\",\n        \"observe\",\n        \"executions\",\n        \"observability\",\n        \"react\",\n        \"llm\",\n        \"ai\",\n        \"agent\"\n    ],\n    \"publishConfig\": {\n        \"access\": \"public\",\n        \"registry\": \"https://registry.npmjs.org\"\n    },\n    \"main\": \"./dist/index.umd.js\",\n    \"module\": \"./dist/index.js\",\n    \"types\": \"./dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": \"./dist/index.js\",\n            \"require\": \"./dist/index.umd.js\",\n            \"types\": \"./dist/index.d.ts\"\n        }\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"sideEffects\": false,\n    \"scripts\": {\n        \"build\": \"tsc && vite build\",\n        \"clean\": \"rimraf dist\",\n        \"dev\": \"vite\",\n        \"dev:example\": \"vite --config examples/vite.config.ts\",\n        \"format\": \"prettier --write \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"format:check\": \"prettier --check \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"lint\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\"\",\n        \"lint:fix\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\" --fix\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"prepublishOnly\": \"npm run clean && npm run build\",\n        \"test\": \"jest\",\n        \"test:coverage\": \"jest --coverage\",\n        \"test:watch\": \"jest --watch\"\n    },\n    \"peerDependencies\": {\n        \"@emotion/react\": \"^11.10.0\",\n        \"@emotion/styled\": \"^11.10.0\",\n        \"@mui/icons-material\": \"^5.0.0\",\n        \"@mui/material\": \"^5.15.0\",\n        \"react\": \"^18.2.0\",\n        \"react-dom\": \"^18.2.0\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@tabler/icons-react\": \"^3.7.0\",\n        \"axios\": \"1.15.0\",\n        \"date-fns\": \"^3.6.0\",\n        \"flowise-react-json-view\": \"^1.21.7\",\n        \"lodash\": \"^4.17.21\",\n        \"react-markdown\": \"^9.0.1\",\n        \"react-syntax-highlighter\": \"15.5.0\",\n        \"remark-gfm\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@testing-library/jest-dom\": \"^6.6.3\",\n        \"@testing-library/react\": \"^14.3.1\",\n        \"@testing-library/user-event\": \"^14.5.2\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/lodash\": \"^4.14.195\",\n        \"@types/react\": \"^18.2.0\",\n        \"@types/react-dom\": \"^18.2.0\",\n        \"@types/react-syntax-highlighter\": \"15.5.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^8.18.2\",\n        \"@typescript-eslint/parser\": \"^8.18.2\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"eslint-import-resolver-typescript\": \"4.4.4\",\n        \"eslint-plugin-import\": \"^2.29.0\",\n        \"eslint-plugin-markdown\": \"^3.0.1\",\n        \"eslint-plugin-simple-import-sort\": \"^12.0.0\",\n        \"jest\": \"^29.7.0\",\n        \"jest-environment-jsdom\": \"^29.7.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"ts-jest\": \"^29.3.2\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-dts\": \"^3.7.0\"\n    }\n}\n","frontmatter":{"name":"@flowiseai/observe","version":"0.0.0-dev.1","description":"Embeddable React components for observing AI agent executions, evaluations, and runtime activity","license":"Apache-2.0","repository":{"type":"git","url":"https://github.com/FlowiseAI/Flowise.git","directory":"packages/observe"},"homepage":"https://github.com/FlowiseAI/Flowise/tree/main/packages/observe#readme","bugs":{"url":"https://github.com/FlowiseAI/Flowise/issues"},"keywords":["flowise","flowiseai","observe","executions","observability","react","llm","ai","agent"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"main":"./dist/index.umd.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.js","types":"./dist/index.d.ts"}},"files":["dist"],"sideEffects":false,"scripts":{"build":"tsc && vite build","clean":"rimraf dist","dev":"vite","dev:example":"vite --config examples/vite.config.ts","format":"prettier --write \"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\"","format:check":"prettier --check \"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\"","lint":"eslint \"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\" \"*.md\"","lint:fix":"eslint \"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\" \"*.md\" --fix","nuke":"pnpm clean && rimraf node_modules .turbo","prepublishOnly":"npm run clean && npm run build","test":"jest","test:coverage":"jest --coverage","test:watch":"jest --watch"},"peerDependencies":{"@emotion/react":"^11.10.0","@emotion/styled":"^11.10.0","@mui/icons-material":"^5.0.0","@mui/material":"^5.15.0","react":"^18.2.0","react-dom":"^18.2.0"},"overrides":{"prebuild-install":"7.1.3","axios":"1.15.0","body-parser":"2.0.2","braces":"3.0.3","cross-spawn":"7.0.6","form-data":"4.0.4","glob-parent":"6.0.2","http-proxy-middleware":"3.0.3","json5":"2.2.3","nth-check":"2.1.1","path-to-regexp":"0.1.12","prismjs":"1.29.0","rollup":"4.45.0","semver":"7.7.1","set-value":"4.1.0","solid-js":"1.9.11","protobufjs":">=7.5.5","tar-fs":"3.1.1","unset-value":"2.0.1","webpack-dev-middleware":"7.4.2","ws":"8.18.3","xlsx":"0.18.5","uuid":"^10.0.0","@tootallnate/once":">=3.0.1","tmp":">=0.2.4","@elastic/transport":">=8.9.3","@modelcontextprotocol/sdk":">=1.25.2","multer":"2.2.0"},"dependencies":{"@mui/x-tree-view":"^7.25.0","@tabler/icons-react":"^3.7.0","axios":"1.15.0","date-fns":"^3.6.0","flowise-react-json-view":"^1.21.7","lodash":"^4.17.21","react-markdown":"^9.0.1","react-syntax-highlighter":"15.5.0","remark-gfm":"^4.0.0"},"devDependencies":{"@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^14.3.1","@testing-library/user-event":"^14.5.2","@types/jest":"^29.5.14","@types/lodash":"^4.14.195","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@types/react-syntax-highlighter":"15.5.13","@typescript-eslint/eslint-plugin":"^8.18.2","@typescript-eslint/parser":"^8.18.2","@vitejs/plugin-react":"^4.2.0","eslint-import-resolver-typescript":"4.4.4","eslint-plugin-import":"^2.29.0","eslint-plugin-markdown":"^3.0.1","eslint-plugin-simple-import-sort":"^12.0.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.3.2","typescript":"^5.4.5","vite":"^5.0.2","vite-plugin-dts":"^3.7.0"}},"isInternal":false,"tokens":1434,"sizeBytes":4402},{"name":"TESTS.md","path":"packages/observe/TESTS.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/TESTS.md","title":"Observe Skill","category":"anthropic-skill","format":"markdown","content":"# Observe Skill\n\nPath: `packages/observe/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/TESTS.md)","tokens":300,"sizeBytes":164},{"name":"tsconfig.json","path":"packages/observe/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/tsconfig.json","title":"Observe Skill","category":"anthropic-skill","format":"json","content":"# Observe Skill\n\nPath: `packages/observe/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/tsconfig.json)","tokens":300,"sizeBytes":174},{"name":"Agentic RAG.json","path":"packages/server/marketplaces/agentflows/Agentic RAG.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Agentic RAG.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Agentic RAG.json)","tokens":300,"sizeBytes":229},{"name":"Branch Out Merge In.json","path":"packages/server/marketplaces/agentflows/Branch Out Merge In.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Branch Out Merge In.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Branch Out Merge In.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Branch Out Merge In.json)","tokens":300,"sizeBytes":245},{"name":"Customer Support Team Agents.json","path":"packages/server/marketplaces/agentflows/Customer Support Team Agents.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Customer Support Team Agents.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Customer Support Team Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Customer Support Team Agents.json)","tokens":300,"sizeBytes":263},{"name":"Essay Writing & Grading.json","path":"packages/server/marketplaces/agentflows/Essay Writing & Grading.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Essay Writing & Grading.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Essay Writing & Grading.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Essay Writing & Grading.json)","tokens":300,"sizeBytes":253},{"name":"Human In Loop RAG.json","path":"packages/server/marketplaces/agentflows/Human In Loop RAG.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Human In Loop RAG.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Human In Loop RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Human In Loop RAG.json)","tokens":300,"sizeBytes":241},{"name":"Lead Outreach.json","path":"packages/server/marketplaces/agentflows/Lead Outreach.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Lead Outreach.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Lead Outreach.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Lead Outreach.json)","tokens":300,"sizeBytes":233},{"name":"Multi Agents.json","path":"packages/server/marketplaces/agentflows/Multi Agents.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Multi Agents.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Multi Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Multi Agents.json)","tokens":300,"sizeBytes":231},{"name":"Patient Concierge.json","path":"packages/server/marketplaces/agentflows/Patient Concierge.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Patient Concierge.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Patient Concierge.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Patient Concierge.json)","tokens":300,"sizeBytes":241},{"name":"Plan and Execute.json","path":"packages/server/marketplaces/agentflows/Plan and Execute.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Plan and Execute.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Plan and Execute.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Plan and Execute.json)","tokens":300,"sizeBytes":239},{"name":"Portfolio Management Team.json","path":"packages/server/marketplaces/agentflows/Portfolio Management Team.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Portfolio Management Team.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Portfolio Management Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Portfolio Management Team.json)","tokens":300,"sizeBytes":257},{"name":"Prompt Engineering Team.json","path":"packages/server/marketplaces/agentflows/Prompt Engineering Team.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Prompt Engineering Team.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Prompt Engineering Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Prompt Engineering Team.json)","tokens":300,"sizeBytes":253},{"name":"Software Team.json","path":"packages/server/marketplaces/agentflows/Software Team.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Software Team.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Software Team.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Software Team.json)","tokens":300,"sizeBytes":233},{"name":"Support Routing System.json","path":"packages/server/marketplaces/agentflows/Support Routing System.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Support Routing System.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Support Routing System.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Support Routing System.json)","tokens":300,"sizeBytes":251},{"name":"Text to SQL.json","path":"packages/server/marketplaces/agentflows/Text to SQL.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Text to SQL.json","title":"Agentflows Skill","category":"anthropic-skill","format":"json","content":"# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Text to SQL.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Text to SQL.json)","tokens":300,"sizeBytes":229},{"name":"Agentic RAG.json","path":"packages/server/marketplaces/agentflowsv2/Agentic RAG.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agentic RAG.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agentic RAG.json)","tokens":300,"sizeBytes":235},{"name":"Agents Handoff.json","path":"packages/server/marketplaces/agentflowsv2/Agents Handoff.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agents Handoff.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Agents Handoff.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Agents Handoff.json)","tokens":300,"sizeBytes":241},{"name":"Deep Research With Multi-turn Conversations.json","path":"packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Multi-turn Conversations.json)","tokens":300,"sizeBytes":299},{"name":"Deep Research With Subagents.json","path":"packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Deep Research With Subagents.json)","tokens":300,"sizeBytes":269},{"name":"Human In The Loop.json","path":"packages/server/marketplaces/agentflowsv2/Human In The Loop.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Human In The Loop.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Human In The Loop.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Human In The Loop.json)","tokens":300,"sizeBytes":247},{"name":"Interacting With API.json","path":"packages/server/marketplaces/agentflowsv2/Interacting With API.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Interacting With API.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Interacting With API.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Interacting With API.json)","tokens":300,"sizeBytes":253},{"name":"Iterations.json","path":"packages/server/marketplaces/agentflowsv2/Iterations.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Iterations.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Iterations.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Iterations.json)","tokens":300,"sizeBytes":233},{"name":"Simple RAG.json","path":"packages/server/marketplaces/agentflowsv2/Simple RAG.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Simple RAG.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Simple RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Simple RAG.json)","tokens":300,"sizeBytes":233},{"name":"SQL Agent.json","path":"packages/server/marketplaces/agentflowsv2/SQL Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/SQL Agent.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/SQL Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/SQL Agent.json)","tokens":300,"sizeBytes":231},{"name":"Structured Output.json","path":"packages/server/marketplaces/agentflowsv2/Structured Output.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Structured Output.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Structured Output.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Structured Output.json)","tokens":300,"sizeBytes":247},{"name":"Supervisor Worker.json","path":"packages/server/marketplaces/agentflowsv2/Supervisor Worker.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Supervisor Worker.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Supervisor Worker.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Supervisor Worker.json)","tokens":300,"sizeBytes":247},{"name":"Translator.json","path":"packages/server/marketplaces/agentflowsv2/Translator.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Translator.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Translator.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Translator.json)","tokens":300,"sizeBytes":233},{"name":"Workplace Chat.json","path":"packages/server/marketplaces/agentflowsv2/Workplace Chat.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Workplace Chat.json","title":"Agentflowsv2 Skill","category":"anthropic-skill","format":"json","content":"# Agentflowsv2 Skill\n\nPath: `packages/server/marketplaces/agentflowsv2/Workplace Chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflowsv2/Workplace Chat.json)","tokens":300,"sizeBytes":241},{"name":"Advanced Structured Output Parser.json","path":"packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Advanced Structured Output Parser.json)","tokens":300,"sizeBytes":270},{"name":"Context Chat Engine.json","path":"packages/server/marketplaces/chatflows/Context Chat Engine.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Context Chat Engine.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Context Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Context Chat Engine.json)","tokens":300,"sizeBytes":242},{"name":"Conversation Chain.json","path":"packages/server/marketplaces/chatflows/Conversation Chain.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversation Chain.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversation Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversation Chain.json)","tokens":300,"sizeBytes":240},{"name":"Conversational Agent.json","path":"packages/server/marketplaces/chatflows/Conversational Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Agent.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Agent.json)","tokens":300,"sizeBytes":244},{"name":"Conversational Retrieval QA Chain.json","path":"packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json)","tokens":300,"sizeBytes":270},{"name":"CSV Agent.json","path":"packages/server/marketplaces/chatflows/CSV Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/CSV Agent.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/CSV Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/CSV Agent.json)","tokens":300,"sizeBytes":222},{"name":"Github Docs QnA.json","path":"packages/server/marketplaces/chatflows/Github Docs QnA.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Github Docs QnA.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Github Docs QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Github Docs QnA.json)","tokens":300,"sizeBytes":234},{"name":"HuggingFace LLM Chain.json","path":"packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/HuggingFace LLM Chain.json)","tokens":300,"sizeBytes":246},{"name":"Image Generation.json","path":"packages/server/marketplaces/chatflows/Image Generation.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Image Generation.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Image Generation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Image Generation.json)","tokens":300,"sizeBytes":236},{"name":"Input Moderation.json","path":"packages/server/marketplaces/chatflows/Input Moderation.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Input Moderation.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Input Moderation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Input Moderation.json)","tokens":300,"sizeBytes":236},{"name":"List Output Parser.json","path":"packages/server/marketplaces/chatflows/List Output Parser.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/List Output Parser.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/List Output Parser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/List Output Parser.json)","tokens":300,"sizeBytes":240},{"name":"LLM Chain.json","path":"packages/server/marketplaces/chatflows/LLM Chain.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/LLM Chain.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/LLM Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/LLM Chain.json)","tokens":300,"sizeBytes":222},{"name":"Local QnA.json","path":"packages/server/marketplaces/chatflows/Local QnA.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Local QnA.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Local QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Local QnA.json)","tokens":300,"sizeBytes":222},{"name":"Multiple Documents QnA.json","path":"packages/server/marketplaces/chatflows/Multiple Documents QnA.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Multiple Documents QnA.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Multiple Documents QnA.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Multiple Documents QnA.json)","tokens":300,"sizeBytes":248},{"name":"OpenAI Assistant.json","path":"packages/server/marketplaces/chatflows/OpenAI Assistant.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAI Assistant.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAI Assistant.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAI Assistant.json)","tokens":300,"sizeBytes":236},{"name":"OpenAPI YAML Agent.json","path":"packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/OpenAPI YAML Agent.json)","tokens":300,"sizeBytes":240},{"name":"Prompt Chaining.json","path":"packages/server/marketplaces/chatflows/Prompt Chaining.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Prompt Chaining.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Prompt Chaining.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Prompt Chaining.json)","tokens":300,"sizeBytes":234},{"name":"Query Engine.json","path":"packages/server/marketplaces/chatflows/Query Engine.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Query Engine.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Query Engine.json)","tokens":300,"sizeBytes":228},{"name":"ReAct Agent.json","path":"packages/server/marketplaces/chatflows/ReAct Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/ReAct Agent.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/ReAct Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/ReAct Agent.json)","tokens":300,"sizeBytes":226},{"name":"Replicate LLM.json","path":"packages/server/marketplaces/chatflows/Replicate LLM.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Replicate LLM.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Replicate LLM.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Replicate LLM.json)","tokens":300,"sizeBytes":230},{"name":"Simple Chat Engine.json","path":"packages/server/marketplaces/chatflows/Simple Chat Engine.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Simple Chat Engine.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Simple Chat Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Simple Chat Engine.json)","tokens":300,"sizeBytes":240},{"name":"SQL DB Chain.json","path":"packages/server/marketplaces/chatflows/SQL DB Chain.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SQL DB Chain.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SQL DB Chain.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SQL DB Chain.json)","tokens":300,"sizeBytes":228},{"name":"SubQuestion Query Engine.json","path":"packages/server/marketplaces/chatflows/SubQuestion Query Engine.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SubQuestion Query Engine.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/SubQuestion Query Engine.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/SubQuestion Query Engine.json)","tokens":300,"sizeBytes":252},{"name":"Tool Agent.json","path":"packages/server/marketplaces/chatflows/Tool Agent.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Tool Agent.json","title":"Chatflows Skill","category":"anthropic-skill","format":"json","content":"# Chatflows Skill\n\nPath: `packages/server/marketplaces/chatflows/Tool Agent.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/chatflows/Tool Agent.json)","tokens":300,"sizeBytes":224},{"name":"Add Hubspot Contact.json","path":"packages/server/marketplaces/tools/Add Hubspot Contact.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Add Hubspot Contact.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Add Hubspot Contact.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Add Hubspot Contact.json)","tokens":300,"sizeBytes":230},{"name":"Create Airtable Record.json","path":"packages/server/marketplaces/tools/Create Airtable Record.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Create Airtable Record.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Create Airtable Record.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Create Airtable Record.json)","tokens":300,"sizeBytes":236},{"name":"Get Current DateTime.json","path":"packages/server/marketplaces/tools/Get Current DateTime.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Current DateTime.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Current DateTime.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Current DateTime.json)","tokens":300,"sizeBytes":232},{"name":"Get Stock Mover.json","path":"packages/server/marketplaces/tools/Get Stock Mover.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Stock Mover.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Get Stock Mover.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Get Stock Mover.json)","tokens":300,"sizeBytes":222},{"name":"Make Webhook.json","path":"packages/server/marketplaces/tools/Make Webhook.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Make Webhook.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Make Webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Make Webhook.json)","tokens":300,"sizeBytes":216},{"name":"Perplexity AI Search.json","path":"packages/server/marketplaces/tools/Perplexity AI Search.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Perplexity AI Search.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Perplexity AI Search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Perplexity AI Search.json)","tokens":300,"sizeBytes":232},{"name":"Print or Export Text Document.json","path":"packages/server/marketplaces/tools/Print or Export Text Document.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Print or Export Text Document.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Print or Export Text Document.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Print or Export Text Document.json)","tokens":300,"sizeBytes":250},{"name":"Send Discord Message.json","path":"packages/server/marketplaces/tools/Send Discord Message.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Discord Message.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Discord Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Discord Message.json)","tokens":300,"sizeBytes":232},{"name":"Send Slack Message.json","path":"packages/server/marketplaces/tools/Send Slack Message.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Slack Message.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Slack Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Slack Message.json)","tokens":300,"sizeBytes":228},{"name":"Send Teams Message.json","path":"packages/server/marketplaces/tools/Send Teams Message.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Teams Message.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Send Teams Message.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Send Teams Message.json)","tokens":300,"sizeBytes":228},{"name":"SendGrid Email.json","path":"packages/server/marketplaces/tools/SendGrid Email.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/SendGrid Email.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/SendGrid Email.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/SendGrid Email.json)","tokens":300,"sizeBytes":220},{"name":"Spider Web Scraper.json","path":"packages/server/marketplaces/tools/Spider Web Scraper.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Scraper.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Scraper.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Scraper.json)","tokens":300,"sizeBytes":228},{"name":"Spider Web Search & Scrape.json","path":"packages/server/marketplaces/tools/Spider Web Search & Scrape.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Search & Scrape.json","title":"Tools Skill","category":"anthropic-skill","format":"json","content":"# Tools Skill\n\nPath: `packages/server/marketplaces/tools/Spider Web Search & Scrape.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/tools/Spider Web Search & Scrape.json)","tokens":300,"sizeBytes":244},{"name":"nodemon.json","path":"packages/server/nodemon.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/nodemon.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"{\n    \"ignore\": [\"**/*.spec.ts\", \".git\", \"node_modules\"],\n    \"watch\": [\"commands\", \"index.ts\", \"src\"],\n    \"exec\": \"pnpm start\",\n    \"ext\": \"ts\"\n}\n","frontmatter":{"ignore":["**/*.spec.ts",".git","node_modules"],"watch":["commands","index.ts","src"],"exec":"pnpm start","ext":"ts"},"isInternal":false,"tokens":49,"sizeBytes":148},{"name":"package.json","path":"packages/server/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/package.json","title":"flowise","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"flowise\",\n    \"version\": \"3.1.4\",\n    \"description\": \"Flowiseai Server\",\n    \"main\": \"dist/index\",\n    \"types\": \"dist/index.d.ts\",\n    \"bin\": {\n        \"flowise\": \"./bin/run\"\n    },\n    \"files\": [\n        \"bin\",\n        \"marketplaces\",\n        \"dist\",\n        \"npm-shrinkwrap.json\",\n        \"oclif.manifest.json\",\n        \"oauth2.html\"\n    ],\n    \"oclif\": {\n        \"bin\": \"flowise\",\n        \"commands\": \"./dist/commands\"\n    },\n    \"scripts\": {\n        \"build\": \"tsc && rimraf dist/enterprise/emails && gulp\",\n        \"start\": \"run-script-os\",\n        \"clean\": \"rimraf dist\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"start:windows\": \"cd bin && run start\",\n        \"start:default\": \"cd bin && ./run start\",\n        \"start-worker:windows\": \"cd bin && run worker\",\n        \"start-worker:default\": \"cd bin && ./run worker\",\n        \"user\": \"run-script-os\",\n        \"user:windows\": \"cd bin && run user\",\n        \"user:default\": \"cd bin && ./run user\",\n        \"dev\": \"nodemon\",\n        \"oclif-dev\": \"run-script-os\",\n        \"oclif-dev:windows\": \"cd bin && dev start\",\n        \"oclif-dev:default\": \"cd bin && ./dev start\",\n        \"postpack\": \"shx rm -f oclif.manifest.json\",\n        \"prepack\": \"pnpm build && oclif manifest && oclif readme\",\n        \"typeorm\": \"typeorm-ts-node-commonjs\",\n        \"typeorm:migration-generate\": \"pnpm typeorm migration:generate -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-run\": \"pnpm typeorm migration:run -d ./src/utils/typeormDataSource.ts\",\n        \"typeorm:migration-revert\": \"pnpm typeorm migration:revert -d ./src/utils/typeormDataSource.ts\",\n        \"watch\": \"tsc --watch\",\n        \"version\": \"oclif readme && git add README.md\",\n        \"cypress:open\": \"cypress open\",\n        \"cypress:run\": \"cypress run\",\n        \"e2e\": \"start-server-and-test dev http://localhost:3000 cypress:run\",\n        \"cypress:ci\": \"START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run\",\n        \"test\": \"jest\",\n        \"test:watch\": \"jest --watch\",\n        \"test:coverage\": \"jest --coverage\"\n    },\n    \"keywords\": [],\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"Henry Heng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"engines\": {\n        \"node\": \"^24\"\n    },\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@aws-sdk/client-secrets-manager\": \"^3.1014.0\",\n        \"@bull-board/api\": \"^6.11.0\",\n        \"@bull-board/express\": \"^6.11.0\",\n        \"@modelcontextprotocol/sdk\": \"1.29.0\",\n        \"@google-cloud/logging-winston\": \"^6.0.0\",\n        \"@keyv/redis\": \"^4.2.0\",\n        \"@oclif/core\": \"4.0.7\",\n        \"@opentelemetry/api\": \"1.9.0\",\n        \"@opentelemetry/auto-instrumentations-node\": \"^0.52.0\",\n        \"@opentelemetry/core\": \"1.27.0\",\n        \"@opentelemetry/exporter-metrics-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-metrics-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-grpc\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-http\": \"0.54.0\",\n        \"@opentelemetry/exporter-trace-otlp-proto\": \"0.54.0\",\n        \"@opentelemetry/resources\": \"1.27.0\",\n        \"@opentelemetry/sdk-metrics\": \"1.27.0\",\n        \"@opentelemetry/sdk-node\": \"^0.54.0\",\n        \"@opentelemetry/sdk-trace-base\": \"1.27.0\",\n        \"@opentelemetry/semantic-conventions\": \"1.27.0\",\n        \"@types/bcryptjs\": \"^2.4.6\",\n        \"@types/lodash\": \"^4.17.20\",\n        \"@types/passport\": \"^1.0.16\",\n        \"@types/passport-jwt\": \"^4.0.1\",\n        \"@types/passport-local\": \"^1.0.38\",\n        \"async-mutex\": \"^0.4.0\",\n        \"axios\": \"1.15.0\",\n        \"bcryptjs\": \"^2.4.3\",\n        \"bullmq\": \"5.45.2\",\n        \"cache-manager\": \"^6.3.2\",\n        \"connect-pg-simple\": \"^10.0.0\",\n        \"connect-redis\": \"^8.0.1\",\n        \"connect-sqlite3\": \"^0.9.15\",\n        \"content-disposition\": \"0.5.4\",\n        \"cookie-parser\": \"^1.4.6\",\n        \"cors\": \"^2.8.5\",\n        \"crypto-js\": \"^4.1.1\",\n        \"csv-parser\": \"^3.0.0\",\n        \"dotenv\": \"^16.0.0\",\n        \"express\": \"^4.17.3\",\n        \"express-mysql-session\": \"^3.0.3\",\n        \"express-rate-limit\": \"^6.9.0\",\n        \"express-session\": \"^1.18.1\",\n        \"flowise-components\": \"workspace:^\",\n        \"flowise-nim-container-manager\": \"^1.0.11\",\n        \"flowise-ui\": \"workspace:^\",\n        \"geoip-lite\": \"^1.4.10\",\n        \"global-agent\": \"^3.0.0\",\n        \"gulp\": \"^4.0.2\",\n        \"handlebars\": \"^4.7.8\",\n        \"http-errors\": \"^2.0.0\",\n        \"http-status-codes\": \"^2.3.0\",\n        \"jsonwebtoken\": \"^9.0.2\",\n        \"jwt-decode\": \"^4.0.0\",\n        \"langchainhub\": \"^0.0.11\",\n        \"lodash\": \"^4.17.21\",\n        \"moment\": \"^2.29.3\",\n        \"moment-timezone\": \"^0.5.34\",\n        \"multer\": \"2.2.0\",\n        \"multer-azure-blob-storage\": \"^1.2.0\",\n        \"multer-cloud-storage\": \"^4.0.0\",\n        \"multer-s3\": \"^3.0.1\",\n        \"mysql2\": \"^3.11.3\",\n        \"nanoid\": \"3\",\n        \"node-cron\": \"^4.2.1\",\n        \"nodemailer\": \"^7.0.7\",\n        \"openai\": \"6.19.0\",\n        \"passport\": \"^0.7.0\",\n        \"passport-auth0\": \"^1.4.4\",\n        \"passport-cookie\": \"^1.0.9\",\n        \"passport-github\": \"^1.1.0\",\n        \"passport-google-oauth20\": \"^2.0.0\",\n        \"passport-jwt\": \"^4.0.1\",\n        \"passport-local\": \"^1.0.0\",\n        \"passport-openidconnect\": \"^0.1.2\",\n        \"pg\": \"^8.11.1\",\n        \"posthog-node\": \"^3.5.0\",\n        \"prom-client\": \"^15.1.3\",\n        \"rate-limit-redis\": \"^4.2.0\",\n        \"reflect-metadata\": \"^0.1.13\",\n        \"s3-streamlogger\": \"^1.11.0\",\n        \"sanitize-html\": \"^2.11.0\",\n        \"sqlite3\": \"^5.1.6\",\n        \"stripe\": \"^15.6.0\",\n        \"turndown\": \"^7.2.0\",\n        \"typeorm\": \"^0.3.28\",\n        \"uuid\": \"^10.0.0\",\n        \"winston\": \"^3.9.0\",\n        \"winston-azure-blob\": \"^1.5.0\",\n        \"winston-daily-rotate-file\": \"^5.0.0\",\n        \"zod\": \"^3.25.76 || ^4\"\n    },\n    \"devDependencies\": {\n        \"@types/content-disposition\": \"0.5.8\",\n        \"@types/cookie-parser\": \"^1.4.7\",\n        \"@types/cors\": \"^2.8.12\",\n        \"@types/crypto-js\": \"^4.1.1\",\n        \"@types/express-session\": \"^1.18.0\",\n        \"@types/geoip-lite\": \"^1.4.4\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/jsonwebtoken\": \"^9.0.6\",\n        \"@types/multer\": \"^1.4.7\",\n        \"@types/multer-s3\": \"^3.0.3\",\n        \"@types/nodemailer\": \"^6.4.15\",\n        \"@types/passport-auth0\": \"^1.0.9\",\n        \"@types/passport-github\": \"^1.1.12\",\n        \"@types/passport-openidconnect\": \"^0.1.3\",\n        \"@types/sanitize-html\": \"^2.9.5\",\n        \"@types/supertest\": \"^6.0.3\",\n        \"@types/turndown\": \"^5.0.5\",\n        \"concurrently\": \"^7.1.0\",\n        \"cypress\": \"^13.13.0\",\n        \"jest\": \"^29.7.0\",\n        \"nodemon\": \"^2.0.22\",\n        \"oclif\": \"^4.20.5\",\n        \"rimraf\": \"^5.0.5\",\n        \"run-script-os\": \"^1.1.6\",\n        \"shx\": \"^0.3.3\",\n        \"start-server-and-test\": \"^2.0.3\",\n        \"supertest\": \"^7.1.0\",\n        \"ts-jest\": \"^29.3.2\",\n        \"ts-node\": \"^10.7.0\",\n        \"tsc-watch\": \"^6.0.4\",\n        \"typescript\": \"^5.4.5\"\n    }\n}\n","frontmatter":{"name":"flowise","version":"3.1.4","description":"Flowiseai Server","main":"dist/index","types":"dist/index.d.ts","bin":{"flowise":"./bin/run"},"files":["bin","marketplaces","dist","npm-shrinkwrap.json","oclif.manifest.json","oauth2.html"],"oclif":{"bin":"flowise","commands":"./dist/commands"},"scripts":{"build":"tsc && rimraf dist/enterprise/emails && gulp","start":"run-script-os","clean":"rimraf dist","nuke":"pnpm clean && rimraf node_modules .turbo","start:windows":"cd bin && run start","start:default":"cd bin && ./run start","start-worker:windows":"cd bin && run worker","start-worker:default":"cd bin && ./run worker","user":"run-script-os","user:windows":"cd bin && run user","user:default":"cd bin && ./run user","dev":"nodemon","oclif-dev":"run-script-os","oclif-dev:windows":"cd bin && dev start","oclif-dev:default":"cd bin && ./dev start","postpack":"shx rm -f oclif.manifest.json","prepack":"pnpm build && oclif manifest && oclif readme","typeorm":"typeorm-ts-node-commonjs","typeorm:migration-generate":"pnpm typeorm migration:generate -d ./src/utils/typeormDataSource.ts","typeorm:migration-run":"pnpm typeorm migration:run -d ./src/utils/typeormDataSource.ts","typeorm:migration-revert":"pnpm typeorm migration:revert -d ./src/utils/typeormDataSource.ts","watch":"tsc --watch","version":"oclif readme && git add README.md","cypress:open":"cypress open","cypress:run":"cypress run","e2e":"start-server-and-test dev http://localhost:3000 cypress:run","cypress:ci":"START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"keywords":[],"homepage":"https://flowiseai.com","author":{"name":"Henry Heng","email":"henryheng@flowiseai.com"},"engines":{"node":"^24"},"license":"SEE LICENSE IN LICENSE.md","overrides":{"prebuild-install":"7.1.3","axios":"1.15.0","body-parser":"2.0.2","braces":"3.0.3","cross-spawn":"7.0.6","form-data":"4.0.4","glob-parent":"6.0.2","http-proxy-middleware":"3.0.3","json5":"2.2.3","nth-check":"2.1.1","path-to-regexp":"0.1.12","prismjs":"1.29.0","rollup":"4.45.0","semver":"7.7.1","set-value":"4.1.0","solid-js":"1.9.11","protobufjs":">=7.5.5","tar-fs":"3.1.1","unset-value":"2.0.1","webpack-dev-middleware":"7.4.2","ws":"8.18.3","xlsx":"0.18.5","uuid":"^10.0.0","@tootallnate/once":">=3.0.1","tmp":">=0.2.4","@elastic/transport":">=8.9.3","multer":"2.2.0"},"dependencies":{"@aws-sdk/client-secrets-manager":"^3.1014.0","@bull-board/api":"^6.11.0","@bull-board/express":"^6.11.0","@modelcontextprotocol/sdk":"1.29.0","@google-cloud/logging-winston":"^6.0.0","@keyv/redis":"^4.2.0","@oclif/core":"4.0.7","@opentelemetry/api":"1.9.0","@opentelemetry/auto-instrumentations-node":"^0.52.0","@opentelemetry/core":"1.27.0","@opentelemetry/exporter-metrics-otlp-grpc":"0.54.0","@opentelemetry/exporter-metrics-otlp-http":"0.54.0","@opentelemetry/exporter-metrics-otlp-proto":"0.54.0","@opentelemetry/exporter-trace-otlp-grpc":"0.54.0","@opentelemetry/exporter-trace-otlp-http":"0.54.0","@opentelemetry/exporter-trace-otlp-proto":"0.54.0","@opentelemetry/resources":"1.27.0","@opentelemetry/sdk-metrics":"1.27.0","@opentelemetry/sdk-node":"^0.54.0","@opentelemetry/sdk-trace-base":"1.27.0","@opentelemetry/semantic-conventions":"1.27.0","@types/bcryptjs":"^2.4.6","@types/lodash":"^4.17.20","@types/passport":"^1.0.16","@types/passport-jwt":"^4.0.1","@types/passport-local":"^1.0.38","async-mutex":"^0.4.0","axios":"1.15.0","bcryptjs":"^2.4.3","bullmq":"5.45.2","cache-manager":"^6.3.2","connect-pg-simple":"^10.0.0","connect-redis":"^8.0.1","connect-sqlite3":"^0.9.15","content-disposition":"0.5.4","cookie-parser":"^1.4.6","cors":"^2.8.5","crypto-js":"^4.1.1","csv-parser":"^3.0.0","dotenv":"^16.0.0","express":"^4.17.3","express-mysql-session":"^3.0.3","express-rate-limit":"^6.9.0","express-session":"^1.18.1","flowise-components":"workspace:^","flowise-nim-container-manager":"^1.0.11","flowise-ui":"workspace:^","geoip-lite":"^1.4.10","global-agent":"^3.0.0","gulp":"^4.0.2","handlebars":"^4.7.8","http-errors":"^2.0.0","http-status-codes":"^2.3.0","jsonwebtoken":"^9.0.2","jwt-decode":"^4.0.0","langchainhub":"^0.0.11","lodash":"^4.17.21","moment":"^2.29.3","moment-timezone":"^0.5.34","multer":"2.2.0","multer-azure-blob-storage":"^1.2.0","multer-cloud-storage":"^4.0.0","multer-s3":"^3.0.1","mysql2":"^3.11.3","nanoid":"3","node-cron":"^4.2.1","nodemailer":"^7.0.7","openai":"6.19.0","passport":"^0.7.0","passport-auth0":"^1.4.4","passport-cookie":"^1.0.9","passport-github":"^1.1.0","passport-google-oauth20":"^2.0.0","passport-jwt":"^4.0.1","passport-local":"^1.0.0","passport-openidconnect":"^0.1.2","pg":"^8.11.1","posthog-node":"^3.5.0","prom-client":"^15.1.3","rate-limit-redis":"^4.2.0","reflect-metadata":"^0.1.13","s3-streamlogger":"^1.11.0","sanitize-html":"^2.11.0","sqlite3":"^5.1.6","stripe":"^15.6.0","turndown":"^7.2.0","typeorm":"^0.3.28","uuid":"^10.0.0","winston":"^3.9.0","winston-azure-blob":"^1.5.0","winston-daily-rotate-file":"^5.0.0","zod":"^3.25.76 || ^4"},"devDependencies":{"@types/content-disposition":"0.5.8","@types/cookie-parser":"^1.4.7","@types/cors":"^2.8.12","@types/crypto-js":"^4.1.1","@types/express-session":"^1.18.0","@types/geoip-lite":"^1.4.4","@types/jest":"^29.5.14","@types/jsonwebtoken":"^9.0.6","@types/multer":"^1.4.7","@types/multer-s3":"^3.0.3","@types/nodemailer":"^6.4.15","@types/passport-auth0":"^1.0.9","@types/passport-github":"^1.1.12","@types/passport-openidconnect":"^0.1.3","@types/sanitize-html":"^2.9.5","@types/supertest":"^6.0.3","@types/turndown":"^5.0.5","concurrently":"^7.1.0","cypress":"^13.13.0","jest":"^29.7.0","nodemon":"^2.0.22","oclif":"^4.20.5","rimraf":"^5.0.5","run-script-os":"^1.1.6","shx":"^0.3.3","start-server-and-test":"^2.0.3","supertest":"^7.1.0","ts-jest":"^29.3.2","ts-node":"^10.7.0","tsc-watch":"^6.0.4","typescript":"^5.4.5"}},"isInternal":false,"tokens":2695,"sizeBytes":7948},{"name":"README-ZH.md","path":"packages/server/README-ZH.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/README-ZH.md","title":"Server Skill","category":"anthropic-skill","format":"markdown","content":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\n[English](./README.md) | 中文\n\n<h3>以可视化方式构建 AI Agents</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡ 快速入门\n\n1. 安装 Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. 启动 Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. 打开[http://localhost:3000](http://localhost:3000)\n\n## 🌱 环境变量\n\nFlowise 支持不同的环境变量来配置您的实例。您可以在`packages/server`文件夹中的`.env`文件中指定以下变量。阅读[更多](https://docs.flowiseai.com/configuration/environment-variables)\n\n您还可以在使用`npx`时指定环境变量。例如：\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 文档\n\n[Flowise 文档](https://docs.flowiseai.com/)\n\n## 🌐 自托管\n\n在您现有的基础设施中部署自托管的 Flowise，我们支持各种[部署](https://docs.flowiseai.com/configuration/deployment)\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>其他</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![在 Railway 上部署](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![部署到 Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![部署到 Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![部署到 RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ 云托管\n\n[开始使用云托管](https://flowiseai.com/)\n\n## 🙋 支持\n\n在[讨论区](https://github.com/FlowiseAI/Flowise/discussions)中随时提出任何问题、报告问题和请求新功能。\n\n## 🙌 贡献\n\n请参阅[贡献指南](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md)。如果您有任何问题或问题，请在[Discord](https://discord.gg/jbaHfsRVBW)上与我们联系。\n\n## 📄 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","isInternal":false,"tokens":1027,"sizeBytes":3242},{"name":"LICENSE.md","path":"packages/server/src/enterprise/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/src/enterprise/LICENSE.md","title":"Enterprise Skill","category":"anthropic-skill","format":"markdown","content":"# Enterprise Skill\n\nPath: `packages/server/src/enterprise/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/src/enterprise/LICENSE.md)","tokens":300,"sizeBytes":199},{"name":"tsconfig.json","path":"packages/server/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/tsconfig.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"lib\": [\"es2021\"],\n        \"target\": \"es2021\" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,\n        \"experimentalDecorators\": true /* Enable experimental support for TC39 stage 2 draft decorators. */,\n        \"emitDecoratorMetadata\": true /* Emit design-type metadata for decorated declarations in source files. */,\n        \"module\": \"commonjs\" /* Specify what module code is generated. */,\n        \"outDir\": \"dist\",\n        \"esModuleInterop\": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,\n        \"forceConsistentCasingInFileNames\": true /* Ensure that casing is correct in imports. */,\n        \"strict\": true /* Enable all strict type-checking options. */,\n        \"skipLibCheck\": true /* Skip type checking all .d.ts files. */,\n        \"sourceMap\": true,\n        \"strictPropertyInitialization\": false,\n        \"declaration\": true\n    },\n    \"include\": [\"src/**/*.ts\"],\n    \"exclude\": [\"node_modules\"]\n}\n","isInternal":false,"tokens":236,"sizeBytes":1115},{"name":"jsconfig.json","path":"packages/ui/jsconfig.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/jsconfig.json","title":"Ui Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"module\": \"commonjs\",\n        \"paths\": {\n            \"@/*\": [\"./src/*\"]\n        }\n    },\n    \"include\": [\"src/**/*\"],\n    \"exclude\": [\"node_modules\"]\n}\n","frontmatter":{"compilerOptions":{"target":"esnext","module":"commonjs","paths":{"@/*":["./src/*"]}},"include":["src/**/*"],"exclude":["node_modules"]},"isInternal":false,"tokens":59,"sizeBytes":215},{"name":"package.json","path":"packages/ui/package.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/package.json","title":"flowise-ui","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"flowise-ui\",\n    \"version\": \"3.1.4\",\n    \"license\": \"SEE LICENSE IN LICENSE.md\",\n    \"homepage\": \"https://flowiseai.com\",\n    \"author\": {\n        \"name\": \"HenryHeng\",\n        \"email\": \"henryheng@flowiseai.com\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@codemirror/lang-javascript\": \"^6.2.1\",\n        \"@codemirror/lang-json\": \"^6.0.1\",\n        \"@codemirror/lang-markdown\": \"^6.2.5\",\n        \"@codemirror/view\": \"^6.26.3\",\n        \"@emotion/cache\": \"^11.4.0\",\n        \"@emotion/react\": \"^11.10.6\",\n        \"@emotion/styled\": \"^11.10.6\",\n        \"@lezer/highlight\": \"^1.2.1\",\n        \"@microsoft/fetch-event-source\": \"^2.0.1\",\n        \"@mui/base\": \"5.0.0-beta.40\",\n        \"@mui/icons-material\": \"5.0.3\",\n        \"@mui/lab\": \"5.0.0-alpha.156\",\n        \"@mui/material\": \"5.15.0\",\n        \"@mui/system\": \"^6.4.3\",\n        \"@mui/x-data-grid\": \"6.8.0\",\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@reduxjs/toolkit\": \"^2.2.7\",\n        \"@tabler/icons-react\": \"^3.30.0\",\n        \"@tiptap/core\": \"^3.20.4\",\n        \"@tiptap/extension-code-block-lowlight\": \"^3.20.4\",\n        \"@tiptap/extension-mention\": \"^3.20.4\",\n        \"@tiptap/extension-placeholder\": \"^3.20.4\",\n        \"@tiptap/markdown\": \"^3.20.4\",\n        \"@tiptap/pm\": \"^3.20.4\",\n        \"@tiptap/react\": \"^3.20.4\",\n        \"@tiptap/starter-kit\": \"^3.20.4\",\n        \"@uiw/codemirror-theme-sublime\": \"^4.21.21\",\n        \"@uiw/codemirror-theme-vscode\": \"^4.21.21\",\n        \"@uiw/react-codemirror\": \"^4.21.21\",\n        \"axios\": \"1.15.0\",\n        \"clsx\": \"^1.1.1\",\n        \"dompurify\": \"^3.2.6\",\n        \"dotenv\": \"^16.0.0\",\n        \"flowise-embed\": \"latest\",\n        \"flowise-embed-react\": \"latest\",\n        \"flowise-react-json-view\": \"*\",\n        \"formik\": \"^2.2.6\",\n        \"framer-motion\": \"^4.1.13\",\n        \"history\": \"^5.0.0\",\n        \"html-react-parser\": \"^3.0.4\",\n        \"lodash\": \"^4.17.21\",\n        \"lowlight\": \"^3.3.0\",\n        \"moment\": \"^2.29.3\",\n        \"notistack\": \"^2.0.4\",\n        \"prop-types\": \"^15.7.2\",\n        \"react\": \"^18.2.0\",\n        \"react-code-blocks\": \"^0.1.6\",\n        \"react-color\": \"^2.19.3\",\n        \"react-datepicker\": \"^4.21.0\",\n        \"react-device-detect\": \"^1.17.0\",\n        \"react-dom\": \"^18.2.0\",\n        \"react-markdown\": \"^8.0.6\",\n        \"react-perfect-scrollbar\": \"^1.5.8\",\n        \"react-redux\": \"^8.0.5\",\n        \"react-rewards\": \"^2.1.0\",\n        \"react-router\": \"~6.3.0\",\n        \"react-router-dom\": \"~6.3.0\",\n        \"react-syntax-highlighter\": \"^15.5.0\",\n        \"reactflow\": \"^11.5.6\",\n        \"recharts\": \"^2.12.6\",\n        \"redux\": \"^4.0.5\",\n        \"rehype-mathjax\": \"^4.0.2\",\n        \"rehype-raw\": \"^7.0.0\",\n        \"remark-gfm\": \"^3.0.1\",\n        \"remark-math\": \"^5.1.1\",\n        \"showdown\": \"^2.1.0\",\n        \"tippy.js\": \"^6.3.7\",\n        \"uuid\": \"^10.0.0\",\n        \"yup\": \"^0.32.9\"\n    },\n    \"scripts\": {\n        \"dev\": \"vite\",\n        \"start\": \"vite\",\n        \"build\": \"vite build\",\n        \"test\": \"jest\",\n        \"clean\": \"rimraf build\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\"\n    },\n    \"babel\": {\n        \"presets\": [\n            [\n                \"@babel/preset-env\",\n                {\n                    \"targets\": {\n                        \"node\": \"current\"\n                    }\n                }\n            ],\n            \"@babel/preset-react\"\n        ]\n    },\n    \"browserslist\": {\n        \"production\": [\n            \">0.2%\",\n            \"not dead\",\n            \"not op_mini all\"\n        ],\n        \"development\": [\n            \"last 1 chrome version\",\n            \"last 1 firefox version\",\n            \"last 1 safari version\"\n        ]\n    },\n    \"devDependencies\": {\n        \"@babel/eslint-parser\": \"^7.15.8\",\n        \"@babel/plugin-proposal-private-property-in-object\": \"^7.21.11\",\n        \"@testing-library/jest-dom\": \"^5.11.10\",\n        \"@testing-library/react\": \"^14.0.0\",\n        \"@testing-library/user-event\": \"^12.8.3\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"jest\": \"^29.7.0\",\n        \"pretty-quick\": \"^3.1.3\",\n        \"react-scripts\": \"^5.0.1\",\n        \"rimraf\": \"^5.0.5\",\n        \"sass\": \"^1.42.1\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-pwa\": \"^0.17.0\",\n        \"vite-plugin-react-js-support\": \"^1.0.7\"\n    }\n}\n","frontmatter":{"name":"flowise-ui","version":"3.1.4","license":"SEE LICENSE IN LICENSE.md","homepage":"https://flowiseai.com","author":{"name":"HenryHeng","email":"henryheng@flowiseai.com"},"overrides":{"prebuild-install":"7.1.3","axios":"1.15.0","body-parser":"2.0.2","braces":"3.0.3","cross-spawn":"7.0.6","form-data":"4.0.4","glob-parent":"6.0.2","http-proxy-middleware":"3.0.3","json5":"2.2.3","nth-check":"2.1.1","path-to-regexp":"0.1.12","prismjs":"1.29.0","rollup":"4.45.0","semver":"7.7.1","set-value":"4.1.0","solid-js":"1.9.11","protobufjs":">=7.5.5","tar-fs":"3.1.1","unset-value":"2.0.1","webpack-dev-middleware":"7.4.2","ws":"8.18.3","xlsx":"0.18.5","uuid":"^10.0.0","@tootallnate/once":">=3.0.1","tmp":">=0.2.4","@elastic/transport":">=8.9.3","@modelcontextprotocol/sdk":">=1.25.2","multer":"2.2.0"},"dependencies":{"@codemirror/lang-javascript":"^6.2.1","@codemirror/lang-json":"^6.0.1","@codemirror/lang-markdown":"^6.2.5","@codemirror/view":"^6.26.3","@emotion/cache":"^11.4.0","@emotion/react":"^11.10.6","@emotion/styled":"^11.10.6","@lezer/highlight":"^1.2.1","@microsoft/fetch-event-source":"^2.0.1","@mui/base":"5.0.0-beta.40","@mui/icons-material":"5.0.3","@mui/lab":"5.0.0-alpha.156","@mui/material":"5.15.0","@mui/system":"^6.4.3","@mui/x-data-grid":"6.8.0","@mui/x-tree-view":"^7.25.0","@reduxjs/toolkit":"^2.2.7","@tabler/icons-react":"^3.30.0","@tiptap/core":"^3.20.4","@tiptap/extension-code-block-lowlight":"^3.20.4","@tiptap/extension-mention":"^3.20.4","@tiptap/extension-placeholder":"^3.20.4","@tiptap/markdown":"^3.20.4","@tiptap/pm":"^3.20.4","@tiptap/react":"^3.20.4","@tiptap/starter-kit":"^3.20.4","@uiw/codemirror-theme-sublime":"^4.21.21","@uiw/codemirror-theme-vscode":"^4.21.21","@uiw/react-codemirror":"^4.21.21","axios":"1.15.0","clsx":"^1.1.1","dompurify":"^3.2.6","dotenv":"^16.0.0","flowise-embed":"latest","flowise-embed-react":"latest","flowise-react-json-view":"*","formik":"^2.2.6","framer-motion":"^4.1.13","history":"^5.0.0","html-react-parser":"^3.0.4","lodash":"^4.17.21","lowlight":"^3.3.0","moment":"^2.29.3","notistack":"^2.0.4","prop-types":"^15.7.2","react":"^18.2.0","react-code-blocks":"^0.1.6","react-color":"^2.19.3","react-datepicker":"^4.21.0","react-device-detect":"^1.17.0","react-dom":"^18.2.0","react-markdown":"^8.0.6","react-perfect-scrollbar":"^1.5.8","react-redux":"^8.0.5","react-rewards":"^2.1.0","react-router":"~6.3.0","react-router-dom":"~6.3.0","react-syntax-highlighter":"^15.5.0","reactflow":"^11.5.6","recharts":"^2.12.6","redux":"^4.0.5","rehype-mathjax":"^4.0.2","rehype-raw":"^7.0.0","remark-gfm":"^3.0.1","remark-math":"^5.1.1","showdown":"^2.1.0","tippy.js":"^6.3.7","uuid":"^10.0.0","yup":"^0.32.9"},"scripts":{"dev":"vite","start":"vite","build":"vite build","test":"jest","clean":"rimraf build","nuke":"pnpm clean && rimraf node_modules .turbo"},"babel":{"presets":[["@babel/preset-env",{"targets":{"node":"current"}}],"@babel/preset-react"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"devDependencies":{"@babel/eslint-parser":"^7.15.8","@babel/plugin-proposal-private-property-in-object":"^7.21.11","@testing-library/jest-dom":"^5.11.10","@testing-library/react":"^14.0.0","@testing-library/user-event":"^12.8.3","@vitejs/plugin-react":"^4.2.0","jest":"^29.7.0","pretty-quick":"^3.1.3","react-scripts":"^5.0.1","rimraf":"^5.0.5","sass":"^1.42.1","typescript":"^5.4.5","vite":"^5.0.2","vite-plugin-pwa":"^0.17.0","vite-plugin-react-js-support":"^1.0.7"}},"isInternal":false,"tokens":1752,"sizeBytes":5145},{"name":"manifest.json","path":"packages/ui/public/manifest.json","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/public/manifest.json","title":"Public Skill","category":"anthropic-skill","format":"json","content":"# Public Skill\n\nPath: `packages/ui/public/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/public/manifest.json)","tokens":300,"sizeBytes":177},{"name":"README-ZH.md","path":"packages/ui/README-ZH.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/README-ZH.md","title":"Ui Skill","category":"anthropic-skill","format":"markdown","content":"<!-- markdownlint-disable MD030 -->\n\n# 流程界面\n\n[English](./README.md) | 中文\n\nFlowise 的 React 前端界面。\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n安装：\n\n```bash\nnpm i flowise-ui\n```\n\n## 许可证\n\n本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。\n","isInternal":false,"tokens":126,"sizeBytes":413},{"name":"README.md","path":"packages/agentflow/examples/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/README.md","title":"examples Documentation","category":"plugin-manifest","format":"markdown","content":"# examples Documentation\n\nPath: `packages/agentflow/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/README.md)","tokens":300,"sizeBytes":197},{"name":"README.md","path":"packages/agentflow/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/README.md","title":"agentflow Documentation","category":"plugin-manifest","format":"markdown","content":"# agentflow Documentation\n\nPath: `packages/agentflow/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/README.md)","tokens":300,"sizeBytes":180},{"name":"README.md","path":"packages/api-documentation/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README.md","title":"api-documentation Documentation","category":"plugin-manifest","format":"markdown","content":"# api-documentation Documentation\n\nPath: `packages/api-documentation/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README.md)","tokens":300,"sizeBytes":204},{"name":"README.md","path":"packages/components/nodes/chatmodels/AzureChatOpenAI/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md","title":"AzureChatOpenAI Documentation","category":"plugin-manifest","format":"markdown","content":"# AzureChatOpenAI Documentation\n\nPath: `packages/components/nodes/chatmodels/AzureChatOpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md)","tokens":300,"sizeBytes":254},{"name":"readme.md","path":"packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md","title":"ChatNemoGuardrails Documentation","category":"plugin-manifest","format":"markdown","content":"# ChatNemoGuardrails Documentation\n\nPath: `packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md)","tokens":300,"sizeBytes":263},{"name":"README.md","path":"packages/components/nodes/documentloaders/S3File/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/S3File/README.md","title":"S3File Documentation","category":"plugin-manifest","format":"markdown","content":"# S3File Documentation\n\nPath: `packages/components/nodes/documentloaders/S3File/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/S3File/README.md)","tokens":300,"sizeBytes":237},{"name":"README.md","path":"packages/components/nodes/documentloaders/Unstructured/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/Unstructured/README.md","title":"Unstructured Documentation","category":"plugin-manifest","format":"markdown","content":"# Unstructured Documentation\n\nPath: `packages/components/nodes/documentloaders/Unstructured/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/documentloaders/Unstructured/README.md)","tokens":300,"sizeBytes":255},{"name":"README.md","path":"packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md","title":"AzureOpenAIEmbedding Documentation","category":"plugin-manifest","format":"markdown","content":"# AzureOpenAIEmbedding Documentation\n\nPath: `packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md)","tokens":300,"sizeBytes":269},{"name":"README.md","path":"packages/components/nodes/llms/Azure OpenAI/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/llms/Azure OpenAI/README.md","title":"Azure OpenAI Documentation","category":"plugin-manifest","format":"markdown","content":"# Azure OpenAI Documentation\n\nPath: `packages/components/nodes/llms/Azure OpenAI/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/llms/Azure OpenAI/README.md)","tokens":300,"sizeBytes":233},{"name":"README.md","path":"packages/components/nodes/recordmanager/PostgresRecordManager/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/recordmanager/PostgresRecordManager/README.md","title":"PostgresRecordManager Documentation","category":"plugin-manifest","format":"markdown","content":"# PostgresRecordManager Documentation\n\nPath: `packages/components/nodes/recordmanager/PostgresRecordManager/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/recordmanager/PostgresRecordManager/README.md)","tokens":300,"sizeBytes":278},{"name":"README.md","path":"packages/components/nodes/vectorstores/Postgres/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/vectorstores/Postgres/README.md","title":"Postgres Documentation","category":"plugin-manifest","format":"markdown","content":"# Postgres Documentation\n\nPath: `packages/components/nodes/vectorstores/Postgres/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/nodes/vectorstores/Postgres/README.md)","tokens":300,"sizeBytes":237},{"name":"README.md","path":"packages/components/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README.md","title":"components Documentation","category":"plugin-manifest","format":"markdown","content":"# components Documentation\n\nPath: `packages/components/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README.md)","tokens":300,"sizeBytes":183},{"name":"README.md","path":"packages/observe/examples/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/README.md","title":"examples Documentation","category":"plugin-manifest","format":"markdown","content":"# examples Documentation\n\nPath: `packages/observe/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/README.md)","tokens":300,"sizeBytes":193},{"name":"README.md","path":"packages/observe/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/README.md","title":"observe Documentation","category":"plugin-manifest","format":"markdown","content":"# @flowiseai/observe\n\n[![Version](https://img.shields.io/npm/v/@flowiseai/observe)](https://www.npmjs.com/package/@flowiseai/observe)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md)\n\n> Embeddable React components for visualizing AI agent runtime observability — executions, evaluations, and more\n\n## ⚠️ Status\n\n**This package is currently under active development.**\n\n-   🚧 Components are not yet fully functional\n-   ❌ End-to-end functionality is not complete\n-   🔄 Features are still being implemented and tested\n-   ⚡ APIs may change before stable release\n-   📝 Documentation is being updated as development progresses\n\n**Cannot be used in production. For development and testing purposes only.**\n\n## Overview\n\n`@flowiseai/observe` is the runtime observability SDK for Flowise. It provides embeddable React components for viewing execution traces, node-level step details, and human-in-the-loop interactions for AI agent workflows built with Flowise.\n\nThis is the \"Observe\" layer of the Build-Run-Observe trio alongside `@flowiseai/agentflow` (Build).\n\n## Features\n\n-   **Execution List** — Filterable, paginated table of agent executions across all agentflows, or scoped to a single agentflow via `agentflowId`\n-   **Execution Detail** — Resizable split-pane with a sidebar node tree and a right-side step viewer\n-   **Node Step Viewer** — Renders markdown, JSON, raw code, and HTML output per node step, with rendered/raw toggle\n-   **Token / Cost / Time Metrics** — Per-node execution metrics displayed inline\n-   **Auto-Poll** — Automatically refreshes while a run is `INPROGRESS`, stops on terminal state\n-   **HITL Support** — Approve/Reject buttons for human-input nodes when `onHumanInput` callback is provided\n-   **State + Date Filters** — Filter by execution state and date range\n-   **Single-Row and Bulk Delete** — Opt-in trash icon on row hover, plus bulk delete via checkbox selection\n-   **Dark Mode** — Full light/dark theme support via design tokens and CSS variables\n-   **SDK-Owned Theme** — No host theme required; `ObserveProvider` injects its own MUI theme\n\n## Installation\n\n```bash\npnpm add @flowiseai/observe\n```\n\n**Peer Dependencies:**\n\n```bash\npnpm add react react-dom @mui/material @mui/icons-material @emotion/react @emotion/styled\n```\n\n> Note: ReactFlow is **not** a peer dependency. `@flowiseai/observe` is a viewer only — no canvas.\n\n## Basic Usage\n\n### Execution List\n\nDisplays all executions across every agentflow. Pass `agentflowId` to scope the list to a single flow — useful when embedding next to a specific agentflow canvas.\n\n```tsx\nimport { ExecutionsViewer, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            {/* All agentflows */}\n            <ExecutionsViewer allowDelete={true} pollInterval={3000} />\n\n            {/* Scoped to one agentflow */}\n            <ExecutionsViewer agentflowId='uuid-of-the-agentflow' allowDelete={true} pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### Standalone Execution Detail\n\nRenders the full step viewer for a single execution by ID — useful for deep-linking into a specific trace.\n\n```tsx\nimport { ExecutionDetail, ObserveProvider } from '@flowiseai/observe'\n\nexport default function App() {\n    return (\n        <ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n            <ExecutionDetail executionId='uuid-of-the-execution' pollInterval={3000} />\n        </ObserveProvider>\n    )\n}\n```\n\n### With HITL Callback\n\nThe `onHumanInput` callback is how the host application handles human-in-the-loop responses. The SDK delegates routing entirely to the consumer — OSS calls Flowise directly, DevSite routes through the AgentForge proxy.\n\n```tsx\n<ExecutionsViewer\n    onHumanInput={async (agentflowId, params) => {\n        // OSS: call Flowise prediction endpoint directly\n        await fetch(`/api/v1/prediction/${agentflowId}`, {\n            method: 'POST',\n            headers: { Authorization: `Bearer ${token}` },\n            body: JSON.stringify(params.humanInput)\n        })\n        // DevSite: route through AgentForge proxy instead\n    }}\n/>\n```\n\nWhen `onHumanInput` is not provided, Approve/Reject buttons are not rendered. No auth complexity leaks into the SDK.\n\n### With Request Interceptor\n\n`token` and `requestInterceptor` are both optional and compose: if both are provided, the Bearer header is set first, then the interceptor runs and can extend or override it.\n\n**API key (default):**\n\n```tsx\n// token alone — sets Authorization: Bearer header automatically\n<ObserveProvider apiBaseUrl='http://localhost:3000' token='your-api-key'>\n    {/* your app */}\n</ObserveProvider>\n```\n\n**OSS session auth** — embedding inside the Flowise UI where a session cookie already exists:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n**DevSite proxy auth** — inject AgentForge proxy headers:\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='https://...'\n    requestInterceptor={(config) => {\n        config.headers['x-agentforge-token'] = getProxyToken()\n        return config\n    }}\n>\n    {/* your app */}\n</ObserveProvider>\n```\n\nIf the interceptor throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds. Only pass trusted, developer-authored functions — never user-generated input.\n\n## Props\n\n### `<ObserveProvider>`\n\nRoot provider. Wraps `ExecutionsViewer` or `ExecutionDetail`. Injects the MUI theme, API client, and config context.\n\n<!-- prettier-ignore -->\n| Prop                  | Type                                                                      | Default        | Description                                                                                   |\n| --------------------- | ------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------- |\n| `apiBaseUrl`          | `string`                                                                  | **(required)** | Flowise API server base URL                                                                   |\n| `token`               | `string`                                                                  | —              | API key — sets `Authorization: Bearer <token>`. Optional when using `requestInterceptor`. |\n| `requestInterceptor`  | `(config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig`     | —              | Customize outgoing requests. Runs after Bearer header is set — can extend or override it. See [Request Interceptor](#with-request-interceptor) below. |\n| `isDarkMode`          | `boolean`                                                                 | `false`        | Use dark mode theme                                                                           |\n| `children`            | `ReactNode`                                                               | **(required)** | `ExecutionsViewer`, `ExecutionDetail`, or both                                                |\n\n### `<ExecutionsViewer>`\n\nFilterable, paginated list of executions. Clicking a row opens `ExecutionDetail` in a side drawer. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop             | Type                                                                | Default | Description                                                                         |\n| ---------------- | ------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------- |\n| `agentflowId`    | `string`                                                            | —       | Scope list to a single agentflow. Omit for full cross-agent list.                   |\n| `allowDelete`    | `boolean`                                                           | `false` | Show trash icon on row hover with inline confirm dialog                             |\n| `pollInterval`   | `number`                                                            | `3000`  | Auto-poll interval in ms while any execution is INPROGRESS. `0` = off              |\n| `initialFilters` | `Partial<ExecutionFilters>`                                         | —       | Pre-set filter values on mount                                                      |\n| `onHumanInput`   | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —       | HITL callback. Approve/Reject buttons hidden when not provided                      |\n\n### `<ExecutionDetail>`\n\nResizable split-pane viewer for a single execution. Left sidebar shows the node tree; right panel shows `NodeExecutionDetail` for the selected step. Must be rendered inside `<ObserveProvider>`.\n\n<!-- prettier-ignore -->\n| Prop           | Type                                                                | Default        | Description                                                        |\n| -------------- | ------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------ |\n| `executionId`  | `string`                                                            | **(required)** | UUID of the execution to display                                   |\n| `pollInterval` | `number`                                                            | `3000`         | Auto-poll interval in ms while execution is INPROGRESS. `0` = off |\n| `onHumanInput` | `(agentflowId: string, params: HumanInputParams) => Promise<void>` | —              | HITL callback. Approve/Reject buttons hidden when not provided     |\n| `onClose`      | `() => void`                                                        | —              | Called when the panel is dismissed (dismissible contexts only)     |\n\n### Auto-Poll Behavior\n\nBoth `ExecutionsViewer` and `ExecutionDetail` auto-refresh while `state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → polling stops immediately\n```\n\nSet `pollInterval={0}` to disable auto-poll and rely on the manual refresh button only.\n\n### Deletion\n\nOpt-in via `allowDelete={true}` on `ExecutionsViewer`. Shows a trash icon on row hover. Clicking opens an inline confirm dialog. The SDK calls `DELETE /api/v1/executions` internally on confirm.\n\n> Bulk delete is available via checkbox selection in the table header.\n\n## Types\n\n```typescript\ntype ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED'\n\ninterface Execution {\n    id: string\n    executionData: string // JSON-serialized NodeExecutionData[]\n    state: ExecutionState\n    agentflowId: string\n    sessionId?: string\n    isPublic: boolean\n    createdDate: string\n    updatedDate: string\n    agentflow?: { id: string; name: string }\n}\n\ninterface NodeExecutionData {\n    nodeLabel: string\n    nodeId: string\n    data: unknown // rendered content (markdown string, object, etc.)\n    previousNodeIds: string[]\n    status: ExecutionState\n    name?: string\n    iterationIndex?: number\n    parentNodeId?: string\n    output?: unknown\n}\n\ninterface HumanInputParams {\n    question: string\n    chatId: string\n    humanInput: {\n        type: 'proceed' | 'reject'\n        startNodeId: string\n        feedback?: string\n    }\n}\n\ninterface ExecutionFilters {\n    state: ExecutionState | ''\n    startDate: string\n    endDate: string\n    sessionId: string\n    agentflowName: string // M2 only\n}\n```\n\n## Development\n\n```bash\n# Install dependencies (from monorepo root)\npnpm install\n\n# Build the package\npnpm build\n\n# Run tests\npnpm test\n\n# Run examples dev server\ncd examples && pnpm install && pnpm dev\n```\n\nCopy `examples/.env.example` to `examples/.env` and fill in your values before running the dev server.\n\nVisit the [examples](./examples/README.md) directory for usage demos. See [ARCHITECTURE.md](./ARCHITECTURE.md) for internal structure and design patterns.\n\n## Publishing\n\n### Version Update\n\n```bash\n# Prerelease (for testing / EA)\nnpm version prerelease --preid=dev   # 0.0.0-dev.1 → 0.0.0-dev.2\n\n# Patch / Minor / Major (stable)\nnpm version patch                    # 0.0.1\nnpm version minor                    # 0.1.0\nnpm version major                    # 1.0.0\n```\n\n### Verify Before Publishing\n\n```bash\npnpm build\nnpm pack --dry-run\nnpm publish --dry-run\n```\n\n### Publish\n\n```bash\n# EA / prerelease — tagged so npm install won't pick it up by default\nnpm publish --tag dev\n\n# Stable release\nnpm publish\n```\n\n> The `prepublishOnly` script runs `clean` and `build` automatically before every publish.\n\n## Documentation\n\n-   [ARCHITECTURE.md](./ARCHITECTURE.md) — Internal architecture, layer rules, and patterns\n-   [Examples](./examples/README.md) — Running the demo app\n\n## License\n\nApache-2.0 — see the repository root [LICENSE.md](https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md) for details.\n\n---\n\nPart of the [Flowise](https://github.com/FlowiseAI/Flowise) ecosystem\n","isInternal":false,"tokens":2858,"sizeBytes":13506},{"name":"README.md","path":"packages/server/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/README.md","title":"server Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- markdownlint-disable MD030 -->\n\n# Flowise\n\nEnglish | [中文](./README-ZH.md)\n\n<h3>Build AI Agents, Visually</h3>\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\n## ⚡Quick Start\n\n1. Install Flowise\n    ```bash\n    npm install -g flowise\n    ```\n2. Start Flowise\n\n    ```bash\n    npx flowise start\n    ```\n\n3. Open [http://localhost:3000](http://localhost:3000)\n\n## 🌱 Env Variables\n\nFlowise support different environment variables to configure your instance. You can specify the following variables in the `.env` file inside `packages/server` folder. Read [more](https://github.com/FlowiseAI/Flowise/blob/main/CONTRIBUTING.md#-env-variables)\n\nYou can also specify the env variables when using `npx`. For example:\n\n```\nnpx flowise start --PORT=3000 --DEBUG=true\n```\n\n## 📖 Tests\n\nWe use [Cypress](https://github.com/cypress-io) for our e2e testing. If you want to run the test suite in dev mode please follow this guide:\n\n```sh\ncd Flowise/packages/server\npnpm install\n./node_modules/.bin/cypress install\npnpm build\n#Only for writing new tests on local dev -> pnpm run cypress:open\npnpm run e2e\n```\n\n## 📖 Documentation\n\n[Flowise Docs](https://docs.flowiseai.com/)\n\n## 🌐 Self Host\n\n-   [AWS](https://docs.flowiseai.com/deployment/aws)\n-   [Azure](https://docs.flowiseai.com/deployment/azure)\n-   [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean)\n-   [GCP](https://docs.flowiseai.com/deployment/gcp)\n-   <details>\n      <summary>Others</summary>\n\n    -   [Railway](https://docs.flowiseai.com/deployment/railway)\n\n        [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9)\n\n    -   [Render](https://docs.flowiseai.com/deployment/render)\n\n        [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render)\n\n    -   [HuggingFace Spaces](https://docs.flowiseai.com/configuration/deployment/hugging-face)\n\n        <a href=\"https://huggingface.co/spaces/FlowiseAI/Flowise\"><img src=\"https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg\" alt=\"HuggingFace Spaces\"></a>\n\n    -   [Elestio](https://elest.io/open-source/flowiseai)\n\n        [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/flowiseai)\n\n    -   [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n        [![](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise)\n\n    -   [RepoCloud](https://repocloud.io/details/?app_id=29)\n\n        [![Deploy on RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29)\n\n      </details>\n\n## ☁️ Flowise Cloud\n\n[Get Started with Flowise Cloud](https://flowiseai.com/)\n\n## 🙋 Support\n\nFeel free to ask any questions, raise problems, and request new features in [discussion](https://github.com/FlowiseAI/Flowise/discussions)\n\n## 🙌 Contributing\n\nSee [contributing guide](https://github.com/FlowiseAI/Flowise/blob/master/CONTRIBUTING.md). Reach out to us at [Discord](https://discord.gg/jbaHfsRVBW) if you have any questions or issues.\n\n## 📄 License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","isInternal":false,"tokens":988,"sizeBytes":3484},{"name":"README.md","path":"packages/ui/README.md","rawUrl":"https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/ui/README.md","title":"ui Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- markdownlint-disable MD030 -->\n\n# Flowise UI\n\nEnglish | [中文](./README-ZH.md)\n\nReact frontend ui for Flowise.\n\n![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true)\n\nInstall:\n\n```bash\nnpm i flowise-ui\n```\n\n## License\n\nSource code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md).\n","isInternal":false,"tokens":110,"sizeBytes":419}],"systemPromptSnippet":"<yakaai_skills repo=\"FlowiseAI/Flowise\">\n<!-- File: packages/agentflow/ARCHITECTURE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflow Skill\n\nPath: `packages/agentflow/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/ARCHITECTURE.md)\n\n<!-- File: packages/agentflow/CHANGELOG.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflow Skill\n\nPath: `packages/agentflow/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/CHANGELOG.md)\n\n<!-- File: packages/agentflow/examples/package-lock.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/agentflow/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package-lock.json)\n\n<!-- File: packages/agentflow/examples/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/agentflow/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/package.json)\n\n<!-- File: packages/agentflow/examples/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/agentflow/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/examples/tsconfig.json)\n\n<!-- File: packages/agentflow/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflow Skill\n\nPath: `packages/agentflow/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/package.json)\n\n<!-- File: packages/agentflow/TESTS.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflow Skill\n\nPath: `packages/agentflow/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/TESTS.md)\n\n<!-- File: packages/agentflow/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflow Skill\n\nPath: `packages/agentflow/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/agentflow/tsconfig.json)\n\n<!-- File: packages/api-documentation/nodemon.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Api-documentation Skill\n\nPath: `packages/api-documentation/nodemon.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/nodemon.json)\n\n<!-- File: packages/api-documentation/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Api-documentation Skill\n\nPath: `packages/api-documentation/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/package.json)\n\n<!-- File: packages/api-documentation/README-ZH.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Api-documentation Skill\n\nPath: `packages/api-documentation/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/README-ZH.md)\n\n<!-- File: packages/api-documentation/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Api-documentation Skill\n\nPath: `packages/api-documentation/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/api-documentation/tsconfig.json)\n\n<!-- File: packages/components/models.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Components Skill\n\nPath: `packages/components/models.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/models.json)\n\n<!-- File: packages/components/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Components Skill\n\nPath: `packages/components/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/package.json)\n\n<!-- File: packages/components/README-ZH.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Components Skill\n\nPath: `packages/components/README-ZH.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/README-ZH.md)\n\n<!-- File: packages/components/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Components Skill\n\nPath: `packages/components/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/components/tsconfig.json)\n\n<!-- File: packages/observe/ARCHITECTURE.md (Tokens: ~4343 | Category: anthropic-skill) -->\n# @flowiseai/observe - Architecture\n\nThis document describes the internal architecture of the `@flowiseai/observe` package.\n\n## Overview\n\nThe package follows a **Domain-Driven Modular Architecture** with clear separation of concerns — the same four-layer structure as `@flowiseai/agentflow`. The goal is to keep UI primitives, business logic, API communication, and domain features cleanly separated, so individual features (executions, evaluations, chat history) can be added, tested, and removed without disturbing each other.\n\n```\nsrc/\n├── index.ts                    # Public Package API (\"Public Face\")\n│\n├── atoms/                      # ⚛️ UI Primitives (\"What it looks like\" (Dumb))\n├── features/                   # 🧩 Domain Features (\"What it does\" (Smart))\n├── core/                       # 🧠 Business Logic (\"Business Rules\" (Types/Logic))\n└── infrastructure/             # 🌐 External Services (\"Outside World\" (API/Storage))\n```\n\n---\n\n## Directory Structure\n\n### `atoms/` - UI Primitives\n\n**\"What it looks like.\"** Tiny, irreducible UI components with no business logic. Shared building blocks used across features.\n\nExample layout (illustrative — not exhaustive; check the directory for the current set):\n\n```\natoms/\n├── StatusIndicator.tsx     # Execution / node status icon (INPROGRESS, FINISHED, ERROR…)\n├── MetricsDisplay.tsx      # Token / cost / time metrics row\n├── NodeIcon.tsx            # AGENTFLOW_ICONS-driven avatar for a node type\n├── …                       # Other primitives as the SDK grows\n└── index.ts                # Central export\n```\n\n**Rules:**\n\n-   Must be \"dumb\" and stateless (or minimal local state for animations)\n-   No business logic\n-   No API calls\n-   Imported by features, never the reverse\n-   **Forbidden**: Importing from `features/` or `infrastructure/` — only `core/types`, `core/theme`, and `core/primitives`\n\n**Goal:** 100% visual consistency across all observe features.\n\n---\n\n### `features/` - Domain Features\n\n**\"What it does.\"** Self-contained domain modules. Each feature owns its components, hooks, and feature-local utilities. Adding a new observability feature (evaluations, chat history, MALT) means adding a new directory here — it does not touch existing feature exports.\n\nExample layout (illustrative — not exhaustive; the `executions` feature currently has more sub-components and hooks than shown here):\n\n```\nfeatures/\n├── executions/             # Execution viewer\n│   ├── components/\n│   │   ├── ExecutionsViewer.tsx      # Filterable list + pagination + resizable detail drawer\n│   │   ├── ExecutionDetail.tsx       # Resizable split-pane: tree sidebar + node detail\n│   │   ├── ExecutionTreeSidebar.tsx  # @mui/x-tree-view RichTreeView with custom slot\n│   │   ├── NodeExecutionDetail.tsx   # Step viewer: markdown/JSON/code/HTML renderers, HITL\n│   │   ├── ExecutionsListTable.tsx   # Sortable/selectable MUI table\n│   │   └── …                         # Other components (chat bubbles, panels) as the feature grows\n│   ├── hooks/\n│   │   ├── useExecutionPoll.ts       # Auto-poll while INPROGRESS, stop on terminal state\n│   │   ├── useExecutionTree.ts       # Build ExecutionTreeNode[] from flat NodeExecutionData[]\n│   │   ├── useResizableSidebar.ts    # Drag-to-resize width state (left- or right-anchored panels)\n│   │   └── …                         # Other feature-local hooks\n│   └── index.ts                      # Public API for this feature\n│\n└── (evaluations/)          # Future — GA\n    └── (chat-history/)     # Future — GA\n```\n\n**Rules:**\n\n-   Each feature has an `index.ts` gatekeeper — only re-export what consumers need\n-   **Features never import from other features directly** — if two features share logic, move it to `core/`\n-   Feature-specific utilities stay in the feature folder\n-   Hooks are co-located with their feature\n\n**Goal:** High cohesion. Deleting a feature folder should not break other features.\n\n---\n\n### `core/` - Business Logic\n\n**\"The Brain.\"** Framework-agnostic types, utilities, and the MUI theme factory. No React components, no API calls.\n\nExample layout (illustrative — not exhaustive; new sub-files land under `types/`, `primitives/`, and `utils/` as the SDK grows):\n\n```\ncore/\n├── types/\n│   ├── execution.ts        # Execution, ExecutionState, NodeExecutionData,\n│   │                       # ExecutionTreeNode, HumanInputParams\n│   ├── observe.ts          # ObserveBaseProps, ExecutionsViewerProps,\n│   │                       # ExecutionDetailProps, ExecutionFilters\n│   ├── nodeDetail.ts       # ChatMessage, ConditionEntry, AvailableToolEntry, …\n│   └── index.ts\n│\n├── primitives/             # Domain-free, safe to import from atoms/\n│   ├── agentflowIcons.ts   # AGENTFLOW_ICONS registry (icon + color per node type)\n│   ├── json.ts             # JSON tokenizer / safe parser\n│   └── index.ts\n│\n├── utils/                  # Domain-aware helpers — not importable from atoms/\n│   ├── guards.ts           # Type predicates over core/types/* shapes\n│   ├── tools.ts            # Tool-call extraction / resolution\n│   └── index.ts\n│\n└── theme/\n    ├── tokens.ts               # Color palette, spacing, shadows\n    ├── createObserveTheme.ts   # MUI theme factory (isDarkMode toggle)\n    └── index.ts\n```\n\n**Rules:**\n\n-   **No React components** — pure TypeScript only\n-   No browser-specific APIs unless unavoidable\n-   No side effects\n-   Can be tested in isolation\n\n#### `core/primitives/` vs `core/utils/`\n\n-   **`primitives/`** — Domain-free utilities with no knowledge of executions or node data. **Safe to import from `atoms/`.**\n-   **`utils/`** — Domain-aware utilities (e.g., execution state helpers). **Only importable by `features/` and `infrastructure/`.**\n\nWhen adding a utility, ask: _\"Does this function need to know what an Execution or NodeExecutionData is?\"_ If no → `primitives/`. If yes → `utils/`.\n\n**Goal:** Framework-agnostic source of truth.\n\n---\n\n### `infrastructure/` - External Services\n\n**\"The Outside World.\"** API client factory and React context providers.\n\nExample layout (illustrative — not exhaustive; new API modules land under `api/` as features grow):\n\n```\ninfrastructure/\n├── api/\n│   ├── client.ts           # bindApiClient(apiBaseUrl, token) — axios with Bearer header\n│   ├── executions.ts       # createExecutionsApi(client): getAllExecutions, getExecutionById,\n│   │                       # deleteExecutions, updateExecution\n│   └── index.ts\n│\n└── store/\n    └── ObserveContext.tsx  # ObserveProvider, useObserveApi(), useObserveConfig()\n```\n\n**Rules:**\n\n-   All external communication goes through `infrastructure/api/`\n-   Contexts are internal — composed in `ObserveProvider`, not exported directly to consumers\n-   `useObserveApi()` throws if called outside `ObserveProvider` (fast failure)\n\n**Goal:** Wrap external dependencies so they can be mocked in tests.\n\n---\n\n## Dependency Flow\n\n**Dependencies must only flow downwards.**\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                  Root Files (Public API)                │\n│                       (index.ts)                        │\n│                   \"The Public Face\"                     │\n└─────────────────────────────────────────────────────────┘\n                           │\n                           ▼\n┌─────────────────────────────────────────────────────────┐\n│                      features/                          │\n│   (executions, evaluations, chat-history, …)            │\n│                   \"What it does\"                        │\n└─────────────────────────────────────────────────────────┘\n          │                                    │\n          ▼                                    ▼\n┌──────────────────┐              ┌────────────────────────┐\n│      atoms/      │              │    infrastructure/     │\n│  (UI primitives) │              │    (api, store)        │\n│ \"What it looks   │              │ \"The Outside World\"    │\n│     like\"        │              │                        │\n└──────────────────┘              └────────────────────────┘\n          │                                    │\n          └──────────────┬─────────────────────┘\n                         ▼\n              ┌─────────────────────┐\n              │        core/        │\n              │  (types, theme,     │\n              │   primitives)       │\n              │     \"The Brain\"     │\n              └─────────────────────┘\n```\n\n**Import Rules:**\n\n-   `features` → `atoms`, `infrastructure`, `core` ✅\n-   `infrastructure` → `core` ✅\n-   `atoms` → `core/types`, `core/theme`, `core/primitives` only ✅\n-   `core` → nothing (leaf node) ✅\n-   **No reverse imports** — enforced by ESLint `import/no-restricted-paths`\n\n---\n\n## Observe-Specific Patterns\n\n### `ObserveProvider` — Root Provider\n\n`ObserveProvider` composes three providers:\n\n```tsx\n<ThemeProvider theme={createObserveTheme(isDarkMode)}>\n    <ObserveApiContext.Provider value={api}>\n        <ObserveConfigContext.Provider value={config}>{children}</ObserveConfigContext.Provider>\n    </ObserveApiContext.Provider>\n</ThemeProvider>\n```\n\n-   `ObserveApiContext` — holds the bound axios client (created once from `apiBaseUrl` + `token` + `requestInterceptor`)\n-   `ObserveConfigContext` — holds `isDarkMode` and other display config\n-   Features call `useObserveApi()` to get the client; they never construct it themselves\n\n### Request Interceptor — Auth Bridging\n\nThe SDK sends `Authorization: Bearer <token>` by default. Different consumers authenticate differently:\n\n| Consumer                     | Auth mechanism                              | How to configure                                       |\n| ---------------------------- | ------------------------------------------- | ------------------------------------------------------ |\n| DevSite                      | AgentForge proxy headers                    | `requestInterceptor` to inject proxy token             |\n| OSS (embedded in Flowise UI) | Session cookie + `x-request-from: internal` | `requestInterceptor` to set `withCredentials` + header |\n| OSS (standalone / external)  | Flowise API key                             | `token` prop (default)                                 |\n\n`requestInterceptor` is a callback on the Axios request config, identical in shape to the one in `@flowiseai/agentflow`:\n\n```ts\ninterface ObserveBaseProps {\n    requestInterceptor?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig\n}\n```\n\nIt is passed to `bindApiClient` and registered via `axios.interceptors.request.use`. If the callback throws, the error is caught, logged, and the original unmodified config is used so the request still proceeds safely.\n\n**OSS session auth example:**\n\n```tsx\n<ObserveProvider\n    apiBaseUrl='http://localhost:3000'\n    requestInterceptor={(config) => {\n        config.withCredentials = true\n        config.headers['x-request-from'] = 'internal'\n        return config\n    }}\n>\n    <ExecutionsViewer agentflowId='...' />\n</ObserveProvider>\n```\n\n`requestInterceptor` should only be provided by trusted, developer-authored code — never from user input or dynamically evaluated strings.\n\n### Auto-Poll (`useExecutionPoll`)\n\n`useExecutionPoll` sets up a `setInterval` while `execution.state === 'INPROGRESS'`:\n\n```\nINPROGRESS → polls every pollInterval ms\nFINISHED | ERROR | TERMINATED | TIMEOUT | STOPPED → interval cleared immediately\n```\n\n-   `pollInterval={0}` disables auto-poll entirely\n-   `refresh()` is returned for manual refresh buttons\n-   The hook clears the interval on unmount\n\n### Execution Tree (`useExecutionTree`)\n\n`useExecutionTree` converts the flat `NodeExecutionData[]` stored as JSON in `execution.executionData` into a hierarchical `ExecutionTreeNode[]`. Two parenting mechanisms run in sequence (mirrors legacy `ExecutionDetails.jsx` `buildTreeData`):\n\n1. **`previousNodeIds` parent→child** — each non-iteration node attaches to the most-recent prior instance of any node listed in its `previousNodeIds`. Nodes with empty / unmatched `previousNodeIds` become roots. The \"most recent\" rule disambiguates when the same `nodeId` runs more than once (e.g. inside a loop).\n2. **Iteration grouping** — children with `parentNodeId` + `iterationIndex` are bundled into virtual `Iteration #N` container nodes (`isVirtualNode: true`) under the iteration agent's most-recent instance, then linked to one another inside the iteration via the same `previousNodeIds` rule (restricted to same-iteration siblings).\n\nTree-node ids are `${nodeId}_${arrayIndex}` so duplicate `nodeId`s remain addressable. The tree is consumed by `ExecutionTreeSidebar` (a `RichTreeView` slot) inside `ExecutionDetail`.\n\n### HITL Callback — Opaque Consumer Contract\n\nThe `onHumanInput` prop is intentionally opaque:\n\n```ts\ninterface ExecutionsViewerProps {\n    onHumanInput?: (agentflowId: string, params: HumanInputParams) => Promise<void>\n}\n```\n\n-   In OSS: consumer calls the Flowise prediction endpoint directly\n-   In DevSite: consumer routes through the AgentForge proxy\n\nThe SDK never calls the prediction API itself. Approve/Reject buttons are only rendered when `onHumanInput` is provided AND the node is a human input node in INPROGRESS state. This keeps auth and routing logic entirely out of the SDK.\n\n### Tenant Isolation\n\nTenant isolation is handled server-side by Flowise's `ExtendRequestContextMiddleware` via request headers. The SDK does not accept or pass a `tenantId` prop — the API returns only what the authenticated token is permitted to see.\n\n---\n\n## Gatekeeper Pattern\n\nEach module exposes only what's needed via its `index.ts`:\n\n```typescript\n// features/executions/index.ts (illustrative — re-export only what consumers need)\n// ✅ Public API\nexport { ExecutionsViewer } from './components/ExecutionsViewer'\nexport { ExecutionDetail } from './components/ExecutionDetail'\nexport { NodeExecutionDetail } from './components/NodeExecutionDetail'\nexport { useExecutionPoll } from './hooks/useExecutionPoll'\nexport { useExecutionTree } from './hooks/useExecutionTree'\n\n// ❌ Internal sub-components (e.g. ExecutionTreeSidebar, ChatMessageBubble) and helpers stay private\n```\n\n---\n\n## Adding a New Feature\n\nAdding evaluations, chat history, or MALT follows the same pattern:\n\n1. Create a folder under `features/`:\n\n    ```\n    features/evaluations/\n    ├── components/\n    │   └── EvaluationsViewer.tsx\n    ├── hooks/\n    │   └── useEvaluationPoll.ts\n    └── index.ts\n    ```\n\n2. Add the API module under `infrastructure/api/`:\n\n    ```\n    infrastructure/api/\n    └── evaluations.ts   # createEvaluationsApi(client)\n    ```\n\n3. Add any new types to `core/types/` (e.g., `evaluation.ts`)\n\n4. Export only from the feature's `index.ts`, then re-export from the package `src/index.ts`\n\n5. Import from infrastructure/core, never from other features:\n\n    ```typescript\n    // ✅ Good\n    import { useObserveApi } from '../../../infrastructure/store'\n    import type { Execution } from '../../../core/types'\n\n    // ❌ Bad — cross-feature import\n    import { ExecutionDetail } from '../executions/components/ExecutionDetail'\n    ```\n\n---\n\n## Root Files (`src/index.ts`)\n\nThe barrel export exposes only the public surface. Example shape (illustrative — refer to `src/index.ts` for the current set):\n\n```typescript\n// Components\nexport { ExecutionsViewer, ExecutionDetail, NodeExecutionDetail } from './features/executions'\nexport { ObserveProvider } from './infrastructure/store'\n\n// Hooks (for consumers building custom UIs on top of observe infrastructure)\nexport { useExecutionPoll, useExecutionTree } from './features/executions'\nexport { useObserveApi, useObserveConfig } from './infrastructure/store'\n\n// Types\nexport type { ExecutionsViewerProps, ExecutionDetailProps, ExecutionFilters } from './core/types'\nexport type { Execution, ExecutionState, NodeExecutionData, HumanInputParams, AgentflowRef } from './core/types'\n```\n\nEverything else is internal implementation detail.\n\n---\n\n## Development Principles\n\n### Barrel Exports\n\nEvery directory has an `index.ts` gatekeeper.\n\n**✅ Good:**\n\n```typescript\nimport { StatusIcon } from '../../atoms'\nimport { useObserveApi } from '../../infrastructure/store'\n```\n\n**❌ Bad:**\n\n```typescript\n// Never deep-link into files\nimport { StatusIcon } from '../../atoms/StatusIcon'\nimport { useObserveApi } from '../../infrastructure/store/ObserveContext'\n```\n\n### Naming Conventions\n\n| Type        | Convention                  | Example                      |\n| ----------- | --------------------------- | ---------------------------- |\n| Component   | PascalCase.tsx              | `ExecutionDetail.tsx`        |\n| Hook        | camelCase.ts (`use` prefix) | `useExecutionPoll.ts`        |\n| Logic/Types | camelCase.ts                | `execution.ts`, `observe.ts` |\n| API module  | camelCase.ts                | `executions.ts`              |\n| Styles      | kebab-case (co-located)     | `executions.css`             |\n\n### Theme Token Ordering\n\nInside `core/theme/tokens.ts`, all maps are ordered alphanumerically: `baseColors`, top-level `tokens` groups, subgroups, and keys (e.g. `gray50 < gray75 < gray100 < gray200`). Each `{ dark, light }` / `{ dark, light, main }` pair follows the same rule. Keep new entries in order so diffs stay small.\n\n### Type Location Rule\n\nDomain types live in `core/types/`, **not** alongside their primary component, when they cross any of these boundaries:\n\n-   Imported by a hook (`features/*/hooks/*`)\n-   Imported by another component in a different file\n-   Used in a public API exported via `src/index.ts`\n\nComponent-internal types (props interfaces, file-private shapes used only inside the file that defines the component) stay co-located. The rule prevents the inversion where a hook reaches \"upward\" into a sibling component file just to read a type.\n\nProps interfaces (e.g. `ChatMessageBubbleProps`) are **always** file-local — never lift them to `core/types/` even if another component would re-use one. Re-using a props interface across components is a code smell on its own; the right fix is a shared underlying type, not a shared props interface.\n\nPredicates that narrow into a `core/types/` shape (e.g. `isChatMessageArray(value): value is ChatMessage[]`) live in `core/utils/` next to other domain-aware helpers — never in `atoms/` (atoms cannot import from `core/utils`, only from `core/primitives`).\n\nExample layout:\n\n-   `core/types/nodeDetail.ts` — `ChatMessage`, `ConditionEntry`, `AvailableToolEntry`, `UsedToolEntry`, `UsedToolRef`, `ToolNodeRef`, `NormalizedToolCall`\n-   `core/utils/guards.ts` — `isChatMessageArray`, `isConditionArray`, `isAvailableToolArray`, `isUsedToolArray`\n-   `core/utils/tools.ts` — `resolveTool`, `extractToolCalls` (consumed by `ChatMessageBubble` + `ToolAccordionList`)\n\n<!-- File: packages/observe/examples/package-lock.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/observe/examples/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package-lock.json)\n\n<!-- File: packages/observe/examples/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/observe/examples/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/package.json)\n\n<!-- File: packages/observe/examples/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/observe/examples/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/examples/tsconfig.json)\n\n<!-- File: packages/observe/package.json (Tokens: ~1434 | Category: anthropic-skill) -->\n{\n    \"name\": \"@flowiseai/observe\",\n    \"version\": \"0.0.0-dev.1\",\n    \"description\": \"Embeddable React components for observing AI agent executions, evaluations, and runtime activity\",\n    \"license\": \"Apache-2.0\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/FlowiseAI/Flowise.git\",\n        \"directory\": \"packages/observe\"\n    },\n    \"homepage\": \"https://github.com/FlowiseAI/Flowise/tree/main/packages/observe#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/FlowiseAI/Flowise/issues\"\n    },\n    \"keywords\": [\n        \"flowise\",\n        \"flowiseai\",\n        \"observe\",\n        \"executions\",\n        \"observability\",\n        \"react\",\n        \"llm\",\n        \"ai\",\n        \"agent\"\n    ],\n    \"publishConfig\": {\n        \"access\": \"public\",\n        \"registry\": \"https://registry.npmjs.org\"\n    },\n    \"main\": \"./dist/index.umd.js\",\n    \"module\": \"./dist/index.js\",\n    \"types\": \"./dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": \"./dist/index.js\",\n            \"require\": \"./dist/index.umd.js\",\n            \"types\": \"./dist/index.d.ts\"\n        }\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"sideEffects\": false,\n    \"scripts\": {\n        \"build\": \"tsc && vite build\",\n        \"clean\": \"rimraf dist\",\n        \"dev\": \"vite\",\n        \"dev:example\": \"vite --config examples/vite.config.ts\",\n        \"format\": \"prettier --write \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"format:check\": \"prettier --check \\\"{src,examples}/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n        \"lint\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\"\",\n        \"lint:fix\": \"eslint \\\"{src,examples}/**/*.{js,jsx,ts,tsx,json,md}\\\" \\\"*.md\\\" --fix\",\n        \"nuke\": \"pnpm clean && rimraf node_modules .turbo\",\n        \"prepublishOnly\": \"npm run clean && npm run build\",\n        \"test\": \"jest\",\n        \"test:coverage\": \"jest --coverage\",\n        \"test:watch\": \"jest --watch\"\n    },\n    \"peerDependencies\": {\n        \"@emotion/react\": \"^11.10.0\",\n        \"@emotion/styled\": \"^11.10.0\",\n        \"@mui/icons-material\": \"^5.0.0\",\n        \"@mui/material\": \"^5.15.0\",\n        \"react\": \"^18.2.0\",\n        \"react-dom\": \"^18.2.0\"\n    },\n    \"overrides\": {\n        \"prebuild-install\": \"7.1.3\",\n        \"axios\": \"1.15.0\",\n        \"body-parser\": \"2.0.2\",\n        \"braces\": \"3.0.3\",\n        \"cross-spawn\": \"7.0.6\",\n        \"form-data\": \"4.0.4\",\n        \"glob-parent\": \"6.0.2\",\n        \"http-proxy-middleware\": \"3.0.3\",\n        \"json5\": \"2.2.3\",\n        \"nth-check\": \"2.1.1\",\n        \"path-to-regexp\": \"0.1.12\",\n        \"prismjs\": \"1.29.0\",\n        \"rollup\": \"4.45.0\",\n        \"semver\": \"7.7.1\",\n        \"set-value\": \"4.1.0\",\n        \"solid-js\": \"1.9.11\",\n        \"protobufjs\": \">=7.5.5\",\n        \"tar-fs\": \"3.1.1\",\n        \"unset-value\": \"2.0.1\",\n        \"webpack-dev-middleware\": \"7.4.2\",\n        \"ws\": \"8.18.3\",\n        \"xlsx\": \"0.18.5\",\n        \"uuid\": \"^10.0.0\",\n        \"@tootallnate/once\": \">=3.0.1\",\n        \"tmp\": \">=0.2.4\",\n        \"@elastic/transport\": \">=8.9.3\",\n        \"@modelcontextprotocol/sdk\": \">=1.25.2\",\n        \"multer\": \"2.2.0\"\n    },\n    \"dependencies\": {\n        \"@mui/x-tree-view\": \"^7.25.0\",\n        \"@tabler/icons-react\": \"^3.7.0\",\n        \"axios\": \"1.15.0\",\n        \"date-fns\": \"^3.6.0\",\n        \"flowise-react-json-view\": \"^1.21.7\",\n        \"lodash\": \"^4.17.21\",\n        \"react-markdown\": \"^9.0.1\",\n        \"react-syntax-highlighter\": \"15.5.0\",\n        \"remark-gfm\": \"^4.0.0\"\n    },\n    \"devDependencies\": {\n        \"@testing-library/jest-dom\": \"^6.6.3\",\n        \"@testing-library/react\": \"^14.3.1\",\n        \"@testing-library/user-event\": \"^14.5.2\",\n        \"@types/jest\": \"^29.5.14\",\n        \"@types/lodash\": \"^4.14.195\",\n        \"@types/react\": \"^18.2.0\",\n        \"@types/react-dom\": \"^18.2.0\",\n        \"@types/react-syntax-highlighter\": \"15.5.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^8.18.2\",\n        \"@typescript-eslint/parser\": \"^8.18.2\",\n        \"@vitejs/plugin-react\": \"^4.2.0\",\n        \"eslint-import-resolver-typescript\": \"4.4.4\",\n        \"eslint-plugin-import\": \"^2.29.0\",\n        \"eslint-plugin-markdown\": \"^3.0.1\",\n        \"eslint-plugin-simple-import-sort\": \"^12.0.0\",\n        \"jest\": \"^29.7.0\",\n        \"jest-environment-jsdom\": \"^29.7.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"ts-jest\": \"^29.3.2\",\n        \"typescript\": \"^5.4.5\",\n        \"vite\": \"^5.0.2\",\n        \"vite-plugin-dts\": \"^3.7.0\"\n    }\n}\n\n<!-- File: packages/observe/TESTS.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Observe Skill\n\nPath: `packages/observe/TESTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/TESTS.md)\n\n<!-- File: packages/observe/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Observe Skill\n\nPath: `packages/observe/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/observe/tsconfig.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Agentic RAG.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Agentic RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Agentic RAG.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Branch Out Merge In.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Branch Out Merge In.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Branch Out Merge In.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Customer Support Team Agents.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Customer Support Team Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Customer Support Team Agents.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Essay Writing & Grading.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Essay Writing & Grading.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Essay Writing & Grading.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Human In Loop RAG.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Human In Loop RAG.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Human In Loop RAG.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Lead Outreach.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Lead Outreach.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Lead Outreach.json)\n\n<!-- File: packages/server/marketplaces/agentflows/Multi Agents.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentflows Skill\n\nPath: `packages/server/marketplaces/agentflows/Multi Agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/FlowiseAI/Flowise/HEAD/packages/server/marketplaces/agentflows/Multi Agents.json)\n\n<!-- ... +82 more modular skills available via /api/skills/FlowiseAI/Flowise?path={path} -->\n</yakaai_skills>"}