@penadidik/meo-agent 1.2.0
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/CHANGELOG.md +84 -0
- package/LICENSE +24 -0
- package/README.md +483 -0
- package/bin/meo-agent.js +158 -0
- package/developer-kit/README.md +99 -0
- package/developer-kit/developer-kit.sh +108 -0
- package/developer-kit/templates/requirements.md +95 -0
- package/developer-kit/templates/tasks.md +85 -0
- package/developer-kit/templates/tdd.md +128 -0
- package/examples/plugins/meo-agent-logger.js +21 -0
- package/index.js +2 -0
- package/lib/args.js +134 -0
- package/lib/checksum.js +29 -0
- package/lib/config.js +52 -0
- package/lib/doctor.js +84 -0
- package/lib/downloader.js +115 -0
- package/lib/mirror.js +137 -0
- package/lib/plugins.js +93 -0
- package/lib/reporter.js +108 -0
- package/package.json +87 -0
- package/pull_request/README.md +104 -0
- package/pull_request/generate-pr.sh +190 -0
- package/pull_request/templates/basic.md +41 -0
- package/pull_request/templates/hod-review.md +101 -0
- package/pull_request/templates/lead-review.md +83 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.2.0] - 2026-06-19
|
|
11
|
+
|
|
12
|
+
### Added — Final roadmap batch
|
|
13
|
+
- **Checksum verification** (`--sha256 <hash>`) — verifies downloaded file integrity via SHA256, exits with code 2 on mismatch
|
|
14
|
+
- **Mirror mode** (`--mirror` / `-m`) — recursive HTML page mirroring with `--mirror-depth` and `--mirror-limit` controls
|
|
15
|
+
- **Config file support** (`~/.meo-agent.json` or `--config <path>`) — set defaults for timeout, retries, headers, mirror depth, plugins
|
|
16
|
+
- **Plugin architecture** (`lib/plugins.js`) — load JS plugins from `.meo-agent/plugins/`, `~/.meo-agent/plugins/`, or `~/.config/meo-agent/plugins/`
|
|
17
|
+
- **Plugin hooks** — `before_download`, `after_download` for extending behavior
|
|
18
|
+
- **`meo-agent plugins`** — list loaded plugins with version, description, hooks
|
|
19
|
+
- **Example plugin** (`examples/plugins/meo-agent-logger.js`) — logs every download event to stderr
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- CLI restructured into subcommands: `meo-agent <url>`, `meo-agent doctor`, `meo-agent mirror <url>`, `meo-agent plugins`
|
|
23
|
+
- Test suite expanded to 20 assertions covering args parser, checksum, config, plugins
|
|
24
|
+
- Help output reorganized with config-file lookup order and plugin directories
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
- Roadmap item: "Auth via headers" — deferred (not a core wget feature)
|
|
28
|
+
|
|
29
|
+
[Unreleased]: https://github.com/meocode-labs/meo-agent/compare/v1.2.0...HEAD
|
|
30
|
+
[1.2.0]: https://github.com/meocode-labs/meo-agent/compare/v1.1.0...v1.2.0
|
|
31
|
+
[1.1.0]: https://github.com/meocode-labs/meo-agent/compare/v1.0.3...v1.1.0
|
|
32
|
+
|
|
33
|
+
### Added — Roadmap milestones shipped
|
|
34
|
+
- **Progress bar** for large downloads — live `[████░░░░] 50% 1.20 / 2.40 MB` indicator
|
|
35
|
+
- **Resume support** (`--continue`) — picks up partial downloads via HTTP `Range`
|
|
36
|
+
- **Custom output filename** (`-o <name>` / `--output <name>`)
|
|
37
|
+
- **JSON output mode** (`--json`) — structured events for AI agent consumption
|
|
38
|
+
- **`meo-agent doctor`** — environment diagnostics (Node version, disk space, HTTPS/HTTP connectivity)
|
|
39
|
+
- **Quiet mode** (`-q` / `--quiet`)
|
|
40
|
+
- **Configurable timeout** (`--timeout <sec>`)
|
|
41
|
+
- **Modular codebase** — split into `lib/` (args, downloader, reporter, doctor) and `bin/`
|
|
42
|
+
- **Unit tests** — `npm test` runs 11 assertions across args parser, filename helpers, reporter
|
|
43
|
+
- **Build reliability** — workflow now uses `./node_modules/.bin/pkg` directly, eliminating `yao-pkg: not found` errors permanently
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- README rewritten with full option table, JSON event schema, examples
|
|
47
|
+
- Roadmap section updated — 5 items marked shipped
|
|
48
|
+
- Project structure expanded: `bin/`, `lib/`, `test/`
|
|
49
|
+
|
|
50
|
+
## [1.0.3] - 2026-06-19
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
- Rebrand as Meo Code Labs unified AI agent runtime
|
|
54
|
+
- README positioned `meo-agent` as flagship open-source distribution from Meo Code Labs
|
|
55
|
+
- Documentation now covers all bundled tools: `meo-agent` CLI, `developer-kit`, and `generate-pr`
|
|
56
|
+
- Package metadata updated: author `penadidik` (researcher@meocode.com), contributor Meo Code Labs
|
|
57
|
+
|
|
58
|
+
## [1.0.2] - 2026-06-19
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
- Move `@yao-pkg/pkg` from `dependencies` to `devDependencies` (build tool only)
|
|
62
|
+
- Rewrite README.md with full project positioning, feature matrix, install paths, and roadmap
|
|
63
|
+
|
|
64
|
+
## [1.0.1] - 2026-06-19
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
- `yao-pkg: not found` in CI: use `npx @yao-pkg/pkg` to resolve binary via local install
|
|
68
|
+
|
|
69
|
+
## [1.0.0] - 2026-06-19
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
- Initial release of `meo-agent` — wget-like CLI for HTTP/HTTPS downloads
|
|
73
|
+
- Single static binary distribution via `@yao-pkg/pkg` (Windows, macOS, Linux)
|
|
74
|
+
- GitHub Actions workflow for automated releases on push to `master`/`main`
|
|
75
|
+
- Bundled tools: `developer-kit/` (use case scaffolder) and `pull_request/` (PR description generator)
|
|
76
|
+
- Comprehensive release notes auto-generated from commit history and diff stats
|
|
77
|
+
- MIT License, CHANGELOG, .npmignore
|
|
78
|
+
|
|
79
|
+
[Unreleased]: https://github.com/meocode-labs/meo-agent/compare/v1.1.0...HEAD
|
|
80
|
+
[1.1.0]: https://github.com/meocode-labs/meo-agent/compare/v1.0.3...v1.1.0
|
|
81
|
+
[1.0.3]: https://github.com/meocode-labs/meo-agent/compare/v1.0.2...v1.0.3
|
|
82
|
+
[1.0.2]: https://github.com/meocode-labs/meo-agent/compare/v1.0.1...v1.0.2
|
|
83
|
+
[1.0.1]: https://github.com/meocode-labs/meo-agent/compare/v1.0.0...v1.0.1
|
|
84
|
+
[1.0.0]: https://github.com/meocode-labs/meo-agent/releases/tag/v1.0.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Meo Code Labs
|
|
4
|
+
Author: penadidik (https://github.com/penadidik)
|
|
5
|
+
Website: https://meocode.com
|
|
6
|
+
Organization: https://github.com/meocode-labs
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
in the Software without restriction, including without limitation the rights
|
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in all
|
|
16
|
+
copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
# meo-agent
|
|
2
|
+
|
|
3
|
+
> **The AI agent runtime from Meo Code Labs — a unified CLI for downloading files, scaffolding use cases, and auto-generating pull requests.**
|
|
4
|
+
>
|
|
5
|
+
> Built for developers, researchers, and AI-augmented workflows.
|
|
6
|
+
|
|
7
|
+
[](https://github.com/meocode-labs/meo-agent/releases/latest)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://nodejs.org)
|
|
10
|
+
[](https://meocode.com)
|
|
11
|
+
|
|
12
|
+
`meo-agent` is a lightweight, **multi-tool AI agent runtime** distributed by [Meo Code Labs](https://meocode.com). It is designed to be a single, well-maintained entry point that bundles several developer utilities used across AI-assisted workflows:
|
|
13
|
+
|
|
14
|
+
| Tool | Purpose |
|
|
15
|
+
|------|---------|
|
|
16
|
+
| **meo-agent** (this repo) | Wget-like CLI — download any file via HTTP/HTTPS as a single static binary |
|
|
17
|
+
| **developer-kit** | Auto-scaffold `usecase-NNN/` folders (`requirements.md`, `tasks.md`, `tdd.md`) from a brief |
|
|
18
|
+
| **generate-pr** | Auto-generate pull request descriptions from git diffs (`basic`, `lead`, `hod` review levels) |
|
|
19
|
+
|
|
20
|
+
> These companion tools live as modules inside this repository (`developer-kit/`, `pull_request/`) and are also exposed as opencode slash commands (`/developer-kit`, `/generate-pr`).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Table of Contents
|
|
25
|
+
|
|
26
|
+
- [About Meo Code Labs](#about-meo-code-labs)
|
|
27
|
+
- [Why meo-agent?](#why-meo-agent)
|
|
28
|
+
- [Tools Bundled](#tools-bundled)
|
|
29
|
+
- [1. meo-agent (CLI)](#1-meo-agent-cli)
|
|
30
|
+
- [2. developer-kit](#2-developer-kit)
|
|
31
|
+
- [3. generate-pr](#3-generate-pr)
|
|
32
|
+
- [Installation](#installation)
|
|
33
|
+
- [Usage by Tool](#usage-by-tool)
|
|
34
|
+
- [Build from Source](#build-from-source)
|
|
35
|
+
- [Project Structure](#project-structure)
|
|
36
|
+
- [Maintainers](#maintainers)
|
|
37
|
+
- [License](#license)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## About Meo Code Labs
|
|
42
|
+
|
|
43
|
+
[Meo Code Labs](https://meocode.com) is a research-driven software organization focused on **AI-augmented developer tooling**. We build small, dependable utilities that fit naturally into the workflow of engineers and AI agents alike.
|
|
44
|
+
|
|
45
|
+
- 🌐 Website: [https://meocode.com](https://meocode.com)
|
|
46
|
+
- 🧑💻 Lead Maintainer: [@penadidik](https://github.com/penadidik)
|
|
47
|
+
- 🏢 Organization: [github.com/meocode-labs](https://github.com/meocode-labs)
|
|
48
|
+
- 📦 Repositories: [github.com/meocode-labs](https://github.com/meocode-labs)
|
|
49
|
+
|
|
50
|
+
If you use our tools in research or production, we'd love to hear from you.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Why meo-agent?
|
|
55
|
+
|
|
56
|
+
Most developer utilities either:
|
|
57
|
+
|
|
58
|
+
- Are buried inside monolith frameworks
|
|
59
|
+
- Require Node.js on every target machine
|
|
60
|
+
- Have inconsistent semantics across platforms
|
|
61
|
+
- Don't ship as static binaries
|
|
62
|
+
|
|
63
|
+
`meo-agent` from Meo Code Labs takes a different approach:
|
|
64
|
+
|
|
65
|
+
- **Zero external runtime** — packaged as a single static binary
|
|
66
|
+
- **Predictable behavior** — same semantics on Windows, macOS, and Linux
|
|
67
|
+
- **Bundled toolchain** — multiple agents in one repository
|
|
68
|
+
- **Opencode-native** — slash-command integration out of the box
|
|
69
|
+
- **Research-grade** — designed to be auditable, minimal, and scriptable by AI agents
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Tools Bundled
|
|
74
|
+
|
|
75
|
+
### 1. meo-agent (CLI)
|
|
76
|
+
|
|
77
|
+
The flagship tool: a wget clone built from Node.js core modules only.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
meo-agent https://example.com/file.zip
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Features:
|
|
84
|
+
|
|
85
|
+
- HTTP & HTTPS support
|
|
86
|
+
- Auto-detected output filename from URL path (`-o` to override)
|
|
87
|
+
- Streaming writes — no full buffering in memory
|
|
88
|
+
- Progress bar to stderr (`[████░░░░] 50% 1.20/2.40 MB`)
|
|
89
|
+
- Resume interrupted downloads (`-c` / `--continue`)
|
|
90
|
+
- SHA256 checksum verification (`--sha256`)
|
|
91
|
+
- Mirror mode (`-m` / `--mirror`) with depth & limit controls
|
|
92
|
+
- JSON output mode (`--json`) for AI agent consumption
|
|
93
|
+
- Environment diagnostics (`meo-agent doctor`)
|
|
94
|
+
- Plugin system (`meo-agent plugins`) with `before_download` / `after_download` hooks
|
|
95
|
+
- Config file (`~/.meo-agent.json`) for default settings
|
|
96
|
+
- Cross-platform static binary (no Node.js install required on target)
|
|
97
|
+
|
|
98
|
+
**Source:** [`index.js`](index.js) · **Packaging:** [`@yao-pkg/pkg`](https://github.com/yao-pkg/pkg)
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### 2. developer-kit
|
|
103
|
+
|
|
104
|
+
> *Scaffold a complete use case from a single brief.*
|
|
105
|
+
|
|
106
|
+
Located in [`developer-kit/`](developer-kit/). Generates a folder `usecase-NNN/` containing three structured documents from a one-sentence brief:
|
|
107
|
+
|
|
108
|
+
| File | Contents |
|
|
109
|
+
|------|----------|
|
|
110
|
+
| `requirements.md` | Functional & non-functional requirements, acceptance criteria, assumptions, constraints |
|
|
111
|
+
| `tasks.md` | 5-phase task breakdown (Discovery, Design, Implementation, Quality, Release) |
|
|
112
|
+
| `tdd.md` | Test matrix, edge cases, performance tests, security tests, CI/CD integration |
|
|
113
|
+
|
|
114
|
+
**Usage:**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
S=~/Developer/meocode/meo-agent/developer-kit/developer-kit.sh
|
|
118
|
+
"$S" ./docs "Add login with OAuth2"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Counter logic auto-detects `usecase-NNN` directories and increments to the next available number. Supports explicit numbering, custom paths, and interactive TUI prompts.
|
|
122
|
+
|
|
123
|
+
Full docs: [`developer-kit/README.md`](developer-kit/README.md)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### 3. generate-pr
|
|
128
|
+
|
|
129
|
+
> *Auto-generate a pull request description from your git diff — at the review depth you need.*
|
|
130
|
+
|
|
131
|
+
Located in [`pull_request/`](pull_request/). Two-phase workflow:
|
|
132
|
+
|
|
133
|
+
1. **Metadata phase** (script) — auto-fills repo, branch, file list, diff stat, and commits
|
|
134
|
+
2. **Analysis phase** (AI / manual) — fills in `<!-- REVIEW:* -->` placeholders for `lead` / `hod` review levels
|
|
135
|
+
|
|
136
|
+
**Usage:**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
S=~/Developer/meocode/meo-agent/pull_request/generate-pr.sh
|
|
140
|
+
|
|
141
|
+
# Basic PR description (default)
|
|
142
|
+
"$S"
|
|
143
|
+
|
|
144
|
+
# Lead-level review
|
|
145
|
+
"$S" lead improvements/pickup-report/08062026
|
|
146
|
+
|
|
147
|
+
# HOD-level review with PR number
|
|
148
|
+
"$S" hod request/SCA-Ticketing/17062026 515
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Outputs to `pull_request/output/<app_name>/pull_request_<datetime>.md` with auto-suffix to prevent overwrites.
|
|
152
|
+
|
|
153
|
+
Full docs: [`pull_request/README.md`](pull_request/README.md)
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Installation
|
|
158
|
+
|
|
159
|
+
### End Users — Prebuilt Binary (recommended)
|
|
160
|
+
|
|
161
|
+
Download the prebuilt binary from the [**Releases**](../../releases) page.
|
|
162
|
+
|
|
163
|
+
#### Windows
|
|
164
|
+
|
|
165
|
+
```powershell
|
|
166
|
+
# Download meo-agent-win.exe from latest release, then in PowerShell:
|
|
167
|
+
.\meo-agent-win.exe https://example.com/file.zip
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### macOS
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
chmod +x meo-agent-macos
|
|
174
|
+
./meo-agent-macos https://example.com/file.zip
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Linux
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
chmod +x meo-agent-linux
|
|
181
|
+
./meo-agent-linux https://example.com/file.zip
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### via npm
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm install -g @meocode-labs/meo-agent
|
|
188
|
+
meo-agent https://example.com/file.zip
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
> Requires Node.js ≥ 18 on the target machine.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
### Developers — From Source
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
git clone https://github.com/meocode-labs/meo-agent.git
|
|
199
|
+
cd meo-agent
|
|
200
|
+
npm install
|
|
201
|
+
npm link # install meo-agent as a global command
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
After linking, the CLI is available system-wide:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
meo-agent https://example.com/file.zip
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
For the companion tools (`developer-kit`, `generate-pr`), invoke directly from source:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
./developer-kit/developer-kit.sh ./docs "Add login with OAuth2"
|
|
214
|
+
./pull_request/generate-pr.sh
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
For opencode integration, symlink the commands:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
mkdir -p ~/.config/opencode/command
|
|
221
|
+
ln -s $(pwd)/.opencode/developer-kit.md ~/.config/opencode/command/developer-kit.md
|
|
222
|
+
ln -s $(pwd)/.opencode/generate-pr.md ~/.config/opencode/command/generate-pr.md
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Then restart opencode and use `/developer-kit`, `/generate-pr` inside your AI session.
|
|
226
|
+
|
|
227
|
+
To uninstall:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm unlink -g meo-agent
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Usage by Tool
|
|
236
|
+
|
|
237
|
+
### meo-agent CLI
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
meo-agent [options] <URL>
|
|
241
|
+
meo-agent [options] mirror <URL> -o <dir>
|
|
242
|
+
meo-agent [options] doctor
|
|
243
|
+
meo-agent [options] plugins
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Options:**
|
|
247
|
+
|
|
248
|
+
| Flag | Description |
|
|
249
|
+
|------|-------------|
|
|
250
|
+
| `-o, --output <name>` | Save to a custom filename (or directory for `mirror`) |
|
|
251
|
+
| `-c, --continue` | Resume a partial download via HTTP `Range` |
|
|
252
|
+
| `-m, --mirror` | Mirror mode — recursively download HTML pages + linked assets |
|
|
253
|
+
| `--mirror-depth <N>` | Max recursion depth for mirror mode (default: 2) |
|
|
254
|
+
| `--mirror-limit <N>` | Max total pages to mirror (default: 50) |
|
|
255
|
+
| `--sha256 <hash>` | Verify downloaded file matches SHA256 hash |
|
|
256
|
+
| `-j, --json` | Emit machine-readable JSON events to stdout |
|
|
257
|
+
| `-q, --quiet` | Suppress progress output, only print errors |
|
|
258
|
+
| `--timeout <sec>` | Network timeout in seconds (default: 30) |
|
|
259
|
+
| `--config <path>` | Load config from custom JSON path |
|
|
260
|
+
| `--list-plugins` | List loaded plugins and exit |
|
|
261
|
+
| `-V, --version` | Print version and exit |
|
|
262
|
+
| `-h, --help` | Print help and exit |
|
|
263
|
+
|
|
264
|
+
**Examples:**
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Basic download
|
|
268
|
+
meo-agent https://github.com/meocode-labs/meo-agent/archive/refs/heads/main.zip
|
|
269
|
+
|
|
270
|
+
# Custom output filename
|
|
271
|
+
meo-agent -o backup.zip https://example.com/file.zip
|
|
272
|
+
|
|
273
|
+
# Verify SHA256 checksum
|
|
274
|
+
meo-agent --sha256=abc123... https://example.com/file.zip
|
|
275
|
+
|
|
276
|
+
# Mirror a docs site
|
|
277
|
+
meo-agent --mirror --mirror-depth 3 -o ./docs https://docs.example.com/
|
|
278
|
+
|
|
279
|
+
# Resume an interrupted download
|
|
280
|
+
meo-agent --continue https://example.com/large-file.iso
|
|
281
|
+
|
|
282
|
+
# JSON output for AI agents (pipe to jq)
|
|
283
|
+
meo-agent --json https://example.com/data.json | jq
|
|
284
|
+
|
|
285
|
+
# Quiet mode (errors only)
|
|
286
|
+
meo-agent --quiet https://example.com/file.zip
|
|
287
|
+
|
|
288
|
+
# Environment diagnostics
|
|
289
|
+
meo-agent doctor
|
|
290
|
+
|
|
291
|
+
# List loaded plugins
|
|
292
|
+
meo-agent plugins
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**JSON event schema** (emitted one per line when `--json` is set):
|
|
296
|
+
|
|
297
|
+
```json
|
|
298
|
+
{"event":"start","url":"...","output":"...","ts":1700000000000}
|
|
299
|
+
{"event":"progress","received":1024,"total":2048,"percent":50,"ts":...}
|
|
300
|
+
{"event":"finish","output":"...","bytes":2048,"elapsed_sec":1.23,"status":200,"resumed":false}
|
|
301
|
+
{"event":"error","message":"...","code":"...","ts":...}
|
|
302
|
+
{"event":"checksum_ok","expected":"...","actual":"..."}
|
|
303
|
+
{"event":"mirror_done","count":12,"results":[...]}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Config file format** (`~/.meo-agent.json`):
|
|
307
|
+
|
|
308
|
+
```json
|
|
309
|
+
{
|
|
310
|
+
"timeout": 60,
|
|
311
|
+
"retries": 3,
|
|
312
|
+
"headers": { "Authorization": "Bearer ..." },
|
|
313
|
+
"outputDir": "~/Downloads",
|
|
314
|
+
"mirrorMaxDepth": 3,
|
|
315
|
+
"mirrorLimit": 100
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Plugin example** (`~/.meo-agent/plugins/my-plugin.js`):
|
|
320
|
+
|
|
321
|
+
```js
|
|
322
|
+
module.exports = {
|
|
323
|
+
name: 'my-plugin',
|
|
324
|
+
version: '1.0.0',
|
|
325
|
+
hooks: [
|
|
326
|
+
{
|
|
327
|
+
name: 'before_download',
|
|
328
|
+
handler: async (ctx) => {
|
|
329
|
+
process.stderr.write(`Downloading ${ctx.url}...\n`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
};
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### developer-kit
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
developer-kit <docs_dir> "<brief>" [usecase_number]
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
| Argument | Required | Description |
|
|
343
|
+
|----------|----------|-------------|
|
|
344
|
+
| `docs_dir` | Yes | Target directory (auto-created if missing) |
|
|
345
|
+
| `brief` | Yes | One-sentence use case description |
|
|
346
|
+
| `usecase_number` | No | Explicit 3-digit number (auto-incremented if omitted) |
|
|
347
|
+
|
|
348
|
+
### generate-pr
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
generate-pr [type] [branch] [pr_number]
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
| Argument | Required | Default | Description |
|
|
355
|
+
|----------|----------|---------|-------------|
|
|
356
|
+
| `type` | No | `basic` | `basic` \| `lead` \| `hod` |
|
|
357
|
+
| `branch` | No | current | Target branch |
|
|
358
|
+
| `pr_number` | No | `TBD` | PR number for URL |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Build from Source
|
|
363
|
+
|
|
364
|
+
To produce the static binaries yourself (requires Node.js 18+):
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
git clone https://github.com/meocode-labs/meo-agent.git
|
|
368
|
+
cd meo-agent
|
|
369
|
+
npm install
|
|
370
|
+
npm run build
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Output inside `dist/`:
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
dist/meo-agent-win.exe
|
|
377
|
+
dist/meo-agent-macos
|
|
378
|
+
dist/meo-agent-linux
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
To release a new version:
|
|
382
|
+
|
|
383
|
+
1. Bump `package.json` → `"version": "1.0.3"`
|
|
384
|
+
2. Commit and push to `main`
|
|
385
|
+
3. GitHub Actions auto-creates `v1.0.3` with binaries and full release notes
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Project Structure
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
meo-agent/
|
|
393
|
+
├── .github/workflows/release.yml # Auto-build & release on push to main
|
|
394
|
+
├── bin/
|
|
395
|
+
│ └── meo-agent.js # CLI entry point
|
|
396
|
+
├── lib/ # Core modules
|
|
397
|
+
│ ├── args.js # Argument parser
|
|
398
|
+
│ ├── checksum.js # SHA256 verification
|
|
399
|
+
│ ├── config.js # Config file loader
|
|
400
|
+
│ ├── doctor.js # Environment diagnostics
|
|
401
|
+
│ ├── downloader.js # HTTP/HTTPS download logic
|
|
402
|
+
│ ├── mirror.js # Recursive mirror mode
|
|
403
|
+
│ ├── plugins.js # Plugin manager
|
|
404
|
+
│ └── reporter.js # Output (human + JSON)
|
|
405
|
+
├── examples/plugins/
|
|
406
|
+
│ └── meo-agent-logger.js # Example plugin
|
|
407
|
+
├── developer-kit/ # Use case scaffolder (bash + templates)
|
|
408
|
+
│ ├── developer-kit.sh
|
|
409
|
+
│ └── templates/{requirements,tasks,tdd}.md
|
|
410
|
+
├── pull_request/ # PR description generator (bash + templates)
|
|
411
|
+
│ ├── generate-pr.sh
|
|
412
|
+
│ └── templates/{basic,lead-review,hod-review}.md
|
|
413
|
+
├── test/
|
|
414
|
+
│ └── test.js # Unit tests (20 assertions)
|
|
415
|
+
├── index.js # Backward-compat entry → bin/meo-agent.js
|
|
416
|
+
├── package.json
|
|
417
|
+
├── README.md
|
|
418
|
+
├── CHANGELOG.md
|
|
419
|
+
├── LICENSE
|
|
420
|
+
└── .npmignore
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## Maintainers
|
|
426
|
+
|
|
427
|
+
| Role | Maintainer |
|
|
428
|
+
|------|------------|
|
|
429
|
+
| Lead Maintainer & Researcher | [@penadidik](https://github.com/penadidik) |
|
|
430
|
+
| Organization | [Meo Code Labs](https://github.com/meocode-labs) |
|
|
431
|
+
| Website | [https://meocode.com](https://meocode.com) |
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Contributing
|
|
436
|
+
|
|
437
|
+
We welcome pull requests, bug reports, and feature proposals. For substantial changes, please open an issue first.
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
git clone https://github.com/YOUR-USERNAME/meo-agent.git
|
|
441
|
+
cd meo-agent
|
|
442
|
+
npm install
|
|
443
|
+
npm link
|
|
444
|
+
npm run build
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/):
|
|
448
|
+
|
|
449
|
+
- `feat:` — new feature
|
|
450
|
+
- `fix:` — bug fix
|
|
451
|
+
- `chore:` — maintenance / tooling
|
|
452
|
+
- `docs:` — documentation only
|
|
453
|
+
- `refactor:` — code change with no behavior change
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## Roadmap
|
|
458
|
+
|
|
459
|
+
All initial roadmap items shipped.
|
|
460
|
+
|
|
461
|
+
- [x] Progress bar for large downloads — **shipped in 1.1.0**
|
|
462
|
+
- [x] Resume support (`--continue`) — **shipped in 1.1.0**
|
|
463
|
+
- [x] Custom output filename (`--output <name>`) — **shipped in 1.1.0**
|
|
464
|
+
- [x] JSON output mode for AI agents (`--json`) — **shipped in 1.1.0**
|
|
465
|
+
- [x] `meo-agent doctor` — environment diagnostics — **shipped in 1.1.0**
|
|
466
|
+
- [x] Checksum verification (`--sha256`) — **shipped in 1.2.0**
|
|
467
|
+
- [x] Mirror mode (recursive, with depth & limit) — **shipped in 1.2.0**
|
|
468
|
+
- [x] Config file (`~/.meo-agent.json`) — **shipped in 1.2.0**
|
|
469
|
+
- [x] Plugin architecture with hooks (`before_download`, `after_download`) — **shipped in 1.2.0**
|
|
470
|
+
|
|
471
|
+
Future ideas:
|
|
472
|
+
- [ ] WebDAV / S3 backend support
|
|
473
|
+
- [ ] Interactive TUI mode (`meo-agent tui`)
|
|
474
|
+
- [ ] Auto-update via GitHub Releases API
|
|
475
|
+
- [ ] Multi-URL batch downloads (`meo-agent urls.txt`)
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## License
|
|
480
|
+
|
|
481
|
+
[MIT](LICENSE) © 2026 [Meo Code Labs](https://meocode.com). Maintained by [@penadidik](https://github.com/penadidik).
|
|
482
|
+
|
|
483
|
+
> *"Small tools, well made, used often."* — Meo Code Labs
|