daedalus-cli 1.52.2 → 1.53.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/AGENTS.md +9 -21
- package/CHANGELOG.md +50 -1221
- package/CODE_OF_CONDUCT.md +20 -89
- package/CONTRIBUTING.md +41 -137
- package/README.md +11 -2
- package/SECURITY.md +6 -42
- package/dist/agents/roles.js +1 -1
- package/dist/agents/roles.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +46 -0
- package/dist/commands.js.map +1 -1
- package/dist/config/index.d.ts +43 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +27 -1
- package/dist/config/index.js.map +1 -1
- package/dist/docs.test.js +1 -0
- package/dist/docs.test.js.map +1 -1
- package/dist/formatting.d.ts.map +1 -1
- package/dist/formatting.js +4 -6
- package/dist/formatting.js.map +1 -1
- package/dist/tools/builtin/image.d.ts +13 -0
- package/dist/tools/builtin/image.d.ts.map +1 -0
- package/dist/tools/builtin/image.js +174 -0
- package/dist/tools/builtin/image.js.map +1 -0
- package/dist/tools/builtin/image.test.d.ts +2 -0
- package/dist/tools/builtin/image.test.d.ts.map +1 -0
- package/dist/tools/builtin/image.test.js +87 -0
- package/dist/tools/builtin/image.test.js.map +1 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +22 -0
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +1 -85
- package/scripts/postinstall.js +2 -8
package/CODE_OF_CONDUCT.md
CHANGED
|
@@ -1,112 +1,43 @@
|
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
|
2
|
-
|
|
3
|
-
## Our Pledge
|
|
4
|
-
|
|
5
|
-
We as members, contributors, and leaders pledge to make participation in our
|
|
1
|
+
# Contributor Covenant Code of Conduct ## Our Pledge We as members, contributors, and leaders pledge to make participation in our
|
|
6
2
|
community a harassment-free experience for everyone, regardless of age, body
|
|
7
3
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
4
|
identity and expression, level of experience, education, socio-economic status,
|
|
9
5
|
nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
-
and orientation.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
diverse, inclusive, and healthy community.
|
|
14
|
-
|
|
15
|
-
## Our Standards
|
|
16
|
-
|
|
17
|
-
Examples of behavior that contributes to a positive environment for our
|
|
18
|
-
community include:
|
|
19
|
-
|
|
20
|
-
- Demonstrating empathy and kindness toward other people
|
|
6
|
+
and orientation. We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
7
|
+
diverse, inclusive, and healthy community. ## Our Standards Examples of behavior that contributes to a positive environment for our
|
|
8
|
+
community include: - Demonstrating empathy and kindness toward other people
|
|
21
9
|
- Being respectful of differing opinions, viewpoints, and experiences
|
|
22
10
|
- Giving and gracefully accepting constructive feedback
|
|
23
|
-
- Accepting responsibility and apologizing to those affected by our mistakes,
|
|
24
|
-
|
|
25
|
-
- Focusing on what is best not just for us as individuals, but for the
|
|
26
|
-
overall community
|
|
27
|
-
|
|
28
|
-
Examples of unacceptable behavior include:
|
|
29
|
-
|
|
30
|
-
- The use of sexualized language or imagery, and sexual attention or
|
|
31
|
-
advances of any kind
|
|
11
|
+
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
|
12
|
+
- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: - The use of sexualized language or imagery, and sexual attention or advances of any kind
|
|
32
13
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
33
14
|
- Public or private harassment
|
|
34
|
-
- Publishing others' private information, such as a physical or email
|
|
35
|
-
|
|
36
|
-
- Other conduct which could reasonably be considered inappropriate in a
|
|
37
|
-
professional setting
|
|
38
|
-
|
|
39
|
-
## Enforcement Responsibilities
|
|
40
|
-
|
|
41
|
-
Community leaders are responsible for clarifying and enforcing our standards of
|
|
15
|
+
- Publishing others' private information, such as a physical or email address, without their explicit permission
|
|
16
|
+
- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities Community leaders are responsible for clarifying and enforcing our standards of
|
|
42
17
|
acceptable behavior and will take appropriate and fair corrective action in
|
|
43
18
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
44
|
-
or harmful.
|
|
45
|
-
|
|
46
|
-
## Scope
|
|
47
|
-
|
|
48
|
-
This Code of Conduct applies within all community spaces, and also applies when
|
|
49
|
-
an individual is officially representing the community in public spaces.
|
|
50
|
-
|
|
51
|
-
## Enforcement
|
|
52
|
-
|
|
53
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
19
|
+
or harmful. ## Scope This Code of Conduct applies within all community spaces, and also applies when
|
|
20
|
+
an individual is officially representing the community in public spaces. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
54
21
|
reported to the community leaders responsible for enforcement at
|
|
55
22
|
bgill55_dev@voxvivid.com. All complaints will be reviewed and investigated
|
|
56
|
-
promptly and fairly.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Community leaders will follow these Community Impact Guidelines in determining
|
|
61
|
-
the consequences for any action they deem in violation of this Code of Conduct:
|
|
62
|
-
|
|
63
|
-
### 1. Correction
|
|
64
|
-
|
|
65
|
-
**Community Impact:** Use of inappropriate language or other behavior deemed
|
|
66
|
-
unprofessional or unwelcome in the community.
|
|
67
|
-
|
|
68
|
-
**Consequence:** A private, written warning from community leaders, providing
|
|
23
|
+
promptly and fairly. ## Enforcement Guidelines Community leaders will follow these Community Impact Guidelines in determining
|
|
24
|
+
the consequences for any action they deem in violation of this Code of Conduct: ### 1. Correction **Community Impact:** Use of inappropriate language or other behavior deemed
|
|
25
|
+
unprofessional or unwelcome in the community. **Consequence:** A private, written warning from community leaders, providing
|
|
69
26
|
clarity around the nature of the violation and an explanation of why the
|
|
70
|
-
behavior was inappropriate. A public apology may be requested.
|
|
71
|
-
|
|
72
|
-
### 2. Warning
|
|
73
|
-
|
|
74
|
-
**Community Impact:** A violation through a single incident or series of actions.
|
|
75
|
-
|
|
76
|
-
**Consequence:** A warning with consequences for continued behavior. No
|
|
27
|
+
behavior was inappropriate. A public apology may be requested. ### 2. Warning **Community Impact:** A violation through a single incident or series of actions. **Consequence:** A warning with consequences for continued behavior. No
|
|
77
28
|
interaction with the people involved, including unsolicited interaction with
|
|
78
29
|
those enforcing the Code of Conduct, for a specified period of time. This
|
|
79
30
|
includes avoiding interactions in community spaces as well as external channels
|
|
80
31
|
like social media. Violating these terms may lead to a temporary or
|
|
81
|
-
permanent ban.
|
|
82
|
-
|
|
83
|
-
### 3. Temporary Ban
|
|
84
|
-
|
|
85
|
-
**Community Impact:** A serious violation of community standards, including
|
|
86
|
-
sustained inappropriate behavior.
|
|
87
|
-
|
|
88
|
-
**Consequence:** A temporary ban from any sort of interaction or public
|
|
32
|
+
permanent ban. ### 3. Temporary Ban **Community Impact:** A serious violation of community standards, including
|
|
33
|
+
sustained inappropriate behavior. **Consequence:** A temporary ban from any sort of interaction or public
|
|
89
34
|
communication with the community for a specified period of time. No public or
|
|
90
35
|
private interaction with the people involved, including unsolicited interaction
|
|
91
36
|
with those enforcing the Code of Conduct, is allowed during this period.
|
|
92
|
-
Violating these terms may lead to a permanent ban.
|
|
93
|
-
|
|
94
|
-
### 4. Permanent Ban
|
|
95
|
-
|
|
96
|
-
**Community Impact:** Demonstrating a pattern of violation of community
|
|
37
|
+
Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact:** Demonstrating a pattern of violation of community
|
|
97
38
|
standards, including sustained inappropriate behavior, harassment of an
|
|
98
|
-
individual, or aggression toward or disparagement of classes of individuals.
|
|
99
|
-
|
|
100
|
-
**Consequence:** A permanent ban from any sort of public interaction within
|
|
101
|
-
the community.
|
|
102
|
-
|
|
103
|
-
## Attribution
|
|
104
|
-
|
|
105
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
39
|
+
individual, or aggression toward or disparagement of classes of individuals. **Consequence:** A permanent ban from any sort of public interaction within
|
|
40
|
+
the community. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
106
41
|
version 2.1, available at
|
|
107
|
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
|
|
108
|
-
|
|
109
|
-
[homepage]: https://www.contributor-covenant.org
|
|
110
|
-
|
|
111
|
-
For answers to common questions about this code of conduct, see the FAQ at
|
|
42
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see the FAQ at
|
|
112
43
|
https://www.contributor-covenant.org/faq.
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
# Contributing to Daedalus
|
|
2
|
-
|
|
3
|
-
Thanks for your interest in contributing! Daedalus is a local-first AI coding CLI, and we welcome contributions of all kinds — bug fixes, features, documentation, and more.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Code of Conduct](#code-of-conduct)
|
|
1
|
+
# Contributing to Daedalus Thanks for your interest in contributing! Daedalus is a local-first AI coding CLI, and we welcome contributions of all kinds — bug fixes, features, documentation, and more. ## Table of Contents - [Code of Conduct](#code-of-conduct)
|
|
8
2
|
- [Getting Started](#getting-started)
|
|
9
3
|
- [Development Setup](#development-setup)
|
|
10
4
|
- [Project Structure](#project-structure)
|
|
@@ -12,155 +6,65 @@ Thanks for your interest in contributing! Daedalus is a local-first AI coding CL
|
|
|
12
6
|
- [Commit Guidelines](#commit-guidelines)
|
|
13
7
|
- [Pull Request Process](#pull-request-process)
|
|
14
8
|
- [Testing](#testing)
|
|
15
|
-
- [Reporting Issues](#reporting-issues)
|
|
16
|
-
|
|
17
|
-
## Code of Conduct
|
|
18
|
-
|
|
19
|
-
This project is governed by the [Contributor Covenant](CODE_OF_CONDUCT.md). By participating, you agree to uphold its terms.
|
|
20
|
-
|
|
21
|
-
## Getting Started
|
|
22
|
-
|
|
23
|
-
1. Fork the repository
|
|
9
|
+
- [Reporting Issues](#reporting-issues) ## Code of Conduct This project is governed by the [Contributor Covenant](CODE_OF_CONDUCT.md). By participating, you agree to uphold its terms. ## Getting Started 1. Fork the repository
|
|
24
10
|
2. Clone your fork: `git clone https://github.com/<your-username>/daedalus.git`
|
|
25
|
-
3. Create a feature branch: `git checkout -b feat/your-feature-name`
|
|
26
|
-
|
|
27
|
-
## Development Setup
|
|
28
|
-
|
|
29
|
-
```bash
|
|
11
|
+
3. Create a feature branch: `git checkout -b feat/your-feature-name` ## Development Setup ```bash
|
|
30
12
|
# Install dependencies
|
|
31
|
-
npm install
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
npm run dev
|
|
35
|
-
|
|
36
|
-
# Build
|
|
37
|
-
npm run build
|
|
38
|
-
|
|
39
|
-
# Type check
|
|
13
|
+
npm install # Run in dev mode (hot reload)
|
|
14
|
+
npm run dev # Build
|
|
15
|
+
npm run build # Type check
|
|
40
16
|
npx tsc --noEmit
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Prerequisites
|
|
44
|
-
|
|
45
|
-
- Node.js 20+
|
|
46
|
-
- A local LLM server (LM Studio, Ollama, llama.cpp, vLLM) or a remote API key
|
|
47
|
-
|
|
48
|
-
## Project Structure
|
|
49
|
-
|
|
50
|
-
```
|
|
17
|
+
``` ### Prerequisites - Node.js 20+
|
|
18
|
+
- A local LLM server (LM Studio, Ollama, llama.cpp, vLLM) or a remote API key ## Project Structure ```
|
|
51
19
|
src/
|
|
52
|
-
├── index.ts
|
|
53
|
-
├── types.ts
|
|
54
|
-
├── highlight.ts
|
|
55
|
-
├── config/
|
|
56
|
-
├── router/
|
|
57
|
-
├── session/
|
|
58
|
-
├── agents/
|
|
59
|
-
├── tools/
|
|
60
|
-
│
|
|
61
|
-
│
|
|
62
|
-
├── indexing/
|
|
63
|
-
└── onboarding/
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Coding Standards
|
|
67
|
-
|
|
68
|
-
### Language & Runtime
|
|
69
|
-
|
|
70
|
-
- **TypeScript** with strict mode
|
|
20
|
+
├── index.ts # CLI entry point, REPL, command dispatch
|
|
21
|
+
├── types.ts # Shared type definitions
|
|
22
|
+
├── highlight.ts # Syntax highlighting
|
|
23
|
+
├── config/ # Configuration loading, schema, discovery
|
|
24
|
+
├── router/ # Model routing engine
|
|
25
|
+
├── session/ # Session persistence (SQLite, JSONL)
|
|
26
|
+
├── agents/ # Multi-agent system
|
|
27
|
+
├── tools/ # Tool system (16 built-in tools + MCP)
|
|
28
|
+
│ ├── builtin/ # File, terminal, git, web, todo, etc.
|
|
29
|
+
│ └── mcp/ # MCP transport (stdio, HTTP/SSE)
|
|
30
|
+
├── indexing/ # FTS5 codebase indexing
|
|
31
|
+
└── onboarding/ # Setup wizard
|
|
32
|
+
``` ## Coding Standards ### Language & Runtime - **TypeScript** with strict mode
|
|
71
33
|
- **ESM** only (`"type": "module"`) — always use `.js` extension in local imports
|
|
72
|
-
- **Node.js 20+** target
|
|
73
|
-
|
|
74
|
-
### Style
|
|
75
|
-
|
|
76
|
-
- **No comments** in source code unless the logic is non-obvious
|
|
34
|
+
- **Node.js 20+** target ### Style - **No comments** in source code unless the logic is non-obvious
|
|
77
35
|
- **No default exports** — use named exports everywhere
|
|
78
36
|
- **No emoji** in code or documentation
|
|
79
|
-
- **Descriptive names** — prefer clarity over brevity
|
|
80
|
-
|
|
81
|
-
### Imports
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
37
|
+
- **Descriptive names** — prefer clarity over brevity ### Imports ```typescript
|
|
84
38
|
// Local imports must include .js extension
|
|
85
|
-
import { RouterConfig } from '../router/types.js';
|
|
86
|
-
|
|
87
|
-
// npm imports need no extension
|
|
39
|
+
import { RouterConfig } from '../router/types.js'; // npm imports need no extension
|
|
88
40
|
import { z } from 'zod';
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- Throw typed errors with descriptive messages
|
|
94
|
-
- Tools return `{ success: boolean, content: string, error?: string }`
|
|
95
|
-
|
|
96
|
-
## Commit Guidelines
|
|
97
|
-
|
|
98
|
-
We follow [Conventional Commits](https://www.conventionalcommits.org/):
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
<type>(<scope>): <description>
|
|
102
|
-
|
|
103
|
-
[optional body]
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Types
|
|
107
|
-
|
|
108
|
-
| Type | Usage |
|
|
41
|
+
``` ### Error Handling - Throw typed errors with descriptive messages
|
|
42
|
+
- Tools return `{ success: boolean, content: string, error?: string }` ## Commit Guidelines We follow [Conventional Commits](https://www.conventionalcommits.org/): ```
|
|
43
|
+
<type>(<scope>): <description> [optional body]
|
|
44
|
+
``` ### Types | Type | Usage |
|
|
109
45
|
|----------|------------------------------|
|
|
110
|
-
| feat
|
|
111
|
-
| fix
|
|
112
|
-
| docs
|
|
113
|
-
| style
|
|
46
|
+
| feat | New feature |
|
|
47
|
+
| fix | Bug fix |
|
|
48
|
+
| docs | Documentation only |
|
|
49
|
+
| style | Formatting, missing semicolons |
|
|
114
50
|
| refactor | Code change that fixes neither bug nor adds feature |
|
|
115
|
-
| perf
|
|
116
|
-
| test
|
|
117
|
-
| chore
|
|
118
|
-
|
|
119
|
-
### Examples
|
|
120
|
-
|
|
121
|
-
```
|
|
51
|
+
| perf | Performance improvement |
|
|
52
|
+
| test | Adding or updating tests |
|
|
53
|
+
| chore | Build process, tooling, CI | ### Examples ```
|
|
122
54
|
feat(router): add temperature-per-model support
|
|
123
55
|
fix(indexing): handle symlinked directories
|
|
124
56
|
docs: add contributing guide
|
|
125
57
|
test(session): add SQLite CRUD tests
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Pull Request Process
|
|
129
|
-
|
|
130
|
-
1. **Small PRs are better** — keep each PR focused on one concern
|
|
58
|
+
``` ## Pull Request Process 1. **Small PRs are better** — keep each PR focused on one concern
|
|
131
59
|
2. **Update the CHANGELOG** — add your change under the `[Unreleased]` section
|
|
132
60
|
3. **Include tests** — new features should include tests; bug fixes should add a regression test
|
|
133
61
|
4. **Pass CI** — CI runs `npm run lint` (ubuntu) and `npm test` (win/ubuntu/macos). Ensure all pass before requesting review
|
|
134
62
|
5. **Auto-release on merge** — when a PR merges to `main`, semantic-release publishes a new version to npm and creates a GitHub release automatically. The version bump is determined by commit messages (conventional commits)
|
|
135
|
-
6. **Request review** — tag a maintainer or mention `@bgill55`
|
|
136
|
-
|
|
137
|
-
### PR Title Format
|
|
138
|
-
|
|
139
|
-
Same as commit messages: `type(scope): description`
|
|
140
|
-
|
|
141
|
-
## Testing
|
|
142
|
-
|
|
143
|
-
```bash
|
|
63
|
+
6. **Request review** — tag a maintainer or mention `@bgill55` ### PR Title Format Same as commit messages: `type(scope): description` ## Testing ```bash
|
|
144
64
|
# Run all tests
|
|
145
|
-
npm test
|
|
146
|
-
|
|
147
|
-
# Watch mode
|
|
148
|
-
npx vitest
|
|
149
|
-
|
|
150
|
-
# With coverage
|
|
65
|
+
npm test # Watch mode
|
|
66
|
+
npx vitest # With coverage
|
|
151
67
|
npx vitest --coverage
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Tests are written with [vitest](https://vitest.dev/) and co-located with source files as `*.test.ts`.
|
|
155
|
-
|
|
156
|
-
## Reporting Issues
|
|
157
|
-
|
|
158
|
-
- **Bug reports** — use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
|
|
68
|
+
``` Tests are written with [vitest](https://vitest.dev/) and co-located with source files as `*.test.ts`. ## Reporting Issues - **Bug reports** — use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
|
|
159
69
|
- **Feature requests** — use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
|
|
160
|
-
- **Security issues** — see [SECURITY.md](SECURITY.md)
|
|
161
|
-
|
|
162
|
-
Before filing, please search [existing issues](https://github.com/bgill55/daedalus/issues) to avoid duplicates.
|
|
163
|
-
|
|
164
|
-
## Questions?
|
|
165
|
-
|
|
166
|
-
Open a [Discussion](https://github.com/bgill55/daedalus/discussions) or reach out to the maintainer.
|
|
70
|
+
- **Security issues** — see [SECURITY.md](SECURITY.md) Before filing, please search [existing issues](https://github.com/bgill55/daedalus/issues) to avoid duplicates. ## Questions? Open a [Discussion](https://github.com/bgill55/daedalus/discussions) or reach out to the maintainer.
|
package/README.md
CHANGED
|
@@ -45,6 +45,13 @@ For full guides, configuration reference, and examples, visit the documentation
|
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
+
> ### Looking to build and sell your own AI CLI?
|
|
49
|
+
> Check out **[Daedalus-Lite](https://bgill55.github.io/daedalus-lite/)** — the zero-dependency, rebrandable TypeScript starter template designed for developers to build, rebrand, and sell their own custom AI coding tools! [Visit Daedalus-Lite →](https://bgill55.github.io/daedalus-lite/)
|
|
50
|
+
>
|
|
51
|
+
> **Fun fact**: Daedalus itself was built using Daedalus-Lite as a starting point, then extended with advanced features like multi-agent orchestration, codebase indexing, and autonomous workflows. See [what's possible with Daedalus-Lite](https://bgill55.github.io/daedalus-lite/#what-is-possible) for inspiration.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
48
55
|
## Quick Start
|
|
49
56
|
|
|
50
57
|
```bash
|
|
@@ -98,6 +105,7 @@ AI assistance without:
|
|
|
98
105
|
- **Terminal** — cross-platform shell execution (bash/cmd/powershell) with custom preference support, timeout, and abort
|
|
99
106
|
- **Git** — status, diff, stage-all-and-commit, undo
|
|
100
107
|
- **Web** — DuckDuckGo search and URL fetching (no API key needed)
|
|
108
|
+
- **Image Generation** — local Stable Diffusion WebUI integration with automatic zero-config Pollinations AI fallback (`/image` command & `generate_image` tool) for generating UI assets, logos, and graphics without requiring an API key
|
|
101
109
|
- **Codebase** — index, find, definitions, references
|
|
102
110
|
|
|
103
111
|
### Commands
|
|
@@ -143,6 +151,7 @@ AI assistance without:
|
|
|
143
151
|
| `/mcp` | Manage MCP servers: explore, search, install, list, remove, info |
|
|
144
152
|
| `/onboard` | First-time setup — discover local models, configure, and test |
|
|
145
153
|
| `/tui` | Toggle the Terminal User Interface (TUI) dashboard |
|
|
154
|
+
| `/image` | Generate an image using local Stable Diffusion WebUI or Pollinations AI |
|
|
146
155
|
| `exit` / `/exit` / `/quit` / `quit` | Save session and exit |
|
|
147
156
|
<!-- END_COMMANDS_TABLE -->
|
|
148
157
|
|
|
@@ -207,7 +216,7 @@ npx tsc --noEmit # type check
|
|
|
207
216
|
### Architecture
|
|
208
217
|
|
|
209
218
|
<p align="center">
|
|
210
|
-
<img src="docs/images/
|
|
219
|
+
<img src="docs/images/daedalus_evolution_infographic.jpg" alt="Daedalus Evolution: From Foundation to Fortress" width="100%" />
|
|
211
220
|
</p>
|
|
212
221
|
|
|
213
222
|
```
|
|
@@ -231,7 +240,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines, coding standards, and the
|
|
|
231
240
|
---
|
|
232
241
|
|
|
233
242
|
<p align="center">
|
|
234
|
-
<sub>Daedalus is open source and free. If it helps you build cooler things faster, consider buying me a coffee
|
|
243
|
+
<sub>Daedalus is open source and free. If it helps you build cooler things faster, consider buying me a coffee!</sub>
|
|
235
244
|
</p>
|
|
236
245
|
|
|
237
246
|
<p align="center">
|
package/SECURITY.md
CHANGED
|
@@ -1,52 +1,16 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Supported Versions
|
|
4
|
-
|
|
5
|
-
We release patches for security vulnerabilities. This table shows which versions are currently supported:
|
|
6
|
-
|
|
7
|
-
| Version | Supported |
|
|
1
|
+
# Security Policy ## Supported Versions We release patches for security vulnerabilities. This table shows which versions are currently supported: | Version | Supported |
|
|
8
2
|
|---------|--------------------|
|
|
9
|
-
| 0.4.x
|
|
10
|
-
| < 0.4
|
|
11
|
-
|
|
12
|
-
## Reporting a Vulnerability
|
|
13
|
-
|
|
14
|
-
We take security seriously. If you discover a security vulnerability in Daedalus, please **do not** open a public issue.
|
|
15
|
-
|
|
16
|
-
Instead, send a private report to **bgill55_dev@voxvivid.com** with:
|
|
17
|
-
|
|
18
|
-
- A description of the vulnerability
|
|
3
|
+
| 0.4.x | :white_check_mark: |
|
|
4
|
+
| < 0.4 | :x: | ## Reporting a Vulnerability We take security seriously. If you discover a security vulnerability in Daedalus, please **do not** open a public issue. Instead, send a private report to **bgill55_dev@voxvivid.com** with: - A description of the vulnerability
|
|
19
5
|
- Steps to reproduce it
|
|
20
6
|
- Affected versions
|
|
21
|
-
- Any potential mitigations you've identified
|
|
22
|
-
|
|
23
|
-
You should receive a response within 48 hours. If you don't, please follow up to ensure we received your message.
|
|
24
|
-
|
|
25
|
-
### What to expect
|
|
26
|
-
|
|
27
|
-
1. **Acknowledgment** — we'll confirm receipt within 48 hours
|
|
7
|
+
- Any potential mitigations you've identified You should receive a response within 48 hours. If you don't, please follow up to ensure we received your message. ### What to expect 1. **Acknowledgment** — we'll confirm receipt within 48 hours
|
|
28
8
|
2. **Assessment** — we'll investigate and determine impact and severity
|
|
29
9
|
3. **Fix** — we'll develop and test a patch
|
|
30
|
-
4. **Release** — we'll publish a security advisory and a patched release
|
|
31
|
-
|
|
32
|
-
### Disclosure
|
|
33
|
-
|
|
34
|
-
We ask that you allow us reasonable time to fix and release a patch before publicly disclosing the vulnerability.
|
|
35
|
-
|
|
36
|
-
## Security Best Practices
|
|
37
|
-
|
|
38
|
-
When using Daedalus:
|
|
39
|
-
|
|
40
|
-
- **API keys** are stored in `~/.daedalus/config.json` — keep this file secure
|
|
10
|
+
4. **Release** — we'll publish a security advisory and a patched release ### Disclosure We ask that you allow us reasonable time to fix and release a patch before publicly disclosing the vulnerability. ## Security Best Practices When using Daedalus: - **API keys** are stored in `~/.daedalus/config.json` — keep this file secure
|
|
41
11
|
- **Local LLM servers** should be bound to localhost (127.0.0.1) to avoid network exposure
|
|
42
12
|
- **Review tool execution** — Daedalus runs terminal commands you approve; review them before confirming
|
|
43
|
-
- Keep Daedalus updated to the latest version to receive security patches
|
|
44
|
-
|
|
45
|
-
## Scope
|
|
46
|
-
|
|
47
|
-
The following are **out of scope**:
|
|
48
|
-
|
|
49
|
-
- Social engineering attacks against Daedalus maintainers
|
|
13
|
+
- Keep Daedalus updated to the latest version to receive security patches ## Scope The following are **out of scope**: - Social engineering attacks against Daedalus maintainers
|
|
50
14
|
- Attacks requiring physical access to the victim's machine
|
|
51
15
|
- Vulnerabilities in third-party LLM servers or providers
|
|
52
16
|
- Denial of service against local services
|
package/dist/agents/roles.js
CHANGED
|
@@ -128,7 +128,7 @@ GUIDELINES:
|
|
|
128
128
|
- Do NOT run git commands (git_diff, git_status, git commit, etc.) — git operations are handled by other roles. You write code, not commit messages.
|
|
129
129
|
|
|
130
130
|
Use tools: read_file, write_file, patch, search_files, terminal, find_symbol, get_definition, get_references, index_codebase. Do NOT use git_diff or git_status — checking git state is the reviewer's job.`,
|
|
131
|
-
allowedTools: ['read_file', 'write_file', 'patch', 'search_files', 'list_files', 'terminal', 'web_search', 'fetch_url', 'index_codebase', 'find_symbol', 'get_definition', 'get_references'],
|
|
131
|
+
allowedTools: ['read_file', 'write_file', 'patch', 'search_files', 'list_files', 'terminal', 'web_search', 'fetch_url', 'index_codebase', 'find_symbol', 'get_definition', 'get_references', 'generate_image'],
|
|
132
132
|
canDelegate: false,
|
|
133
133
|
temperature: 0.1,
|
|
134
134
|
maxTurns: 12,
|
package/dist/agents/roles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAczB,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;uGAwBqF;QACnG,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QAClI,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,GAAG;KACjB;IAED,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yGAyCuF;QACrG,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QAClI,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oDAAoD;QACjE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4MA2C0L;QACxM,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"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"}
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAKhC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,yBAAyB,EAAE,MAAM,MAAM,CAAC;IACxC,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC;IACvH,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtF,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;IACvB,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7I,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACzE;AAED,eAAO,MAAM,YAAY,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAKhC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,yBAAyB,EAAE,MAAM,MAAM,CAAC;IACxC,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC;IACvH,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtF,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;IACvB,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7I,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACzE;AAED,eAAO,MAAM,YAAY,EAAE,OAAO,EA0hEjC,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCzF"}
|
package/dist/commands.js
CHANGED
|
@@ -1954,6 +1954,52 @@ Once you have finished making changes, I will automatically re-run the command t
|
|
|
1954
1954
|
}
|
|
1955
1955
|
}
|
|
1956
1956
|
},
|
|
1957
|
+
{
|
|
1958
|
+
name: '/image',
|
|
1959
|
+
description: 'Generate an image using local Stable Diffusion WebUI or Pollinations AI',
|
|
1960
|
+
usage: '/image <prompt> [--output path] [--provider auto|sd-webui|pollinations] [--width 512] [--height 512] [--steps 20]',
|
|
1961
|
+
helpText: 'Generate an image using a local Stable Diffusion WebUI instance (http://127.0.0.1:7860) or free Pollinations AI.\n\nArguments:\n <prompt> Detailed description of the image to generate\n --provider <engine> Engine: auto (local SD with Pollinations fallback), sd-webui, or pollinations\n --output <path> Filepath to save PNG (default: ./assets/images/img_<timestamp>.png)\n --width <pixels> Image width (default: 512)\n --height <pixels> Image height (default: 512)\n --steps <count> Sampling steps for local SD (default: 20)',
|
|
1962
|
+
execute: async (args, _ctx) => {
|
|
1963
|
+
const promptText = args.trim();
|
|
1964
|
+
if (!promptText) {
|
|
1965
|
+
console.log(pc.yellow('Usage: /image <prompt> [--provider auto|sd-webui|pollinations] [--output path] [--width 512] [--height 512] [--steps 20]'));
|
|
1966
|
+
return;
|
|
1967
|
+
}
|
|
1968
|
+
console.log(pc.cyan(`\n Generating image...`));
|
|
1969
|
+
const { generateImage } = await import('./tools/builtin/image.js');
|
|
1970
|
+
let width;
|
|
1971
|
+
let height;
|
|
1972
|
+
let steps;
|
|
1973
|
+
let provider;
|
|
1974
|
+
let output_path;
|
|
1975
|
+
const cleanedPrompt = promptText
|
|
1976
|
+
.replace(/--provider\s+([^\s]+)/i, (_, pr) => {
|
|
1977
|
+
if (['auto', 'sd-webui', 'pollinations'].includes(pr.toLowerCase())) {
|
|
1978
|
+
provider = pr.toLowerCase();
|
|
1979
|
+
}
|
|
1980
|
+
return '';
|
|
1981
|
+
})
|
|
1982
|
+
.replace(/--output\s+([^\s]+)/i, (_, p) => { output_path = p; return ''; })
|
|
1983
|
+
.replace(/--width\s+(\d+)/i, (_, w) => { width = parseInt(w, 10); return ''; })
|
|
1984
|
+
.replace(/--height\s+(\d+)/i, (_, h) => { height = parseInt(h, 10); return ''; })
|
|
1985
|
+
.replace(/--steps\s+(\d+)/i, (_, s) => { steps = parseInt(s, 10); return ''; })
|
|
1986
|
+
.trim();
|
|
1987
|
+
const res = await generateImage({
|
|
1988
|
+
prompt: cleanedPrompt || promptText,
|
|
1989
|
+
width,
|
|
1990
|
+
height,
|
|
1991
|
+
steps,
|
|
1992
|
+
provider,
|
|
1993
|
+
output_path,
|
|
1994
|
+
});
|
|
1995
|
+
if (res.success) {
|
|
1996
|
+
console.log(pc.green(`\n✔ ${res.content}`));
|
|
1997
|
+
}
|
|
1998
|
+
else {
|
|
1999
|
+
console.log(pc.red(`\n✗ Image generation failed: ${res.error}`));
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
},
|
|
1957
2003
|
{
|
|
1958
2004
|
name: 'exit',
|
|
1959
2005
|
aliases: ['/exit', '/quit', 'quit'],
|