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.
- package/.env.template +3 -0
- package/README.md +147 -0
- package/bin/cli.js +0 -6
- package/client/dist/assets/{index-Bc9-UZJX.js → index-BqiyQs_N.js} +119 -107
- package/client/dist/index.html +1 -1
- package/client/package.json +1 -1
- package/client/src/Dashboard.tsx +4 -0
- package/client/src/components/AIAgentNode.tsx +18 -0
- package/client/src/components/parameterPanel/InputSection.tsx +30 -2
- package/client/src/components/parameterPanel/MiddleSection.tsx +2 -1
- package/client/src/components/ui/NodeOutputPanel.tsx +50 -0
- package/client/src/components/ui/OutputDisplayPanel.tsx +51 -0
- package/client/src/contexts/WebSocketContext.tsx +1 -1
- package/client/src/nodeDefinitions/filesystemNodes.ts +208 -0
- package/client/src/nodeDefinitions/specializedAgentNodes.ts +29 -1
- package/client/src/nodeDefinitions.ts +7 -1
- package/client/src/services/executionService.ts +6 -1
- package/package.json +1 -11
- package/scripts/utils.js +1 -1
- package/server/config/model_registry.json +52 -74
- package/server/constants.py +1 -0
- package/server/core/config.py +3 -0
- package/server/pyproject.toml +1 -0
- package/server/requirements.txt +3 -0
- package/server/services/agents/__init__.py +9 -0
- package/server/services/agents/adapters.py +171 -0
- package/server/services/agents/constants.py +10 -0
- package/server/services/agents/service.py +266 -0
- package/server/services/ai.py +52 -0
- package/server/services/handlers/__init__.py +18 -0
- package/server/services/handlers/code.py +4 -1
- package/server/services/handlers/deep_agent.py +84 -0
- package/server/services/handlers/document.py +3 -1
- package/server/services/handlers/filesystem.py +156 -0
- package/server/services/handlers/tools.py +42 -16
- package/server/services/node_executor.py +8 -0
- package/server/services/workflow.py +14 -1
- package/server/skills/coding_agent/file-modify-skill/SKILL.md +80 -0
- package/server/skills/coding_agent/file-read-skill/SKILL.md +53 -0
- package/server/skills/coding_agent/fs-search-skill/SKILL.md +92 -0
- package/server/skills/coding_agent/shell-skill/SKILL.md +66 -0
- package/workflows/Zeenie Agent.json +15 -7
- package/client/Dockerfile +0 -70
- package/scripts/docker.js +0 -86
- package/server/.dockerignore +0 -44
- 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
|
+
[](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
|
+
[](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
|
+
[](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
|
+
[](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
|
}
|