machinaos 0.0.79 → 0.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.template +55 -7
- package/.machina/workflows/{AI Assistant_workflow-1779017037684-e2e5da7a.json → AI Assistant_example_workflow-1779017037684-e2e5da7a.json } +75 -75
- package/.machina/workflows/{AI Employee_workflow-1779102911870-cbc76c82.json → AI Employee_example_workflow-1779102911870-cbc76c82.json } +303 -302
- package/.machina/workflows/{Claude Assistant_workflow-1779095939967-2369cff4.json → Claude Assistant_example_workflow-1779095939967-2369cff4.json } +73 -73
- package/cli/_common.py +122 -0
- package/cli/buildenv.py +16 -20
- package/cli/cli.py +173 -24
- package/cli/colors.py +10 -2
- package/cli/commands/_temporal_specs.py +37 -94
- package/cli/commands/build.py +34 -43
- package/cli/commands/clean.py +68 -42
- package/cli/commands/daemon/__init__.py +47 -0
- package/cli/commands/daemon/_state.py +97 -0
- package/cli/commands/daemon/restart.py +14 -0
- package/cli/commands/daemon/start.py +49 -0
- package/cli/commands/daemon/status.py +20 -0
- package/cli/commands/daemon/stop.py +22 -0
- package/cli/commands/dev.py +27 -29
- package/cli/commands/docs.py +12 -10
- package/cli/commands/start.py +65 -51
- package/cli/commands/stop.py +4 -7
- package/cli/commands/version.py +9 -3
- package/cli/config.py +115 -38
- package/cli/platform_.py +135 -3
- package/cli/ports.py +42 -3
- package/cli/run.py +27 -0
- package/cli/supervisor.py +25 -8
- package/cli/tcp.py +6 -2
- package/cli/tree.py +38 -11
- package/client/package.json +1 -1
- package/package.json +6 -1
- package/scripts/migrate_icons.py +3 -1
- package/scripts/migrate_skill_icons.py +6 -7
- package/server/config/model_registry.json +416 -611
- package/server/constants.py +285 -222
- package/server/core/__init__.py +1 -1
- package/server/core/cache.py +9 -29
- package/server/core/cleanup.py +12 -24
- package/server/core/config.py +83 -88
- package/server/core/container.py +17 -52
- package/server/core/credential_backends.py +5 -13
- package/server/core/credentials_database.py +13 -43
- package/server/core/database.py +292 -353
- package/server/core/health.py +4 -5
- package/server/core/logging.py +68 -73
- package/server/core/paths.py +80 -22
- package/server/core/tracing.py +2 -8
- package/server/gunicorn.conf.py +1 -0
- package/server/main.py +77 -47
- package/server/middleware/auth.py +18 -24
- package/server/models/__init__.py +1 -1
- package/server/models/auth.py +5 -12
- package/server/models/database.py +36 -68
- package/server/models/node_metadata.py +24 -17
- package/server/nodejs/dist/index.js +107 -0
- package/server/nodes/__init__.py +1 -1
- package/server/nodes/_visuals.py +21 -5
- package/server/nodes/agent/_handles.py +15 -17
- package/server/nodes/agent/_inline.py +27 -24
- package/server/nodes/agent/_specialized.py +23 -8
- package/server/nodes/agent/ai_agent/__init__.py +23 -8
- package/server/nodes/agent/ai_employee/__init__.py +3 -1
- package/server/nodes/agent/chat_agent/__init__.py +25 -9
- package/server/nodes/agent/claude_code_agent/__init__.py +33 -47
- package/server/nodes/agent/claude_code_agent/_handlers.py +8 -5
- package/server/nodes/agent/claude_code_agent/_pool.py +85 -70
- package/server/nodes/agent/claude_code_agent/_provider.py +27 -45
- package/server/nodes/agent/claude_code_agent/_skills.py +28 -17
- package/server/nodes/agent/codex_agent/__init__.py +25 -34
- package/server/nodes/agent/orchestrator_agent/__init__.py +3 -1
- package/server/nodes/agent/rlm_agent/__init__.py +13 -13
- package/server/nodes/android/_base.py +93 -76
- package/server/nodes/android/_dispatcher.py +140 -223
- package/server/nodes/android/_events.py +7 -9
- package/server/nodes/android/_handlers.py +6 -7
- package/server/nodes/android/_option_loaders.py +1 -4
- package/server/nodes/android/_refresh.py +3 -9
- package/server/nodes/android/_relay/broadcaster.py +7 -20
- package/server/nodes/android/_relay/client.py +23 -42
- package/server/nodes/android/_relay/manager.py +1 -0
- package/server/nodes/android/_relay/protocol.py +6 -0
- package/server/nodes/android/_router.py +48 -133
- package/server/nodes/browser/_install.py +4 -2
- package/server/nodes/browser/_service.py +2 -1
- package/server/nodes/browser/browser/__init__.py +52 -22
- package/server/nodes/chat/chat_history/__init__.py +2 -4
- package/server/nodes/chat/chat_send/__init__.py +2 -4
- package/server/nodes/code/javascript_executor/__init__.py +1 -3
- package/server/nodes/code/python_executor/__init__.py +29 -13
- package/server/nodes/code/typescript_executor/__init__.py +1 -3
- package/server/nodes/document/document_parser/__init__.py +26 -15
- package/server/nodes/document/embedding_generator/__init__.py +16 -9
- package/server/nodes/document/file_downloader/__init__.py +30 -20
- package/server/nodes/document/http_scraper/__init__.py +31 -21
- package/server/nodes/document/text_chunker/__init__.py +17 -12
- package/server/nodes/document/vector_store/__init__.py +88 -72
- package/server/nodes/email/_filters.py +3 -3
- package/server/nodes/email/_himalaya.py +94 -49
- package/server/nodes/email/_service.py +23 -13
- package/server/nodes/email/email_read/__init__.py +20 -10
- package/server/nodes/email/email_receive/__init__.py +36 -19
- package/server/nodes/email/email_send/__init__.py +10 -6
- package/server/nodes/filesystem/_backend.py +1 -5
- package/server/nodes/filesystem/file_modify/__init__.py +8 -5
- package/server/nodes/filesystem/file_read/__init__.py +4 -2
- package/server/nodes/filesystem/fs_search/__init__.py +9 -3
- package/server/nodes/filesystem/shell/__init__.py +9 -4
- package/server/nodes/google/_auth_helper.py +7 -13
- package/server/nodes/google/_base.py +14 -11
- package/server/nodes/google/_credentials.py +2 -0
- package/server/nodes/google/_filters.py +3 -3
- package/server/nodes/google/_gmail.py +70 -47
- package/server/nodes/google/_handlers.py +3 -1
- package/server/nodes/google/_oauth.py +25 -11
- package/server/nodes/google/_option_loaders.py +9 -30
- package/server/nodes/google/_refresh.py +8 -12
- package/server/nodes/google/_router.py +4 -5
- package/server/nodes/google/calendar/__init__.py +83 -62
- package/server/nodes/google/contacts/__init__.py +80 -70
- package/server/nodes/google/drive/__init__.py +83 -70
- package/server/nodes/google/gmail/__init__.py +69 -37
- package/server/nodes/google/gmail_receive/__init__.py +23 -19
- package/server/nodes/google/sheets/__init__.py +50 -40
- package/server/nodes/google/tasks/__init__.py +52 -41
- package/server/nodes/groups.py +28 -28
- package/server/nodes/location/_credentials.py +1 -5
- package/server/nodes/location/_service.py +88 -107
- package/server/nodes/location/gmaps_create/__init__.py +5 -5
- package/server/nodes/location/gmaps_locations/__init__.py +5 -5
- package/server/nodes/location/gmaps_nearby_places/__init__.py +5 -5
- package/server/nodes/model/_base.py +10 -7
- package/server/nodes/model/_local_validator.py +27 -23
- package/server/nodes/model/anthropic_chat_model/__init__.py +3 -1
- package/server/nodes/model/cerebras_chat_model/__init__.py +3 -1
- package/server/nodes/model/deepseek_chat_model/__init__.py +6 -2
- package/server/nodes/model/gemini_chat_model/__init__.py +3 -1
- package/server/nodes/model/openai_chat_model/__init__.py +6 -2
- package/server/nodes/model/openrouter_chat_model/__init__.py +6 -2
- package/server/nodes/proxy/_usage.py +13 -14
- package/server/nodes/proxy/proxy_config/__init__.py +37 -30
- package/server/nodes/proxy/proxy_request/__init__.py +27 -15
- package/server/nodes/scheduler/cron_scheduler/__init__.py +72 -26
- package/server/nodes/scheduler/cron_scheduler/_workflow.py +10 -11
- package/server/nodes/scheduler/timer/__init__.py +4 -5
- package/server/nodes/scraper/apify_actor/__init__.py +41 -34
- package/server/nodes/scraper/crawlee_scraper/__init__.py +94 -57
- package/server/nodes/search/brave_search/__init__.py +4 -4
- package/server/nodes/search/duckduckgo_search/__init__.py +5 -5
- package/server/nodes/search/perplexity_search/__init__.py +2 -4
- package/server/nodes/search/serper_search/__init__.py +30 -24
- package/server/nodes/skill/_expander.py +9 -7
- package/server/nodes/skill/master_skill/__init__.py +2 -8
- package/server/nodes/skill/master_skill/_events.py +6 -4
- package/server/nodes/skill/simple_memory/__init__.py +3 -12
- package/server/nodes/social/_base.py +208 -228
- package/server/nodes/social/social_receive/__init__.py +37 -12
- package/server/nodes/social/social_send/__init__.py +70 -28
- package/server/nodes/stripe/__init__.py +7 -3
- package/server/nodes/stripe/_handlers.py +18 -7
- package/server/nodes/stripe/_install.py +8 -10
- package/server/nodes/stripe/_source.py +5 -5
- package/server/nodes/stripe/stripe_action.py +2 -4
- package/server/nodes/stripe/stripe_receive.py +6 -9
- package/server/nodes/telegram/_credentials.py +1 -5
- package/server/nodes/telegram/_events.py +7 -9
- package/server/nodes/telegram/_filters.py +3 -11
- package/server/nodes/telegram/_handlers.py +17 -7
- package/server/nodes/telegram/_refresh.py +5 -16
- package/server/nodes/telegram/_service.py +14 -32
- package/server/nodes/telegram/telegram_receive.py +38 -18
- package/server/nodes/telegram/telegram_send.py +16 -15
- package/server/nodes/text/file_handler/__init__.py +7 -1
- package/server/nodes/text/text_generator/__init__.py +2 -1
- package/server/nodes/tool/agent_builder/__init__.py +87 -88
- package/server/nodes/tool/agent_builder/_events.py +6 -4
- package/server/nodes/tool/calculator_tool/__init__.py +17 -7
- package/server/nodes/tool/current_time_tool/__init__.py +4 -4
- package/server/nodes/tool/task_manager/__init__.py +15 -18
- package/server/nodes/tool/write_todos/__init__.py +7 -6
- package/server/nodes/trigger/chat_trigger/__init__.py +2 -7
- package/server/nodes/trigger/task_trigger/__init__.py +2 -7
- package/server/nodes/trigger/webhook_trigger/__init__.py +2 -7
- package/server/nodes/twitter/_base.py +85 -60
- package/server/nodes/twitter/_credentials.py +7 -3
- package/server/nodes/twitter/_events.py +1 -5
- package/server/nodes/twitter/_filters.py +9 -9
- package/server/nodes/twitter/_handlers.py +3 -1
- package/server/nodes/twitter/_oauth.py +1 -2
- package/server/nodes/twitter/_refresh.py +8 -12
- package/server/nodes/twitter/twitter_receive/__init__.py +6 -6
- package/server/nodes/twitter/twitter_search/__init__.py +11 -8
- package/server/nodes/twitter/twitter_send/__init__.py +56 -25
- package/server/nodes/twitter/twitter_user/__init__.py +30 -17
- package/server/nodes/utility/console/__init__.py +17 -22
- package/server/nodes/utility/http_request/__init__.py +7 -6
- package/server/nodes/utility/process_manager/__init__.py +8 -6
- package/server/nodes/utility/webhook_response/__init__.py +12 -7
- package/server/nodes/whatsapp/_base.py +283 -338
- package/server/nodes/whatsapp/_events.py +32 -30
- package/server/nodes/whatsapp/_filters.py +36 -37
- package/server/nodes/whatsapp/_handlers.py +2 -0
- package/server/nodes/whatsapp/_option_loaders.py +1 -3
- package/server/nodes/whatsapp/_refresh.py +1 -3
- package/server/nodes/whatsapp/_runtime.py +9 -6
- package/server/nodes/whatsapp/_service.py +45 -113
- package/server/nodes/whatsapp/whatsapp_db.py +113 -53
- package/server/nodes/whatsapp/whatsapp_receive.py +30 -13
- package/server/nodes/whatsapp/whatsapp_send.py +58 -36
- package/server/nodes/workflow/start/__init__.py +1 -4
- package/server/package-lock.json +3 -3
- package/server/package.json +3 -0
- package/server/pyproject.toml +4 -4
- package/server/requirements.txt +0 -1
- package/server/routers/__init__.py +1 -1
- package/server/routers/auth.py +16 -56
- package/server/routers/database.py +27 -50
- package/server/routers/nodejs_compat.py +25 -87
- package/server/routers/schemas.py +3 -2
- package/server/routers/webhook.py +5 -9
- package/server/routers/websocket.py +141 -174
- package/server/routers/workflow.py +17 -48
- package/server/scripts/smoke_test_skills.py +15 -12
- package/server/services/__init__.py +1 -1
- package/server/services/_supervisor/process.py +9 -3
- package/server/services/_supervisor/registry.py +3 -3
- package/server/services/agent_team.py +15 -43
- package/server/services/ai.py +606 -573
- package/server/services/auth.py +10 -34
- package/server/services/chat_client.py +5 -34
- package/server/services/circuit_breaker.py +2 -6
- package/server/services/cli_agent/__init__.py +1 -0
- package/server/services/cli_agent/_cli_auth.py +5 -1
- package/server/services/cli_agent/_handlers.py +3 -1
- package/server/services/cli_agent/config.py +5 -8
- package/server/services/cli_agent/factory.py +11 -16
- package/server/services/cli_agent/jsonl_watcher.py +27 -16
- package/server/services/cli_agent/lockfile.py +9 -2
- package/server/services/cli_agent/mcp_server.py +53 -44
- package/server/services/cli_agent/protocol.py +30 -15
- package/server/services/cli_agent/providers/google_gemini.py +1 -4
- package/server/services/cli_agent/providers/openai_codex.py +16 -28
- package/server/services/cli_agent/service.py +102 -97
- package/server/services/cli_agent/session.py +89 -71
- package/server/services/cli_agent/transports/__init__.py +2 -0
- package/server/services/cli_agent/transports/posix.py +10 -6
- package/server/services/cli_agent/transports/windows.py +11 -9
- package/server/services/cli_agent/types.py +38 -27
- package/server/services/cli_agent/workflow_tools.py +28 -15
- package/server/services/compaction.py +68 -52
- package/server/services/credential_registry.py +6 -20
- package/server/services/credentials/handlers.py +6 -2
- package/server/services/deployment/canary_registry.py +1 -2
- package/server/services/deployment/handlers.py +16 -11
- package/server/services/deployment/manager.py +166 -196
- package/server/services/deployment/poll_registry.py +2 -6
- package/server/services/deployment/state.py +2 -0
- package/server/services/deployment/triggers.py +87 -93
- package/server/services/event_waiter.py +47 -54
- package/server/services/events/admin_handlers.py +15 -25
- package/server/services/events/daemon.py +3 -1
- package/server/services/events/dispatch.py +13 -22
- package/server/services/events/oauth_lifecycle.py +98 -42
- package/server/services/events/triggers.py +3 -13
- package/server/services/events/verifiers/hmac_basic.py +1 -1
- package/server/services/events/verifiers/standard_webhooks.py +2 -4
- package/server/services/events/webhook.py +2 -3
- package/server/services/example_loader.py +9 -4
- package/server/services/execution/cache.py +36 -76
- package/server/services/execution/conditions.py +7 -20
- package/server/services/execution/dlq.py +20 -24
- package/server/services/execution/executor.py +234 -265
- package/server/services/execution/models.py +40 -46
- package/server/services/execution/recovery.py +23 -28
- package/server/services/handlers/todo.py +3 -6
- package/server/services/handlers/tools.py +107 -161
- package/server/services/handlers/triggers.py +24 -23
- package/server/services/llm/config.py +10 -1
- package/server/services/llm/factory.py +16 -4
- package/server/services/llm/messages.py +1 -5
- package/server/services/llm/protocol.py +9 -1
- package/server/services/llm/providers/anthropic.py +23 -12
- package/server/services/llm/providers/gemini.py +43 -22
- package/server/services/llm/providers/openai.py +14 -6
- package/server/services/llm/providers/openrouter.py +6 -1
- package/server/services/markdown_formatter.py +1 -2
- package/server/services/memory/jsonl.py +6 -2
- package/server/services/memory/markdown.py +4 -4
- package/server/services/memory/state.py +6 -5
- package/server/services/memory_store.py +8 -12
- package/server/services/model_registry.py +21 -19
- package/server/services/node_executor.py +85 -77
- package/server/services/node_output_schemas.py +4 -6
- package/server/services/node_registry.py +3 -4
- package/server/services/node_spec.py +3 -7
- package/server/services/nodejs_client.py +4 -14
- package/server/services/parameter_resolver.py +30 -36
- package/server/services/plugin/base.py +43 -22
- package/server/services/plugin/connection.py +12 -7
- package/server/services/plugin/credential.py +10 -22
- package/server/services/plugin/edge_walker.py +68 -77
- package/server/services/plugin/identifiers.py +48 -0
- package/server/services/plugin/interceptor.py +1 -1
- package/server/services/plugin/oauth.py +25 -21
- package/server/services/plugin/operation.py +1 -1
- package/server/services/plugin/polling.py +29 -27
- package/server/services/plugin/registry.py +1 -2
- package/server/services/plugin/routing.py +6 -9
- package/server/services/plugin/scaling.py +36 -25
- package/server/services/plugin/service_factories.py +1 -3
- package/server/services/plugin/shutdown_hooks.py +2 -5
- package/server/services/plugin/social_provider_registry.py +1 -3
- package/server/services/plugin/ws.py +2 -1
- package/server/services/pricing.py +26 -40
- package/server/services/pricing_handlers.py +6 -3
- package/server/services/process_service.py +32 -31
- package/server/services/proxy/models.py +15 -9
- package/server/services/proxy/service.py +26 -39
- package/server/services/rlm/adapters.py +43 -40
- package/server/services/rlm/constants.py +9 -9
- package/server/services/rlm/service.py +56 -44
- package/server/services/scheduler.py +8 -39
- package/server/services/settings/handlers.py +20 -15
- package/server/services/skill_loader.py +37 -41
- package/server/services/skill_prompt.py +8 -6
- package/server/services/skills/handlers.py +31 -18
- package/server/services/status_broadcaster.py +129 -237
- package/server/services/temporal/__init__.py +2 -6
- package/server/services/temporal/_handlers.py +20 -24
- package/server/services/temporal/_install.py +112 -130
- package/server/services/temporal/_refresh.py +19 -22
- package/server/services/temporal/_runtime.py +82 -174
- package/{cli/commands → server/services/temporal}/_supervised_runtime.py +21 -13
- package/server/services/temporal/activities.py +28 -21
- package/server/services/temporal/agent_activities.py +39 -31
- package/server/services/temporal/agent_workflow.py +101 -107
- package/server/services/temporal/client.py +46 -12
- package/server/services/temporal/executor.py +2 -3
- package/server/services/temporal/plugin_activities.py +6 -2
- package/server/services/temporal/plugin_registry.py +1 -3
- package/server/services/temporal/polling_trigger_workflow.py +13 -20
- package/server/services/temporal/schedules.py +18 -20
- package/server/services/temporal/search_attributes.py +3 -7
- package/server/services/temporal/trigger_listener_workflow.py +18 -38
- package/server/services/temporal/worker.py +1 -4
- package/server/services/temporal/workflow.py +35 -55
- package/server/services/temporal/ws_client.py +11 -7
- package/server/services/text.py +14 -28
- package/server/services/tracked_http.py +29 -49
- package/server/services/user_auth.py +7 -21
- package/server/services/workflow.py +28 -20
- package/server/services/workflow_import.py +30 -25
- package/server/services/workflow_ops.py +4 -0
- package/server/services/workflow_validator.py +52 -42
- package/server/services/ws_handler_registry.py +11 -9
- package/server/tests/conftest.py +20 -16
- package/server/tests/credentials/test_auth_service.py +6 -18
- package/server/tests/credentials/test_credential_broadcasts.py +14 -28
- package/server/tests/credentials/test_credentials_database.py +12 -38
- package/server/tests/credentials/test_encryption.py +3 -9
- package/server/tests/credentials/test_google_oauth.py +1 -3
- package/server/tests/credentials/test_oauth_utils.py +4 -15
- package/server/tests/credentials/test_twitter_oauth.py +1 -3
- package/server/tests/credentials/test_websocket_handlers.py +31 -69
- package/server/tests/llm/test_factory.py +11 -3
- package/server/tests/llm/test_providers.py +24 -31
- package/server/tests/llm/test_wiring.py +27 -22
- package/server/tests/nodes/_compat.py +4 -5
- package/server/tests/nodes/_harness.py +31 -24
- package/server/tests/nodes/_mocks.py +2 -6
- package/server/tests/nodes/test_agent_builder.py +43 -35
- package/server/tests/nodes/test_ai_agents.py +29 -24
- package/server/tests/nodes/test_ai_chat_models.py +3 -9
- package/server/tests/nodes/test_ai_tools.py +29 -23
- package/server/tests/nodes/test_android.py +34 -64
- package/server/tests/nodes/test_chat_utility.py +2 -2
- package/server/tests/nodes/test_code_fs_process.py +26 -84
- package/server/tests/nodes/test_document.py +22 -45
- package/server/tests/nodes/test_email.py +80 -48
- package/server/tests/nodes/test_google_workspace.py +26 -20
- package/server/tests/nodes/test_http_proxy.py +43 -89
- package/server/tests/nodes/test_search.py +3 -9
- package/server/tests/nodes/test_specialized_agents.py +56 -45
- package/server/tests/nodes/test_stripe_plugin.py +25 -5
- package/server/tests/nodes/test_telegram_social.py +16 -34
- package/server/tests/nodes/test_twitter.py +59 -150
- package/server/tests/nodes/test_web_automation.py +21 -51
- package/server/tests/nodes/test_whatsapp.py +13 -19
- package/server/tests/nodes/test_workflow_triggers.py +16 -45
- package/server/tests/services/cli_agent/test_claude_session_events.py +34 -16
- package/server/tests/services/cli_agent/test_mcp_server.py +66 -27
- package/server/tests/services/cli_agent/test_providers.py +66 -29
- package/server/tests/services/cli_agent/test_service.py +9 -6
- package/server/tests/services/memory/test_jsonl.py +30 -25
- package/server/tests/services/test_events.py +26 -7
- package/server/tests/services/test_identifiers.py +122 -0
- package/server/tests/services/test_process_lifecycle.py +129 -0
- package/server/tests/temporal/test_agent_workflow.py +2 -8
- package/server/tests/temporal/test_dispatch.py +8 -9
- package/server/tests/test_admin_handlers.py +30 -14
- package/server/tests/test_auto_skill.py +4 -2
- package/server/tests/test_canary_registry.py +21 -21
- package/server/tests/test_chat_trigger_canary_producer.py +8 -7
- package/server/tests/test_cloudevents_node_parameters.py +3 -8
- package/server/tests/test_credential_icon.py +1 -2
- package/server/tests/test_cron_canary.py +27 -14
- package/server/tests/test_deployment_canary_listener.py +34 -43
- package/server/tests/test_event_framework_phase_a.py +53 -45
- package/server/tests/test_no_raw_prints.py +19 -8
- package/server/tests/test_node_spec.py +190 -97
- package/server/tests/test_parameter_resolver.py +20 -20
- package/server/tests/test_plugin_contract.py +16 -51
- package/server/tests/test_plugin_self_containment.py +20 -42
- package/server/tests/test_polling_trigger_workflow.py +77 -61
- package/server/tests/test_retry_policies.py +8 -5
- package/server/tests/test_service_factories.py +7 -4
- package/server/tests/test_shutdown_hooks.py +8 -7
- package/server/tests/test_social_provider_registry.py +7 -3
- package/server/tests/test_status_broadcasts.py +52 -61
- package/server/tests/test_telegram_trigger_canary_producer.py +8 -6
- package/server/tests/test_tool_registry.py +10 -15
- package/server/tests/test_workflow_ops.py +1 -3
- package/server/tests/test_workflow_validator.py +28 -54
- package/server/uv.lock +3539 -0
- package/cli/commands/daemon.py +0 -147
- package/cli/pyproject.toml +0 -32
- package/server/services/temporal/_config.py +0 -258
package/.env.template
CHANGED
|
@@ -30,11 +30,12 @@ JWT_COOKIE_SAMESITE=lax
|
|
|
30
30
|
CORS_ORIGINS=["http://localhost:3000","http://localhost:3001","http://localhost:3002","http://localhost:3003","http://localhost:3004","http://localhost:3005","http://localhost:3006","http://127.0.0.1:3000","http://127.0.0.1:3001","http://127.0.0.1:3002","http://127.0.0.1:3003","http://127.0.0.1:3004","http://127.0.0.1:3005","http://127.0.0.1:3006","http://localhost:5173"]
|
|
31
31
|
|
|
32
32
|
# Database Configuration
|
|
33
|
-
# SQLite DB
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
|
|
33
|
+
# SQLite DB filename. Resolved under DATA_DIR by
|
|
34
|
+
# ``Settings._resolve_under_data`` — same pattern as ``temporal.db``
|
|
35
|
+
# and ``credentials.db`` so dev mode's DATA_DIR=.machina moves all
|
|
36
|
+
# three together. The SQLAlchemy URL is composed at runtime by
|
|
37
|
+
# ``Settings.database_url`` (sqlite+aiosqlite:///<abspath>).
|
|
38
|
+
WORKFLOW_DB_FILENAME=workflow.db
|
|
38
39
|
DATABASE_ECHO=false
|
|
39
40
|
DATABASE_POOL_SIZE=5
|
|
40
41
|
DATABASE_MAX_OVERFLOW=10
|
|
@@ -44,14 +45,61 @@ REDIS_ENABLED=false
|
|
|
44
45
|
CACHE_TTL=300
|
|
45
46
|
|
|
46
47
|
# Temporal Configuration
|
|
47
|
-
# Enable for durable workflow execution with automatic retries
|
|
48
|
+
# Enable for durable workflow execution with automatic retries.
|
|
49
|
+
# Backed by ``temporal server start-dev`` against a SQLite db at
|
|
50
|
+
# ``TEMPORAL_SQLITE_PATH``. The official ``temporal`` CLI is downloaded
|
|
51
|
+
# by pooch from https://temporal.download/cli/archive/latest on
|
|
52
|
+
# ``machina build`` (or first ``machina start`` if build was skipped).
|
|
48
53
|
TEMPORAL_ENABLED=true
|
|
49
54
|
TEMPORAL_SERVER_ADDRESS=localhost:7233
|
|
50
55
|
TEMPORAL_NAMESPACE=default
|
|
51
56
|
TEMPORAL_TASK_QUEUE=machina-tasks
|
|
52
57
|
TEMPORAL_PER_TYPE_DISPATCH=true
|
|
53
58
|
TEMPORAL_AGENT_WORKFLOW_ENABLED=true
|
|
54
|
-
|
|
59
|
+
# gRPC frontend port the CLI dev server binds (``--port``). Default per
|
|
60
|
+
# https://docs.temporal.io/references/configuration.
|
|
61
|
+
TEMPORAL_FRONTEND_GRPC_PORT=7233
|
|
62
|
+
# Web UI port (``--ui-port``). ``temporal server start-dev`` defaults
|
|
63
|
+
# this to ``--port + 1000``; we override to 8080 to match the
|
|
64
|
+
# historical MachinaOS port (kept for muscle memory + bookmarks).
|
|
65
|
+
# Browse to http://<host>:<TEMPORAL_UI_PORT>/.
|
|
66
|
+
TEMPORAL_UI_PORT=8080
|
|
67
|
+
# SQLite db file ``temporal server start-dev --db-filename`` opens.
|
|
68
|
+
# Relative to DATA_DIR (= ~/.machina/) unless absolute. Flat under
|
|
69
|
+
# DATA_DIR like ``credentials.db`` / ``workflow.db``. History is
|
|
70
|
+
# always preserved across restarts (Temporal UI keeps showing every
|
|
71
|
+
# workflow that ever ran); see ``TEMPORAL_TERMINATE_RUNNING_ON_STARTUP``
|
|
72
|
+
# below for the resumption knob.
|
|
73
|
+
TEMPORAL_SQLITE_PATH=temporal.db
|
|
74
|
+
# On server boot, terminate every workflow still in ``Running`` state.
|
|
75
|
+
# History is preserved (workflows show as ``Terminated`` in the UI,
|
|
76
|
+
# NOT deleted) but resumption is disabled, because MachinaOS's
|
|
77
|
+
# ``DeploymentManager`` has no boot-time reconcile against Temporal
|
|
78
|
+
# Visibility yet — resumed workflows would otherwise keep executing
|
|
79
|
+
# but be invisible to the MachinaOS UI. Flip to ``false`` once the
|
|
80
|
+
# reconcile lands to re-enable durable resumption.
|
|
81
|
+
TEMPORAL_TERMINATE_RUNNING_ON_STARTUP=true
|
|
82
|
+
# Graceful shutdown window for the Temporal child process.
|
|
83
|
+
TEMPORAL_GRACEFUL_SHUTDOWN_SECONDS=30
|
|
84
|
+
# Supervisor readiness-probe window. The CLI binary may need to
|
|
85
|
+
# download (~114 MB zip) on first ``machina start`` if ``machina build``
|
|
86
|
+
# didn't pre-cache it.
|
|
87
|
+
TEMPORAL_SERVER_READY_TIMEOUT_SECONDS=120
|
|
88
|
+
|
|
89
|
+
# Wave 12 event framework. ``true`` (default) routes trigger events
|
|
90
|
+
# through TriggerListenerWorkflow + Temporal Signal fan-out for the
|
|
91
|
+
# 8 canary-registered trigger types (webhook, chat, task, telegram,
|
|
92
|
+
# whatsapp, gmail, cron, email). Flip to ``false`` to roll back to
|
|
93
|
+
# the legacy event_waiter path -- see docs-internal/event_framework.md.
|
|
94
|
+
EVENT_FRAMEWORK_ENABLED=true
|
|
95
|
+
|
|
96
|
+
# Memory compaction. ``true`` (default) auto-compacts agent
|
|
97
|
+
# conversation memory when cumulative tokens exceed the model's
|
|
98
|
+
# context-window threshold. Per-session overrides via the UI.
|
|
99
|
+
COMPACTION_ENABLED=true
|
|
100
|
+
|
|
101
|
+
# Dead-letter queue for failed workflow executions. Off by default.
|
|
102
|
+
DLQ_ENABLED=false
|
|
55
103
|
|
|
56
104
|
# Data directory (base for all persistent storage: DBs, workspaces,
|
|
57
105
|
# workflows, claude state). User-home rooted by default — same
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "
|
|
2
|
+
"id": "example_workflow-1779017037684-e2e5da7a",
|
|
3
3
|
"name": "AI Assistant",
|
|
4
4
|
"nodes": [
|
|
5
5
|
{
|
|
6
|
-
"id": "chatTrigger-
|
|
6
|
+
"id": "chatTrigger-17792004760150-ce3047",
|
|
7
7
|
"type": "chatTrigger",
|
|
8
8
|
"position": {
|
|
9
9
|
"x": 940,
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dragging": false
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
"id": "console-
|
|
25
|
+
"id": "console-17792004760151-ce3047",
|
|
26
26
|
"type": "console",
|
|
27
27
|
"position": {
|
|
28
28
|
"x": 1720,
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"dragging": false
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
"id": "simpleMemory-
|
|
44
|
+
"id": "simpleMemory-17792004760152-ce3047",
|
|
45
45
|
"type": "simpleMemory",
|
|
46
46
|
"position": {
|
|
47
47
|
"x": 1120,
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"dragging": true
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
|
-
"id": "writeTodos-
|
|
63
|
+
"id": "writeTodos-17792004760153-ce3047",
|
|
64
64
|
"type": "writeTodos",
|
|
65
65
|
"position": {
|
|
66
66
|
"x": 1440,
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"dragging": false
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
|
-
"id": "duckduckgoSearch-
|
|
82
|
+
"id": "duckduckgoSearch-17792004760154-ce3047",
|
|
83
83
|
"type": "duckduckgoSearch",
|
|
84
84
|
"position": {
|
|
85
85
|
"x": 1560,
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"dragging": false
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
|
-
"id": "browser-
|
|
101
|
+
"id": "browser-17792004760155-ce3047",
|
|
102
102
|
"type": "browser",
|
|
103
103
|
"position": {
|
|
104
104
|
"x": 1680,
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"dragging": true
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"id": "fileRead-
|
|
120
|
+
"id": "fileRead-17792004760156-ce3047",
|
|
121
121
|
"type": "fileRead",
|
|
122
122
|
"position": {
|
|
123
123
|
"x": 1980,
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"dragging": true
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
|
-
"id": "fileModify-
|
|
139
|
+
"id": "fileModify-17792004760157-ce3047",
|
|
140
140
|
"type": "fileModify",
|
|
141
141
|
"position": {
|
|
142
142
|
"x": 2080,
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
"dragging": true
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
|
-
"id": "shell-
|
|
158
|
+
"id": "shell-17792004760158-ce3047",
|
|
159
159
|
"type": "shell",
|
|
160
160
|
"position": {
|
|
161
161
|
"x": 1900,
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"dragging": true
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
|
-
"id": "fsSearch-
|
|
177
|
+
"id": "fsSearch-17792004760159-ce3047",
|
|
178
178
|
"type": "fsSearch",
|
|
179
179
|
"position": {
|
|
180
180
|
"x": 1780,
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"dragging": true
|
|
194
194
|
},
|
|
195
195
|
{
|
|
196
|
-
"id": "processManager-
|
|
196
|
+
"id": "processManager-177920047601510-ce3047",
|
|
197
197
|
"type": "processManager",
|
|
198
198
|
"position": {
|
|
199
199
|
"x": 2180,
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
"dragging": true
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
|
-
"id": "pythonExecutor-
|
|
215
|
+
"id": "pythonExecutor-177920047601511-ce3047",
|
|
216
216
|
"type": "pythonExecutor",
|
|
217
217
|
"position": {
|
|
218
218
|
"x": 2280,
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
"dragging": true
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
|
-
"id": "aiAgent-
|
|
234
|
+
"id": "aiAgent-177920047601512-ce3047",
|
|
235
235
|
"type": "aiAgent",
|
|
236
236
|
"position": {
|
|
237
237
|
"x": 1220,
|
|
@@ -250,7 +250,7 @@
|
|
|
250
250
|
}
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
|
-
"id": "telegramReceive-
|
|
253
|
+
"id": "telegramReceive-177920047601513-ce3047",
|
|
254
254
|
"type": "telegramReceive",
|
|
255
255
|
"position": {
|
|
256
256
|
"x": 940,
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
"dragging": true
|
|
270
270
|
},
|
|
271
271
|
{
|
|
272
|
-
"id": "telegramSend-
|
|
272
|
+
"id": "telegramSend-177920047601514-ce3047",
|
|
273
273
|
"type": "telegramSend",
|
|
274
274
|
"position": {
|
|
275
275
|
"x": 1700,
|
|
@@ -288,7 +288,7 @@
|
|
|
288
288
|
"dragging": false
|
|
289
289
|
},
|
|
290
290
|
{
|
|
291
|
-
"id": "masterSkill-
|
|
291
|
+
"id": "masterSkill-177920047601515-ce3047",
|
|
292
292
|
"type": "masterSkill",
|
|
293
293
|
"position": {
|
|
294
294
|
"x": 1240,
|
|
@@ -315,11 +315,11 @@
|
|
|
315
315
|
"stroke": "#8be9fd",
|
|
316
316
|
"strokeWidth": 3
|
|
317
317
|
},
|
|
318
|
-
"source": "chatTrigger-
|
|
318
|
+
"source": "chatTrigger-17792004760150-ce3047",
|
|
319
319
|
"sourceHandle": "output-main",
|
|
320
|
-
"target": "aiAgent-
|
|
320
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
321
321
|
"targetHandle": "input-main",
|
|
322
|
-
"id": "e-chatTrigger-
|
|
322
|
+
"id": "e-chatTrigger-17792004760150-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
323
323
|
"selected": false
|
|
324
324
|
},
|
|
325
325
|
{
|
|
@@ -329,11 +329,11 @@
|
|
|
329
329
|
"stroke": "#8be9fd",
|
|
330
330
|
"strokeWidth": 3
|
|
331
331
|
},
|
|
332
|
-
"source": "simpleMemory-
|
|
332
|
+
"source": "simpleMemory-17792004760152-ce3047",
|
|
333
333
|
"sourceHandle": "output-tool",
|
|
334
|
-
"target": "aiAgent-
|
|
334
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
335
335
|
"targetHandle": "input-memory",
|
|
336
|
-
"id": "e-simpleMemory-
|
|
336
|
+
"id": "e-simpleMemory-17792004760152-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
337
337
|
"selected": false
|
|
338
338
|
},
|
|
339
339
|
{
|
|
@@ -343,11 +343,11 @@
|
|
|
343
343
|
"stroke": "#8be9fd",
|
|
344
344
|
"strokeWidth": 3
|
|
345
345
|
},
|
|
346
|
-
"source": "aiAgent-
|
|
346
|
+
"source": "aiAgent-177920047601512-ce3047",
|
|
347
347
|
"sourceHandle": "output-main",
|
|
348
|
-
"target": "console-
|
|
348
|
+
"target": "console-17792004760151-ce3047",
|
|
349
349
|
"targetHandle": "input-main",
|
|
350
|
-
"id": "e-aiAgent-
|
|
350
|
+
"id": "e-aiAgent-177920047601512-ce3047-console-17792004760151-ce3047-1779200476015-ce3047",
|
|
351
351
|
"selected": false
|
|
352
352
|
},
|
|
353
353
|
{
|
|
@@ -357,11 +357,11 @@
|
|
|
357
357
|
"stroke": "#8be9fd",
|
|
358
358
|
"strokeWidth": 3
|
|
359
359
|
},
|
|
360
|
-
"source": "telegramReceive-
|
|
360
|
+
"source": "telegramReceive-177920047601513-ce3047",
|
|
361
361
|
"sourceHandle": "output-main",
|
|
362
|
-
"target": "aiAgent-
|
|
362
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
363
363
|
"targetHandle": "input-main",
|
|
364
|
-
"id": "e-telegramReceive-
|
|
364
|
+
"id": "e-telegramReceive-177920047601513-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
365
365
|
"selected": false
|
|
366
366
|
},
|
|
367
367
|
{
|
|
@@ -371,11 +371,11 @@
|
|
|
371
371
|
"stroke": "#8be9fd",
|
|
372
372
|
"strokeWidth": 3
|
|
373
373
|
},
|
|
374
|
-
"source": "aiAgent-
|
|
374
|
+
"source": "aiAgent-177920047601512-ce3047",
|
|
375
375
|
"sourceHandle": "output-main",
|
|
376
|
-
"target": "telegramSend-
|
|
376
|
+
"target": "telegramSend-177920047601514-ce3047",
|
|
377
377
|
"targetHandle": "input-main",
|
|
378
|
-
"id": "e-aiAgent-
|
|
378
|
+
"id": "e-aiAgent-177920047601512-ce3047-telegramSend-177920047601514-ce3047-1779200476015-ce3047",
|
|
379
379
|
"selected": false
|
|
380
380
|
},
|
|
381
381
|
{
|
|
@@ -385,11 +385,11 @@
|
|
|
385
385
|
"stroke": "#8be9fd",
|
|
386
386
|
"strokeWidth": 3
|
|
387
387
|
},
|
|
388
|
-
"source": "masterSkill-
|
|
388
|
+
"source": "masterSkill-177920047601515-ce3047",
|
|
389
389
|
"sourceHandle": "output-tool",
|
|
390
|
-
"target": "aiAgent-
|
|
390
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
391
391
|
"targetHandle": "input-skill",
|
|
392
|
-
"id": "e-masterSkill-
|
|
392
|
+
"id": "e-masterSkill-177920047601515-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
393
393
|
"selected": false
|
|
394
394
|
},
|
|
395
395
|
{
|
|
@@ -399,11 +399,11 @@
|
|
|
399
399
|
"stroke": "#8be9fd",
|
|
400
400
|
"strokeWidth": 3
|
|
401
401
|
},
|
|
402
|
-
"source": "writeTodos-
|
|
402
|
+
"source": "writeTodos-17792004760153-ce3047",
|
|
403
403
|
"sourceHandle": "output-tool",
|
|
404
|
-
"target": "aiAgent-
|
|
404
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
405
405
|
"targetHandle": "input-tools",
|
|
406
|
-
"id": "e-writeTodos-
|
|
406
|
+
"id": "e-writeTodos-17792004760153-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
407
407
|
"selected": false
|
|
408
408
|
},
|
|
409
409
|
{
|
|
@@ -413,11 +413,11 @@
|
|
|
413
413
|
"stroke": "#8be9fd",
|
|
414
414
|
"strokeWidth": 3
|
|
415
415
|
},
|
|
416
|
-
"source": "fsSearch-
|
|
416
|
+
"source": "fsSearch-17792004760159-ce3047",
|
|
417
417
|
"sourceHandle": "output-tool",
|
|
418
|
-
"target": "aiAgent-
|
|
418
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
419
419
|
"targetHandle": "input-tools",
|
|
420
|
-
"id": "e-fsSearch-
|
|
420
|
+
"id": "e-fsSearch-17792004760159-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
421
421
|
"selected": false
|
|
422
422
|
},
|
|
423
423
|
{
|
|
@@ -427,11 +427,11 @@
|
|
|
427
427
|
"stroke": "#8be9fd",
|
|
428
428
|
"strokeWidth": 3
|
|
429
429
|
},
|
|
430
|
-
"source": "shell-
|
|
430
|
+
"source": "shell-17792004760158-ce3047",
|
|
431
431
|
"sourceHandle": "output-tool",
|
|
432
|
-
"target": "aiAgent-
|
|
432
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
433
433
|
"targetHandle": "input-tools",
|
|
434
|
-
"id": "e-shell-
|
|
434
|
+
"id": "e-shell-17792004760158-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
435
435
|
"selected": false
|
|
436
436
|
},
|
|
437
437
|
{
|
|
@@ -441,11 +441,11 @@
|
|
|
441
441
|
"stroke": "#8be9fd",
|
|
442
442
|
"strokeWidth": 3
|
|
443
443
|
},
|
|
444
|
-
"source": "fileRead-
|
|
444
|
+
"source": "fileRead-17792004760156-ce3047",
|
|
445
445
|
"sourceHandle": "output-tool",
|
|
446
|
-
"target": "aiAgent-
|
|
446
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
447
447
|
"targetHandle": "input-tools",
|
|
448
|
-
"id": "e-fileRead-
|
|
448
|
+
"id": "e-fileRead-17792004760156-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
449
449
|
"selected": false
|
|
450
450
|
},
|
|
451
451
|
{
|
|
@@ -455,11 +455,11 @@
|
|
|
455
455
|
"stroke": "#8be9fd",
|
|
456
456
|
"strokeWidth": 3
|
|
457
457
|
},
|
|
458
|
-
"source": "fileModify-
|
|
458
|
+
"source": "fileModify-17792004760157-ce3047",
|
|
459
459
|
"sourceHandle": "output-tool",
|
|
460
|
-
"target": "aiAgent-
|
|
460
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
461
461
|
"targetHandle": "input-tools",
|
|
462
|
-
"id": "e-fileModify-
|
|
462
|
+
"id": "e-fileModify-17792004760157-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
463
463
|
"selected": false
|
|
464
464
|
},
|
|
465
465
|
{
|
|
@@ -469,11 +469,11 @@
|
|
|
469
469
|
"stroke": "#8be9fd",
|
|
470
470
|
"strokeWidth": 3
|
|
471
471
|
},
|
|
472
|
-
"source": "pythonExecutor-
|
|
472
|
+
"source": "pythonExecutor-177920047601511-ce3047",
|
|
473
473
|
"sourceHandle": "output-tool",
|
|
474
|
-
"target": "aiAgent-
|
|
474
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
475
475
|
"targetHandle": "input-tools",
|
|
476
|
-
"id": "e-pythonExecutor-
|
|
476
|
+
"id": "e-pythonExecutor-177920047601511-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
477
477
|
"selected": false
|
|
478
478
|
},
|
|
479
479
|
{
|
|
@@ -483,11 +483,11 @@
|
|
|
483
483
|
"stroke": "#8be9fd",
|
|
484
484
|
"strokeWidth": 3
|
|
485
485
|
},
|
|
486
|
-
"source": "processManager-
|
|
486
|
+
"source": "processManager-177920047601510-ce3047",
|
|
487
487
|
"sourceHandle": "output-tool",
|
|
488
|
-
"target": "aiAgent-
|
|
488
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
489
489
|
"targetHandle": "input-tools",
|
|
490
|
-
"id": "e-processManager-
|
|
490
|
+
"id": "e-processManager-177920047601510-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
491
491
|
"selected": false
|
|
492
492
|
},
|
|
493
493
|
{
|
|
@@ -497,19 +497,19 @@
|
|
|
497
497
|
"stroke": "#8be9fd",
|
|
498
498
|
"strokeWidth": 3
|
|
499
499
|
},
|
|
500
|
-
"source": "duckduckgoSearch-
|
|
500
|
+
"source": "duckduckgoSearch-17792004760154-ce3047",
|
|
501
501
|
"sourceHandle": "output-tool",
|
|
502
|
-
"target": "aiAgent-
|
|
502
|
+
"target": "aiAgent-177920047601512-ce3047",
|
|
503
503
|
"targetHandle": "input-tools",
|
|
504
|
-
"id": "e-duckduckgoSearch-
|
|
504
|
+
"id": "e-duckduckgoSearch-17792004760154-ce3047-aiAgent-177920047601512-ce3047-1779200476015-ce3047",
|
|
505
505
|
"selected": false
|
|
506
506
|
}
|
|
507
507
|
],
|
|
508
|
-
"createdAt": "2026-05-
|
|
509
|
-
"lastModified": "2026-05-
|
|
508
|
+
"createdAt": "2026-05-19T08:51:16.024Z",
|
|
509
|
+
"lastModified": "2026-05-19T08:51:16.024Z",
|
|
510
510
|
"version": "0.0.72",
|
|
511
511
|
"nodeParameters": {
|
|
512
|
-
"console-
|
|
512
|
+
"console-17792004760151-ce3047": {
|
|
513
513
|
"label": "Console",
|
|
514
514
|
"log_mode": "field",
|
|
515
515
|
"field_path": "{{aiagent.response}}",
|
|
@@ -517,10 +517,10 @@
|
|
|
517
517
|
"format": "json",
|
|
518
518
|
"fieldPath": ""
|
|
519
519
|
},
|
|
520
|
-
"simpleMemory-
|
|
520
|
+
"simpleMemory-17792004760152-ce3047": {
|
|
521
521
|
"session_id": "",
|
|
522
522
|
"window_size": 100,
|
|
523
|
-
"memory_content": "# Conversation History\n\n
|
|
523
|
+
"memory_content": "# Conversation History\n\n*No messages yet.*\n",
|
|
524
524
|
"long_term_enabled": false,
|
|
525
525
|
"retrieval_count": 3,
|
|
526
526
|
"last_session_id": null,
|
|
@@ -529,7 +529,7 @@
|
|
|
529
529
|
"longTermEnabled": false,
|
|
530
530
|
"retrievalCount": 3
|
|
531
531
|
},
|
|
532
|
-
"browser-
|
|
532
|
+
"browser-17792004760155-ce3047": {
|
|
533
533
|
"toolName": "browser",
|
|
534
534
|
"toolDescription": "Control a web browser. Use snapshot to see the page (returns accessibility tree with @eN refs). Then click/type/fill with those refs. Workflow: navigate -> snapshot -> click/fill -> snapshot.",
|
|
535
535
|
"operation": "navigate",
|
|
@@ -558,13 +558,13 @@
|
|
|
558
558
|
"timeout": 30,
|
|
559
559
|
"label": "Browser"
|
|
560
560
|
},
|
|
561
|
-
"fileRead-
|
|
561
|
+
"fileRead-17792004760156-ce3047": {
|
|
562
562
|
"file_path": "",
|
|
563
563
|
"offset": 0,
|
|
564
564
|
"limit": 100,
|
|
565
565
|
"label": "File Read"
|
|
566
566
|
},
|
|
567
|
-
"fileModify-
|
|
567
|
+
"fileModify-17792004760157-ce3047": {
|
|
568
568
|
"operation": "write",
|
|
569
569
|
"file_path": "",
|
|
570
570
|
"content": "",
|
|
@@ -573,19 +573,19 @@
|
|
|
573
573
|
"replace_all": false,
|
|
574
574
|
"label": "File Modify"
|
|
575
575
|
},
|
|
576
|
-
"shell-
|
|
576
|
+
"shell-17792004760158-ce3047": {
|
|
577
577
|
"command": "",
|
|
578
578
|
"timeout": 30,
|
|
579
579
|
"label": "Shell"
|
|
580
580
|
},
|
|
581
|
-
"fsSearch-
|
|
581
|
+
"fsSearch-17792004760159-ce3047": {
|
|
582
582
|
"mode": "ls",
|
|
583
583
|
"path": ".",
|
|
584
584
|
"pattern": "",
|
|
585
585
|
"file_filter": "",
|
|
586
586
|
"label": "FS Search"
|
|
587
587
|
},
|
|
588
|
-
"processManager-
|
|
588
|
+
"processManager-177920047601510-ce3047": {
|
|
589
589
|
"toolName": "process_manager",
|
|
590
590
|
"toolDescription": "Start, stop, and manage long-running processes. Use for dev servers, watchers, build tools. Output streams to Terminal.",
|
|
591
591
|
"operation": "start",
|
|
@@ -595,19 +595,19 @@
|
|
|
595
595
|
"text": "",
|
|
596
596
|
"label": "Process Manager"
|
|
597
597
|
},
|
|
598
|
-
"pythonExecutor-
|
|
598
|
+
"pythonExecutor-177920047601511-ce3047": {
|
|
599
599
|
"code": "# Python Executor - Transform and process data\n#\n# Available:\n# input_data - dict with connected node outputs\n# math, json - imported modules\n# print() - for debugging\n#\n# Set the \"output\" variable with your result\n\n# Example: Get data from connected node\ndata = input_data.get(\"start\", {}) or input_data\n\n# Process data\nresult = {\n \"message\": \"from Python!\",\n \"input_received\": data,\n \"processed\": True\n}\n\n# Set output (required)\noutput = result",
|
|
600
600
|
"timeout": 30,
|
|
601
601
|
"label": "Python Executor"
|
|
602
602
|
},
|
|
603
|
-
"aiAgent-
|
|
603
|
+
"aiAgent-177920047601512-ce3047": {
|
|
604
604
|
"prompt": "{{chattrigger.message}} {{telegramreceive.text}}",
|
|
605
605
|
"provider": "gemini",
|
|
606
606
|
"model": "gemini-flash-latest",
|
|
607
607
|
"system_message": "You are a helpful assistant",
|
|
608
608
|
"label": "AI Agent"
|
|
609
609
|
},
|
|
610
|
-
"telegramReceive-
|
|
610
|
+
"telegramReceive-177920047601513-ce3047": {
|
|
611
611
|
"content_type_filter": "text",
|
|
612
612
|
"sender_filter": "self",
|
|
613
613
|
"chat_id": "",
|
|
@@ -616,7 +616,7 @@
|
|
|
616
616
|
"ignore_bots": true,
|
|
617
617
|
"label": "Telegram Receive"
|
|
618
618
|
},
|
|
619
|
-
"telegramSend-
|
|
619
|
+
"telegramSend-177920047601514-ce3047": {
|
|
620
620
|
"recipient_type": "self",
|
|
621
621
|
"chat_id": "",
|
|
622
622
|
"message_type": "text",
|
|
@@ -633,7 +633,7 @@
|
|
|
633
633
|
"reply_to_message_id": 0,
|
|
634
634
|
"label": "Telegram Send"
|
|
635
635
|
},
|
|
636
|
-
"masterSkill-
|
|
636
|
+
"masterSkill-177920047601515-ce3047": {
|
|
637
637
|
"skills_config": {
|
|
638
638
|
"assistant-personality": {
|
|
639
639
|
"enabled": true,
|