Skip to content

docs: document recent package updates#373

Open
poe-code-agent[bot] wants to merge 15 commits into
mainfrom
agent/update-documentation
Open

docs: document recent package updates#373
poe-code-agent[bot] wants to merge 15 commits into
mainfrom
agent/update-documentation

Conversation

@poe-code-agent

@poe-code-agent poe-code-agent Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Update existing documentation PR for the commits that landed in the last 24 hours.
  • Document per-invocation spawn environment overrides, native OpenTelemetry capture flags, and current spawn CLI/SDK options.
  • Document @poe-code/agent-script/core, agent-script spawn retry lifecycle events, and harness retry behavior.
  • Document human-gated task workflow transitions and the Maestro gate state field.
  • Document Toolcraft OpenAPI inspection, Swagger 2 normalization, real-world schema support, and new inspection exports.
  • Document the Toolcraft design renderCatalog component.

Verification

  • git diff --check
  • npx prettier --check packages/agent-script/README.md packages/agent-harness/README.md packages/task-list/README.md packages/agent-maestro/README.md packages/toolcraft-openapi/README.md packages/toolcraft-design/README.md

@poe-code-agent poe-code-agent Bot force-pushed the agent/update-documentation branch from b2b7cec to 9a6b224 Compare May 28, 2026 00:35

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@poe-code-agent poe-code-agent Bot changed the title docs: document recent task and output updates docs: document recent package updates Jun 3, 2026

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking: the runtime parser accepts missing kind/version, but pipelineDocumentSchema.required still includes both fields. If users validate against the exported schema, this sentence may read as too broad; consider clarifying runtime-optional vs schema-required if that split is intentional.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 038eaaac04

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct schema-required plan fields

This describes kind and version as optional, but the exported pipelineDocumentSchema still has required: ["kind", "version", "tasks"] while only parsePlan tolerates omissions. Users following this README with the generated schema will omit these fields and then get validation failures, so either the schema needs to be relaxed or the docs should distinguish runner-tolerated fields from schema-required metadata.

Useful? React with 👍 / 👎.

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parser tolerates omitted kind/version, but the generated schema still requires them (pipelineDocumentSchema.required includes kind, version, and tasks). If this sentence is meant to describe schema-valid plan files, consider narrowing the optional metadata claim.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

| `name` | `string` | none | MCP server name exposed during initialization. |
| `version` | `string` | none | MCP server version exposed during initialization. |
| `validateToolArguments` | `boolean` | `true` | Validate tool call arguments against each tool input schema. |
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking: createHttpServer currently overwrites supportNotifications and supportResourceSubscriptions from whether sessions are enabled, so callers can't independently set these booleans. In stateless mode they are disabled; in session mode an explicit false is ignored. It may be clearer to document them as session-derived behavior rather than configurable HTTP options.

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: API docs still describe unsupported/incorrect option behavior.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The runtime parser tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them (required: ["kind", "version", "tasks"]). As written, users validating against the schema will omit fields this README calls optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() currently overwrites these base options from session support, so callers cannot independently configure them: stateless mode disables both, and an explicit false is ignored when sessions are enabled.

Suggested change
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |
| `supportNotifications` | session-derived | `true` with sessions, `false` stateless | HTTP transport advertises list-change notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |
| `supportResourceSubscriptions` | session-derived | `true` with sessions, `false` stateless | HTTP transport enables resource subscriptions/update notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 18699d1353

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct the HTTP capability option defaults

For createHttpServer() these two options are not actually caller-controlled defaults: the implementation overwrites any supplied values with supportsSessions after spreading options, so sessionful servers always advertise them and --stateless / sessionIdGenerator: undefined servers never do. As written, users may configure or rely on prompt/resource list-change notifications or resource subscriptions in the wrong transport mode and see different capabilities during MCP initialization, so the docs should describe them as derived from session support rather than normal boolean options.

Useful? React with 👍 / 👎.

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: API docs still describe unsupported option behavior.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The runtime parser tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them (required: ["kind", "version", "tasks"]). As written, users validating against the schema will omit fields this README calls optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() currently derives these capabilities from session support after spreading options, so callers cannot independently configure them: stateless mode disables both, and an explicit false is ignored when sessions are enabled.

Suggested change
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |
| `supportNotifications` | session-derived | `true` with sessions, `false` stateless | HTTP transport advertises list-change notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |
| `supportResourceSubscriptions` | session-derived | `true` with sessions, `false` stateless | HTTP transport enables resource subscriptions/update notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: API docs still describe unsupported option behavior.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parser tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them (required: ["kind", "version", "tasks"]). As written, users validating against the schema will omit fields this README calls optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() currently derives these capabilities from session support after spreading options, so callers cannot independently configure them: stateless mode disables both, and an explicit false is ignored when sessions are enabled.

Suggested change
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |
| `supportNotifications` | session-derived | `true` with sessions, `false` stateless | HTTP transport advertises list-change notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |
| `supportResourceSubscriptions` | session-derived | `true` with sessions, `false` stateless | HTTP transport enables resource subscriptions/update notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: fix documented behavior that disagrees with implementation.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The runtime parser tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them (required: ["kind", "version", "tasks"]). As written, users validating against the schema will omit fields this README calls optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() derives these two capabilities from session support after spreading options, so callers cannot independently configure them: stateless mode disables both, and an explicit false is ignored when sessions are enabled.

Suggested change
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |
| `supportNotifications` | session-derived | `true` with sessions, `false` stateless | HTTP transport advertises list-change notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |
| `supportResourceSubscriptions` | session-derived | `true` with sessions, `false` stateless | HTTP transport enables resource subscriptions/update notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |

poe-code tasks import --from ./incoming-tasks --to ./WORKFLOW.md --dry-run --keep
```

The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The import CLI only sets deleteSource when --delete-source is passed; --keep is accepted but is effectively the default. This sentence currently documents the opposite default.

Suggested change
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, source files are kept. Pass `--delete-source` to delete successfully imported source files. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dcea300e1f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread docs/README_FULL.md
| `--stdin` | `false` | Read the prompt from stdin. |
| `-i, --interactive` | `false` | Launch in interactive TUI mode (inherits stdio). |
| `--mode <mode>` | `yolo` | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). |
| `--mode <mode>` | Prompts (`--yes`: `yolo`) | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). Non-TTY runs must pass `--mode` or `--yes`. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fix stdin spawn examples to pass mode

Because resolveSpawnMode rejects any spawn with process.stdin.isTTY !== true unless --mode or --yes is supplied, the stdin examples later in this README (echo ... | poe-code spawn ... --stdin, ... -, and pipe detection) now fail immediately without reaching the agent. Please update those piped/non-TTY examples to include --mode or --yes, otherwise users following the documented stdin workflow hit the new validation error.

Useful? React with 👍 / 👎.

poe-code tasks import --from ./incoming-tasks --to ./WORKFLOW.md --dry-run --keep
```

The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct import deletion default

In runImport, source files are deleted only when --delete-source is provided (moveTasks receives deleteSource only for that flag), so --keep is not the inverse of a default deletion mode. As written, users may rely on this README and then re-run imports against files that were left behind by default, causing duplicate/failed creates depending on the target backend.

Useful? React with 👍 / 👎.

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: docs still contradict runtime behavior.

Comment thread docs/README_FULL.md
| `--stdin` | `false` | Read the prompt from stdin. |
| `-i, --interactive` | `false` | Launch in interactive TUI mode (inherits stdio). |
| `--mode <mode>` | `yolo` | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). |
| `--mode <mode>` | Prompts (`--yes`: `yolo`) | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). Non-TTY runs must pass `--mode` or `--yes`. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new non-TTY requirement is correct, but the stdin examples below still omit --mode/--yes, so they now fail in resolveSpawnMode. Please update the cat ... --stdin and echo ... - examples to include a mode.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parsePlan tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them. If this README is documenting schema-valid plan files, avoid calling those schema fields optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

poe-code tasks import --from ./incoming-tasks --to ./WORKFLOW.md --dry-run --keep
```

The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runImport only passes deleteSource to moveTasks when --delete-source is set; --keep is accepted but already matches the default. This paragraph currently documents the opposite default.

Suggested change
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, source files are kept. Pass `--delete-source` to delete successfully imported source files. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

| `name` | `string` | none | MCP server name exposed during initialization. |
| `version` | `string` | none | MCP server version exposed during initialization. |
| `validateToolArguments` | `boolean` | `true` | Validate tool call arguments against each tool input schema. |
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() derives these HTTP capabilities from session support after spreading options, so callers cannot independently set this boolean: stateless mode disables it, and sessionful mode forces it on. The same applies to supportResourceSubscriptions on the next line.

poe-code-agent Bot added 2 commits June 10, 2026 00:38
…ation

# Conflicts:
#	e2e/goose.test.ts
#	e2e/mcp-tool.test.ts
#	e2e/opencode.test.ts
#	packages/agent-spawn/README.md
#	src/providers/opencode.ts
#	src/providers/providers.test.ts

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes: docs still contradict runtime behavior.

Comment thread docs/README_FULL.md
| `--stdin` | `false` | Read the prompt from stdin. |
| `-i, --interactive` | `false` | Launch in interactive TUI mode (inherits stdio). |
| `--mode <mode>` | `yolo` | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). |
| `--mode <mode>` | Prompts (`--yes`: `yolo`) | Permission mode: `yolo` (full access), `edit` (file edits only), `read` (read-only). Non-TTY runs must pass `--mode` or `--yes`. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new non-TTY requirement is correct, but the stdin examples below still omit --mode/--yes. Those examples pipe stdin, so resolveSpawnMode rejects them before the agent runs. Please add an explicit mode or --yes to the --stdin, -, and pipe-detection examples.

```

Each step becomes its own agent execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parser tolerates omitted kind/version, but the exported pipelineDocumentSchema still requires them. If this README is documenting schema-valid plan files, avoid calling those schema fields optional.

Suggested change
Each step becomes its own agent execution. `kind`, `version`, `name`, and `state` are optional plan metadata fields; the runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).
Each step becomes its own agent execution. `name` and `state` are optional plan metadata fields; `kind: pipeline` and `version: 1` are schema metadata, and the runner tolerates omitted values for those fields at runtime. The runner uses `extends`, `tasks`, `vars`, hooks, and MCP config for execution. Steps are resolved from `.poe-code/pipeline/steps.yaml` (or `~/.poe-code/pipeline/steps.yaml`). See [Step Configuration](#step-configuration).

poe-code tasks import --from ./incoming-tasks --to ./WORKFLOW.md --dry-run --keep
```

The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runImport only passes deleteSource to moveTasks when --delete-source is set; --keep is accepted but already matches the default. This paragraph currently documents the opposite default.

Suggested change
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, successfully imported source files are deleted. Pass `--keep` to leave source files in place. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.
The import source is treated as a `markdown-dir` backend with `singleList: "import"` and `frontmatterMode: "passthrough"`, so files without full task frontmatter can be imported. By default, source files are kept. Pass `--delete-source` to delete successfully imported source files. `--rate`, `--limit`, and `--dry-run` match `poe-code tasks move`.

Comment on lines +278 to +279
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createHttpServer() derives these HTTP capabilities from session support after spreading options, so callers cannot independently set these booleans: stateless mode disables both, and sessionful mode forces them on.

Suggested change
| `supportNotifications` | `boolean` | `true` | Advertise tools/prompts/resources list-change notifications. |
| `supportResourceSubscriptions` | `boolean` | `true` | Advertise resource subscription support and enable resource update notifications. |
| `supportNotifications` | session-derived | `true` with sessions, `false` stateless | HTTP transport advertises list-change notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |
| `supportResourceSubscriptions` | session-derived | `true` with sessions, `false` stateless | HTTP transport enables resource subscriptions/update notifications when sessions are enabled; `createHttpServer()` derives this from `sessionIdGenerator`. |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants