taskmeld 0.1.1 → 0.1.41
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/LICENSE +1 -1
- package/README.md +176 -172
- package/README.zh-CN.md +176 -172
- package/dist/src/app/app-context-env.js +1 -1
- package/dist/src/app/create-app-context.js +3 -3
- package/dist/src/app/data-dir.js +13 -3
- package/dist/src/app/pipeline-config.js +4 -4
- package/dist/src/app/pipeline-registry.js +11 -11
- package/dist/src/app/pipeline-runtime.js +6 -9
- package/dist/src/app/runtime-store.js +3 -3
- package/dist/src/artifacts/artifact-cleanup.js +17 -17
- package/dist/src/artifacts/artifact-index.js +14 -14
- package/dist/src/artifacts/artifact-rebuilder.js +3 -3
- package/dist/src/artifacts/storage-service.js +18 -18
- package/dist/src/cli/bootstrap.js +7 -7
- package/dist/src/cli/commands/agent.js +12 -11
- package/dist/src/cli/commands/artifact.js +31 -30
- package/dist/src/cli/commands/init.js +49 -47
- package/dist/src/cli/commands/pipeline/result.js +9 -8
- package/dist/src/cli/commands/pipeline/selector.js +1 -1
- package/dist/src/cli/commands/pipeline/watch.js +2 -2
- package/dist/src/cli/commands/pipeline.js +54 -53
- package/dist/src/cli/commands/scheduler.js +9 -8
- package/dist/src/cli/commands/server.js +12 -11
- package/dist/src/cli/commands/system.js +4 -3
- package/dist/src/cli/errors.js +2 -2
- package/dist/src/cli/help.js +18 -17
- package/dist/src/cli/i18n.js +46 -0
- package/dist/src/cli/locales/en.json +244 -0
- package/dist/src/cli/locales/zh.json +244 -0
- package/dist/src/cli/output.js +3 -3
- package/dist/src/cli/renderers/engine/markdown.js +1 -1
- package/dist/src/cli/renderers/specs/index.js +1 -1
- package/dist/src/cli/router.js +1 -1
- package/dist/src/cli/server-runtime-client.js +54 -95
- package/dist/src/cli/ui-prompts.js +96 -0
- package/dist/src/cli/ws-runtime-client.js +51 -0
- package/dist/src/gateway/gateway-client.js +4 -4
- package/dist/src/index.js +28 -2
- package/dist/src/logs/run-log-reader.js +1 -1
- package/dist/src/pipeline/agent-activity.js +2 -2
- package/dist/src/pipeline/artifact-storage.js +11 -11
- package/dist/src/pipeline/diagnostics/dependency-diagnostic.js +11 -11
- package/dist/src/pipeline/dispatch/pipeline-inbound-queue.js +2 -2
- package/dist/src/pipeline/execution/group-item-executor.js +1 -1
- package/dist/src/pipeline/execution/node-item-executor.js +3 -3
- package/dist/src/pipeline/execution/node-runner.js +7 -7
- package/dist/src/pipeline/execution/readiness-state.js +1 -1
- package/dist/src/pipeline/execution/reject-handler.js +5 -5
- package/dist/src/pipeline/execution/rejected-artifact-archiver.js +1 -1
- package/dist/src/pipeline/execution/route-item-manager.js +4 -4
- package/dist/src/pipeline/execution/run-abort-controller.js +5 -5
- package/dist/src/pipeline/execution/run-state-helpers.js +2 -2
- package/dist/src/pipeline/execution/service.js +4 -4
- package/dist/src/pipeline/execution/structured-node-runner.js +24 -24
- package/dist/src/pipeline/execution-timeout.js +3 -3
- package/dist/src/pipeline/identity/index.js +3 -3
- package/dist/src/pipeline/item-batch-controller.js +6 -6
- package/dist/src/pipeline/scheduler/dependency-state.js +5 -5
- package/dist/src/pipeline/scheduler-service.js +24 -24
- package/dist/src/pipeline/state-machine.js +2 -2
- package/dist/src/pipeline/structured-output/contract.js +4 -4
- package/dist/src/pipeline/structured-output/index.js +2 -2
- package/dist/src/pipeline/structured-output/parser.js +5 -5
- package/dist/src/pipeline/structured-output/prompt.js +38 -38
- package/dist/src/pipeline/structured-output/waiter.js +6 -6
- package/dist/src/pipeline/template.js +5 -5
- package/dist/src/pipeline/timeline-log-store.js +5 -5
- package/dist/src/pipeline/tool-activity.js +3 -3
- package/dist/src/pipeline/types/pipeline-output.js +1 -1
- package/dist/src/pipeline/workflow/branch-rules.js +19 -19
- package/dist/src/pipeline/workflow/io.js +1 -1
- package/dist/src/pipeline/workflow/normalize.js +18 -18
- package/dist/src/pipeline/workflow/template-mapper.js +3 -3
- package/dist/src/pipeline/workflow/validate.js +39 -39
- package/dist/src/pipeline/workflow-graph.js +10 -10
- package/dist/src/server/http-handler.js +74 -0
- package/dist/src/services/agent-service.js +2 -2
- package/dist/src/services/gateway-read-helpers.js +1 -1
- package/dist/src/services/pipeline-service.js +19 -19
- package/dist/src/services/pipeline-status.js +4 -4
- package/dist/src/services/read-services.js +1 -1
- package/dist/src/services/session-service.js +6 -6
- package/dist/src/services/system-service.js +1 -1
- package/dist/src/transport/ws-broker.js +12 -1
- package/dist/src/transport/ws-handler.js +60 -0
- package/dist/src/transport/ws-methods/agents.js +144 -0
- package/dist/src/transport/ws-methods/artifacts.js +171 -0
- package/dist/src/transport/ws-methods/gateway.js +16 -0
- package/dist/src/transport/ws-methods/logs.js +43 -0
- package/dist/src/transport/ws-methods/pipeline-batch.js +68 -0
- package/dist/src/transport/ws-methods/pipeline-links.js +100 -0
- package/dist/src/transport/ws-methods/pipeline-queue.js +51 -0
- package/dist/src/transport/ws-methods/pipeline-runtime.js +151 -0
- package/dist/src/transport/ws-methods/pipeline-scheduler.js +48 -0
- package/dist/src/transport/ws-methods/pipeline-workflow.js +127 -0
- package/dist/src/transport/ws-methods/pipelines.js +56 -0
- package/dist/src/transport/ws-methods/register-all.js +32 -0
- package/dist/src/transport/ws-methods/sessions.js +154 -0
- package/dist/src/transport/ws-methods/timeline.js +10 -0
- package/dist/src/{server/routes/pipeline-identity.js → transport/ws-methods/utils.js} +14 -9
- package/dist/src/version.js +1 -1
- package/package.json +16 -7
- package/web/dist/assets/agent-DP6TMcLj.js +1 -0
- package/web/dist/assets/agent-DmJHzLyj.js +1 -0
- package/web/dist/assets/artifact-BqnoZy2M.js +1 -0
- package/web/dist/assets/artifact-DfDkgkno.js +1 -0
- package/web/dist/assets/common-DRMTVwE9.js +1 -0
- package/web/dist/assets/common-DeXccbr2.js +1 -0
- package/web/dist/assets/dispatch-CBskGCQI.js +1 -0
- package/web/dist/assets/dispatch-sk4Wp30e.js +1 -0
- package/web/dist/assets/index-C8wTjZvH.css +1 -0
- package/web/dist/assets/index-DYDQZRLk.js +58 -0
- package/web/dist/assets/log-DN8cjb0w.js +1 -0
- package/web/dist/assets/log-HSeA_dYy.js +1 -0
- package/web/dist/assets/modal-BdNai9jf.js +1 -0
- package/web/dist/assets/modal-D9_KDpFD.js +1 -0
- package/web/dist/assets/nav-BmF7oAKg.js +1 -0
- package/web/dist/assets/nav-IjC2xqXQ.js +1 -0
- package/web/dist/assets/node-detail-CENRXcrh.js +1 -0
- package/web/dist/assets/node-detail-bndPr0IM.js +1 -0
- package/web/dist/assets/overview-B87zWAxq.js +1 -0
- package/web/dist/assets/overview-gQvk-NOK.js +1 -0
- package/web/dist/assets/pipeline-D4dSJRDz.js +1 -0
- package/web/dist/assets/pipeline-DZzyOqQa.js +1 -0
- package/web/dist/assets/session-CUWvU14v.js +5 -0
- package/web/dist/assets/session-DQ6UuCaJ.js +5 -0
- package/web/dist/assets/timeline-8y_2_0Em.js +1 -0
- package/web/dist/assets/timeline-CAPsXUTC.js +1 -0
- package/web/dist/index.html +3 -3
- package/dist/src/app/pipeline-plugin-config.js +0 -2
- package/dist/src/server/api-handler.js +0 -163
- package/dist/src/server/http-utils.js +0 -34
- package/dist/src/server/middleware.js +0 -61
- package/dist/src/server/router.js +0 -105
- package/dist/src/server/routes/agents.js +0 -189
- package/dist/src/server/routes/artifacts.js +0 -163
- package/dist/src/server/routes/gateway.js +0 -18
- package/dist/src/server/routes/health.js +0 -16
- package/dist/src/server/routes/logs.js +0 -73
- package/dist/src/server/routes/pipeline-batch.js +0 -163
- package/dist/src/server/routes/pipeline-diagnostics.js +0 -33
- package/dist/src/server/routes/pipeline-links.js +0 -117
- package/dist/src/server/routes/pipeline-outputs.js +0 -27
- package/dist/src/server/routes/pipeline-queue.js +0 -62
- package/dist/src/server/routes/pipeline-runtime.js +0 -162
- package/dist/src/server/routes/pipeline-scheduler.js +0 -69
- package/dist/src/server/routes/pipeline-workflow.js +0 -180
- package/dist/src/server/routes/pipelines.js +0 -96
- package/dist/src/server/routes/sessions.js +0 -244
- package/dist/src/server/routes/timeline.js +0 -14
- package/dist/src/server/serve-static.js +0 -42
- package/web/dist/assets/index-CWnfhkn-.js +0 -65
- package/web/dist/assets/index-gZ0xOfSO.css +0 -1
- /package/dist/src/{server → transport/ws-methods}/types.js +0 -0
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 TaskMeld
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
6
6
|
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
package/README.md
CHANGED
|
@@ -1,172 +1,176 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<strong>English</strong>
|
|
3
|
-
·
|
|
4
|
-
<a href="./README.zh-CN.md">简体中文</a>
|
|
5
|
-
·
|
|
6
|
-
<a href="https://taskmeld.com">Website</a>
|
|
7
|
-
</p>
|
|
8
|
-
|
|
9
|
-
<p align="center">
|
|
10
|
-
<a href="
|
|
11
|
-
<a href="./package.json"><img src="https://img.shields.io/node/v/taskmeld.svg?style=flat-square&color=5fa04e&labelColor=161b22&logo=nodedotjs&logoColor=white" alt="node"/></a>
|
|
12
|
-
</p>
|
|
13
|
-
|
|
14
|
-
<br/>
|
|
15
|
-
|
|
16
|
-
<h3 align="center">Agent Pipeline Orchestration Platform</h3>
|
|
17
|
-
<p align="center">Compose OpenClaw agents into executable pipelines — define, run, observe, and iterate. File-based persistence, zero external database.</p>
|
|
18
|
-
|
|
19
|
-
<br/>
|
|
20
|
-
|
|
21
|
-
> [!TIP]
|
|
22
|
-
> TaskMeld is the pipeline runtime for OpenClaw. OpenClaw handles agent execution; TaskMeld chains agents into DAG workflows with routing, retries, and artifact tracking.
|
|
23
|
-
|
|
24
|
-
<br/>
|
|
25
|
-
|
|
26
|
-
##
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
|
60
|
-
|
|
61
|
-
| `taskmeld pipeline
|
|
62
|
-
| `taskmeld pipeline
|
|
63
|
-
| `taskmeld
|
|
64
|
-
| `taskmeld
|
|
65
|
-
| `taskmeld
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
|
101
|
-
|
|
102
|
-
| `src/
|
|
103
|
-
| `src/
|
|
104
|
-
| `src/
|
|
105
|
-
| `src/
|
|
106
|
-
| `src/
|
|
107
|
-
| `
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
- **
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
npm
|
|
142
|
-
npm run
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
- [
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
<
|
|
171
|
-
|
|
172
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>English</strong>
|
|
3
|
+
·
|
|
4
|
+
<a href="./README.zh-CN.md">简体中文</a>
|
|
5
|
+
·
|
|
6
|
+
<a href="https://taskmeld.com">Website</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/taskmeld"><img src="https://img.shields.io/npm/v/taskmeld.svg?style=flat-square&color=cb3837&labelColor=161b22&logo=npm&logoColor=white" alt="npm version"/></a>
|
|
11
|
+
<a href="./package.json"><img src="https://img.shields.io/node/v/taskmeld.svg?style=flat-square&color=5fa04e&labelColor=161b22&logo=nodedotjs&logoColor=white" alt="node"/></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<br/>
|
|
15
|
+
|
|
16
|
+
<h3 align="center">Agent Pipeline Orchestration Platform</h3>
|
|
17
|
+
<p align="center">Compose OpenClaw agents into executable pipelines — define, run, observe, and iterate. File-based persistence, zero external database.</p>
|
|
18
|
+
|
|
19
|
+
<br/>
|
|
20
|
+
|
|
21
|
+
> [!TIP]
|
|
22
|
+
> TaskMeld is the pipeline runtime for OpenClaw. OpenClaw handles agent execution; TaskMeld chains agents into DAG workflows with routing, retries, and artifact tracking.
|
|
23
|
+
|
|
24
|
+
<br/>
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
- Node ≥ 18
|
|
29
|
+
- OpenClaw ≥ 5.20
|
|
30
|
+
- Windows (macOS and Linux are not yet tested)
|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
~~~bash
|
|
35
|
+
npm install -g taskmeld
|
|
36
|
+
~~~
|
|
37
|
+
|
|
38
|
+
<br/>
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
|
|
42
|
+
~~~bash
|
|
43
|
+
# Initialize — guided setup for OpenClaw Gateway connection
|
|
44
|
+
taskmeld init
|
|
45
|
+
|
|
46
|
+
# Start the backend daemon
|
|
47
|
+
taskmeld server start
|
|
48
|
+
|
|
49
|
+
# List available pipelines
|
|
50
|
+
taskmeld pipeline list
|
|
51
|
+
|
|
52
|
+
# Run a pipeline
|
|
53
|
+
taskmeld pipeline start <pipelineId>
|
|
54
|
+
|
|
55
|
+
# Watch a pipeline run in real time
|
|
56
|
+
taskmeld pipeline watch <pipelineId>
|
|
57
|
+
~~~
|
|
58
|
+
|
|
59
|
+
| Command | When |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `taskmeld pipeline list` | See what pipelines are available |
|
|
62
|
+
| `taskmeld pipeline start <id>` | Kick off a pipeline run |
|
|
63
|
+
| `taskmeld pipeline watch <id>` | Follow a run live via WebSocket |
|
|
64
|
+
| `taskmeld pipeline status <id>` | One-shot status snapshot |
|
|
65
|
+
| `taskmeld pipeline stop <id>` | Stop a running pipeline |
|
|
66
|
+
| `taskmeld pipeline retry-node <id> <node>` | Retry a failed node |
|
|
67
|
+
| `taskmeld server start` | Start the backend daemon |
|
|
68
|
+
| `taskmeld agent list` | List registered agents |
|
|
69
|
+
| `taskmeld artifact list` | Browse pipeline artifacts |
|
|
70
|
+
|
|
71
|
+
Full command reference: `taskmeld --help` or [CLI docs](docs/cli.md).
|
|
72
|
+
|
|
73
|
+
<br/>
|
|
74
|
+
|
|
75
|
+
## Features
|
|
76
|
+
|
|
77
|
+
- **DAG Pipeline Engine** — Node dependency graph, parallel groups, routing branches, per-node retry, state persistence
|
|
78
|
+
- **CLI Tool** — Full lifecycle: list, run, status, stop, retry, watch (WebSocket streaming)
|
|
79
|
+
- **WebSocket API** — Unified WS transport for control and real-time observability
|
|
80
|
+
- **Web Console** — React 19 dashboard with DAG visualization, agent sessions, artifact browser, log viewer
|
|
81
|
+
- **Gateway Integration** — WebSocket client for OpenClaw Gateway auth, event relay, and agent session delegation
|
|
82
|
+
- **File-based Persistence** — All state stored as JSON and log files under `~/.taskmeld/` (`TASKMELD_DATA_DIR` can override it); zero external database
|
|
83
|
+
|
|
84
|
+
<br/>
|
|
85
|
+
|
|
86
|
+
## Architecture
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
CLI (taskmeld) · Web Console (React)
|
|
90
|
+
│ │
|
|
91
|
+
WS RPC ─────── WS Broker
|
|
92
|
+
│ │
|
|
93
|
+
App Assembly (registry + runtime)
|
|
94
|
+
│
|
|
95
|
+
Pipeline Engine (DAG · scheduler · state machine)
|
|
96
|
+
│
|
|
97
|
+
Gateway Client (OpenClaw — auth, events, sessions)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| Directory | Purpose |
|
|
101
|
+
|-----------|---------|
|
|
102
|
+
| `src/cli/` | CLI entry, routing, output rendering |
|
|
103
|
+
| `src/pipeline/` | Pipeline engine (runtime, scheduler, execution, DAG) |
|
|
104
|
+
| `src/server/` | HTTP server (health check + static files) |
|
|
105
|
+
| `src/transport/` | WebSocket transport (broadcast + RPC methods) |
|
|
106
|
+
| `src/gateway/` | External Gateway WebSocket client |
|
|
107
|
+
| `src/services/` | Service layer (read/write facades) |
|
|
108
|
+
| `src/app/` | Application assembly (registry, runtime, context) |
|
|
109
|
+
| `src/artifacts/` | Artifact storage |
|
|
110
|
+
| `src/logs/` | Timeline log storage |
|
|
111
|
+
| `web/` | React management frontend |
|
|
112
|
+
|
|
113
|
+
<br/>
|
|
114
|
+
|
|
115
|
+
## Development Status
|
|
116
|
+
|
|
117
|
+
> [!WARNING]
|
|
118
|
+
> TaskMeld is in its initial testing phase. Features are being built out incrementally, APIs may evolve between releases, and some surfaces are still rough. Production use is at your own discretion — we welcome early adopters and feedback.
|
|
119
|
+
|
|
120
|
+
<br/>
|
|
121
|
+
|
|
122
|
+
## Roadmap
|
|
123
|
+
|
|
124
|
+
### Now
|
|
125
|
+
|
|
126
|
+
- **Pipeline execution** — Node-driven: each node binds an OpenClaw agent. The CLI exposes a full command set that external agents can invoke programmatically (`pipeline list`, `pipeline start`, `pipeline status`, etc.).
|
|
127
|
+
- **Agent management** — Primarily read-only (chat, edit core files like `agent.md` / `memory.md` / `soul.md`). Creating agents and configuring skills still requires switching to OpenClaw directly.
|
|
128
|
+
- **Data storage** — File-based persistence (JSON + log files under `~/.taskmeld/` by default), zero external dependencies.
|
|
129
|
+
|
|
130
|
+
### Next
|
|
131
|
+
|
|
132
|
+
- **Built-in autonomous agent** — A first-class runtime component that owns the full pipeline lifecycle: scheduling runs, creating and reviewing pipeline definitions, triaging failures, and curating artifacts. The goal is to move from *you operate the pipelines* to *the agent operates the pipelines, and you steer*.
|
|
133
|
+
- **Agent lifecycle management** — Agent creation, skill configuration, and core file editing unified within TaskMeld, driven by the built-in agent — no more switching to OpenClaw.
|
|
134
|
+
- **Database-backed storage** — Evolve from file-based persistence to a database storage layer, improving query performance, concurrent access, and scalability while keeping a zero-dependency path for single-node setups.
|
|
135
|
+
|
|
136
|
+
<br/>
|
|
137
|
+
|
|
138
|
+
## Development
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm install # Install dependencies
|
|
142
|
+
npm run build # Build
|
|
143
|
+
npm run typecheck # Type check only
|
|
144
|
+
npm run lint # Lint
|
|
145
|
+
npm test # Run tests
|
|
146
|
+
npm run dev:web # Start frontend dev server (Vite HMR)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Layer | Technology |
|
|
150
|
+
|-------|------------|
|
|
151
|
+
| Language | TypeScript (strict, CommonJS) |
|
|
152
|
+
| Runtime | Node.js |
|
|
153
|
+
| Backend HTTP | Node.js built-in `http` |
|
|
154
|
+
| WebSocket | `ws` |
|
|
155
|
+
| Frontend | React 19 + Vite 7 |
|
|
156
|
+
| CSS | Tailwind CSS 4 |
|
|
157
|
+
| Testing | Vitest |
|
|
158
|
+
| Linting | ESLint 9 |
|
|
159
|
+
|
|
160
|
+
<br/>
|
|
161
|
+
|
|
162
|
+
## Documentation
|
|
163
|
+
|
|
164
|
+
- [CLI Reference](docs/cli.md)
|
|
165
|
+
- [Backend Architecture](docs/backend.md)
|
|
166
|
+
- [Frontend Architecture](docs/web.md)
|
|
167
|
+
- [Pipeline Engine](docs/pipeline/)
|
|
168
|
+
- [Contributing](CONTRIBUTING.md)
|
|
169
|
+
|
|
170
|
+
<br/>
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
<p align="center">
|
|
175
|
+
<sub>MIT — see <a href="./LICENSE">LICENSE</a></sub>
|
|
176
|
+
</p>
|