sdd-agent-pack 1.3.0 → 1.3.2
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/README.md +16 -115
- package/assets/scripts/orchestrate.py +42 -13
- package/assets/scripts/orchestrate.sh +34 -4
- package/assets/templates/env.example +25 -0
- package/dist/utils/installer.d.ts +2 -1
- package/dist/utils/installer.d.ts.map +1 -1
- package/dist/utils/installer.js +55 -52
- package/dist/utils/installer.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,59 +1,20 @@
|
|
|
1
1
|
# SDD Agent Pack
|
|
2
2
|
|
|
3
|
-
Lightweight installer for SDD (Software Driven Development) workflow assets into application repositories.
|
|
4
|
-
|
|
5
|
-
SDD Agent Pack installs the instructions, skills, hooks, orchestration scripts, and templates that AI coding agents need to follow the SDD workflow in your project.
|
|
6
|
-
|
|
7
|
-
## How It Works
|
|
8
|
-
|
|
9
|
-
SDD Agent Pack is **not** an autonomous runtime — it's an installer that equips your repo with:
|
|
10
|
-
|
|
11
|
-
- **Skills** — Keyword-triggered instructions that guide AI agents through the SDD workflow
|
|
12
|
-
- **Orchestration scripts** — Shell and Python scripts that feed epics one at a time to an agent
|
|
13
|
-
- **Hooks** — Quality gates that prevent agents from finishing with failing tests
|
|
14
|
-
- **Templates** — SDD document templates (tasks.md, constitution.md)
|
|
15
|
-
|
|
16
|
-
The **orchestration script** is the key piece: instead of asking an agent to "implement all epics" (which overwhelms LLM-based agents), it reads `tasks.md` and feeds each incomplete epic to the agent **one at a time**.
|
|
3
|
+
Lightweight installer for SDD (Software Driven Development) workflow assets into application repositories. Installs skills, orchestration scripts, hooks, and templates that AI coding agents use to follow the SDD workflow.
|
|
17
4
|
|
|
18
5
|
## Quick Start
|
|
19
6
|
|
|
20
|
-
### Prerequisites
|
|
21
|
-
|
|
22
|
-
- **Node.js 18+** — Required for the installer
|
|
23
|
-
- **Git** — Your project must be a Git repository
|
|
24
|
-
- **An SDD project** — With `tasks.md` and `specs/` documents
|
|
25
|
-
|
|
26
|
-
### 1. Install
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npx sdd-agent-pack init
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
This installs everything shown below and also:
|
|
33
|
-
- Cleans up any old artifacts from previous versions
|
|
34
|
-
- Tries to install the OpenHands CLI and Python dependencies automatically
|
|
35
|
-
- Updates AGENTS.md with SDD workflow instructions
|
|
36
|
-
|
|
37
|
-
### 2. Define your epics
|
|
38
|
-
|
|
39
|
-
Create `tasks.md` and `specs/` with your epics and design documents.
|
|
40
|
-
|
|
41
|
-
### 3. Run the orchestration
|
|
42
|
-
|
|
43
7
|
```bash
|
|
44
|
-
|
|
8
|
+
npx sdd-agent-pack init # Install into your repo
|
|
9
|
+
bash .sdd-agent-pack/scripts/orchestrate.sh # Run epics
|
|
45
10
|
```
|
|
46
11
|
|
|
47
|
-
This loops through all incomplete epics in tasks.md, feeding each one to OpenHands individually.
|
|
48
|
-
|
|
49
12
|
### What gets installed
|
|
50
13
|
|
|
51
14
|
```
|
|
52
|
-
.sdd-agent-pack/ — Core assets
|
|
53
|
-
├── skills/ — SDD workflow skills
|
|
15
|
+
.sdd-agent-pack/ — Core assets
|
|
16
|
+
├── skills/ — SDD workflow skills
|
|
54
17
|
├── scripts/ — Epic orchestration scripts
|
|
55
|
-
│ ├── orchestrate.sh — Bash version (needs OpenHands CLI)
|
|
56
|
-
│ └── orchestrate.py — Python version (needs OpenHands SDK)
|
|
57
18
|
├── prompts/ — Workflow prompts
|
|
58
19
|
├── hooks/ — Quality enforcement hooks
|
|
59
20
|
├── docs/ — Workflow documentation
|
|
@@ -61,15 +22,7 @@ This loops through all incomplete epics in tasks.md, feeding each one to OpenHan
|
|
|
61
22
|
└── config/ — Agent configuration
|
|
62
23
|
|
|
63
24
|
.agents/skills/ — OpenHands skill bridge (auto-installed)
|
|
64
|
-
├── sdd-epic-workflow/
|
|
65
|
-
├── sdd-implementation/
|
|
66
|
-
├── sdd-context/
|
|
67
|
-
├── sdd-testing/
|
|
68
|
-
└── sdd-completion/
|
|
69
|
-
|
|
70
25
|
.openhands/ — OpenHands hook bridge (auto-installed)
|
|
71
|
-
├── hooks.json — Registers stop hook for quality gates
|
|
72
|
-
└── setup.sh — Auto-runs on session start
|
|
73
26
|
```
|
|
74
27
|
|
|
75
28
|
### Commands
|
|
@@ -83,88 +36,36 @@ This loops through all incomplete epics in tasks.md, feeding each one to OpenHan
|
|
|
83
36
|
| `status` | Show installation status |
|
|
84
37
|
| `help` | Show all commands |
|
|
85
38
|
|
|
86
|
-
## How to Use
|
|
39
|
+
## How to Use
|
|
87
40
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
**LLM-based agents cannot autonomously iterate through a multi-epic `tasks.md`.** If you tell an agent to "implement all 31 epics," it treats that as a single massive objective — it gets overwhelmed, keeps asking for permission, and never completes the work. This is a known limitation of all current coding agents (OpenHands, Claude Code, Copilot, etc.).
|
|
91
|
-
|
|
92
|
-
The solution is an **external orchestration loop**: a script that reads `tasks.md`, extracts one epic, feeds it to the agent, waits for completion, then moves to the next.
|
|
93
|
-
|
|
94
|
-
### Workflow Options
|
|
95
|
-
|
|
96
|
-
#### Option A: VS Code + Terminal (Recommended)
|
|
97
|
-
|
|
98
|
-
This is the simplest approach. You run the orchestration script directly from **VS Code's integrated terminal**:
|
|
41
|
+
LLM-based agents cannot autonomously iterate through a multi-epic `tasks.md` — they treat it as a single massive objective and get stuck. The orchestration script solves this by feeding epics **one at a time** to the agent:
|
|
99
42
|
|
|
100
43
|
```bash
|
|
101
|
-
#
|
|
102
|
-
# 2. Open a terminal (Ctrl+\` or Cmd+\`)
|
|
103
|
-
# 3. Run the orchestration script
|
|
44
|
+
# From your terminal (VS Code, system terminal, etc.)
|
|
104
45
|
bash .sdd-agent-pack/scripts/orchestrate.sh
|
|
105
46
|
```
|
|
106
47
|
|
|
107
|
-
The script
|
|
108
|
-
1. Scans `tasks.md` for incomplete epics
|
|
109
|
-
2. Calls `openhands --headless -t "Implement Epic X"` for each one
|
|
110
|
-
3. Waits for each epic to complete before starting the next
|
|
111
|
-
4. Reports progress as it goes
|
|
48
|
+
The script reads `tasks.md`, finds incomplete epics, and calls `openhands --headless` for each one sequentially.
|
|
112
49
|
|
|
113
|
-
**
|
|
114
|
-
|
|
115
|
-
#### Option B: VS Code + Python SDK
|
|
116
|
-
|
|
117
|
-
If you prefer Python over bash:
|
|
50
|
+
**Prerequisite:** The [OpenHands CLI](https://docs.openhands.dev/openhands/usage/cli/installation) must be installed and configured (`openhands login` or `LLM_API_KEY` env var). The installer will attempt to install it automatically, or you can install it manually:
|
|
118
51
|
|
|
119
52
|
```bash
|
|
120
|
-
pip install openhands
|
|
121
|
-
python .sdd-agent-pack/scripts/orchestrate.py
|
|
53
|
+
pip install openhands
|
|
122
54
|
```
|
|
123
55
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
If you use OpenHands Cloud, you don't have direct terminal access — only the agent does. In that case, feed epics one at a time manually:
|
|
127
|
-
|
|
128
|
-
> "Implement epic TDS.2.1 from tasks.md following the SDD workflow."
|
|
56
|
+
### For OpenHands Cloud users
|
|
129
57
|
|
|
130
|
-
|
|
58
|
+
The Cloud UI doesn't give you direct terminal access. Feed epics one at a time manually in the chat:
|
|
131
59
|
|
|
132
|
-
|
|
60
|
+
> "Implement epic EPIC-001 from tasks.md following the SDD workflow."
|
|
133
61
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
> "Run the SDD orchestration script to implement the next epic."
|
|
137
|
-
|
|
138
|
-
Or you can run the script directly in the VS Code terminal yourself — it's one command.
|
|
139
|
-
|
|
140
|
-
### Why not just use the agent directly?
|
|
141
|
-
|
|
142
|
-
Because agents can't autonomously loop through 31 epics. The orchestration script is the external loop that:
|
|
143
|
-
- Maintains focus (one epic at a time)
|
|
144
|
-
- Prevents context window overflow
|
|
145
|
-
- Eliminates permission-asking
|
|
146
|
-
- Provides clear progress tracking
|
|
62
|
+
Let the agent finish, then repeat for the next epic.
|
|
147
63
|
|
|
148
64
|
## Documentation
|
|
149
65
|
|
|
150
|
-
- [Specification](specs/sdd-agent-pack_spec.md) — Project architecture
|
|
66
|
+
- [Specification](specs/sdd-agent-pack_spec.md) — Project architecture
|
|
151
67
|
- [Workflow](assets/docs/workflow.md) — SDD workflow documentation
|
|
152
68
|
|
|
153
|
-
## Why SDD Agent Pack?
|
|
154
|
-
|
|
155
|
-
SDD Agent Pack replaces the previous `sdd-autopilot` runtime application. Instead of a Python-based autonomous orchestrator that managed LLM calls, providers, and execution loops, this is a **lightweight installer** that equips AI agents with the instructions they need.
|
|
156
|
-
|
|
157
|
-
### What changed
|
|
158
|
-
|
|
159
|
-
| Old (sdd-autopilot) | New (SDD Agent Pack) |
|
|
160
|
-
|---------------------|---------------------|
|
|
161
|
-
| Python/uv runtime | Node.js/TypeScript CLI |
|
|
162
|
-
| Autonomous orchestrator | Repository installer |
|
|
163
|
-
| LLM provider management | Agent instruction files + orchestration scripts |
|
|
164
|
-
| API key management | OpenHands CLI handles this |
|
|
165
|
-
| Budget tracking | Not needed (agent handles this) |
|
|
166
|
-
| Custom slash commands | Standard agent workflow |
|
|
167
|
-
|
|
168
69
|
## License
|
|
169
70
|
|
|
170
71
|
MIT
|
|
@@ -6,23 +6,36 @@ Reads tasks.md and feeds each incomplete epic to an OpenHands agent
|
|
|
6
6
|
one at a time. This avoids overwhelming the agent with the full scope.
|
|
7
7
|
|
|
8
8
|
Prerequisites:
|
|
9
|
-
pip install openhands-sdk openhands-tools
|
|
9
|
+
pip install openhands-sdk openhands-tools pyyaml
|
|
10
10
|
|
|
11
11
|
Usage:
|
|
12
|
-
# Process all incomplete epics
|
|
13
12
|
python .sdd-agent-pack/scripts/orchestrate.py
|
|
14
|
-
|
|
15
|
-
# Process a single epic
|
|
16
13
|
python .sdd-agent-pack/scripts/orchestrate.py --single "EPIC-001"
|
|
17
|
-
|
|
18
|
-
# Dry run — just list what would be done
|
|
19
14
|
python .sdd-agent-pack/scripts/orchestrate.py --dry-run
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
LLM Configuration:
|
|
17
|
+
Set these environment variables (or copy .env.example to .env):
|
|
18
|
+
|
|
19
|
+
Required:
|
|
20
|
+
LLM_API_KEY — API key from your LLM provider
|
|
21
|
+
|
|
22
|
+
Optional:
|
|
23
|
+
LLM_MODEL — Model name (default: openrouter/anthropic/claude-sonnet-4-5-20250929)
|
|
24
|
+
LLM_BASE_URL — Provider base URL
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
OpenRouter:
|
|
28
|
+
LLM_API_KEY=sk-or-...
|
|
29
|
+
LLM_MODEL=openrouter/anthropic/claude-sonnet-4-5-20250929
|
|
30
|
+
LLM_BASE_URL=https://openrouter.ai/api/v1
|
|
31
|
+
|
|
32
|
+
OpenAI:
|
|
33
|
+
LLM_API_KEY=sk-...
|
|
34
|
+
LLM_MODEL=openai/gpt-4o
|
|
35
|
+
|
|
36
|
+
Anthropic:
|
|
37
|
+
LLM_API_KEY=sk-ant-...
|
|
38
|
+
LLM_MODEL=anthropic/claude-sonnet-4-5-20250929
|
|
26
39
|
"""
|
|
27
40
|
|
|
28
41
|
import os
|
|
@@ -30,6 +43,20 @@ import re
|
|
|
30
43
|
import sys
|
|
31
44
|
import argparse
|
|
32
45
|
|
|
46
|
+
# Try to load .env file if present
|
|
47
|
+
try:
|
|
48
|
+
from pathlib import Path
|
|
49
|
+
env_path = Path(".env")
|
|
50
|
+
if env_path.exists():
|
|
51
|
+
with open(env_path) as f:
|
|
52
|
+
for line in f:
|
|
53
|
+
line = line.strip()
|
|
54
|
+
if line and not line.startswith("#") and "=" in line:
|
|
55
|
+
key, val = line.split("=", 1)
|
|
56
|
+
os.environ.setdefault(key.strip(), val.strip())
|
|
57
|
+
except Exception:
|
|
58
|
+
pass # .env loading is optional
|
|
59
|
+
|
|
33
60
|
TASKS_FILE = "specs/tasks.md"
|
|
34
61
|
|
|
35
62
|
|
|
@@ -112,12 +139,14 @@ def run_epic(epic: dict, use_cloud: bool) -> bool:
|
|
|
112
139
|
from openhands.tools.file_editor import FileEditorTool
|
|
113
140
|
from openhands.tools.terminal import TerminalTool
|
|
114
141
|
|
|
115
|
-
model = os.getenv("LLM_MODEL", "
|
|
142
|
+
model = os.getenv("LLM_MODEL", "openrouter/anthropic/claude-sonnet-4-5-20250929")
|
|
116
143
|
api_key = os.getenv("LLM_API_KEY")
|
|
117
|
-
base_url = os.getenv("LLM_BASE_URL",
|
|
144
|
+
base_url = os.getenv("LLM_BASE_URL", "https://openrouter.ai/api/v1")
|
|
118
145
|
|
|
119
146
|
if not api_key:
|
|
120
147
|
print("✗ LLM_API_KEY environment variable is required")
|
|
148
|
+
print(" Set it in .env or export it: export LLM_API_KEY=sk-or-...")
|
|
149
|
+
print(" See .sdd-agent-pack/templates/env.example for all options.")
|
|
121
150
|
return False
|
|
122
151
|
|
|
123
152
|
llm = LLM(
|
|
@@ -6,17 +6,47 @@
|
|
|
6
6
|
#
|
|
7
7
|
# Prerequisites:
|
|
8
8
|
# - OpenHands CLI installed (https://docs.openhands.dev/openhands/usage/cli/installation)
|
|
9
|
-
# - LLM configured (
|
|
9
|
+
# - LLM configured (see "LLM Configuration" below)
|
|
10
10
|
# - Run from the repository root (where tasks.md lives)
|
|
11
11
|
#
|
|
12
12
|
# Usage:
|
|
13
13
|
# bash .sdd-agent-pack/scripts/orchestrate.sh
|
|
14
|
-
#
|
|
15
|
-
# To run a single epic by number:
|
|
16
14
|
# bash .sdd-agent-pack/scripts/orchestrate.sh --single EPIC-001
|
|
15
|
+
#
|
|
16
|
+
# LLM Configuration:
|
|
17
|
+
# The OpenHands CLI needs to know which LLM to use. Configure via either:
|
|
18
|
+
#
|
|
19
|
+
# A) Environment variables (recommended — works with .env files):
|
|
20
|
+
# Copy .sdd-agent-pack/templates/env.example to .env and edit it.
|
|
21
|
+
# The script auto-loads .env if present.
|
|
22
|
+
#
|
|
23
|
+
# For OpenRouter:
|
|
24
|
+
# export LLM_API_KEY="sk-or-..."
|
|
25
|
+
# export LLM_MODEL="openrouter/anthropic/claude-sonnet-4-5-20250929"
|
|
26
|
+
# export LLM_BASE_URL="https://openrouter.ai/api/v1"
|
|
27
|
+
#
|
|
28
|
+
# For OpenAI:
|
|
29
|
+
# export LLM_API_KEY="sk-..."
|
|
30
|
+
# export LLM_MODEL="openai/gpt-4o"
|
|
31
|
+
#
|
|
32
|
+
# For Anthropic:
|
|
33
|
+
# export LLM_API_KEY="sk-ant-..."
|
|
34
|
+
# export LLM_MODEL="anthropic/claude-sonnet-4-5-20250929"
|
|
35
|
+
#
|
|
36
|
+
# B) openhands login (for OpenHands Cloud users)
|
|
37
|
+
#
|
|
38
|
+
# After setting env vars, pass --override-with-envs to the CLI so it
|
|
39
|
+
# uses them instead of saved config.
|
|
17
40
|
|
|
18
41
|
set -euo pipefail
|
|
19
42
|
|
|
43
|
+
# Auto-load .env if present
|
|
44
|
+
if [ -f ".env" ]; then
|
|
45
|
+
set -a
|
|
46
|
+
source .env
|
|
47
|
+
set +a
|
|
48
|
+
fi
|
|
49
|
+
|
|
20
50
|
TASKS_FILE="specs/tasks.md"
|
|
21
51
|
OPENHANDS_CMD="${OPENHANDS_CMD:-openhands}"
|
|
22
52
|
START_EPIC="${1:-}"
|
|
@@ -113,7 +143,7 @@ Instructions:
|
|
|
113
143
|
8. Do NOT work on any other epic"
|
|
114
144
|
|
|
115
145
|
echo "Starting OpenHands (headless)..."
|
|
116
|
-
if $OPENHANDS_CMD --headless -t "$prompt" 2>&1; then
|
|
146
|
+
if $OPENHANDS_CMD --headless --override-with-envs -t "$prompt" 2>&1; then
|
|
117
147
|
echo ""
|
|
118
148
|
echo "✓ [$current/$total] Epic completed: $epic"
|
|
119
149
|
else
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SDD Agent Pack — LLM Configuration
|
|
2
|
+
#
|
|
3
|
+
# Copy this file to .env at your repository root and fill in your values.
|
|
4
|
+
# The orchestration scripts will read these environment variables.
|
|
5
|
+
#
|
|
6
|
+
# Supported providers:
|
|
7
|
+
# OpenRouter — LLM_BASE_URL=https://openrouter.ai/api/v1
|
|
8
|
+
# OpenAI — LLM_BASE_URL=https://api.openai.com/v1
|
|
9
|
+
# Anthropic — LLM_BASE_URL=https://api.anthropic.com
|
|
10
|
+
# OpenHands — (built-in, no base URL needed)
|
|
11
|
+
|
|
12
|
+
# Your API key from the LLM provider
|
|
13
|
+
# For OpenRouter: get your key at https://openrouter.ai/keys
|
|
14
|
+
LLM_API_KEY=sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
15
|
+
|
|
16
|
+
# Model name (LiteLLM convention: provider/model-name)
|
|
17
|
+
# OpenRouter examples:
|
|
18
|
+
# openrouter/anthropic/claude-sonnet-4-5-20250929
|
|
19
|
+
# openrouter/openai/gpt-4o
|
|
20
|
+
# openrouter/meta-llama/llama-3-3-70b-instruct
|
|
21
|
+
# openrouter/google/gemini-2.0-flash-exp
|
|
22
|
+
LLM_MODEL=openrouter/anthropic/claude-sonnet-4-5-20250929
|
|
23
|
+
|
|
24
|
+
# Base URL for your LLM provider (leave empty for OpenHands Cloud)
|
|
25
|
+
LLM_BASE_URL=https://openrouter.ai/api/v1
|
|
@@ -10,7 +10,8 @@ export declare function backupFiles(repoRoot: string): Promise<void>;
|
|
|
10
10
|
export declare function createDirectories(repoRoot: string): Promise<void>;
|
|
11
11
|
/**
|
|
12
12
|
* Clean up old artifacts from previous SDD Agent Pack versions or approaches.
|
|
13
|
-
*
|
|
13
|
+
* Only removes files that are clearly SDD Agent Pack artifacts.
|
|
14
|
+
* Does NOT touch .agents/skills/ — that may contain user-installed skills.
|
|
14
15
|
*/
|
|
15
16
|
export declare function cleanOldArtifacts(repoRoot: string): Promise<void>;
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiEH,oEAAoE;AACpE,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjE;AAED,4DAA4D;AAC5D,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAED
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiEH,oEAAoE;AACpE,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjE;AAED,4DAA4D;AAC5D,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEtE;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE5E;AAED,oEAAoE;AACpE,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnE;AAED,6DAA6D;AAC7D,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpE;AAED,+CAA+C;AAC/C,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED,yDAAyD;AACzD,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgC7E;AAED,wCAAwC;AACxC,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpE;AAED,uCAAuC;AACvC,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,uDAAuD;AACvD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnE;AAED,oDAAoD;AACpD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE;AAED,gFAAgF;AAChF,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC3E"}
|
package/dist/utils/installer.js
CHANGED
|
@@ -81,18 +81,16 @@ export async function createDirectories(repoRoot) {
|
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Clean up old artifacts from previous SDD Agent Pack versions or approaches.
|
|
84
|
-
*
|
|
84
|
+
* Only removes files that are clearly SDD Agent Pack artifacts.
|
|
85
|
+
* Does NOT touch .agents/skills/ — that may contain user-installed skills.
|
|
85
86
|
*/
|
|
86
87
|
export async function cleanOldArtifacts(repoRoot) {
|
|
87
88
|
const removals = [
|
|
88
|
-
// Old backup dirs
|
|
89
89
|
join(repoRoot, '.sdd-agent-pack-backup'),
|
|
90
|
-
// Old autopilot state files
|
|
91
90
|
join(repoRoot, '.agents_tmp'),
|
|
92
91
|
join(repoRoot, '.autopilot'),
|
|
93
92
|
join(repoRoot, '.autopilot-state.json'),
|
|
94
93
|
join(repoRoot, '.autopilot-state.md'),
|
|
95
|
-
// Old autopilot docs (if empty after removal)
|
|
96
94
|
];
|
|
97
95
|
for (const path of removals) {
|
|
98
96
|
if (existsSync(path)) {
|
|
@@ -104,27 +102,6 @@ export async function cleanOldArtifacts(repoRoot) {
|
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
|
-
// Clean empty .agents/skills/ subdirs that don't match current skills
|
|
108
|
-
const currentSkills = ['sdd-epic-workflow', 'sdd-implementation', 'sdd-context', 'sdd-testing', 'sdd-completion'];
|
|
109
|
-
const agentsSkills = join(repoRoot, '.agents', 'skills');
|
|
110
|
-
if (existsSync(agentsSkills)) {
|
|
111
|
-
try {
|
|
112
|
-
const { readdir } = await import('fs/promises');
|
|
113
|
-
const entries = await readdir(agentsSkills, { withFileTypes: true });
|
|
114
|
-
for (const entry of entries) {
|
|
115
|
-
if (entry.isDirectory() && !currentSkills.includes(entry.name)) {
|
|
116
|
-
const skillPath = join(agentsSkills, entry.name);
|
|
117
|
-
// Only remove if it looks like an SDD skill (has SKILL.md)
|
|
118
|
-
if (existsSync(join(skillPath, 'SKILL.md'))) {
|
|
119
|
-
await remove(skillPath);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
// Non-critical
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
105
|
}
|
|
129
106
|
/**
|
|
130
107
|
* Set up the target repo environment for SDD workflow execution.
|
|
@@ -147,40 +124,64 @@ export async function setupEnvironment(repoRoot) {
|
|
|
147
124
|
// Non-critical
|
|
148
125
|
}
|
|
149
126
|
}
|
|
150
|
-
// 2. Check/install Python
|
|
151
|
-
// We
|
|
152
|
-
const hasUv = existsSync('/usr/local/bin/uv') || existsSync('/opt/homebrew/bin/uv');
|
|
127
|
+
// 2. Check/install Python packages for SDK orchestration
|
|
128
|
+
// We need: openhands-sdk, openhands-tools, pyyaml
|
|
153
129
|
const hasPip = existsSync('/usr/local/bin/pip3') || existsSync('/opt/homebrew/bin/pip3') || existsSync('/usr/bin/pip3');
|
|
154
|
-
|
|
130
|
+
const pipCmd = hasPip ? 'pip3' : 'pip';
|
|
131
|
+
const pythonSdks = 'openhands-sdk openhands-tools pyyaml';
|
|
132
|
+
// Check if Python SDK packages are already installed
|
|
155
133
|
try {
|
|
156
|
-
execSync('openhands
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
134
|
+
execSync('python3 -c "import openhands.sdk; import yaml" 2>/dev/null', { stdio: 'ignore' });
|
|
135
|
+
const hasUv = existsSync('/usr/local/bin/uv') || existsSync('/opt/homebrew/bin/uv');
|
|
136
|
+
// Try installing uv if missing (macOS/Linux) — used for OpenHands CLI
|
|
137
|
+
if (!hasUv) {
|
|
138
|
+
try {
|
|
139
|
+
execSync('curl -LsSf https://astral.sh/uv/install.sh | sh 2>/dev/null', { stdio: 'ignore', timeout: 30000 });
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// uv install failed — move on
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Check/install OpenHands CLI
|
|
164
146
|
try {
|
|
165
|
-
execSync('
|
|
147
|
+
execSync('openhands --version 2>/dev/null', { stdio: 'ignore' });
|
|
166
148
|
}
|
|
167
149
|
catch {
|
|
168
|
-
//
|
|
150
|
+
// Try installing via pip
|
|
151
|
+
try {
|
|
152
|
+
execSync(`${pipCmd} install openhands 2>/dev/null`, { stdio: 'ignore', timeout: 120000 });
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// CLI install failed — non-critical
|
|
156
|
+
}
|
|
169
157
|
}
|
|
158
|
+
return; // SDK already installed
|
|
170
159
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
160
|
+
catch {
|
|
161
|
+
// Python packages not installed — proceed to install
|
|
162
|
+
}
|
|
163
|
+
// Install Python SDK packages
|
|
164
|
+
try {
|
|
165
|
+
execSync(`${pipCmd} install ${pythonSdks} 2>/dev/null`, { stdio: 'ignore', timeout: 120000 });
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Try with uv
|
|
176
169
|
try {
|
|
177
|
-
|
|
178
|
-
|
|
170
|
+
const uvPath = '/root/.cargo/bin/uv';
|
|
171
|
+
const uvCmd = existsSync(uvPath) ? uvPath : 'uv';
|
|
172
|
+
execSync(`${uvCmd} pip install ${pythonSdks} 2>/dev/null`, { stdio: 'ignore', timeout: 120000 });
|
|
179
173
|
}
|
|
180
174
|
catch {
|
|
181
|
-
|
|
175
|
+
// Non-critical
|
|
182
176
|
}
|
|
183
177
|
}
|
|
178
|
+
// Also install the OpenHands CLI
|
|
179
|
+
try {
|
|
180
|
+
execSync(`${pipCmd} install openhands 2>/dev/null`, { stdio: 'ignore', timeout: 120000 });
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// CLI install failed — non-critical
|
|
184
|
+
}
|
|
184
185
|
}
|
|
185
186
|
/**
|
|
186
187
|
* Install OpenHands bridge files so the agent can discover SDD assets.
|
|
@@ -317,19 +318,21 @@ export async function updateAgentsMd(repoRoot) {
|
|
|
317
318
|
/** Add .sdd-agent-pack-backup to .gitignore */
|
|
318
319
|
export async function updateGitignore(repoRoot) {
|
|
319
320
|
const gitignorePath = join(repoRoot, '.gitignore');
|
|
320
|
-
const
|
|
321
|
+
const ignoreLines = ['.sdd-agent-pack-backup/', '.env'];
|
|
321
322
|
try {
|
|
322
323
|
let content = await readFile(gitignorePath, 'utf8');
|
|
323
324
|
const lines = content.split('\n').map((l) => l.trim());
|
|
324
|
-
|
|
325
|
-
lines.
|
|
326
|
-
|
|
325
|
+
for (const ignoreLine of ignoreLines) {
|
|
326
|
+
if (!lines.includes(ignoreLine)) {
|
|
327
|
+
lines.push(ignoreLine);
|
|
328
|
+
}
|
|
327
329
|
}
|
|
330
|
+
await writeFile(gitignorePath, lines.filter((l) => l.length > 0).join('\n') + '\n', 'utf8');
|
|
328
331
|
}
|
|
329
332
|
catch (err) {
|
|
330
333
|
const nodeErr = err;
|
|
331
334
|
if (nodeErr.code === 'ENOENT') {
|
|
332
|
-
await writeFile(gitignorePath,
|
|
335
|
+
await writeFile(gitignorePath, ignoreLines.join('\n') + '\n', 'utf8');
|
|
333
336
|
}
|
|
334
337
|
else {
|
|
335
338
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"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"}
|