Skip to content
Open
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
8 changes: 7 additions & 1 deletion docs/open-collection-gap-analysis/AGENT_GOAL_PROMPTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ If an agent host does not inject the project-local skills, tell the agent to rea
/goal Complete OC-070 request creation, import/export, snippet, and Copilot protocol surface polish using $missio-agent-coordination and $missio-editor-schema-implementer without stopping until protocol-specific new request templates, protocol-preserving get/dry-run/list/send tooling, explicit unsupported import/export/snippet diagnostics, baseline tree/CodeLens/command regressions, AGENT_PROGRESS updates, and complete automated tests are implemented and passing.
```

## Request Type UX

```text
/goal Complete OC-100 request type UX using $missio-agent-coordination and $missio-editor-schema-implementer without stopping until Bruno/Postman UX benchmarking is recorded, UI request creation supports HTTP/GraphQL/WebSocket/gRPC type selection, the visual editor clearly shows and safely switches request type with preservation/loss confirmation, schema-valid conversion helpers are implemented, AGENT_PROGRESS updates are complete, and complete automated creation, conversion, validation, round-trip, and regression tests are passing.
```

## Protocol Runtime Lifecycle

```text
Expand All @@ -67,5 +73,5 @@ If an agent host does not inject the project-local skills, tell the agent to rea
## Final Integration

```text
/goal Complete final OpenCollection compatibility integration across all Missio tracks using $missio-agent-coordination without stopping until all OC-000 through OC-090 task rows are Done, all GitButler branches or PRs are linked, the full test suite and required fixture integration tests pass, documentation is consistent, and AGENT_PROGRESS.md contains final verification evidence.
/goal Complete final OpenCollection compatibility integration across all Missio tracks using $missio-agent-coordination without stopping until all OC-000 through OC-100 task rows are Done, all GitButler branches or PRs are linked, the full test suite and required fixture integration tests pass, documentation is consistent, and AGENT_PROGRESS.md contains final verification evidence.
```
20 changes: 19 additions & 1 deletion docs/open-collection-gap-analysis/AGENT_PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ Use full branch names for stacking existing branches with `but move <child-branc
| OC-060 | Schema round-trip and validation | Done | Codex | feature/oc-060-schema-roundtrip-validation (sc), stacked on feature/oc-000-foundation-dispatch (fo); implementation commit `166c297` | Add golden no-op editor/serializer round-trip tests for schema-valid HTTP, GraphQL, WebSocket, gRPC, folder, environment, and collection fixtures; add validation tests proving protocol-aware request subschema selection, workspace validation in collection reports, protocol-labelled diagnostics, unknown-field preservation, and non-HTTP files not gaining `http` keys. Run targeted validation/editor/service tests plus existing touched HTTP/import-export/editor regressions. | `npx vitest run test/schemaRoundTrip.test.ts test/validationService.test.ts` passed (8 tests); `npm test` passed (15 files, 341 tests); `npm run compile` passed; `npm run build` passed. | 2026-06-14 22:30 NZT | OC-060 complete and committed; no OC-060-owned unassigned changes remain after implementation commit. |
| OC-070 | Request creation, import/export, snippet, and Copilot surface polish | Unclaimed | - | - | - | - | - | Start after OC-050 if auth/transport templates matter; otherwise can begin with baseline audit and request creation. |
| OC-080 | Runtime lifecycle for WebSocket and unary gRPC | Unclaimed | - | - | - | - | - | Start after OC-040 and protocol executors; coordinate with OC-070 if Copilot runtime output changes. |
| OC-090 | gRPC streaming | Unclaimed | - | - | - | - | - | Start after OC-030; coordinate with OC-080 for runtime parity and with OC-070 for tooling summaries. |
| OC-090 | gRPC streaming | In Progress | Codex | feature/oc-090-grpc-streaming (am), stacked on applied OC-030 unary/protobuf work | Add fixture-backed tests for schema-native client-streaming, server-streaming, and bidi-streaming message sequences; gRPC method discovery for request/response streaming; metadata/auth/default preservation; validation diagnostics for invalid streaming payloads/methods/proto symbols; cancellation/timeout cleanup and partial-error retention; response provider/UI and Copilot tool streaming summaries; demo collection validation; regression coverage for unary gRPC and shared protocol dispatch. Run focused gRPC/round-trip/validation/tool/provider tests, demo fixture smoke tests, compile, full test, build, and demo collection validation. | Pending | 2026-06-14 23:55 NZT | Inspect current gRPC client/model/editor/tooling/test fixtures, then add streaming fixtures and failing coverage before implementation. |
| OC-100 | Request type UX | Unclaimed | - | - | - | - | - | Start after OC-050 if auth/template fields are changing; can otherwise run as a focused editor/command UX task after OC-090 files settle. |

## Dependency Map

Expand All @@ -82,6 +83,7 @@ Use full branch names for stacking existing branches with `but move <child-branc
| OC-070 | OC-000 type guards, protocol executors; OC-050 if auth/template surfaces change | User/agent surface completeness |
| OC-080 | OC-040 runtime engine, OC-020 WebSocket executor, OC-030 gRPC unary executor | Runtime parity for supported protocols |
| OC-090 | OC-030 gRPC unary/protobuf support | Full gRPC protocol compatibility |
| OC-100 | OC-000 type guards, OC-010/OC-020/OC-030 protocol editor foundations; OC-050 if auth/template fields change | Request creation and conversion UX completeness |

## Shared Decisions

Expand All @@ -97,6 +99,13 @@ Record cross-cutting decisions here so parallel agents do not rediscover them.

### Supervisor Reports

- 2026-06-15 00:02 NZT - Codex: Added OC-100 as a focused request type UX task.
GitButler: planning update is on `supervisor/add-request-type-ux-task`, stacked on `supervisor/add-oc080-oc090-tasks`; existing OC-050 and OC-090 implementation changes remain uncommitted and were not edited.
Coverage: documentation-only planning change; no runtime behavior changed.
Changed: `docs/open-collection-gap-analysis/README.md`, `AGENT_GOAL_PROMPTS.md`, `AGENT_PROGRESS.md`, `tasks/07-import-export-copilot.md`, and `tasks/10-request-type-ux.md`.
Verified: `rg "OC-100|request type UX|Request Type UX" docs/open-collection-gap-analysis` confirmed the task board, prompts, README, OC-070 dependency note, and task page references are present; GitButler commit pending.
Next: launch OC-100 as a focused editor/schema UX task once current OC-050/OC-090 file churn is low enough, or keep it queued behind OC-070 if import/export scope needs to share request templates.

- 2026-06-14 23:49 NZT - Codex: Added follow-up task definitions for the residual OpenCollection gaps and refreshed OC-070.
GitButler: planning update is on `supervisor/add-oc080-oc090-tasks`, stacked on `supervisor/oc-010-040-audit`; OC-050 is already claimed on `feature/oc-050-auth-transport` and was left untouched.
Coverage: documentation-only planning change; no runtime behavior changed.
Expand Down Expand Up @@ -264,4 +273,13 @@ No updates yet.

### OC-090 gRPC Streaming

- 2026-06-14 23:55 NZT - Codex: Claimed OC-090 and recorded the coverage plan before implementation.
GitButler: feature/oc-090-grpc-streaming (am); `but status -fv` shows parallel unassigned OC-050-auth-looking edits in `src/models/types.ts`, `src/services/oauth2Service.ts`, and `src/services/oauth2TokenHelper.ts`, which must be preserved unless a specific dependency emerges.
Coverage: planned automated tests for schema-native client-streaming, server-streaming, and bidirectional-streaming message sequences; method discovery and validation; metadata/auth/default inheritance; streaming execution against local gRPC fixtures; cancellation, timeout, cleanup, and partial-error diagnostics; response UI/provider and Copilot tool streaming summaries; demo request validation/smoke coverage; unary gRPC and shared protocol regressions.
Changed: `docs/open-collection-gap-analysis/AGENT_PROGRESS.md`.
Verified: `but status -fv`, OC-090 task page, OC-030 task page, demo server, and demo collection review completed; implementation tests not run yet.
Next: inspect gRPC client, request execution, models, panel/tool output, validation, demo proto/server, and current tests before adding streaming fixtures and implementation.

### OC-100 Request Type UX

No updates yet.
2 changes: 2 additions & 0 deletions docs/open-collection-gap-analysis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ If a scenario truly cannot be automated in this repo, document the reason, manua
| OC-070 | User/Agent Surface Polish | [07-import-export-copilot.md](tasks/07-import-export-copilot.md) | Protocol-aware request creation, import/export behavior, snippet limits, and Copilot polish. |
| OC-080 | Protocol Runtime Lifecycle | [08-runtime-non-http-protocols.md](tasks/08-runtime-non-http-protocols.md) | Apply scripts, assertions, tests, actions, and runtime variables to supported non-HTTP executors. |
| OC-090 | gRPC Streaming | [09-grpc-streaming.md](tasks/09-grpc-streaming.md) | Client, server, and bidirectional gRPC streaming execution, UI, fixtures, and tests. |
| OC-100 | Request Type UX | [10-request-type-ux.md](tasks/10-request-type-ux.md) | UI request type selection, visibility, safe conversion, and Bruno/Postman-aligned workflow review. |

## Project Skills

Expand All @@ -87,6 +88,7 @@ OC-000 through OC-040 and OC-060 have removed most of the original HTTP-only fou
| Evidence | Location |
| --- | --- |
| New request creation still needs schema-native protocol starter templates and UX coverage. | [src/commands/requestCommands.ts](../../src/commands/requestCommands.ts) |
| Request `type:` is not yet a first-class visual editor choice or safe conversion workflow. | [src/webview/requestPanel.ts](../../src/webview/requestPanel.ts) |
| Importers and exporters need explicit protocol preservation or unsupported-conversion diagnostics. | [src/importers](../../src/importers) |
| Snippet export remains HTTP-oriented and should not silently accept non-HTTP requests. | [src/services/snippetService.ts](../../src/services/snippetService.ts) |
| Runtime scripts/assertions/actions are verified for HTTP and GraphQL-over-HTTP; WebSocket and gRPC need lifecycle parity. | [src/services/requestExecutionService.ts](../../src/services/requestExecutionService.ts) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ Finish the user-facing and agent-facing protocol surface after OC-000 through OC
| OC-050 | If OC-050 changes auth representation or transport settings, OC-070 should update starter templates, import/export preservation, and Copilot redaction tests to match. |
| OC-080 | If OC-080 changes runtime result shapes for WebSocket/gRPC, OC-070 should update Copilot `send_request` assertions and docs accordingly. |
| OC-090 | If OC-090 lands first, OC-070 should include gRPC streaming method summaries in list/get/dry-run tests. |
| OC-100 | If OC-100 lands first, OC-070 should reuse its request type templates/conversion helpers instead of creating separate protocol starter logic. |

## Acceptance Criteria

Expand Down
97 changes: 97 additions & 0 deletions docs/open-collection-gap-analysis/tasks/10-request-type-ux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# OC-100 Request Type UX

## Goal

Make request type management obvious and deliberate in Missio's UI. Users should be able to choose the request type when creating a request, see the current type while editing, and convert between compatible request types without corrupting schema data.

## Product Benchmark

Review current request-type workflows in industry-standard REST/API clients before implementation:

| Tool | UX Pattern To Inspect |
| --- | --- |
| Bruno | Request creation flow, request type/protocol labels, GraphQL/gRPC/WebSocket affordances, and whether type changes are supported after creation. |
| Postman | New request protocol picker, type labels in tabs/sidebar, request conversion behavior, and guardrails when switching protocols with incompatible fields. |
| Missio current state | Command palette/tree context creation, request editor header, YAML fallback, and how `type: http`, `type: graphql`, `type: websocket`, and `type: grpc` are represented. |

Record the benchmark findings in `AGENT_PROGRESS.md` before implementation. Prefer patterns that are familiar to users of Bruno/Postman, but keep Missio aligned with the OpenCollection schema rather than copying product-specific data models.

## Current Gap

| Surface | Gap |
| --- | --- |
| New request | Users cannot choose `http`, `graphql`, `websocket`, or `grpc` from the UI when creating a request. |
| Editor header | The current request type is not prominent or editable in the visual editor. |
| Type switching | There is no guided way to change request type, even when common fields such as name, URL, headers, auth, variables, runtime, and settings can be preserved. |
| Data safety | Switching between incompatible protocols needs explicit confirmation and a preview of fields that will be preserved, transformed, or dropped. |
| Tree/context actions | Context menus do not expose protocol-specific creation commands at collection/folder scope. |
| Tests | Existing protocol tests prove execution/editor behavior, but not request-type creation or conversion UX. |

## Implementation Plan

1. Audit the current UI entry points:

| Entry Point | Work |
| --- | --- |
| Command palette | Find `newRequest` and related command handlers. |
| Tree context menu | Find folder/collection context commands and menu contribution points. |
| Request editor | Find the visual editor header and protocol-specific panels. |
| YAML fallback | Confirm manual `type:` edits remain supported and validated. |

2. Design the request type UX:

| Need | Expected Behavior |
| --- | --- |
| Creation | User selects HTTP, GraphQL, WebSocket, or gRPC before the starter YAML is written. |
| Current type | Editor shows a clear protocol/type control near the request title or primary request controls. |
| Switching | Type control offers compatible conversions and marks destructive conversions with confirmation. |
| Preservation preview | Conversion explains preserved, transformed, and removed fields before applying. |
| Defaults | New templates use realistic schema-valid defaults and line up with demo requests. |

3. Implement schema-aware conversion:

| Source/Target | Minimum Preservation |
| --- | --- |
| HTTP to GraphQL | Name, URL, method where relevant, headers, auth, params, variables, runtime, settings. |
| GraphQL to HTTP | Name, URL, method, headers, auth, params, variables, runtime, settings; GraphQL query/variables become a safe body representation only with user confirmation. |
| HTTP/GraphQL to WebSocket | Name, URL where compatible, headers, auth, variables, runtime, settings. |
| HTTP/GraphQL to gRPC | Name, auth, variables, runtime, settings; URL/metadata preserved only when semantically valid. |
| WebSocket/gRPC to other protocols | Preserve shared schema fields and require confirmation for protocol-specific message/method/proto data loss. |

4. Add guardrails:

| Guardrail | Behavior |
| --- | --- |
| Non-destructive default | Do not discard protocol-specific fields without explicit confirmation. |
| YAML round-trip | Unknown but schema-valid fields must survive no-op edits and safe conversions. |
| Validation | Converted requests validate against the selected type's schema before saving. |
| Undo | Conversion should be a normal editor/workspace edit that users can undo. |

5. Add tests and docs:

| Area | Coverage |
| --- | --- |
| Command/service unit tests | Creation templates and conversion helpers for all supported request types. |
| Editor/webview tests | Type selector rendering, conversion confirmation messaging, and save payloads. |
| Round-trip tests | Converted requests preserve shared fields and do not leak old protocol roots. |
| Regression tests | Existing HTTP, GraphQL, WebSocket, and gRPC fixtures still load, edit, validate, and execute. |
| User docs | Briefly document how to create and switch request types, including destructive conversion warnings. |

## Acceptance Criteria

| Requirement | Acceptance |
| --- | --- |
| Protocol creation | UI can create schema-valid HTTP, GraphQL, WebSocket, and gRPC requests. |
| Type visibility | Visual editor makes the current request type obvious without requiring YAML inspection. |
| Safe switching | Users can switch request type with clear preservation/loss preview and confirmation for destructive conversions. |
| Schema alignment | Saved YAML uses the OpenCollection `type:` field and protocol-specific roots correctly. |
| Industry alignment | Progress log records Bruno/Postman UX observations and the resulting Missio decisions. |
| Tests | Complete automated tests cover creation, conversion, validation, round-trip preservation, and regressions for existing protocol fixtures. |

## Out Of Scope

| Area | Reason |
| --- | --- |
| Implementing missing protocol execution | Covered by OC-010, OC-020, OC-030, OC-090, and OC-080. |
| Import/export/snippet protocol polish | Covered by OC-070. |
| Auth/transport behavior | Covered by OC-050. |
Loading