@j-o-r/hello-dave 0.0.5 → 0.0.7
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 +13 -26
- package/README.md +161 -522
- package/README.md.bak +144 -449
- package/{examples → agents}/ask_agent.js +5 -5
- package/{examples → agents}/codeserver.sh +14 -14
- package/{examples → agents}/daisy_agent.js +5 -5
- package/{examples → agents}/docs_agent.js +5 -5
- package/{examples → agents}/gpt_agent.js +5 -5
- package/{examples → agents}/grok_agent.js +5 -5
- package/agents/memory_agent.js +263 -0
- package/{examples → agents}/npm_agent.js +5 -5
- package/{examples → agents}/prompt_agent.js +5 -5
- package/agents/spawn_agent.js +137 -0
- package/{examples → agents}/test_agent.js +6 -8
- package/{examples → agents}/todo_agent.js +5 -5
- package/bin/codeDave +58 -0
- package/bin/dave.js +114 -96
- package/lib/AgentClient.js +111 -67
- package/lib/AgentManager.js +111 -80
- package/lib/AgentServer.js +144 -104
- package/lib/Cli.js +126 -93
- package/lib/Prompt.js +38 -5
- package/lib/Session.js +102 -79
- package/lib/ToolSet.js +79 -60
- package/lib/fafs.js +54 -19
- package/lib/genericToolset.js +109 -213
- package/lib/wsCli.js +50 -19
- package/lib/wsIO.js +11 -17
- package/package.json +2 -2
- package/types/AgentClient.d.ts +69 -35
- package/types/AgentManager.d.ts +50 -56
- package/types/AgentServer.d.ts +63 -16
- package/types/Cli.d.ts +56 -10
- package/types/Prompt.d.ts +36 -4
- package/types/Session.d.ts +23 -9
- package/types/ToolSet.d.ts +49 -32
- package/types/fafs.d.ts +68 -25
- package/types/wsCli.d.ts +14 -0
- package/types/wsIO.d.ts +9 -5
- package/utils/search_sessions.sh +100 -53
- package/README.md.backup +0 -269
- package/README.md.bak.1774780058 +0 -338
- package/README.md.bak2 +0 -531
- package/bin/spawn_agent.js +0 -293
- package/docs.bak.1774780058/agent-manager.md +0 -167
- package/docs.bak.1774780058/agent-manager.md.bak +0 -137
- package/docs.bak.1774780058/agent-manager.md.bak2 +0 -157
- package/docs.bak.1774780058/codeserver-pattern.md +0 -191
- package/docs.bak.1774780058/path-resolution-best-practices.md +0 -104
- package/docs.bak.1774780058/project-overview.md +0 -67
- package/docs.bak.1774780058/project-overview.md.bak +0 -67
- package/docs.bak.1774780058/prompt-class.md +0 -141
- package/docs.bak.1774780058/prompt-class.md.bak +0 -142
- package/docs.bak.1774780058/tools-syntax-validation.md +0 -121
- package/docs.bak.1774780058/tools-syntax-validation.md.bak2 +0 -125
- package/docs.bak.1774780058/tools-syntax-validation.md.bak3 +0 -125
- package/docs.bak.1774780058/tools-syntax-validation.md.bak4 +0 -106
- package/docs.bak.1774780058/tools-syntax-validation.md.bak_path +0 -106
- package/docs.bak.1774780058/toolset.md +0 -164
- package/docs.bak.1774780058/toolset.md.bak +0 -94
- package/docs.bak.1774780058/toolset.md.bak3 +0 -161
- package/docs.bak.1774780058/toolset.md.bak4 +0 -161
- package/docs.bak.1774780058/toolset.md.bak5 +0 -161
- package/docs.bak.1774780058/toolset.md.bak6 +0 -163
- package/docs.bak.1774780058/toolset.md.bak_path +0 -163
- package/docs.bak.1774780058/toolset.md.bak_syntax +0 -161
- package/docs.bak.1774780058/xai-responses.md +0 -111
- package/docs.bak.1774780058/xai-responses.md.bak +0 -107
- package/docs.bak.1774780058/xai-responses.md.bak2 +0 -107
- package/docs.bak.1774780058/xai_collections.md +0 -106
- package/examples/memory_agent.js +0 -152
- package/examples.bak.1774780058/ask_agent.js +0 -114
- package/examples.bak.1774780058/code_agent.js +0 -149
- package/examples.bak.1774780058/coderev_agent.js +0 -72
- package/examples.bak.1774780058/codeserver.sh +0 -47
- package/examples.bak.1774780058/daisy_agent.js +0 -177
- package/examples.bak.1774780058/docs_agent.js +0 -119
- package/examples.bak.1774780058/gpt_agent.js +0 -109
- package/examples.bak.1774780058/grok_agent.js +0 -98
- package/examples.bak.1774780058/memory_agent.js +0 -112
- package/examples.bak.1774780058/npm_agent.js +0 -175
- package/examples.bak.1774780058/prompt_agent.js +0 -112
- package/examples.bak.1774780058/readme_agent.js +0 -144
- package/examples.bak.1774780058/spawn_agent.js +0 -263
- package/examples.bak.1774780058/test_agent.js +0 -162
- package/examples.bak.1774780058/todo_agent.js +0 -138
- package/lib/genericToolset.js.bak_syntax +0 -402
- package/scenarios.bak.1774780058/data/eval_node_message.json +0 -9
- package/scenarios.bak.1774780058/data/hist_oa.json +0 -66
- package/scenarios.bak.1774780058/data/o3_response1.json +0 -96
- package/scenarios.bak.1774780058/data/oa_reasoning_parse.json +0 -112
- package/scenarios.bak.1774780058/data/tool_oa.json +0 -96
- package/scenarios.bak.1774780058/data/tool_xai.json +0 -59
- package/scenarios.bak.1774780058/data/tool_xai2.json +0 -40
- package/scenarios.bak.1774780058/data/xai-response-1.json +0 -59
- package/scenarios.bak.1774780058/data/xai-response-2.json +0 -10
- package/scenarios.bak.1774780058/data/xai_reasoning_tools_resp.json +0 -59
- package/scenarios.bak.1774780058/data/xai_search_response.json +0 -58
- package/scenarios.bak.1774780058/environment.js +0 -10
- package/scenarios.bak.1774780058/example.js +0 -17
- package/scenarios.bak.1774780058/genericToolset.test.js +0 -182
- package/scenarios.bak.1774780058/grok.js +0 -113
- package/scenarios.bak.1774780058/memory-tools.js +0 -51
- package/scenarios.bak.1774780058/openai-o3.js +0 -137
- package/scenarios.bak.1774780058/openai-prompt.js +0 -155
- package/scenarios.bak.1774780058/openai-session.js +0 -148
- package/scenarios.bak.1774780058/openai.js +0 -102
- package/scenarios.bak.1774780058/prompt.js +0 -118
- package/scenarios.bak.1774780058/promptFishbowl.js +0 -76
- package/scenarios.bak.1774780058/search.brave.com.js +0 -25
- package/scenarios.bak.1774780058/sh.js +0 -15
- package/scenarios.bak.1774780058/test-wsio.js +0 -26
- package/scenarios.bak.1774780058/testToolset.js +0 -42
- package/scenarios.bak.1774780058/toolset.js +0 -16
- package/scenarios.bak.1774780058/toolset.test.js +0 -141
- package/scenarios.bak.1774780058/write_file_syntax.test.js +0 -145
- package/scenarios.bak.1774780058/write_file_validation/README.md +0 -30
- package/scenarios.bak.1774780058/write_file_validation/bad.js +0 -3
- package/scenarios.bak.1774780058/write_file_validation/good.js +0 -4
- package/scenarios.bak.1774780058/write_file_validation/test.sh +0 -43
- package/scenarios.bak.1774780058/wsClient.js +0 -69
- package/scenarios.bak.1774780058/xai_responses.integration.test.js +0 -57
- package/scenarios.bak.1774780058/xai_responses.test.js +0 -154
- package/scenarios.bak.1774780058/xaicoll.js +0 -50
- package/scenarios.bak.1774780058/xaifiles.js +0 -48
- /package/{examples → agents}/code_agent.js +0 -0
- /package/{examples → agents}/readme_agent.js +0 -0
package/README.md.bak
CHANGED
|
@@ -1,523 +1,218 @@
|
|
|
1
|
-
#
|
|
1
|
+
# hello-dave
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/%40j-o-r%2Fhello-dave)
|
|
6
|
-
[](https://opensource.org/licenses/Apache-2.0)
|
|
3
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
7
4
|
[](https://nodejs.org/)
|
|
5
|
+
[](https://codeberg.org/duin/hello-dave)
|
|
8
6
|
|
|
9
7
|
## Table of Contents
|
|
10
8
|
|
|
11
9
|
- [Description](#description)
|
|
12
10
|
- [Features](#features)
|
|
11
|
+
- [Folder Structure](#folder-structure)
|
|
13
12
|
- [Installation](#installation)
|
|
14
|
-
- [Quick Start](#quick-start)
|
|
15
13
|
- [Usage](#usage)
|
|
16
|
-
- [
|
|
17
|
-
- [Examples](#examples)
|
|
14
|
+
- [Usage Examples](#usage-examples)
|
|
18
15
|
- [Development](#development)
|
|
19
|
-
- [Changelog](#changelog)
|
|
20
16
|
- [Contributing](#contributing)
|
|
21
17
|
- [License](#license)
|
|
22
|
-
- [TODO Alignment](#todo-alignment)
|
|
23
18
|
|
|
24
19
|
## Description
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
The framework emphasizes ease of use, allowing developers and non-experts alike to rapidly prototype and deploy specialized agents. Core integrations include unified xAI Grok API access, WebSocket (WS) networking with secret-based authentication, and direct CLI/cron messaging (no heartbeat/ping mechanism required). Example scripts like `readmeDave`, `todoDave`, and others have been reorganized into the `examples/` folder for clarity.
|
|
21
|
+
**hello-dave** is an ESM (ECMAScript Modules) toolkit for building AI agents with unified access to endpoints from Grok (xAI), OpenAI, and Anthropic. It provides CLI tools for interacting with agents locally or via WebSocket servers, along with pre-built agent scripts for various tasks like code generation, documentation, testing, and more.
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
The project emphasizes modular agent management, tool integration (e.g., web search, file operations), and session handling with memory and caching. With v0.0.8, enhanced portability allows spawning agents in isolated environments like `/tmp` while maintaining tool functionality relative to the current working directory (CWD).
|
|
31
24
|
|
|
32
25
|
## Features
|
|
33
26
|
|
|
34
|
-
- **Unified
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **WebSocket
|
|
38
|
-
- **
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
- **Unified API Access**: Seamless integration with xAI (Grok), OpenAI, and Anthropic models.
|
|
28
|
+
- **CLI Tools**: `dave` for querying agents, `agentDave` for spawning servers, `codeDave` for code servers.
|
|
29
|
+
- **Agent Scripts**: Specialized agents for code, docs, npm, todo, readme, memory, and more.
|
|
30
|
+
- **WebSocket Support**: Connect to remote agent servers for interactive or one-shot interactions.
|
|
31
|
+
- **Toolsets**: Built-in tools for search, file I/O, email, and custom toolcalls.
|
|
32
|
+
- **Session Management**: Cache history, search sessions, reset, and inspect logs.
|
|
33
|
+
- **ESM-First**: Modern Node.js modules with TypeScript definitions.
|
|
34
|
+
- **Portable Agent Spawning**: `spawn_agent.js` enables creating and deploying agents anywhere (project dirs or fresh `/tmp`). Supports auto-deploy in existing projects (detects `./agents/*.js`), manual code+bash in isolated setups. Tools adapt to CWD for portability. Hybrid modes combine server/client for chaining. See [docs/prompt/spawn_agent.md](docs/prompt/spawn_agent.md) for blueprint and validation.
|
|
35
|
+
|
|
36
|
+
## Folder Structure
|
|
37
|
+
|
|
38
|
+
- **bin/**: Executables for CLI tools.
|
|
39
|
+
- `dave.js`: Main CLI for asking agents or connecting to WebSocket servers.
|
|
40
|
+
- `spawn_agent.js`: Spawns agent instances (binary: `agentDave`).
|
|
41
|
+
- `codeDave`: Launches code servers (via PM2 clusters).
|
|
42
|
+
|
|
43
|
+
- **agents/**: Agent scripts (`*_agent.js`) for specific tasks. These can be run directly with `node agents/<script>.js`.
|
|
44
|
+
- `ask_agent.js`: General query agent.
|
|
45
|
+
- `code_agent.js`: Code generation and execution agent (serves as main server in code clusters).
|
|
46
|
+
- `daisy_agent.js`: Specialized agent (details in script).
|
|
47
|
+
- `docs_agent.js`: Documentation-focused agent.
|
|
48
|
+
- `gpt_agent.js`: OpenAI GPT integration agent.
|
|
49
|
+
- `grok_agent.js`: xAI Grok-specific agent.
|
|
50
|
+
- `memory_agent.js`: Agent with enhanced memory and context handling.
|
|
51
|
+
- `npm_agent.js`: NPM package management agent.
|
|
52
|
+
- `prompt_agent.js`: Prompt engineering and testing agent.
|
|
53
|
+
- `readme_agent.js`: README.md management agent.
|
|
54
|
+
- `spawn_agent.js`: Agent spawner (also in bin/). Creates portable CLI/WS agents + PM2 launchers. Validates/tests/deploys to `./agents/<name>.js`. Supports hybrid server/client modes. Portable to `/tmp` (tools follow CWD). Blueprint: [docs/prompt/spawn_agent.md](docs/prompt/spawn_agent.md).
|
|
55
|
+
- `test_agent.js`: Testing and validation agent.
|
|
56
|
+
- `todo_agent.js`: TODO list and task management agent.
|
|
57
|
+
- `codeserver.sh`: Shell script for launching PM2-based code server clusters (uses agents above).
|
|
58
|
+
|
|
59
|
+
- **lib/**: Core library modules (e.g., `index.js`, `wsCli.js`, `wsIO.js`, API integrations).
|
|
60
|
+
- **scenarios/**: Test and example scenarios (e.g., toolset tests, integration scripts).
|
|
61
|
+
- **types/**: TypeScript definitions.
|
|
62
|
+
- **utils/**: Utility scripts (e.g., session management, testing).
|
|
63
|
+
- **docs/**: Additional documentation, including agent blueprints (e.g., [prompt/spawn_agent.md](docs/prompt/spawn_agent.md)).
|
|
64
|
+
- **release/**: Build artifacts.
|
|
65
|
+
|
|
66
|
+
Other files: `package.json`, `CHANGELOG.md`, `TODO.md`, `LICENSE`.
|
|
44
67
|
|
|
45
68
|
## Installation
|
|
46
69
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
npm install @j-o-r/hello-dave
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
For global access to CLI tools (including `dave` from `bin/dave.js`):
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npm install -g @j-o-r/hello-dave
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Set your API keys via environment variables (only set what you need):
|
|
60
|
-
- `XAIKEY` for xAI Grok
|
|
61
|
-
- `ANTHKEY` for Anthropic Claude
|
|
62
|
-
- `OPENAIKEY` for OpenAI GPT
|
|
63
|
-
- `BRAVESEARCHKEY` for web search (optional)
|
|
64
|
-
|
|
65
|
-
Create a cache directory for sessions:
|
|
66
|
-
```bash
|
|
67
|
-
mkdir .cache
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Quick Start
|
|
71
|
-
|
|
72
|
-
1. Set an API key (e.g., for Grok):
|
|
73
|
-
```bash
|
|
74
|
-
export XAIKEY=your_xai_api_key
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
2. Use the core CLI utility `bin/dave.js` (not a full agent) for interactive queries or management:
|
|
78
|
-
```bash
|
|
79
|
-
npx @j-o-r/hello-dave dave --ask
|
|
80
|
-
```
|
|
81
|
-
- Launches an interactive agent session using default Grok tools. Use `Alt+d` to exit, `Alt+r` to reset.
|
|
82
|
-
- Example: Ask questions about anything; it uses xAI Grok by default with web search and X search tools.
|
|
70
|
+
1. **Prerequisites**: Node.js >= 20.
|
|
83
71
|
|
|
84
|
-
|
|
72
|
+
2. **Local Development**:
|
|
85
73
|
```bash
|
|
86
|
-
|
|
74
|
+
git clone https://codeberg.org/duin/hello-dave.git
|
|
75
|
+
cd hello-dave
|
|
76
|
+
npm install
|
|
87
77
|
```
|
|
88
|
-
- Provides a direct response using the specified model (e.g., `--model grok-4`).
|
|
89
78
|
|
|
90
|
-
|
|
79
|
+
3. **Global CLI Installation** (for `dave`, `agentDave`, `codeDave`):
|
|
91
80
|
```bash
|
|
92
|
-
|
|
81
|
+
npm install -g .
|
|
82
|
+
# Or link for dev: npm run link-self
|
|
93
83
|
```
|
|
94
84
|
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
npx @j-o-r/hello-dave spawn_agent
|
|
98
|
-
```
|
|
99
|
-
- Interactive: Follow prompts to create a new agent script in `bin/` (e.g., `bin/myagent.js`).
|
|
100
|
-
- Portable to any project (auto-installs deps like `@j-o-r/hello-dave`):
|
|
101
|
-
```bash
|
|
102
|
-
npx @j-o-r/hello-dave spawn_agent --cwd ~/my-project
|
|
103
|
-
```
|
|
104
|
-
- Supports one-shot: `echo "Create code-review agent" | npx @j-o-r/hello-dave spawn_agent --cwd ~/proj`.
|
|
105
|
-
- Aligns with CodeServer pattern for multi-agent setups (see Usage/Examples).
|
|
106
|
-
|
|
107
|
-
`bin/dave.js` also supports cache operations like `--list` (list sessions), `--search "query"`, `--clear`, and `--inspect path/to/log.ndjson`. For multi-agent clusters, use `--code` (see Usage).
|
|
85
|
+
4. **API Keys**: Set environment variables (e.g., `XAIKEY` for xAI, `OPENAI_API_KEY` for OpenAI).
|
|
108
86
|
|
|
109
87
|
## Usage
|
|
110
88
|
|
|
111
|
-
###
|
|
89
|
+
### CLI Tools
|
|
112
90
|
|
|
113
|
-
|
|
91
|
+
- **dave**: Interact with agents locally or remotely.
|
|
92
|
+
- Local query: `dave --ask "Predict the weather"`
|
|
93
|
+
- One-shot remote: `echo "Hello" | dave --connect 'ws://127.0.0.1:8080' --secret '123'`
|
|
94
|
+
- Interactive remote: `dave --connect 'ws://127.0.0.1:8080' --secret '123'`
|
|
95
|
+
- Other: `dave --list` (sessions), `dave --clear` (cache), `dave --help`.
|
|
114
96
|
|
|
115
|
-
- **
|
|
97
|
+
- **agentDave**: Spawn an agent server (powered by `spawn_agent.js`).
|
|
116
98
|
```bash
|
|
117
|
-
#
|
|
118
|
-
npx @j-o-r/hello-dave dave --ask --model grok-4 --temperature 0.2
|
|
119
|
-
|
|
120
|
-
# Piped one-shot
|
|
121
|
-
echo "What is quantum computing?" | npx @j-o-r/hello-dave dave --ask --model grok-4
|
|
99
|
+
agentDave --serve 8080 --secret '123' # Starts WebSocket server
|
|
122
100
|
```
|
|
123
|
-
- Note: Piped input triggers a direct response via `directCall`; without pipe, it launches an interactive CLI session.
|
|
124
|
-
- `--model` option works for both modes (e.g., `grok-4`, `grok-4-1-fast-reasoning`).
|
|
125
|
-
- Uses default `AgentManager` with xAI Grok API integration, adds tools like `web_search`, `x_search`, `open_link`, `send_email`, `history_search`.
|
|
126
|
-
- System prompt emphasizes brief, direct responses with step-by-step reasoning.
|
|
127
101
|
|
|
128
|
-
- **
|
|
102
|
+
- **codeDave**: Launch a PM2 code server cluster.
|
|
129
103
|
```bash
|
|
130
|
-
#
|
|
131
|
-
npx @j-o-r/hello-dave spawn_agent --model grok-4-fast-reasoning --temperature 0.7
|
|
132
|
-
|
|
133
|
-
# Portable to another project (switches cwd, auto-deps)
|
|
134
|
-
npx @j-o-r/hello-dave spawn_agent --cwd ../other-proj
|
|
135
|
-
|
|
136
|
-
# One-shot for quick generation
|
|
137
|
-
echo "name=coderev desc=Git diff analyzer tools=read_file execute_bash_script web_search" | npx @j-o-r/hello-dave spawn_agent --cwd ~/my-proj
|
|
104
|
+
codeDave 8080 --secret '123' # Or: dave --code 8080 --secret '123'
|
|
138
105
|
```
|
|
139
|
-
- Creates production-ready CLI/WS agents (`bin/<name>.js`) supporting CLI, server (`--serve`), client (`--connect`), and hybrid modes.
|
|
140
|
-
- Generates multi-agent CodeServer launchers (`examples/<Name>Server`) using PM2 for persistent networked setups (main server + sub-agents).
|
|
141
|
-
- **Portable**: Runs via `npx` anywhere—no local install needed. Auto-inspects project, installs `@j-o-r/hello-dave @j-o-r/sh` if missing, validates ESM code (`node --check`), tests deployment.
|
|
142
|
-
- Aligns with CodeServer pattern: Self-contained Bash launchers for PM2-managed multi-agents (e.g., code review + TODO + NPM agents).
|
|
143
|
-
- Requires `XAIKEY`; uses online repo docs (https://codeberg.org/duin/hello-dave) for portability.
|
|
144
|
-
- Example output: Deploys `bin/coderev_agent.js`, tests it, provides server/client usage guide.
|
|
145
|
-
|
|
146
|
-
- **WebSocket Client Mode** (Utility UI for connecting to servers, with secrets for secure networking):
|
|
147
|
-
```bash
|
|
148
|
-
# Interactive connection
|
|
149
|
-
Utility: npx @j-o-r/hello-dave dave --connect ws://localhost:8080 --secret "mysecret"
|
|
150
|
-
|
|
151
|
-
# Piped one-shot (direct CLI/cron messaging, no heartbeat needed)
|
|
152
|
-
echo "Predict the weather" | npx @j-o-r/hello-dave dave --connect ws://localhost:8080 --secret "mysecret"
|
|
153
|
-
echo "user_reset" | npx @j-o-r/hello-dave dave --connect ws://localhost:8080 --secret "mysecret"
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
- **CodeServer Launch Mode** (One-Command Multi-Agent Cluster via PM2; Utility Only, No --serve):
|
|
157
|
-
```bash
|
|
158
|
-
# Global (requires global install)
|
|
159
|
-
dave --code 8080 --secret mysecret
|
|
160
|
-
|
|
161
|
-
# Portable via npx (no local install needed)
|
|
162
|
-
npx @j-o-r/hello-dave dave --code 8080 --secret mysecret
|
|
163
|
-
```
|
|
164
|
-
- Launches `examples/codeserver.sh` with the provided port (1024-65535) and secret (min 3 chars), starting a PM2-managed CodeServer cluster.
|
|
165
|
-
- Cluster setup: Main `code_agent.js` as WS server on the port (exposes code tools); client agents (`todo_agent.js`, `readme_agent.js`, `npm_agent.js`, `docs_agent.js`, `test_agent.js`, `memory_agent.js`) connect as clients, gaining access to the servers tools.
|
|
166
|
-
- Requires PM2 installed globally: `npm i -g pm2`.
|
|
167
|
-
- **Portability Preference**: For maximum shell portability across environments, run the script directly: `./examples/codeserver.sh 8080 mysecret`. The `--code` flag is a Node.js wrapper for convenience in global/npx usage, auto-resolving paths.
|
|
168
|
-
- Monitors processes with PM2 prefix (e.g., `project_code_agent_8080`). Stop via `pm2 delete project_*_8080`.
|
|
169
|
-
- Aligns with Startup Modes (utility launch only; no direct --serve in dave.js—use full agents for servers).
|
|
170
|
-
- Connect to the cluster: `npx @j-o-r/hello-dave dave --connect ws://127.0.0.1:8080 --secret mysecret` (interactive or piped).
|
|
171
|
-
|
|
172
|
-
- **Cache Management** (Session maintenance in .cache):
|
|
173
|
-
```bash
|
|
174
|
-
npx @j-o-r/hello-dave dave --list # List sessions
|
|
175
|
-
npx @j-o-r/hello-dave dave --search "AI agents" # Search history
|
|
176
|
-
npx @j-o-r/hello-dave dave --clear # Clear cache
|
|
177
|
-
npx @j-o-r/hello-dave dave --inspect path/to/log.ndjson # Inspect log
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
For custom full agents (with prompts/tools/server support), use `AgentManager` programmatically (see Examples) or scripts like `examples/npm_agent.js`.
|
|
181
|
-
|
|
182
|
-
### Programmatic Usage with AgentManager (For Full Agents)
|
|
183
|
-
|
|
184
|
-
```javascript
|
|
185
|
-
import AgentManager from @j-o-r/hello-dave;
|
|
186
|
-
|
|
187
|
-
const agent = new AgentManager({ name: MyAgent, secret: optional_secret });
|
|
188
|
-
agent.setup({
|
|
189
|
-
prompt: You are a helpful assistant...,
|
|
190
|
-
api: xai, // Uses unified xAI Grok API access
|
|
191
|
-
options: { model: grok-4, temperature: 0.7, tools: [{ type: web_search }] },
|
|
192
|
-
toolsetMode: auto,
|
|
193
|
-
contextWindow: 500000
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
agent.addGenericToolcall(execute_bash_script); // Post-setup generics
|
|
197
|
-
agent.addGenericToolcall(read_file);
|
|
198
|
-
agent.addGenericToolcall(write_file);
|
|
199
|
-
agent.addGenericToolcall(memory_recall); // Persist/recall tasks, errors, prefs in .cache/memory.ndjson
|
|
200
|
-
agent.addGenericToolcall(memory_write); // Optimizes loops and long-running sessions
|
|
201
|
-
|
|
202
|
-
await agent.start(); // Interactive CLI
|
|
203
|
-
// Or: await agent.start(undefined, 8000, undefined, Intro, toolName, desc); // WS server
|
|
204
|
-
// Or: const response = await agent.directCall(Query); // One-shot
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
Direct CLI/cron: Pipe inputs to custom scripts for non-interactive use. WS supports secrets for authentication; no heartbeat required due to event-driven messaging.
|
|
208
|
-
|
|
209
|
-
The `memory_recall` and `memory_write` tools, available when `toolsetMode: auto, enable agents to persist and recall tasks, errors, and preferences in `.cache/memory.ndjson`. This optimizes iterative loops and long-running sessions by maintaining state across interactions without relying solely on session history.
|
|
210
|
-
|
|
211
|
-
## Startup Modes
|
|
212
|
-
|
|
213
|
-
This section unifies the startup modes for full agents (e.g., `examples/npm_agent.js`) and the programmatic `AgentManager.start(serve, connect, cliIntro, tool_call_name, tool_call_description)`. These modes are standardized across agents generated by `spawn_agent` and align with the [AgentManager docs](docs/agent-manager.md). The CLI utility `bin/dave.js` supports only interactive ask, WS client connect, spawn_agent, cache management, and CodeServer launch via --code (no custom prompts/tools or --serve; utility-only).
|
|
214
|
-
|
|
215
|
-
All modes are cron-friendly with no heartbeat/ping required—agents respond directly to event-driven inputs. In WS modes (--serve, --connect, hybrid), positional arguments are ignored; use interactive CLI or piped inputs for messaging. Agent names and tool names must follow the strict lowercase naming rules: `/^[a-z_0-9_]{2,}$/` (no uppercase, hyphens, or specials) for filesystem/tool safety—see [AgentManager docs](docs/agent-manager.md).
|
|
216
|
-
|
|
217
|
-
**Note on dave.js --code**: This utility flag launches a multi-agent CodeServer cluster via PM2 (shell portability preferred via direct `examples/codeserver.sh`), aligning with hybrid WS patterns but without direct --serve support in the utility itself. Use full agents for standalone servers.
|
|
218
|
-
|
|
219
|
-
### AgentManager.start() Options Explained
|
|
220
|
-
The `start()` method is the smart launcher for all modes. It accepts up to 5 arguments in order:
|
|
221
|
-
- `serve` (number | undefined): Port for WS **server** mode (e.g., 8080). Exposes the agent as a remote tool via `ws://127.0.0.1:[port]/ws`. Requires `--secret` for client authentication. Runs indefinitely until Ctrl+C. See [AgentManager docs](docs/agent-manager.md) for server config.
|
|
222
|
-
- `connect` (string | undefined): WS URL for **client** mode (e.g., `ws://127.0.0.1:8080/ws`). Connects to a remote server to gain access to its tools. Launches interactive CLI after connection.
|
|
223
|
-
- `cliIntro` (string | undefined): Custom welcome message for interactive CLI mode (e.g., "NPM Agent ready. Ask about modules.").
|
|
224
|
-
- `tool_call_name` (string | undefined): **Required for server mode**. The tool name this agent exposes (must match naming regex `/^[a-z_0-9_]{2,}$/`). E.g., `npm_module_inspector`. Used when clients attach.
|
|
225
|
-
- `tool_call_description` (string | undefined): **Required for server mode**. Detailed description of the exposed tool (e.g., "Inspects NPM modules in node_modules/ using bash and cache.").
|
|
226
|
-
|
|
227
|
-
**Mode Determination**:
|
|
228
|
-
- If `serve` provided: Starts WS server (exposes tools).
|
|
229
|
-
- If `connect` provided: Starts WS client (attaches to remote, gains tools).
|
|
230
|
-
- If both: Hybrid mode (serves locally while using remote tools).
|
|
231
|
-
- If neither: Interactive CLI mode.
|
|
232
|
-
- For one-shot (non-start): Use `directCall(input)` directly (positional arg in scripts).
|
|
233
|
-
|
|
234
|
-
**Shared Notes**:
|
|
235
|
-
- `--secret [string]` (min 3 chars): Shared auth token. Servers reject mismatched clients; use the same for chains/networks.
|
|
236
|
-
- Other options: `--model [grok-4-fast-reasoning|...]`, `--temperature [-2 to +2]`, `--tokens`, `--top_p`, `--context [250000]`.
|
|
237
|
-
- Positional args ignored in WS modes (use CLI/pipes instead).
|
|
238
|
-
- No heartbeat: Event-driven responses.
|
|
239
|
-
- For multi-agent chaining, see [CodeServer pattern](docs/codeserver-pattern.md).
|
|
240
|
-
|
|
241
|
-
### 1. Direct Call (One-Shot, Positional Arg Only)
|
|
242
|
-
For single responses via positional query. Ideal for scripts/cron jobs. Bypasses CLI/WS; uses `agent.directCall(input)`. (Not available in `dave` utility for custom agents; use full agents or `--ask` for defaults.)
|
|
243
|
-
|
|
244
|
-
**CLI Example (Full Agent, e.g., npm_agent.js)**:
|
|
245
|
-
```bash
|
|
246
|
-
./examples/npm_agent.js "What modules are installed?" [--model grok-4]
|
|
247
|
-
```
|
|
248
|
-
- Input: Positional string (trimmed). If empty/missing, falls to interactive CLI or help.
|
|
249
|
-
|
|
250
|
-
**Programmatic (AgentManager)**:
|
|
251
|
-
```javascript
|
|
252
|
-
import { AgentManager } from @j-o-r/hello-dave ;
|
|
253
|
-
const agent = new AgentManager({ name: npm_agent });
|
|
254
|
-
await agent.setup({ /* prompt, api, options, toolsetMode, contextWindow */ });
|
|
255
|
-
const response = await agent.directCall(What modules are installed? );
|
|
256
|
-
console.log(response);
|
|
257
|
-
```
|
|
258
|
-
- Pair with `readIn()` from `@j-o-r/sh` for piped stdin detection in scripts (e.g., `echo "query" | script.js`).
|
|
259
|
-
|
|
260
|
-
**Utility (dave.js for Default Queries)**:
|
|
261
|
-
```bash
|
|
262
|
-
echo "Explain quantum computing" | npx @j-o-r/hello-dave dave --ask [--model grok-4]
|
|
263
|
-
```
|
|
264
|
-
- Triggers `directCall` on piped input.
|
|
265
|
-
|
|
266
|
-
### 2. Interactive CLI (No Positional Arg)
|
|
267
|
-
Launches ongoing conversation session with REPL-like input (multi-turn, until Ctrl+C or `Alt+d`).
|
|
268
|
-
|
|
269
|
-
**CLI Example (Full Agent)**:
|
|
270
|
-
```bash
|
|
271
|
-
./examples/npm_agent.js [--model grok-4]
|
|
272
|
-
```
|
|
273
|
-
- No positional: Starts `agent.start()` with CLI intro.
|
|
274
|
-
|
|
275
|
-
**Programmatic**:
|
|
276
|
-
```javascript
|
|
277
|
-
await agent.start(undefined, undefined, NPM Agent ready. Ask about modules or tools. ); // Interactive CLI with custom intro
|
|
278
|
-
```
|
|
279
|
-
- Uses `cliIntro` for welcome message. Supports history, reset (`Alt+r`).
|
|
280
|
-
|
|
281
|
-
**Utility (dave.js)**:
|
|
282
|
-
```bash
|
|
283
|
-
npx @j-o-r/hello-dave dave --ask
|
|
284
|
-
```
|
|
285
|
-
- Default agent; no custom tools/prompts.
|
|
286
|
-
|
|
287
|
-
### 3. WS Server (--serve [port])
|
|
288
|
-
Starts a WebSocket server at `ws://127.0.0.1:[port]/ws` to expose the agent as a remote tool for clients. Runs indefinitely. (Not supported in `dave` utility.)
|
|
289
|
-
|
|
290
|
-
**CLI Example (Full Agent)**:
|
|
291
|
-
```bash
|
|
292
|
-
./examples/npm_agent.js --serve 8080 [--secret mysecret] [--model grok-4]
|
|
293
|
-
```
|
|
294
|
-
- Exposes `tool_call_name` (e.g., `npm_module_inspector`) for remote calls.
|
|
295
|
-
|
|
296
|
-
**Programmatic**:
|
|
297
|
-
```javascript
|
|
298
|
-
await agent.start(8080, undefined, undefined, npm_module_inspector , NPM modules expert using bash and cache in node_modules/.); // Server on 8080; secret optional but recommended
|
|
299
|
-
```
|
|
300
|
-
- `tool_call_name` and `tool_call_description` required for exposure. See [AgentManager docs](docs/agent-manager.md) for full server config, including reset propagation.
|
|
301
106
|
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
# Interactive
|
|
305
|
-
npx @j-o-r/hello-dave dave --connect ws://127.0.0.1:8080 --secret mysecret
|
|
306
|
-
# Or full agent: ./examples/other_agent.js --connect ws://127.0.0.1:8080 --secret mysecret
|
|
307
|
-
```
|
|
308
|
-
- Clients gain the servers tools (e.g., call `npm_module_inspector` in their prompts).
|
|
309
|
-
|
|
310
|
-
### 4. WS Client (--connect [ws_url])
|
|
311
|
-
Connects to a remote WS server as a client, gaining access to its tools, then launches interactive CLI.
|
|
312
|
-
|
|
313
|
-
**CLI Example (Full Agent)**:
|
|
314
|
-
```bash
|
|
315
|
-
./examples/npm_agent.js --connect ws://127.0.0.1:8080/ws --secret mysecret [--model grok-4]
|
|
316
|
-
```
|
|
317
|
-
- Attaches to server; uses remote tools in local sessions.
|
|
318
|
-
|
|
319
|
-
**Programmatic**:
|
|
320
|
-
```javascript
|
|
321
|
-
await agent.start(undefined, ws://127.0.0.1:8080/ws , undefined, undefined, undefined ); // Client mode; secret required if server uses one
|
|
322
|
-
```
|
|
323
|
-
- After connection, interactive CLI starts. For one-shot: Pipe to script (uses `directCall` with remote tools).
|
|
107
|
+
### Running Agents
|
|
324
108
|
|
|
325
|
-
|
|
109
|
+
Run agent scripts directly:
|
|
326
110
|
```bash
|
|
327
|
-
#
|
|
328
|
-
|
|
329
|
-
# Piped one-shot (cron-friendly)
|
|
330
|
-
echo "Use remote NPM tool to list modules" | npx @j-o-r/hello-dave dave --connect ws://localhost:8080 --secret "mysecret"
|
|
111
|
+
node agents/spawn_agent.js --serve 8080 --secret '123' # Spawn server
|
|
112
|
+
node agents/code_agent.js --connect 'ws://127.0.0.1:8080' --secret '123' # Client mode
|
|
331
113
|
```
|
|
332
114
|
|
|
333
|
-
|
|
334
|
-
Serves tools locally (on local port) while connecting as a client to a remote server (gains remote tools). No positional arg; launches interactive CLI. Ideal for agent chains/networks. (Not supported in `dave` utility.)
|
|
115
|
+
For full options, see script headers or run with `--help`.
|
|
335
116
|
|
|
336
|
-
|
|
337
|
-
```bash
|
|
338
|
-
./examples/npm_agent.js --serve 8081 --connect ws://otherhost:8080/ws [--secret mysecret]
|
|
339
|
-
```
|
|
340
|
-
- Local server on 8081 (exposes local tools); client to remote (uses remote tools).
|
|
117
|
+
### Programmatic Usage
|
|
341
118
|
|
|
342
|
-
|
|
119
|
+
Import and use in your Node.js app:
|
|
343
120
|
```javascript
|
|
344
|
-
|
|
121
|
+
import { AgentManager } from '@j-o-r/hello-dave';
|
|
122
|
+
// Setup and run agent...
|
|
345
123
|
```
|
|
346
|
-
- Custom handling for secrets (use same or per-mode). See [AgentManager docs](docs/agent-manager.md) for hybrid details and error handling.
|
|
347
|
-
|
|
348
|
-
**Notes**: Positional args ignored. Use for distributed setups (e.g., NPM agent serves locally but uses a code agents tools remotely). Monitor with tools like `netstat` or PM2 in CodeServer.
|
|
349
|
-
|
|
350
|
-
This section completes the unified documentation for startup modes, aligned with `npm_agent.js` help output and `AgentManager` API. For more, see [docs/agent-manager.md](docs/agent-manager.md) and [examples/](examples/).
|
|
351
|
-
|
|
352
|
-
## Examples
|
|
353
|
-
|
|
354
|
-
Example scripts (e.g., `readme_agent.js` for README management, `todo_agent.js` for task handling, `spawn_agent.js` for agent creation) are now organized in the `examples/` folder. These demonstrate specialized full agents using `AgentManager`, xAI Grok API integration, and tools. **Note**: Agent names and filenames follow lowercase naming rules per [docs/agent-manager.md](docs/agent-manager.md) (regex `/^[a-z_0-9_]{2,}$/` for safety in folders, tools, and filesystems—no uppercase, hyphens, or specials).
|
|
355
|
-
|
|
356
|
-
- **Link to Examples Folder**: Explore [examples/](examples/) for full scripts like `daisy_agent.js` (music agent), `code_agent.js` (code review), `npm_agent.js` (NPM inspector).
|
|
357
|
-
|
|
358
|
-
In custom agents, consider adding `memory_recall` and `memory_write` tools to enable state persistence for complex workflows, such as tracking progress in multi-step tasks or storing user preferences across sessions.
|
|
359
124
|
|
|
360
|
-
###
|
|
125
|
+
### spawn_agent.js Specifics (v0.0.8 Portability Ready)
|
|
361
126
|
|
|
362
|
-
|
|
127
|
+
`spawn_agent.js` (executable as `agentDave`) creates and deploys portable agents in CLI, WebSocket server, client, or **hybrid** modes (server + client for tool chaining). It fetches live prompts from [docs/prompt/spawn_agent.md](docs/prompt/spawn_agent.md) and validates new agents via blueprint (temp files, syntax checks, grep for modes/tools).
|
|
363
128
|
|
|
364
|
-
|
|
129
|
+
- **Modes**:
|
|
130
|
+
- **Direct (One-Shot)**: Positional input, e.g., `node agents/spawn_agent.js "Create a tester"`.
|
|
131
|
+
- **Interactive CLI**: No input; runs REPL-like session.
|
|
132
|
+
- **Server**: `--serve <port>` – Exposes as remote tool (e.g., for other agents to call `spawn_agent`).
|
|
133
|
+
- **Client**: `--connect <ws_url>` – Connects to remote server for tool access.
|
|
134
|
+
- **Hybrid**: `--serve <port> --connect <ws_url>` – Serves locally while using remote tools.
|
|
365
135
|
|
|
366
|
-
**
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
./examples/codeserver.sh 8080 mysecret
|
|
371
|
-
|
|
372
|
-
# Convenience via dave.js utility (global or npx)
|
|
373
|
-
dave --code 8080 --secret mysecret
|
|
374
|
-
npx @j-o-r/hello-dave dave --code 8080 --secret mysecret
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
Monitor with `pm2 list` and stop via `pm2 delete <name>` (e.g., `pm2 delete project_*_8080`).
|
|
378
|
-
|
|
379
|
-
**Connect via CLI utility (interactive or piped):**
|
|
380
|
-
```bash
|
|
381
|
-
Utility: npx @j-o-r/hello-dave dave --connect ws://127.0.0.1:8080/ws --secret mysecret
|
|
382
|
-
# Or for one-shot: echo "Review this code" | npx @j-o-r/hello-dave dave --connect ws://127.0.0.1:8080/ws --secret mysecret
|
|
383
|
-
```
|
|
136
|
+
- **Portability**:
|
|
137
|
+
- **In Project**: Auto-deploys to `./agents/<name>.js` if `./agents/*.js` exist (uses existing structure).
|
|
138
|
+
- **Fresh /tmp**: Manual code generation + bash setup (e.g., `mkdir /tmp/myproj/agents; cd /tmp/myproj; node spawn_agent.js ...`). Tools (e.g., `read_file`) follow CWD, ensuring isolation without fixed paths.
|
|
139
|
+
- Works in any dir; no repo deps beyond Node.js + npm installs.
|
|
384
140
|
|
|
385
|
-
|
|
141
|
+
- **Custom Tools**: Specify in prompt, e.g., "name=coderev, tools=read_file,web_search,execute_bash_script".
|
|
386
142
|
|
|
387
|
-
|
|
143
|
+
For validation/testing: See blueprint in [docs/prompt/spawn_agent.md](docs/prompt/spawn_agent.md) (includes bash examples like `node agents/NEW_AGENT.js --help` or server connect tests).
|
|
388
144
|
|
|
389
|
-
|
|
145
|
+
## Usage Examples
|
|
390
146
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
prompt: You are AgentCreator... [detailed prompt for portability, validation],
|
|
398
|
-
api: xai,
|
|
399
|
-
options: { model: grok-4-fast-reasoning, tools: [{ type: web_search }], reasoning: { effort: high } },
|
|
400
|
-
toolsetMode: auto,
|
|
401
|
-
contextWindow: 500000
|
|
402
|
-
});
|
|
403
|
-
agent.addGenericToolcall(execute_bash_script); // For project inspection
|
|
404
|
-
agent.addGenericToolcall(read_file);
|
|
405
|
-
agent.addGenericToolcall(write_file); // For generating bin/ scripts
|
|
406
|
-
agent.addGenericToolcall(memory_recall); // For recalling previous generations or prefs
|
|
407
|
-
agent.addGenericToolcall(memory_write); // For persisting agent configs or errors
|
|
408
|
-
|
|
409
|
-
await agent.start(); // Guides user to create e.g., bin/myagent.js
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
- Validates generated ESM code with `node --check` and tool rules (xAI natives pre-setup, generics post-setup).
|
|
413
|
-
- Ensures absolute imports for portability.
|
|
414
|
-
|
|
415
|
-
**Example Usage:**
|
|
416
|
-
|
|
417
|
-
```bash
|
|
418
|
-
# Interactive spawning (runs from npm without cloning; current dir)
|
|
419
|
-
npx @j-o-r/hello-dave spawn_agent
|
|
420
|
-
|
|
421
|
-
# Portable to specific project (auto-switches cwd, installs deps if needed)
|
|
422
|
-
npx @j-o-r/hello-dave spawn_agent --cwd ~/my-proj
|
|
423
|
-
|
|
424
|
-
# Piped one-shot for CodeServer launcher (portable, no cloning)
|
|
425
|
-
echo "Generate CodeServer launcher for coderev + tododave" | npx @j-o-r/hello-dave spawn_agent --cwd ~/proj
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
### Snippet: Using xAI Grok API Integration
|
|
147
|
+
- **Direct Spawn (Project)**:
|
|
148
|
+
```bash
|
|
149
|
+
cd hello-dave # Or any project with ./agents/
|
|
150
|
+
node agents/spawn_agent.js "Create code-review agent: name=coderev, desc=Git diff analyzer, tools=read_file,execute_bash_script,web_search"
|
|
151
|
+
# Deploys to ./agents/coderev_agent.js; test: node agents/coderev_agent.js "Review this diff"
|
|
152
|
+
```
|
|
429
153
|
|
|
430
|
-
|
|
154
|
+
- **/tmp Workflow (Portable, Fresh Setup)**:
|
|
155
|
+
```bash
|
|
156
|
+
mkdir -p /tmp/myportable/agents
|
|
157
|
+
cd /tmp/myportable
|
|
158
|
+
# Copy or fetch spawn_agent.js (e.g., curl from repo or npm install @j-o-r/hello-dave)
|
|
159
|
+
npm init -y && npm i @j-o-r/hello-dave @j-o-r/sh
|
|
160
|
+
node spawn_agent.js "Create todo agent: name=todo, desc=Task manager, tools=read_file,write_file"
|
|
161
|
+
# Deploys to ./agents/todo_agent.js; tools use /tmp/myportable as CWD
|
|
162
|
+
node agents/todo_agent.js --serve 8081 --secret abc # Test server mode
|
|
163
|
+
```
|
|
431
164
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
reasoning: { effort: medium, summary: auto } // Chain-of-thought support
|
|
439
|
-
};
|
|
440
|
-
```
|
|
165
|
+
- **Hybrid Mode with Custom Tools**:
|
|
166
|
+
```bash
|
|
167
|
+
node agents/spawn_agent.js --serve 8081 --connect ws://127.0.0.1:8080/ws --secret abc "Spawn a docs agent with custom email tool"
|
|
168
|
+
# Serves on 8081 (exposes new agent), connects to 8080 (gains remote tools like email)
|
|
169
|
+
# Test: In another term, node agents/spawn_agent.js --connect ws://127.0.0.1:8081/ws --secret abc "Use the new docs agent"
|
|
170
|
+
```
|
|
441
171
|
|
|
442
|
-
|
|
172
|
+
- **Spawn a Server**:
|
|
173
|
+
```bash
|
|
174
|
+
node agents/spawn_agent.js --serve 8080 --secret '123'
|
|
175
|
+
# Then connect: echo "Task" | dave --connect 'ws://127.0.0.1:8080' --secret '123'
|
|
176
|
+
```
|
|
443
177
|
|
|
444
|
-
|
|
178
|
+
- **Launch Code Cluster** (includes multiple agents):
|
|
179
|
+
```bash
|
|
180
|
+
node agents/codeserver.sh 8080 '123' # Or use codeDave
|
|
181
|
+
# Connects code_agent, todo_agent, readme_agent, etc., to the server.
|
|
182
|
+
```
|
|
445
183
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
184
|
+
- **Local Agent Query** (no server):
|
|
185
|
+
```bash
|
|
186
|
+
dave --ask --model 'grok-4-1-fast-reasoning' "Write a function"
|
|
187
|
+
```
|
|
450
188
|
|
|
451
|
-
|
|
452
|
-
|
|
189
|
+
- **Custom Agent**:
|
|
190
|
+
```bash
|
|
191
|
+
node agents/docs_agent.js --connect 'ws://127.0.0.1:8080' --secret '123'
|
|
192
|
+
```
|
|
453
193
|
|
|
454
|
-
|
|
455
|
-
./examples/npm_agent.js --serve 8080 # Expose as WS server
|
|
456
|
-
```
|
|
194
|
+
See `scenarios/` for more test scenarios.
|
|
457
195
|
|
|
458
196
|
## Development
|
|
459
197
|
|
|
460
|
-
- **
|
|
461
|
-
- **
|
|
462
|
-
- **
|
|
463
|
-
- **
|
|
464
|
-
|
|
465
|
-
## Changelog
|
|
466
|
-
|
|
467
|
-
### v0.0.4 (Released - April 2026)
|
|
468
|
-
- **Release Preparation Complete**: Updated package.json to version "0.0.4" (pending final commit/tag). Full test suite passed 100% (no regressions in genericToolset.test.js or other scenarios). Types generated and verified.
|
|
469
|
-
- **Agent Standardization**: All 12 example agents (e.g., code_agent.js, readme_agent.js, test_agent.js) now follow unified npm_agent.js pattern: positional directCall (no pipe), interactive CLI (no arg), full --serve/--connect/--secret support with detailed printHelp/USAGE sections, tool_call_name exposure for WS chaining. Syntax validated across all.
|
|
470
|
-
- **Prompt Safeguards**: Added STRICT NO-CODING RULE to non-coding agents (e.g., todo_agent.js, readme_agent.js, docs_agent.js, prompt_agent.js) to prevent misuse of tools like execute_code, write_file, syntax_check. Matches todo_agent.js style; verified no regressions.
|
|
471
|
-
- **Memory Protocol Enhancements**: Updated prompts (e.g., spawn_agent.js, test_agent.js) to mandate memory_recall/write FIRST/LAST for tasks/errors/prefs/decisions, reducing token burn and enabling human handoff. Integrated into workflows for iterative testing and agent generation.
|
|
472
|
-
- **File Renames and Cleanup**: Renamed all examples/ files to *_agent.js (e.g., codedave.js → code_agent.js); updated references in README.md, docs/, TODO.md, package.json. Removed all old "Dave/dave" references (grep -r confirmed zero remnants).
|
|
473
|
-
- **NPM Agent Improvements**: Enhanced prompt with Dependency Strategy (prefer installed modules/native JS/Bash, suggest new deps only as last resort). Added full npm ls -a scanning for subdeps; strict no-installs policy. Vague query handling improved (e.g., auto-cache for tests).
|
|
474
|
-
- **Startup Modes Documentation**: Finalized "## Startup Modes" section in README.md with 5 unified modes (Direct Call, CLI, Server, Client, Hybrid), AgentManager.start() explanations, CLI/programmatic examples, and links to docs/agent-manager.md. Aligned with all agent help outputs.
|
|
475
|
-
- **Test Agent Enhancements**: test_agent.js standardized; prompt updated for Test class usage in scenarios/*.test.js (e.g., toolset.test.js generation/validation). Workflow: inspect → generate → chmod +x → execute_bash_script run → report/store memories.
|
|
476
|
-
- **WS Client Refinements**: lib/wsCli.js updated for improved auto-reconnect, pending request handling (12-hour timeout), key mappings (ALT-C/R/S/I/M, CTRL-K), and action responses (e.g., server_reset, sessionlist). Clipboard copy via xclip; better error logging.
|
|
477
|
-
- **TODO Alignment**: High-priority items cleared (e.g., explain startup modes, agent standardization, prompt updates). No high-priority pending; project reviewed stable as of April 02, 2026.
|
|
478
|
-
- **Other**: Reorganized examples/ folder; enhanced spawn_agent portability (npx --cwd, auto-deps, online repo awareness). Git ahead by 1 commit (cleanup toolset test); ready for v0.0.4 tag/publish.
|
|
479
|
-
|
|
480
|
-
### v0.0.5 (Upcoming - May 2026)
|
|
481
|
-
- **WebSocket Export Refinements**: lib/index.js now exports `wsCli` and `wsIO` for seamless programmatic access and integration (e.g., in bin/dave.js using package imports instead of relative paths). Improves modularity for consumers without breaking existing APIs.
|
|
482
|
-
- **CodeServer Enhancements**: Added --code flag to bin/dave.js for one-command CodeServer launch (global/npx portable). Launches examples/codeserver.sh for PM2-managed multi-agent cluster (code_agent server + todo/readme/npm/docs/test/memory clients). Emphasizes shell script portability; aligns with Startup Modes (utility only, no --serve).
|
|
483
|
-
- **Package Alignment**: Bumped package.json to version "0.0.5" in preparation for release; regenerated types to include new exports and flag support.
|
|
484
|
-
- **Prep Notes**: Git clean required before final bump/tag; full tests/types/docs verified post-updates. Focus on CodeServer integration and portability testing.
|
|
485
|
-
|
|
486
|
-
### v0.0.3 (Previous - March 2026)
|
|
487
|
-
- Initial WS secrets, generic tools, AgentManager refinements.
|
|
488
|
-
- Reorganized examples to `examples/` folder (readmeDave, todoDave, etc.).
|
|
489
|
-
- Enhanced `bin/dave.js` for core utilities: spawning, WS with secrets, direct messaging.
|
|
490
|
-
- Improved xAI Grok API integration; added native tools/reasoning support.
|
|
491
|
-
- Removed heartbeat needs; direct CLI/cron support.
|
|
492
|
-
- Added piped one-shot support to dave --ask.
|
|
493
|
-
|
|
494
|
-
Full history in git tags (recent: cleanup toolset test, TODO status update, fixed test/README, syntax fixes, startup modes explanation).
|
|
198
|
+
- **Build Types**: `npm run types`
|
|
199
|
+
- **Test**: `npm run tests` (runs `utils/test.sh`)
|
|
200
|
+
- **Release**: `npm run release` then `npm run publish`
|
|
201
|
+
- **Local Linking**: `npm run link-self` / `npm run unlink-self`
|
|
495
202
|
|
|
496
|
-
|
|
203
|
+
Use `git status` and `ls` to inspect changes. Ensure ESM compatibility.
|
|
497
204
|
|
|
498
|
-
|
|
205
|
+
## Contributing
|
|
499
206
|
|
|
500
|
-
|
|
501
|
-
2. Self dep `npm run link-self`
|
|
502
|
-
3. Run tests: `npm test`
|
|
503
|
-
4. Generate types: `npm run types`
|
|
504
|
-
5. Report issues: [https://codeberg.org/duin/hello-dave/issues](https://codeberg.org/duin/hello-dave/issues)
|
|
207
|
+
Contributions welcome! Fork the repo, create a branch, and submit a pull request to https://codeberg.org/duin/hello-dave.
|
|
505
208
|
|
|
506
|
-
|
|
209
|
+
- Report bugs: https://codeberg.org/duin/hello-dave/issues
|
|
210
|
+
- Follow Apache-2.0 license.
|
|
507
211
|
|
|
508
212
|
## License
|
|
509
213
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
## TODO Alignment
|
|
513
|
-
|
|
514
|
-
This README aligns with high-priority items from [TODO.md](TODO.md):
|
|
515
|
-
- **v0.0.5 Prep**: Changelog updated for --code flag and CodeServer enhancements; release steps emphasized (version bump to 0.0.5, tests, types, commit/tag, publish). Prep notes expanded for portability and utility alignment.
|
|
516
|
-
- **CodeServer TODOs**: Related tasks marked complete (e.g., --code flag implementation/docs, preference for codeserver.sh portability). No high-priority pending; sub-tasks on testing/alternatives deprioritized.
|
|
517
|
-
- **spawn_agent Enhancements**: Highlighted in Examples with portability and CodeServer awareness.
|
|
518
|
-
- **Agent Standardization and Safeguards**: Integrated into Changelog and Usage notes (from v0.0.4).
|
|
519
|
-
- xAI integration tests/examples: Deferred to post-v0.0.5 (future enhancements).
|
|
520
|
-
- Documentation tasks (e.g., AgentManager internals, WS refinements) completed in Usage/Examples/Changelog.
|
|
521
|
-
- **Status**: No high-priority pending; all tests stable. Focus shifted to v0.0.5 release and future features like xAI files.js integration.
|
|
214
|
+
This project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details.
|
|
522
215
|
|
|
523
|
-
|
|
216
|
+
---
|
|
217
|
+
*Repository: https://codeberg.org/duin/hello-dave*
|
|
218
|
+
---
|