Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
9a84425
docs: claude's dw for implementation inspiration
Waishnav Jul 21, 2026
a7c95ec
docs: devspace plan
Waishnav Jul 21, 2026
2800b80
html response
Waishnav Jul 21, 2026
28f3e5b
feat(workflow): freeze public types and limits
Waishnav Jul 21, 2026
f01a96e
refactor(agents): rename thinking to effort
Waishnav Jul 21, 2026
5209347
docs(agents): document effort field and CLI flag
Waishnav Jul 21, 2026
0443586
feat(db): add workflow journal tables (v5)
Waishnav Jul 21, 2026
f39bc2c
feat(workflow): implement WorkflowStore journal API
Waishnav Jul 21, 2026
930e8b3
feat(workflow): add script parser and restricted sandbox
Waishnav Jul 21, 2026
775f7f0
feat(workflow): implement engine API with fakes
Waishnav Jul 21, 2026
d5ea59d
feat(workflow): add files, worktrees, replay, and schema
Waishnav Jul 21, 2026
d14d67c
feat(workflow): add CLI run/status/cancel/ls and worker
Waishnav Jul 21, 2026
c921419
feat(workflow): add dynamic-workflows skill and seed both defaults
Waishnav Jul 21, 2026
349b52c
feat(agents): add agentProviders config + init/doctor probe
Waishnav Jul 21, 2026
e1ec049
feat(workflow): register MCP run/status/cancel tools
Waishnav Jul 21, 2026
3030d86
feat(agents): pass schema as Codex turn outputSchema
Waishnav Jul 21, 2026
6af99da
feat(agents): Claude native outputFormat + structured_output
Waishnav Jul 21, 2026
7d797e3
feat(workflow): native-first schema for codex/claude agent()
Waishnav Jul 21, 2026
a8b8e5a
fix(workflow): make native schema fallback session-aware
Waishnav Jul 21, 2026
3343404
test(workflow): normalize persisted paths on windows
Waishnav Jul 21, 2026
4cb4007
refactor(workflow): strengthen contracts and zod boundaries
Waishnav Jul 21, 2026
d5b00f5
refactor(workflow): model operational failures with better-result
Waishnav Jul 21, 2026
f9a1dc7
feat(workflow): persist replay provenance
Waishnav Jul 25, 2026
c8f0b65
feat(workflow): add script iteration and call inspection
Waishnav Jul 25, 2026
058297b
docs(workflow): teach recovery without budget stub
Waishnav Jul 25, 2026
332aa8e
feat(workflow): query runs by workspace
Waishnav Jul 25, 2026
a499c2e
feat(workflow): project workflow read model
Waishnav Jul 25, 2026
5ee0022
feat(workflow): add read-only project TUI
Waishnav Jul 25, 2026
dbe26f7
feat(workflow): add UI snapshot projections
Waishnav Jul 25, 2026
d3643e8
feat(workflow): expose read-only app snapshots
Waishnav Jul 25, 2026
57296a6
feat(ui): recognize workflow result cards
Waishnav Jul 25, 2026
4bc9558
feat(ui): add live workspace and workflow dashboards
Waishnav Jul 25, 2026
4777bab
docs(ui): document read-only workflow dashboards
Waishnav Jul 25, 2026
f5e9252
feat(workflow): isolate script execution in child process
Waishnav Jul 26, 2026
09a7fc4
test(workflow): cover sandbox termination and escapes
Waishnav Jul 26, 2026
12cee07
fix(workflow): keep sandbox values in vm realm
Waishnav Jul 27, 2026
d4efd02
fix(workflow): harden sandbox process teardown
Waishnav Jul 27, 2026
a78357a
fix(workflow): journal terminal transitions atomically
Waishnav Jul 26, 2026
5528337
feat(workflow): add shared lifecycle supervisor
Waishnav Jul 26, 2026
e0b078a
fix(workflow): supervise cancellation and stale workers
Waishnav Jul 26, 2026
244d42e
fix(workflow): close stale reaper races
Waishnav Jul 27, 2026
0b52e5e
fix(workflow): bound MCP event pages
Waishnav Jul 27, 2026
ed623da
feat(workflow): persist exact replay values
Waishnav Jul 26, 2026
749ebb7
fix(workflow): replay only deterministic call prefixes
Waishnav Jul 26, 2026
4b0802f
docs(workflow): explain deterministic prefix replay
Waishnav Jul 26, 2026
8f30225
test(workflow): cover oversized structured results
Waishnav Jul 27, 2026
287cbce
refactor(agents): share profile prompt identity helpers
Waishnav Jul 26, 2026
550f776
feat(workflow): select configured agent profiles
Waishnav Jul 26, 2026
229f282
fix(workflow): honor nested workflow context
Waishnav Jul 26, 2026
7675c14
fix(workflow): confine project workflow scripts
Waishnav Jul 26, 2026
b9c78eb
fix(workflow): parse module syntax without raw scans
Waishnav Jul 26, 2026
323fe50
docs(workflow): teach profile selection and project scripts
Waishnav Jul 26, 2026
a23be1c
fix(workflow): preserve resume names and typed reads
Waishnav Jul 26, 2026
94ac40d
fix(workflow): parse metadata as pure literals
Waishnav Jul 27, 2026
3f01013
test(workflow): cover path and profile identity guards
Waishnav Jul 27, 2026
620b180
refactor(config): remove experimental provider persistence
Waishnav Jul 27, 2026
d640cf8
refactor(agents): share execution target resolution
Waishnav Jul 27, 2026
f2482bb
refactor(agents): describe provider model and effort capabilities
Waishnav Jul 27, 2026
321b81c
refactor(features): separate subagent and workflow capabilities
Waishnav Jul 27, 2026
69fee30
fix(workspace): expose only usable agent capabilities
Waishnav Jul 27, 2026
f25d8e9
refactor(skills): replace subagent delegation guidance
Waishnav Jul 27, 2026
2f17478
docs(skills): add provider-specific override references
Waishnav Jul 27, 2026
f214c19
fix(skills): keep bundled agent skills package-managed
Waishnav Jul 27, 2026
1ace1f0
refactor(workflow): name live provider availability accurately
Waishnav Jul 27, 2026
5c1ddea
docs(agents): document experimental capability boundaries
Waishnav Jul 27, 2026
691998e
test(workflow): follow provider availability rename
Waishnav Jul 27, 2026
5bf5374
docs(config): describe effective agent capability gates
Waishnav Jul 27, 2026
562e54a
feat(agents): discover usable delegation targets
Waishnav Jul 27, 2026
b347a82
feat(workflow): merge dw-16 agent/subagent overhaul (#118)
Waishnav Jul 27, 2026
b677c3e
feat(workflow): merge dw-15 profiles and project workflows (#117)
Waishnav Jul 27, 2026
8ce8274
Merge pull request #116 from pr/dw-14-prefix-replay-integrity
Waishnav Jul 27, 2026
0b0f5e2
Merge pull request #115 from pr/dw-13-workflow-lifecycle-supervisor
Waishnav Jul 27, 2026
e3ffd22
Merge pull request #114 from pr/dw-12-sandbox-process-boundary
Waishnav Jul 27, 2026
0328090
Merge pull request #112 from pr/dw-11-workflow-mcp-ui
Waishnav Jul 27, 2026
6b449e6
Merge pull request #111 from pr/dw-10-workflow-tui
Waishnav Jul 27, 2026
1a6764d
Merge pull request #108 from pr/dw-9-resume-iteration-inspection
Waishnav Jul 27, 2026
1e21ad1
Merge pull request #101 from pr/dw-8-result-errors
Waishnav Jul 27, 2026
d052520
Merge pull request #100 from pr/dw-7-typed-contracts-zod
Waishnav Jul 27, 2026
7304a6a
Merge pull request #99 from pr/dw-6-native-schema
Waishnav Jul 27, 2026
171d43f
Merge pull request #98 from pr/dw-5-mcp-skill
Waishnav Jul 27, 2026
a28337e
Merge pull request #97 from pr/dw-4-cli-worker
Waishnav Jul 27, 2026
73ef5fe
Merge pull request #96 from pr/dw-3-engine
Waishnav Jul 27, 2026
0e30254
Merge pull request #95 from pr/dw-2-store-sandbox
Waishnav Jul 27, 2026
cc09a09
refactor(workflow): house WorkflowEngineError in workflow-errors
Waishnav Jul 27, 2026
070fbd6
fix(workflow): fail agent calls when return value exceeds replay budget
Waishnav Jul 27, 2026
0c8acef
refactor(workflow): drop path throw shims; Result-only file APIs
Waishnav Jul 27, 2026
8cffabe
fix(workflow): track phase in sandbox child via AsyncLocalStorage
Waishnav Jul 27, 2026
94e198f
refactor(workflow): extract shared launch and worker modules
Waishnav Jul 27, 2026
8337f2c
refactor(workflow): drop consume-once compatible_key and unused schem…
Waishnav Jul 27, 2026
e55f20e
docs(workflow): align resume docs with prefix-only replay
Waishnav Jul 27, 2026
f916212
refactor(workflow): transact agent call lifecycle events
Waishnav Jul 27, 2026
4d958b3
test(workflow): cover atomic agent call transitions
Waishnav Jul 27, 2026
03a1a72
feat(workflow): enforce per-run agent call budget
Waishnav Jul 27, 2026
9860cbd
test(workflow): cover agent call budget boundary
Waishnav Jul 27, 2026
65da3e6
fix(cli): scope agent work to the current project
Waishnav Aug 8, 2026
26fb3eb
feat(cli): add structured agent and workflow output
Waishnav Aug 8, 2026
c3b60ef
fix(workflow): preserve result types across error paths
Waishnav Aug 8, 2026
36da490
test(cli): compare canonical Git workspace paths
Waishnav Aug 8, 2026
1f6c021
fix(cli): preserve json tokens inside agent prompts
Waishnav Aug 8, 2026
801feb5
fix(cli): include root-scoped workflows in workspace views
Waishnav Aug 8, 2026
ad95856
refactor(mcp): remove workflow orchestration tools
Waishnav Aug 8, 2026
a7b0d27
refactor(mcp): minimize workspace agent summaries
Waishnav Aug 8, 2026
6e7fe72
fix(mcp): scope workflow summaries by workspace
Waishnav Aug 8, 2026
7d602ea
test(mcp): include standalone workflows in summaries
Waishnav Aug 8, 2026
e01dd87
docs(skill): teach CLI subagent delegation
Waishnav Aug 8, 2026
ee2693c
docs(skill): teach CLI workflow orchestration
Waishnav Aug 8, 2026
2eb4c84
test(skill): drop provider reference assumptions
Waishnav Aug 8, 2026
411e393
docs(skill): clarify polling and resume boundaries
Waishnav Aug 8, 2026
2e301f0
feat(config): select enabled agent providers
Waishnav Aug 8, 2026
f986101
feat(init): onboard agent tooling and install skills
Waishnav Aug 8, 2026
c77dd36
refactor(ui): remove stale workflow monitor remnants
Waishnav Aug 8, 2026
17e6a9d
docs: document CLI-only agent tooling
Waishnav Aug 8, 2026
b0c0ff1
fix(init): preserve provider defaults when tooling is off
Waishnav Aug 8, 2026
c373be7
test(tui): add large workflow fixture gallery
Waishnav Aug 8, 2026
d45afcc
feat(workflow): add observability storage contracts
Waishnav Aug 8, 2026
30239df
feat(workflow): persist phases usage and agent activity
Waishnav Aug 8, 2026
95becf7
test(db): expect workflow observability migration
Waishnav Aug 8, 2026
8542b0e
feat(tui): derive workflow navigator views
Waishnav Aug 8, 2026
b9c81c9
feat(tui): add workflow navigator and call inspector
Waishnav Aug 8, 2026
0ece2a2
test(tui): seed navigator observability states
Waishnav Aug 8, 2026
3aadb3c
fix(tui): preserve safe navigator selection
Waishnav Aug 8, 2026
c59266f
feat(agents): observe Codex and Claude runs
Waishnav Aug 8, 2026
c4af5c7
feat(workflow): persist live provider observations
Waishnav Aug 8, 2026
84fc2ee
fix(workflow): accumulate usage across provider retries
Waishnav Aug 8, 2026
47cd18f
feat(agents): observe remaining provider activity
Waishnav Aug 8, 2026
7f310ed
fix(opencode): scope observations to the current turn
Waishnav Aug 8, 2026
bc75551
fix(agents): retain complete Claude usage
Waishnav Aug 19, 2026
350a56f
fix(workflow): enforce MCP workspace boundaries
Waishnav Aug 19, 2026
17fa809
Merge remote-tracking branch 'origin/codex/workflow-provider-observab…
Waishnav Aug 19, 2026
2cb5d8b
fix(agents): retain ACP and Pi usage
Waishnav Aug 19, 2026
db14329
fix(workflow): harden shared workflow launches
Waishnav Aug 19, 2026
f86f3a5
docs(workflow): include profiles in replay identity
Waishnav Aug 19, 2026
89e5c8a
fix(tui): restore terminal on refresh failures
Waishnav Aug 19, 2026
f5191ea
fix(workflow): isolate unidentified run scopes
Waishnav Aug 19, 2026
1ed5826
fix(cli): document trailing JSON output flag
Waishnav Aug 19, 2026
14797ae
fix(workflow): validate observability persistence
Waishnav Aug 19, 2026
f2907f8
fix(workflow): seed real replay fixture provenance
Waishnav Aug 19, 2026
05f00e4
test(mcp): assert removed workspace schema fields
Waishnav Aug 19, 2026
45417a3
fix(ui): tolerate partial workflow summaries
Waishnav Aug 19, 2026
6ad6595
Merge remote-tracking branch 'origin/codex/workflow-observability' in…
Waishnav Aug 19, 2026
d804f82
merge: sync workflow foundation fixes
Waishnav Aug 19, 2026
d5ca96e
Merge remote-tracking branch 'origin/codex/workflow-navigator' into c…
Waishnav Aug 19, 2026
294fda8
merge: sync workflow launch fixes
Waishnav Aug 19, 2026
896b0ce
merge: sync workflow transaction base
Waishnav Aug 19, 2026
146d86b
Merge remote-tracking branch 'origin/codex/workflow-provider-observab…
Waishnav Aug 19, 2026
7b15f4f
merge: sync workflow budget base
Waishnav Aug 19, 2026
c68c5d0
merge: sync CLI workflow scoping fixes
Waishnav Aug 19, 2026
4ec71ce
Merge remote-tracking branch 'origin/codex/dw-cli-only-surface' into …
Waishnav Aug 19, 2026
2a70158
merge: sync CLI skills and workflow fixes
Waishnav Aug 19, 2026
8734d90
fix(workflow): preserve launch result error types
Waishnav Aug 19, 2026
9a1aebc
test(workflow): drop removed MCP helper coverage
Waishnav Aug 19, 2026
6b5d32a
test(ui): drop removed workflow dashboard coverage
Waishnav Aug 19, 2026
54463ca
Merge remote-tracking branch 'origin/pr/dw-cleanup-launch-errors-phas…
Waishnav Aug 19, 2026
d096a3d
Merge remote-tracking branch 'origin/pr/dw-agent-call-transactions' i…
Waishnav Aug 19, 2026
64736df
Merge remote-tracking branch 'origin/pr/dw-agent-call-budget' into HEAD
Waishnav Aug 19, 2026
e5e656e
Merge remote-tracking branch 'origin/codex/dw-cli-contract' into HEAD
Waishnav Aug 19, 2026
dc91695
Merge remote-tracking branch 'origin/codex/dw-cli-only-surface' into …
Waishnav Aug 19, 2026
0936ca7
Merge remote-tracking branch 'origin/codex/dw-cli-skills' into HEAD
Waishnav Aug 19, 2026
b254b68
Merge remote-tracking branch 'origin/codex/dw-onboarding' into codex/…
Waishnav Aug 19, 2026
f259655
Merge remote-tracking branch 'origin/codex/workflow-observability' in…
Waishnav Aug 19, 2026
9344d82
Merge remote-tracking branch 'origin/codex/workflow-navigator' into c…
Waishnav Aug 19, 2026
faaf6c4
Merge remote-tracking branch 'origin/codex/workflow-provider-observab…
Waishnav Aug 19, 2026
ccbbee0
feat(agents): emit compact XML fragments by default
Waishnav Aug 30, 2026
f683283
feat(agents): persist internal turn history
Waishnav Aug 30, 2026
d855fa8
feat(agents): add event-driven multi-agent wait
Waishnav Aug 30, 2026
f28d794
feat(workflow): reconcile workflow stack with agent daemon
Waishnav Aug 31, 2026
9bee905
feat(agents): configure provider launch environment
Waishnav Aug 30, 2026
46a8a38
fix(agents): refresh daemon provider configuration
Waishnav Aug 31, 2026
e4d64c4
docs(agents): teach XML and multi-agent wait
Waishnav Aug 31, 2026
18a996a
chore(workflow): merge latest main cleanup
Waishnav Aug 31, 2026
ab75b79
feat(workflow): integrate current agent coordination primitives
Waishnav Aug 31, 2026
727de68
chore: merge current pnpm tooling
Waishnav Aug 31, 2026
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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ devspace doctor

- [Setup Guide](https://github.com/Waishnav/devspace/blob/main/docs/setup.md)
- [ChatGPT Coding Workflow](https://github.com/Waishnav/devspace/blob/main/docs/chatgpt-coding-workflow.md)
- [Subagents and Dynamic Workflows](https://github.com/Waishnav/devspace/blob/main/docs/dynamic-workflows.md)
- [Configuration Reference](https://github.com/Waishnav/devspace/blob/main/docs/configuration.md)
- [Native File Download](https://github.com/Waishnav/devspace/blob/main/docs/artifact-exchange.md)
- [Security Model](https://github.com/Waishnav/devspace/blob/main/docs/security.md)
Expand Down
36 changes: 30 additions & 6 deletions docs/agent-profile-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,40 @@ Recommended body content:

## Model-facing workflow

The Subagent skill teaches only:
The Subagent skill uses the default compact XML fragments:

```bash
devspace agents ls --json
devspace agents targets --json
devspace agents run <profile-or-provider> "<prompt>" --json
devspace agents continue <id> "<prompt>" --json
devspace agents show <id> --json
devspace agents targets
devspace agents ls
devspace agents run <profile-or-provider> "<prompt>"
devspace agents continue <id> "<prompt>"
devspace agents show <id>
devspace agents wait <id>...
```

The commands do not add a document-level wrapper. `targets`, `ls`, and `wait`
print one fragment per item and print nothing for an empty list. This keeps the
model-facing result small:

```xml
<provider name="codex" model="gpt-5.4" effort="high"/>
<profile name="reviewer" provider="codex">Read-only code review.</profile>
<agent id="agt_123" status="running"/>
<agent id="agt_123" status="completed">Review complete.</agent>
<agent id="agt_456" status="failed" code="PROVIDER_EXECUTION_ERROR" retryable="true">Provider disconnected.</agent>
<error code="AGENT_NOT_FOUND" retryable="false" agent-id="agt_missing">Subagent not found.</error>
```

`show` returns an immediate snapshot. `wait` accepts one or more agent IDs and
waits for all of their current work. It does not stream fragments as individual
agents finish. With `--timeout <seconds>`, it returns each unique agent in
first-seen order and marks unfinished work with `status="running"
wait="timeout"`.

`--json` remains available for scripts that need it, but the bundled skill does
not request it. Internal turn records, prompts, provider session IDs, workspace
paths, and timestamps are absent from both output formats.

`open_workspace` exposes compact profile metadata:

```json
Expand Down
3 changes: 2 additions & 1 deletion docs/chatgpt-coding-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ Set `skills.enabled` to `false` to hide skills from workspace output. Enable
Subagents and choose providers through `devspace init` or the persisted provider
configuration. The bundled `subagents` skill teaches the minimal
`devspace agents targets`, `devspace agents ls`, `devspace agents run`,
`devspace agents continue`, and `devspace agents show` workflow. The catalog
`devspace agents continue`, `devspace agents show`, and `devspace agents wait`
workflow. The catalog
comes from `open_workspace`; `devspace agents ls` lists existing subagent
sessions for that workspace.

Expand Down
29 changes: 25 additions & 4 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ Subagent providers are explicit. Omitted providers are disabled:
"enabled": true,
"model": "gpt-5.4",
"effort": "high",
"command": "/opt/devspace/bin/codex-wrapper",
"env": {
"CODEX_HOME": "/home/alice/.codex-work",
"OPENAI_BASE_URL": "https://api.example.com/v1",
},
},
{
"id": "claude",
Expand All @@ -130,10 +135,26 @@ Profiles are loaded from `~/.devspace/agents/*.md` and project
`.devspace/agents/*.md`. `devspace agents targets` prints the configured targets
available in the current workspace.

Provider executable discovery remains process-scoped. The supported overrides
are `CODEX_COMMAND`, `CODEX_HOME`, `CLAUDE_COMMAND`, `CURSOR_COMMAND`,
`COPILOT_COMMAND`, `GROK_COMMAND`, and `GROK_AGENT_PROFILE`. DevSpace does not
persist provider credentials.
`command` names one executable. DevSpace does not split shell arguments, so use
a wrapper executable when startup needs fixed arguments. `env` maps environment
variable names to literal string values and preserves empty strings. DevSpace
does not expand `$NAME` references in these values.

Codex, Claude, Cursor, Copilot, and Grok accept `command` and `env`. OpenCode and
Pi are embedded, so their provider entries reject both fields. The daemon
inherits its startup environment, then overlays the provider's `env`. An
explicit `command` wins over both the inherited command override and a command
override placed in `env`.

Existing process-level overrides remain supported: `CODEX_COMMAND`,
`CODEX_HOME`, `CLAUDE_COMMAND`, `CURSOR_COMMAND`, `COPILOT_COMMAND`,
`GROK_COMMAND`, and `GROK_AGENT_PROFILE`. Provider configuration takes
precedence where the same value is set in both places.

DevSpace writes `config.jsonc` with mode `0600`, but provider environment values
are still plain text on disk. Keep the file out of version control. Leave
credentials in the process environment if you do not want DevSpace to persist
them.

## Native artifact download

Expand Down
95 changes: 95 additions & 0 deletions docs/dynamic-workflows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Subagents And Dynamic Workflows

DevSpace exposes one agent execution layer through its CLI. Coding harnesses
such as Codex, Pi, OpenCode, or Cursor can call it directly. ChatGPT and Claude
can call the same commands through DevSpace's ordinary shell or process tools.
There are no dedicated subagent or workflow-execution MCP tools.

## Setup

Run `devspace init` and enable agent tooling. Setup probes the supported
providers, asks which ones DevSpace may use, and prints installation commands
for two Coding Agent skills:

- `subagents` for one bounded delegation and later follow-ups
- `dynamic-workflows` for programmed multi-agent orchestration

Provider selection is stored as provider objects under `subagents` in
`~/.devspace/config.jsonc`. Runtime availability is checked again before a
provider is shown or used. MCP workspaces load the bundled copies when
subagents are enabled.

## Project Scope

Run agent commands from the intended project. When an MCP host invokes the CLI,
DevSpace injects the opened workspace identity. In a standalone harness,
DevSpace discovers the current Git repository or project directory. Lists,
lookups, continuations, status checks, and cancellations stay inside that
scope.

## Direct Subagents

```bash
devspace agents targets --json
devspace agents run <profile-or-provider> "<brief>" --json
devspace agents show <id> --json
devspace agents continue <id> "<follow-up>" --json
devspace agents stop <id> --json
devspace agents ls --json
```

Use a direct subagent for one focused implementation, investigation, review, or
verification task. Profiles can supply role instructions and provider/model
defaults. The child runs independently and returns an id that the orchestrator
polls or continues.

## Dynamic Workflows

```bash
devspace workflow run --name <name> --json
devspace workflow run --file <script.js> --arg key=value --json
devspace workflow status <run-id> --json
devspace workflow calls <run-id> --json
devspace workflow call <run-id> <call-index> --json
devspace workflow cancel <run-id> --json
devspace workflow ls --json
devspace workflow tui [run-id]
```

Named scripts live in `.devspace/workflows/<name>.js`. A script can combine
`agent`, `parallel`, `pipeline`, `phase`, `log`, and one-level nested
`workflow` calls. Agent calls can request structured JSON or an isolated Git
worktree.

Agent harnesses should prefer `--json`, retain the returned id, and poll status.
This avoids coupling a long workflow lifetime to one tool-call timeout.
`--follow` remains available for interactive terminals with long-running
process support.

`workflow tui` opens a project-scoped, read-only Navigator. Without a run id it
starts on the workflow list; with a run id it opens that run directly. Opening a
run shows its declared phases beside the agent calls in the selected phase.
Calls without a declared phase are grouped under `Other`. Terminals narrower
than 80 columns show one pane at a time, with `Tab` switching panes. Opening a
call exposes normalized activity, prompt, result, worktree details, and provider
metadata. Use arrow keys (or `j`/`k`) to navigate, `Tab` to switch panes or
inspector sections, `Enter` to open, `Esc` to go back, and `q` to quit.

Elapsed time is derived from persisted call timestamps. Token counts are
best-effort provider observations: a running call may show a partial snapshot,
while a completed call shows its final provider-reported total. Providers that
cannot report a value remain visibly unavailable instead of being estimated.
Replayed calls do not contribute tokens to the current run.

Failed and cancelled workflows are terminal. `workflow run --resume <run-id>`
creates a new run, reuses the unchanged successful prefix when safe, and
continues live from the first failed or changed call.

## MCP Boundary

`open_workspace` exposes the current compact subagent profile and provider
catalog from the core agent system. It does not include active workflow runs,
workflow phases, session identifiers, or internal counters. Hosts inspect
those only when needed through `devspace workflow` commands. This keeps the
host as the orchestrator without adding a second workflow-specific MCP or
dashboard surface.
3 changes: 2 additions & 1 deletion docs/gotchas.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ When Subagents are enabled, DevSpace loads agent profiles from
compact profile catalog through `open_workspace`. The bundled
`subagents` skill keeps the model-facing workflow to
`devspace agents targets`, `devspace agents ls`, `devspace agents run`,
`devspace agents continue`, and `devspace agents show`.
`devspace agents continue`, `devspace agents show`, and `devspace agents wait`.
Those commands automatically manage the internal local agent daemon; `devspace
serve` is not a prerequisite.
`devspace agents ls` lists existing subagent sessions, not profile
Expand All @@ -229,6 +229,7 @@ For a Coding Agent, run the installation command printed by

```bash
npx skills add Waishnav/devspace --skill subagents --global
npx skills add Waishnav/devspace --skill dynamic-workflows --global
```

The Skills CLI handles agent discovery and installation. DevSpace setup does
Expand Down
29 changes: 19 additions & 10 deletions docs/local-agent-daemon.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ by the MCP server and not by an individual CLI invocation. The daemon is an
internal implementation detail: the normal workflow remains:

```text
devspace agents run/continue/show/ls
devspace agents targets/run/continue/show/wait/ls
devspace-agentd
Expand Down Expand Up @@ -58,15 +58,24 @@ devspace agents daemon stop
devspace agents daemon logs
```

Agent commands accept `--json` when a machine-readable response is needed.
They emit one compact JSON value. `run` and `continue` return only the logical
agent ID and status, `ls` returns session summaries, and `show` returns the
response or structured failure for one agent. Internal workspace paths,
provider session IDs, timestamps, and prior responses are not included in list
or receipt output. Immediate failures are emitted as
`{ error: { code, message, retryable, ... } }` with a non-zero exit code.
Successful `daemon status` and `daemon stop` output the daemon status object,
and successful `daemon logs` output is `{ "logs": "<text>" }`.
The client and daemon compare an internal revision of the provider
configuration. A client replaces an idle daemon when that configuration has
changed. It never stops a daemon with active work; the client returns the
retryable `DAEMON_CONFIG_CHANGED` error until that work finishes. The revision
is not included in status, logs, or agent command output.

Model-facing agent commands emit compact XML fragments by default. Lists use
one fragment per item without a root wrapper, and empty lists print nothing.
`run` and `continue` return only the logical agent ID and status. `show` returns
an immediate snapshot. `wait` blocks for one or more agents and can return a
complete ordered snapshot at a caller-supplied timeout. It does not stream
individual completions.

Internal turns, prompts, workspace paths, provider session IDs, timestamps, and
prior responses are not included. Immediate failures use an `<error>` fragment
and a non-zero exit code. `--json` remains available for compatibility and
scripts. Daemon diagnostic commands keep their existing text and JSON output;
they do not use the model-facing XML format.

Agent identity is explicit at the client boundary. `agents run` starts a new
logical agent from a profile or provider; `agents continue <id>` continues an
Expand Down
8 changes: 5 additions & 3 deletions docs/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,13 @@ If you selected Coding Agents, setup prints:

```bash
npx skills add Waishnav/devspace --skill subagents --global
npx skills add Waishnav/devspace --skill dynamic-workflows --global
```

The Skills CLI asks which installed Coding Agents should receive the skill.
The skill uses `devspace agents targets`, `run`, `continue`, `show`, and `ls`.
These commands do not require `devspace serve`.
The Skills CLI asks which installed Coding Agents should receive each skill.
The subagent skill uses `devspace agents targets`, `run`, `continue`, `show`,
`wait`, `stop`, and `ls`. The workflow skill adds the durable `devspace workflow`
runner and Navigator. These commands do not require `devspace serve`.

### Connect ChatGPT

Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"build": "pnpm clean && pnpm build:app && tsc -p tsconfig.build.json",
"build:app": "vite build",
"dev": "tsx watch --clear-screen=false src/cli.ts serve",
"dev:tui-fixture": "tsx scripts/workflow-tui-fixture.ts",
"postinstall": "node scripts/fix-node-pty-permissions.mjs",
"prepack": "pnpm build",
"schema:config": "tsx scripts/generate-config-schema.ts",
Expand All @@ -50,13 +51,15 @@
"@modelcontextprotocol/sdk": "^1.29.0",
"@opencode-ai/sdk": "^1.17.13",
"@pierre/diffs": "^1.2.5",
"ajv": "^8.20.0",
"better-result": "^2.10.0",
"better-sqlite3": "^12.10.0",
"cross-spawn": "^7.0.6",
"diff": "^8.0.3",
"drizzle-orm": "^0.45.2",
"express": "^5.2.1",
"jsonc-parser": "^3.3.1",
"json-schema-to-ts": "^3.1.1",
"lucide": "^1.24.0",
"react": "^19.2.6",
"react-dom": "^19.2.6",
Expand Down
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions schema/v1/devspace.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,21 @@
"effort": {
"type": "string",
"minLength": 1
},
"command": {
"type": "string",
"minLength": 1,
"pattern": "\\S"
},
"env": {
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
Expand Down
Loading
Loading