machinaos 0.0.52 → 0.0.53

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.
Files changed (46) hide show
  1. package/.env.template +3 -0
  2. package/README.md +147 -0
  3. package/bin/cli.js +0 -6
  4. package/client/dist/assets/{index-Bc9-UZJX.js → index-BqiyQs_N.js} +119 -107
  5. package/client/dist/index.html +1 -1
  6. package/client/package.json +1 -1
  7. package/client/src/Dashboard.tsx +4 -0
  8. package/client/src/components/AIAgentNode.tsx +18 -0
  9. package/client/src/components/parameterPanel/InputSection.tsx +30 -2
  10. package/client/src/components/parameterPanel/MiddleSection.tsx +2 -1
  11. package/client/src/components/ui/NodeOutputPanel.tsx +50 -0
  12. package/client/src/components/ui/OutputDisplayPanel.tsx +51 -0
  13. package/client/src/contexts/WebSocketContext.tsx +1 -1
  14. package/client/src/nodeDefinitions/filesystemNodes.ts +208 -0
  15. package/client/src/nodeDefinitions/specializedAgentNodes.ts +29 -1
  16. package/client/src/nodeDefinitions.ts +7 -1
  17. package/client/src/services/executionService.ts +6 -1
  18. package/package.json +1 -11
  19. package/scripts/utils.js +1 -1
  20. package/server/config/model_registry.json +52 -74
  21. package/server/constants.py +1 -0
  22. package/server/core/config.py +3 -0
  23. package/server/pyproject.toml +1 -0
  24. package/server/requirements.txt +3 -0
  25. package/server/services/agents/__init__.py +9 -0
  26. package/server/services/agents/adapters.py +171 -0
  27. package/server/services/agents/constants.py +10 -0
  28. package/server/services/agents/service.py +266 -0
  29. package/server/services/ai.py +52 -0
  30. package/server/services/handlers/__init__.py +18 -0
  31. package/server/services/handlers/code.py +4 -1
  32. package/server/services/handlers/deep_agent.py +84 -0
  33. package/server/services/handlers/document.py +3 -1
  34. package/server/services/handlers/filesystem.py +156 -0
  35. package/server/services/handlers/tools.py +42 -16
  36. package/server/services/node_executor.py +8 -0
  37. package/server/services/workflow.py +14 -1
  38. package/server/skills/coding_agent/file-modify-skill/SKILL.md +80 -0
  39. package/server/skills/coding_agent/file-read-skill/SKILL.md +53 -0
  40. package/server/skills/coding_agent/fs-search-skill/SKILL.md +92 -0
  41. package/server/skills/coding_agent/shell-skill/SKILL.md +66 -0
  42. package/workflows/Zeenie Agent.json +15 -7
  43. package/client/Dockerfile +0 -70
  44. package/scripts/docker.js +0 -86
  45. package/server/.dockerignore +0 -44
  46. package/server/Dockerfile +0 -57
package/.env.template CHANGED
@@ -46,6 +46,9 @@ TEMPORAL_SERVER_ADDRESS=localhost:7233
46
46
  TEMPORAL_NAMESPACE=default
47
47
  TEMPORAL_TASK_QUEUE=machina-tasks
48
48
 
49
+ # Per-workflow workspace (nodes save files here, agents access via filesystem tools)
50
+ WORKSPACE_BASE_DIR=data/workspaces
51
+
49
52
  # Logging
50
53
  LOG_LEVEL=INFO
51
54
  LOG_FORMAT=text
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  <a href="https://www.npmjs.com/package/machinaos" target="_blank"><img src="https://img.shields.io/npm/v/machinaos.svg" alt="npm version"></a>
4
4
  <a href="https://opensource.org/licenses/MIT" target="_blank"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
5
5
  <a href="https://discord.gg/c9pCJ7d8Ce" target="_blank"><img src="https://img.shields.io/discord/1455977012308086895?logo=discord&logoColor=white&label=Discord" alt="Discord"></a>
6
+ <a href="https://deepwiki.com/trohitg/MachinaOS" target="_blank"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
6
7
 
7
8
  Personal AI Assistant/Co-Employees that Perform Human Like Tasks. Connect AI Assistant to your email, calendar, messages, phone, and more.
8
9
 
@@ -134,3 +135,149 @@ Join our [Discord](https://discord.gg/NHUEQVSC) for help, feedback, and updates.
134
135
  ## License
135
136
 
136
137
  MIT
138
+
139
+ ---
140
+
141
+ ## Nerdy Docs
142
+
143
+ A contributor's map to the codebase. This section tells you *where things live* and *where to start reading* when you want to add a feature. For the full architecture tour, use the [DeepWiki badge](https://deepwiki.com/trohitg/MachinaOS) at the top of this README or browse [docs-internal/](docs-internal/).
144
+
145
+ ### System Overview
146
+
147
+ [![System Overview](docs/diagrams/system-overview.svg)](https://raw.githubusercontent.com/trohitg/MachinaOS/main/docs/diagrams/system-overview.svg)
148
+
149
+ At a glance:
150
+
151
+ - **96 workflow nodes** across 21 categories (AI, agents, social, Android, Google Workspace, documents, code, proxies, utilities)
152
+ - **10 LLM providers** via a hybrid native SDK + LangChain architecture
153
+ - **15 specialized AI agents** with the Agent Teams delegation pattern
154
+ - **89 WebSocket handlers** replacing most REST endpoints
155
+ - **49 built-in skills** across 10 categories, editable in-UI with SKILL.md defaults on disk
156
+ - **Three execution modes** with automatic fallback: Temporal distributed, Redis parallel, sequential
157
+
158
+ ### How Workflows Execute
159
+
160
+ [![Execution Flow](docs/diagrams/execution-flow.svg)](https://raw.githubusercontent.com/trohitg/MachinaOS/main/docs/diagrams/execution-flow.svg)
161
+
162
+ [WorkflowService](server/services/workflow.py) is a thin facade that routes each run through one of three execution modes. Every run has an isolated `ExecutionContext` with no shared global state, orchestrated by Conductor's decide pattern (`_workflow_decide` under a Redis `SETNX` lock). Layers are computed via Kahn's algorithm and each layer runs via `asyncio.gather()`. Results are cached by input hash (Prefect pattern), failed nodes go to a Dead Letter Queue, and a `RecoverySweeper` handles crashes via heartbeats.
163
+
164
+ Deep dives: [DESIGN.md](docs-internal/DESIGN.md) - [TEMPORAL_ARCHITECTURE.md](docs-internal/TEMPORAL_ARCHITECTURE.md) - [event_waiter_system.md](docs-internal/event_waiter_system.md)
165
+
166
+ ### AI Agent System
167
+
168
+ [![AI Agent Routing](docs/diagrams/ai-agent-routing.svg)](https://raw.githubusercontent.com/trohitg/MachinaOS/main/docs/diagrams/ai-agent-routing.svg)
169
+
170
+ AI execution splits into two paths. `execute_chat()` for direct chat completions prefers the native SDK layer in [services/llm/](server/services/llm/) (10 providers, lazy imports, normalized `LLMResponse`), falling back to LangChain for Groq and Cerebras. `execute_agent()` and `execute_chat_agent()` always use LangChain + LangGraph because tool-calling, state graphs, and the checkpointer have no native equivalent today. Team leads (`orchestrator_agent`, `ai_employee`) auto-inject `delegate_to_<type>` tools for every agent connected to their `input-teammates` handle.
171
+
172
+ Deep dives: [agent_architecture.md](docs-internal/agent_architecture.md) - [native_llm_sdk.md](docs-internal/native_llm_sdk.md) - [agent_teams.md](docs-internal/agent_teams.md) - [memory_compaction.md](docs-internal/memory_compaction.md)
173
+
174
+ ### Repository Map
175
+
176
+ | Directory | What lives here | Start reading |
177
+ |---|---|---|
178
+ | `client/src/nodeDefinitions/` | 96 workflow node definitions (TypeScript) | [node_creation.md](docs-internal/node_creation.md) |
179
+ | `client/src/components/` | React Flow canvas, parameter panel, modals | [CLAUDE.md](CLAUDE.md) |
180
+ | `server/services/` | WorkflowService, NodeExecutor, AI service | [DESIGN.md](docs-internal/DESIGN.md) |
181
+ | `server/services/handlers/` | One handler per node type (dispatch targets) | [node_creation.md](docs-internal/node_creation.md) |
182
+ | `server/services/llm/` | Native LLM SDK layer (10 providers) | [native_llm_sdk.md](docs-internal/native_llm_sdk.md) |
183
+ | `server/services/execution/` | Decide pattern, DLQ, recovery, conditions | [DESIGN.md](docs-internal/DESIGN.md) |
184
+ | `server/services/temporal/` | Distributed execution via Temporal | [TEMPORAL_ARCHITECTURE.md](docs-internal/TEMPORAL_ARCHITECTURE.md) |
185
+ | `server/routers/websocket.py` | 89 WebSocket handlers | [status_broadcaster.md](docs-internal/status_broadcaster.md) |
186
+ | `server/core/` | Cache, encryption, DI container, config | [credentials_encryption.md](docs-internal/credentials_encryption.md) |
187
+ | `server/skills/` | 49 skill SKILL.md files in 10 folders | [GUIDE.md](server/skills/GUIDE.md) |
188
+ | `server/config/` | llm_defaults.json, pricing.json, model_registry.json | [pricing_service.md](docs-internal/pricing_service.md) |
189
+ | `docs-internal/` | In-repo architecture deep dives (28 files) | Index below |
190
+
191
+ ### How to Contribute
192
+
193
+ [![Node Anatomy](docs/diagrams/node-anatomy.svg)](https://raw.githubusercontent.com/trohitg/MachinaOS/main/docs/diagrams/node-anatomy.svg)
194
+
195
+ The diagram above shows the full lifecycle of a workflow node from TypeScript definition to Python handler. Use these recipes as a starting point:
196
+
197
+ **Add a workflow node**
198
+ - Node definition: `client/src/nodeDefinitions/<yourCategory>.ts`
199
+ - Backend handler: `server/services/handlers/<your_handler>.py`
200
+ - Register in: `server/services/node_executor.py` registry
201
+ - Guide: [node_creation.md](docs-internal/node_creation.md)
202
+
203
+ **Add an LLM provider**
204
+ - OpenAI-compatible (DeepSeek, Kimi, Mistral pattern): config-only in `server/config/llm_defaults.json`
205
+ - Custom-SDK provider: new file in `server/services/llm/providers/`, branch in `factory.py`
206
+ - Frontend node: `client/src/nodeDefinitions/aiModelNodes.ts`
207
+ - Guide: [native_llm_sdk.md](docs-internal/native_llm_sdk.md)
208
+
209
+ **Add a dual-purpose tool (workflow node + AI tool)**
210
+ - Mark node `group: ['category', 'tool']`
211
+ - Pydantic schema in `server/services/ai.py` (`_get_tool_schema`)
212
+ - Dispatch in `server/services/handlers/tools.py`
213
+ - Guide: [dual_purpose_tool_node_creation.md](docs-internal/dual_purpose_tool_node_creation.md)
214
+
215
+ **Add a specialized AI agent**
216
+ - `client/src/nodeDefinitions/specializedAgentNodes.ts`
217
+ - Add to `SPECIALIZED_AGENT_TYPES` in `server/constants.py`
218
+ - Register in `server/services/node_executor.py`
219
+ - Guide: [specialized_agent_node_creation.md](docs-internal/specialized_agent_node_creation.md)
220
+
221
+ **Add a skill**
222
+ - New folder under `server/skills/<category>/`
223
+ - Create `SKILL.md` with YAML frontmatter + markdown body
224
+ - Guide: [GUIDE.md](server/skills/GUIDE.md)
225
+
226
+ **Add an event-based trigger**
227
+ - Register in `TRIGGER_REGISTRY` in `server/services/event_waiter.py`
228
+ - Add a filter builder in the same file
229
+ - Frontend node with `group: ['category', 'trigger']`
230
+ - Guide: [event_waiter_system.md](docs-internal/event_waiter_system.md)
231
+
232
+ **Integrate a new external service with OAuth**
233
+ - Reference implementation: Google Workspace (7 nodes sharing one OAuth connection)
234
+ - Guide: [new_service_integration.md](docs-internal/new_service_integration.md)
235
+
236
+ ### Local Dev Quick Reference
237
+
238
+ ```bash
239
+ npm run dev # start frontend + backend + Temporal + WhatsApp
240
+ npm run stop # stop everything
241
+ npx tsc --noEmit # typecheck client (from client/)
242
+ python -m pytest # run backend tests (from server/)
243
+ npm run build # production build
244
+ ```
245
+
246
+ Full setup and scripts reference: [SETUP.md](docs-internal/SETUP.md) - [SCRIPTS.md](docs-internal/SCRIPTS.md)
247
+
248
+ <details>
249
+ <summary><b>Full Documentation Index</b></summary>
250
+
251
+ | Document | Description |
252
+ |---|---|
253
+ | [DESIGN.md](docs-internal/DESIGN.md) | Execution engine architecture, design patterns, execution modes |
254
+ | [TEMPORAL_ARCHITECTURE.md](docs-internal/TEMPORAL_ARCHITECTURE.md) | Distributed execution via Temporal activities |
255
+ | [workflow-schema.md](docs-internal/workflow-schema.md) | Workflow JSON schema and full node catalog (96 nodes) |
256
+ | [ROADMAP.md](docs-internal/ROADMAP.md) | Implementation status and completed phases |
257
+ | [SETUP.md](docs-internal/SETUP.md) | Development environment setup |
258
+ | [SCRIPTS.md](docs-internal/SCRIPTS.md) | npm/shell scripts reference |
259
+ | [server-readme.md](docs-internal/server-readme.md) | Python backend architecture and API |
260
+ | [agent_architecture.md](docs-internal/agent_architecture.md) | AI Agent / Chat Agent skill and tool discovery |
261
+ | [agent_delegation.md](docs-internal/agent_delegation.md) | How delegated agents share context and memory |
262
+ | [agent_teams.md](docs-internal/agent_teams.md) | Agent Teams pattern with `input-teammates` handle |
263
+ | [native_llm_sdk.md](docs-internal/native_llm_sdk.md) | Native LLM SDK layer and provider protocol |
264
+ | [rlm_service.md](docs-internal/rlm_service.md) | Recursive Language Model agent via REPL |
265
+ | [claude_code_agent_architecture.md](docs-internal/claude_code_agent_architecture.md) | Claude Code SDK integration as a specialized agent |
266
+ | [autonomous_agent_creation.md](docs-internal/autonomous_agent_creation.md) | Autonomous agents with Code Mode patterns |
267
+ | [event_waiter_system.md](docs-internal/event_waiter_system.md) | Push-based trigger waiters |
268
+ | [status_broadcaster.md](docs-internal/status_broadcaster.md) | WebSocket broadcaster and 89 handlers |
269
+ | [credentials_encryption.md](docs-internal/credentials_encryption.md) | Fernet + PBKDF2 credentials system |
270
+ | [memory_compaction.md](docs-internal/memory_compaction.md) | Token tracking and model-aware compaction |
271
+ | [pricing_service.md](docs-internal/pricing_service.md) | LLM and API cost tracking |
272
+ | [proxy_service.md](docs-internal/proxy_service.md) | Residential proxy provider management |
273
+ | [ci_cd.md](docs-internal/ci_cd.md) | GitHub Actions workflows |
274
+ | [node_creation.md](docs-internal/node_creation.md) | How to create new nodes |
275
+ | [ai_tool_node_creation.md](docs-internal/ai_tool_node_creation.md) | Creating dedicated AI Agent tool nodes |
276
+ | [specialized_agent_node_creation.md](docs-internal/specialized_agent_node_creation.md) | Creating specialized AI agent nodes |
277
+ | [dual_purpose_tool_node_creation.md](docs-internal/dual_purpose_tool_node_creation.md) | Dual-purpose workflow + tool nodes |
278
+ | [new_service_integration.md](docs-internal/new_service_integration.md) | External service integration guide |
279
+ | [cli_services_integration.md](docs-internal/cli_services_integration.md) | CLI service lifecycle management |
280
+ | [onboarding.md](docs-internal/onboarding.md) | Welcome wizard and replay |
281
+ | [Skill Creation Guide](server/skills/GUIDE.md) | How to create new skills |
282
+
283
+ </details>
package/bin/cli.js CHANGED
@@ -14,10 +14,6 @@ const COMMANDS = {
14
14
  stop: 'Stop all running services',
15
15
  build: 'Build the project for production',
16
16
  clean: 'Clean build artifacts',
17
- 'docker:up': 'Start with Docker Compose',
18
- 'docker:down': 'Stop Docker Compose services',
19
- 'docker:build': 'Build Docker images',
20
- 'docker:logs': 'View Docker logs',
21
17
  help: 'Show this help message',
22
18
  version: 'Show version number',
23
19
  };
@@ -41,8 +37,6 @@ Examples:
41
37
  machina start -v # Production with full logs
42
38
  machina dev # Development with hot-reload
43
39
  machina build # Build for production
44
- machina docker:up # Start with Docker
45
-
46
40
  Documentation: https://docs.zeenie.xyz/
47
41
  `);
48
42
  }