Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions docs/cli/agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ Manage agent registrations in fullsend config. Add, list, update, and remove age
Register an agent in config by URL or local path. URL sources are automatically pinned to a specific commit SHA and annotated with a `#sha256=...` integrity hash. The URL prefix is added to `allowed_remote_resources` if not already present.

```bash
fullsend agent add https://github.com/my-org/agents/blob/main/harness/lint.yaml --fullsend-dir .fullsend
fullsend agent add harness/custom-review.yaml --name my-review --fullsend-dir .fullsend
fullsend agent add https://github.com/my-org/agents/blob/main/harness/lint.yaml --agent-dir .fullsend
fullsend agent add harness/custom-review.yaml --name my-review --agent-dir .fullsend
```

### Flags

| Flag | Default | Description |
|------|---------|-------------|
| `--fullsend-dir` | | Base directory containing the `.fullsend` layout (required) |
| `--agent-dir` | | Base directory containing agent definitions (required) |
| `--name` | derived from filename | Explicit agent name |

GitHub blob URLs are resolved to pinned `raw.githubusercontent.com` URLs. Non-GitHub URLs must already contain a commit SHA in the path. Local paths must be relative, must not contain path traversal (`..`), and the file must exist. If an agent with the same name already exists, the command fails.
Expand All @@ -41,14 +41,14 @@ GitHub blob URLs are resolved to pinned `raw.githubusercontent.com` URLs. Non-Gi
List all agents registered in config, showing each agent's name and source.

```bash
fullsend agent list --fullsend-dir .fullsend
fullsend agent list --agent-dir .fullsend
```

### Flags

| Flag | Default | Description |
|------|---------|-------------|
| `--fullsend-dir` | | Base directory containing the `.fullsend` layout (required) |
| `--agent-dir` | | Base directory containing agent definitions (required) |

Read-only. Displays a table with `NAME` and `SOURCE` columns. For URL agents, the `#sha256=...` integrity hash suffix is stripped from the displayed source for readability. Disabled agents (`enabled: false`) are included in the listing.

Expand All @@ -64,15 +64,15 @@ my-lint harness/my-lint.yaml
Update a URL-based agent to a new commit SHA and recompute the `#sha256=...` integrity hash. If no SHA is provided, the default branch HEAD is resolved automatically.

```bash
fullsend agent update triage --fullsend-dir .fullsend
fullsend agent update triage a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 --fullsend-dir .fullsend
fullsend agent update triage --agent-dir .fullsend
fullsend agent update triage a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 --agent-dir .fullsend
```

### Flags

| Flag | Default | Description |
|------|---------|-------------|
| `--fullsend-dir` | | Base directory containing the `.fullsend` layout (required) |
| `--agent-dir` | | Base directory containing agent definitions (required) |

Only URL agents can be updated — local path agents have nothing to pin. Non-GitHub URL agents require an explicit SHA argument. The integrity hash is recomputed by fetching the content at the new SHA.

Expand All @@ -81,29 +81,29 @@ Only URL agents can be updated — local path agents have nothing to pin. Non-Gi
Remove an agent from config. If the removed agent was the last one using a given `allowed_remote_resources` prefix, that prefix is also cleaned up.

```bash
fullsend agent remove triage --fullsend-dir .fullsend
fullsend agent remove triage --agent-dir .fullsend
```

### Flags

| Flag | Default | Description |
|------|---------|-------------|
| `--fullsend-dir` | | Base directory containing the `.fullsend` layout (required) |
| `--agent-dir` | | Base directory containing agent definitions (required) |

## `agent migrate-customizations`

Scan the `customized/` directory and migrate each override to a config-driven agent. Changes are committed to a branch and delivered via pull request. Use `--dry-run` to preview changes without creating a PR.

```bash
fullsend agent migrate-customizations --fullsend-dir .fullsend --dry-run
fullsend agent migrate-customizations --fullsend-dir .fullsend --repo owner/repo
fullsend agent migrate-customizations --agent-dir .fullsend --dry-run
fullsend agent migrate-customizations --agent-dir .fullsend --repo owner/repo
```

### Flags

| Flag | Default | Description |
|------|---------|-------------|
| `--fullsend-dir` | | Base directory containing the `.fullsend` layout (required) |
| `--agent-dir` | | Base directory containing agent definitions (required) |
| `--repo` | | Target repository (`owner/repo`) for the migration PR (required unless `--dry-run`) |
| `--dry-run` | `false` | Show what would change without creating a PR |

Expand Down
10 changes: 5 additions & 5 deletions docs/guides/dev/cli-internals.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,19 +102,19 @@ fullsend
│ ├── update <name> [sha] # Re-pin URL agent to new commit SHA
│ ├── remove <name> # Unregister agent from config
│ └── migrate-customizations # Migrate customized/ → config agents
│ ├── --fullsend-dir <dir> # Base directory with .fullsend layout
│ ├── --agent-dir <dir> # Base directory containing agent definitions
│ ├── --repo <owner/repo> # Target repo for migration PR
│ └── --dry-run # Preview changes without PR
├── lock [agent-name] # Pin remote deps to lock.yaml
│ ├── --all # Lock all harnesses in the harness directory
│ ├── --fullsend-dir <path> # Base directory with .fullsend layout
│ ├── --agent-dir <path> # Base directory containing agent definitions
│ ├── --forge <platform> # Lock only this forge variant; omit for all
│ ├── --update # Force re-resolve even if current
│ ├── --offline # Reject network fetches
│ ├── --max-depth <int> # Max transitive dependency depth
│ └── --max-resources <int> # Max total remote resources
├── run # Execute an agent in a sandbox
│ ├── --fullsend-dir <path> # Base directory with .fullsend layout
│ ├── --agent-dir <path> # Base directory containing agent definitions
│ ├── --target-repo <path> # Path to the target repository
│ ├── --output-dir <path> # Base directory for run output
│ ├── --env-file <path> # Load env vars from dotenv file (repeatable)
Expand Down Expand Up @@ -153,10 +153,10 @@ The `fullsend agent migrate-customizations` command converts `customized/` direc

```bash
# Preview what would change (no PR created)
fullsend agent migrate-customizations --fullsend-dir .fullsend --dry-run
fullsend agent migrate-customizations --agent-dir .fullsend --dry-run

# Create a migration PR
fullsend agent migrate-customizations --fullsend-dir .fullsend --repo owner/repo
fullsend agent migrate-customizations --agent-dir .fullsend --repo owner/repo
```

Migration actions per agent:
Expand Down
20 changes: 10 additions & 10 deletions docs/guides/user/bring-your-own-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -386,12 +386,12 @@ description: Org-specific linting rules and conventions.

Test it locally first (see [Testing locally](#testing-locally) for all flags):
```bash
fullsend run code --fullsend-dir .fullsend --target-repo ./my-repo --env-file .env.local
fullsend run code --agent-dir .fullsend --target-repo ./my-repo --env-file .env.local
```

Then register it:
```bash
fullsend agent add harness/code.yaml --name code --fullsend-dir .fullsend
fullsend agent add harness/code.yaml --name code --agent-dir .fullsend
```

Because config-registered agents take precedence over built-in agents on name collision, your `code` agent replaces the default — with all of the base agent's scripts, policies, host_files, and plugins still inherited.
Expand Down Expand Up @@ -431,7 +431,7 @@ Before registering, verify your agent works locally. Most agents need additional

```bash
fullsend run my-agent \
--fullsend-dir .fullsend \
--agent-dir .fullsend \
--target-repo ./my-repo \
--env-file .env.local
```
Expand All @@ -452,15 +452,15 @@ The examples above show customizing built-in agents via `base`. If you've built
# Add (auto-pins URL with SHA256):
fullsend agent add \
https://github.com/fullsend-ai/agents/blob/main/harness/triage.yaml \
--fullsend-dir .fullsend
--agent-dir .fullsend

# Add local:
fullsend agent add harness/my-agent.yaml --name my-agent --fullsend-dir .fullsend
fullsend agent add harness/my-agent.yaml --name my-agent --agent-dir .fullsend

# List / update / remove:
fullsend agent list --fullsend-dir .fullsend
fullsend agent update triage <sha> --fullsend-dir .fullsend
fullsend agent remove triage --fullsend-dir .fullsend
fullsend agent list --agent-dir .fullsend
fullsend agent update triage <sha> --agent-dir .fullsend
fullsend agent remove triage --agent-dir .fullsend
```

### Per-repo config (`.fullsend/config.yaml`)
Expand Down Expand Up @@ -513,12 +513,12 @@ If you have existing files in `customized/`, the `fullsend agent migrate-customi

Preview what would change:
```bash
fullsend agent migrate-customizations --fullsend-dir .fullsend --dry-run
fullsend agent migrate-customizations --agent-dir .fullsend --dry-run
```

Run the migration (creates a PR with the changes):
```bash
fullsend agent migrate-customizations --fullsend-dir .fullsend --repo owner/repo
fullsend agent migrate-customizations --agent-dir .fullsend --repo owner/repo
```

The tool classifies each override and takes the appropriate action:
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/user/building-custom-agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ jobs:
set -euo pipefail
mkdir -p "$GITHUB_WORKSPACE/output"
fullsend run my-agent \
--fullsend-dir "$GITHUB_WORKSPACE/.fullsend" \
--agent-dir "$GITHUB_WORKSPACE/.fullsend" \
--target-repo "$GITHUB_WORKSPACE/target-repo" \
--output-dir "$GITHUB_WORKSPACE/output"

Expand Down
18 changes: 9 additions & 9 deletions docs/guides/user/running-agents-locally.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ can also use `--keep-sandbox` to debug failures (but remember to remove them).
installing them all, you can use a container image fullsend publishes —
see [Run from a container](#run-from-a-container) below.

**Note**: to run custom agents set `--fullsend-dir` to the directory where your
**Note**: to run custom agents set `--agent-dir` to the directory where your
custom agent definitions exist.

### Triage agent
Expand All @@ -147,7 +147,7 @@ GITHUB_ISSUE_URL=https://github.com/{org}/{repo}/issues/{issue_num}

```bash
fullsend run triage \
--fullsend-dir /tmp/fullsend-agents/ \
--agent-dir /tmp/fullsend-agents/ \
--target-repo /tmp/target-repo/ \
--env-file fullsend-gcp.env \
--env-file fullsend-triage.env
Expand All @@ -169,7 +169,7 @@ REPO_FULL_NAME="{org}/{repo}"

```bash
fullsend run review \
--fullsend-dir /tmp/fullsend-agents/ \
--agent-dir /tmp/fullsend-agents/ \
--target-repo /tmp/target-repo/ \
--env-file fullsend-gcp.env \
--env-file fullsend-review.env
Expand All @@ -196,7 +196,7 @@ GITHUB_WORKSPACE=/tmp/

```bash
fullsend run code \
--fullsend-dir /tmp/fullsend-agents/ \
--agent-dir /tmp/fullsend-agents/ \
--target-repo /tmp/target-repo/ \
--env-file fullsend-gcp.env \
--env-file fullsend-code.env
Expand All @@ -222,13 +222,13 @@ to skip re-resolution when the harness has not changed since the lock was
generated. Generate or update a lock file with:

```bash
fullsend lock code --fullsend-dir /path/to/.fullsend
fullsend lock code --agent-dir /path/to/.fullsend
```

To lock all harnesses in the directory at once:

```bash
fullsend lock --all --fullsend-dir /path/to/.fullsend
fullsend lock --all --agent-dir /path/to/.fullsend
```

When `--forge` is specified, only that platform variant is locked. When omitted,
Expand Down Expand Up @@ -258,7 +258,7 @@ Example:

```bash
fullsend run triage \
--fullsend-dir /tmp/fullsend-agents/ \
--agent-dir /tmp/fullsend-agents/ \
--target-repo /tmp/target-repo/ \
--env-file fullsend-gcp.env \
--env-file fullsend-triage.env \
Expand Down Expand Up @@ -296,7 +296,7 @@ podman run --rm -it --network=host \
-v "$PWD:/work" \
ghcr.io/fullsend-ai/fullsend-runner:latest \
run triage \
--fullsend-dir /tmp/fullsend-agents/ \
--agent-dir /tmp/fullsend-agents/ \
--target-repo /tmp/target-repo/ \
--env-file fullsend-gcp.env \
--env-file fullsend-triage.env
Expand Down Expand Up @@ -356,7 +356,7 @@ git clone https://github.com/{org}/{target-repo} /tmp/target-repo
cp -r /tmp/target-repo/.fullsend/customized/. /tmp/agents/
```

When you execute `fullsend run`, pass `--fullsend-dir` as `/tmp/agents/`.
When you execute `fullsend run`, pass `--agent-dir` as `/tmp/agents/`.

## Platform notes

Expand Down
2 changes: 1 addition & 1 deletion docs/plans/agent-extraction-to-agents-repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ agents resolve correctly and show source as the agents repo URL
instead of scaffold:

```bash
fullsend agent list --fullsend-dir .
fullsend agent list --agent-dir .
```

Expected output: all 6 agents listed with their agents-repo URLs,
Expand Down
8 changes: 4 additions & 4 deletions docs/plans/agent-registration.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,10 @@ Both also seed default `AllowedRemoteResources`:
**File:** `internal/cli/agent.go` (new)

```
fullsend agent add <url-or-path> [--name <name>]
fullsend agent list [--fullsend-dir <path>]
fullsend agent update <name> [<sha>] [--fullsend-dir <path>]
fullsend agent remove <name> [--fullsend-dir <path>]
fullsend agent add <url-or-path> [--name <name>] [--agent-dir <path>]
fullsend agent list [--agent-dir <path>]
fullsend agent update <name> [<sha>] [--agent-dir <path>]
fullsend agent remove <name> [--agent-dir <path>]
```

Register in `internal/cli/root.go`:
Expand Down
2 changes: 1 addition & 1 deletion docs/plans/gitlab-cron-polling-implementation.md
Original file line number Diff line number Diff line change
Expand Up @@ -1492,7 +1492,7 @@ code:
--event-type "${EVENT_TYPE}" \
--event-payload-file "${EVENT_PAYLOAD_FILE}" \
--forge gitlab \
--fullsend-dir .fullsend
--agent-dir .fullsend
resource_group: "fullsend-code-${RESOURCE_KEY}"
rules:
- if: $STAGE == "code"
Expand Down
4 changes: 2 additions & 2 deletions docs/plans/universal-harness-access-phase3.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ harnesses:

### CLI lock command (`internal/cli/lock.go`)

- `fullsend lock <agent-name> --fullsend-dir <dir>` resolves all deps and writes lock file
- `fullsend lock <agent-name> --agent-dir <dir>` resolves all deps and writes lock file
- `--update` flag forces re-resolution even if entry is current
- Supports `--offline`, `--max-depth`, `--max-resources` flags

Expand All @@ -78,7 +78,7 @@ harnesses:

## Verification

1. `fullsend lock code --fullsend-dir .fullsend` generates lock file
1. `fullsend lock code --agent-dir .fullsend` generates lock file
2. `fullsend run code` uses lock file when available
3. Modifying harness triggers stale warning
4. Missing cache entries produce clear error messages
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ Both the `.fullsend` repo and the target repo are checked out side-by-side:
token: ${{ secrets.FULLSEND_DISPATCH_TOKEN }}
```

The composite action then references `--fullsend-dir .fullsend --target-repo target-repo`.
The composite action then references `--agent-dir .fullsend --target-repo target-repo`.

---

Expand Down
4 changes: 2 additions & 2 deletions eval/scripts/run-fullsend.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
# $3 — output directory
#
# Required env (injected by harness from hook outputs + execution.env):
# FULLSEND_DIR — path to the fullsend scaffold directory
# FULLSEND_DIR — path to the agent definitions directory
# GH_TOKEN — GitHub token
# FIXTURE_URL — URL of the fixture (issue or PR)
# FIXTURE_TYPE — "issue" or "pull_request"
Expand Down Expand Up @@ -68,7 +68,7 @@ mkdir -p "$OUTPUT_DIR"

rc=0
timeout "$EVAL_TIMEOUT" fullsend run "$AGENT" \
--fullsend-dir "${FULLSEND_DIR}" \
--agent-dir "${FULLSEND_DIR}" \
--target-repo "$TARGET_DIR" \
--env-file "$ENV_FILE" \
--output-dir "$OUTPUT_DIR" \
Expand Down
Loading
Loading