|
2 | 2 |
|
3 | 3 | ## OpenAPI comparison |
4 | 4 |
|
5 | | -- `agenticflow-cli/openapi.json` (before): `59` operations, all no-security/public. |
| 5 | +- `agenticflow-cli/openapi.json`: `71` operations total (`59` no-security/public, `12` authenticated). |
6 | 6 | - `WorkflowChef-Web/openapi.json`: `407` operations total (`59` no-security/public, `348` secured). |
7 | 7 |
|
8 | 8 | ## Baseline decision |
9 | 9 |
|
10 | | -Use a curated bundled snapshot: |
| 10 | +Expose a MCP-first curated snapshot in `public_ops_manifest.json`: |
11 | 11 |
|
12 | | -- Keep the existing `59` no-security/public operations. |
13 | | -- Add authenticated operations required by current CLI wrappers. |
14 | | -- Exclude admin/internal endpoints from the bundled snapshot. |
| 12 | +- Keep discovery-first and agent-operator workflows that are UI-equivalent and operationally useful. |
| 13 | +- Exclude legacy/noisy entries unless the CLI intentionally surfaces them. |
| 14 | +- Keep side-effectful MCP runtime helpers visible but blocked in automated policy. |
15 | 15 |
|
16 | 16 | ## Declared public API vs CLI-supported coverage baseline |
17 | 17 |
|
18 | | -- **Declared public API** is the bundled snapshot contract: |
19 | | - - `71` operations total (`59` public/no-security + `12` authenticated wrapper-backed operations). |
20 | | - - Exposed through `catalog`/`ops` and reflected in CLI command docs. |
21 | | -- **CLI-supported coverage baseline** is the same operation set, with one `support_scope` per operation used by harness and release review. |
| 18 | +- Declared public API is the MCP-first snapshot contract (`src/agenticflow_cli/public_ops_manifest.json`). |
| 19 | +- CLI-supported coverage baseline is the same snapshot, with support classification applied per operation. |
22 | 20 |
|
23 | | -## Support matrix (single source of truth) |
| 21 | +## MCP-first manifest scope |
24 | 22 |
|
25 | | -The support scope baseline is stored in `src/agenticflow_cli/public_ops_manifest.json` on each operation record: |
| 23 | +Current manifest counts: |
26 | 24 |
|
27 | | -- `support_scope`: one of `executed`, `blocked-by-policy`, or `unsupported/out-of-scope`. |
28 | | -- `support_rationale`: operator-facing reason this operation is in its class. |
| 25 | +- `33` operations total. |
| 26 | +- `21` `supported-executed`. |
| 27 | +- `12` `supported-blocked-policy`. |
| 28 | +- `0` `unsupported/out-of-scope`. |
29 | 29 |
|
30 | | -Current baseline totals: |
| 30 | +## Support matrix |
31 | 31 |
|
32 | | -- `34` `executed` |
33 | | -- `17` `blocked-by-policy` |
34 | | -- `20` `unsupported/out-of-scope` |
| 32 | +The support scope in each manifest row is one of two values: |
35 | 33 |
|
36 | | -Policy semantics: |
| 34 | +- `supported-executed`: safe read/query/validation/public-wrapper operations that are executed in coverage and release smoke. |
| 35 | +- `supported-blocked-policy`: command intent exists, but execution is intentionally blocked in automated coverage for safety/policy reasons. |
37 | 36 |
|
38 | | -- `executed`: safe read/query/validation/public wrappers that coverage attempts as live API calls. |
39 | | -- `blocked-by-policy`: command intent exists, but execution is intentionally blocked in harness for safety/policy. |
40 | | -- `unsupported/out-of-scope`: intentionally not part of the CLI-supported public surface (internal, unsupported workflow, or unimplemented wrapper contract). |
| 37 | +## Release interpretation |
41 | 38 |
|
42 | | -## Release interpretation of support rows |
| 39 | +- `supported-executed`: release as supported behavior; these operations are expected to remain runnable in public smoke. |
| 40 | +- `supported-blocked-policy`: include as high-value, command-intent-backed surface area, but gate execution in automated coverage and runbooks. |
| 41 | +- `unsupported/out-of-scope`: not included in this manifest unless a command family later requires explicit declaration. |
43 | 42 |
|
44 | | -- `executed`: release as supported/available behavior. These operations are expected to remain runnable in public smoke checks. |
45 | | -- `blocked-by-policy`: keep listed as “declared public API, unavailable by policy” in release notes and include policy rationale. |
46 | | -- `unsupported/out-of-scope`: do not promote as supported features; these are intentionally outside the CLI contract even if visible in discovery. |
| 43 | +## Representative MCP-first authenticated operations still declared |
47 | 44 |
|
48 | | -## Added authenticated operation IDs |
49 | | - |
50 | | -- `create_workflow_model_v1_workspaces__workspace_id__workflows_post` |
| 45 | +- `get_by_id_v1_agents__agent_id__get` |
51 | 46 | - `get_workflow_model_v1_workflows__workflow_id__get` |
52 | | -- `update_workflow_model_v1_workspaces__workspace_id__workflows__workflow_id__put` |
53 | | -- `create_workflow_run_model_v1_workflow_runs__post` |
54 | 47 | - `get_workflow_run_model_v1_workflow_runs__workflow_run_id__get` |
55 | | -- `create_v1_agents__post` |
56 | | -- `get_by_id_v1_agents__agent_id__get` |
57 | | -- `update_v1_agents__agent_id__put` |
58 | | -- `ai_sdk_stream_v2_v1_agents__agent_id__stream_post` |
59 | | -- `get_dynamic_options_v1_node_types_name__node_type_name__dynamic_options_post` |
60 | | -- `get_app_connections_v1_workspaces__workspace_id__app_connections__get` |
61 | | -- `get_app_connection_categories_v1_workspaces__workspace_id__app_connections_categories_get` |
62 | | - |
63 | | -## Resulting bundled snapshot |
64 | | - |
65 | | -- `71` operations total. |
66 | | -- `59` no-security/public operations. |
67 | | -- `12` authenticated operations. |
68 | | - |
69 | | -## Commanding model |
70 | | - |
71 | | -High-level command families (`workflow`, `agent`, `node-types`, `connections`) are thin wrappers over `agenticflow_sdk` methods and use the operation IDs above in a UX-oriented form. |
72 | | -`call` is the raw OpenAPI command (`--operation-id` or `--method` + `--path`) and bypasses the high-level wrappers. |
73 | | - |
74 | | -## Runtime behavior |
75 | | - |
76 | | -- Commands with both anonymous and authenticated variants (`workflow get/run/run-status`, `agent get/stream`) now choose: |
77 | | - - authenticated operation when `AGENTICFLOW_PUBLIC_API_KEY` is present, |
78 | | - - anonymous operation when key is absent. |
79 | | -- Lifecycle and workspace commands (`workflow create/update`, `agent create/update`, `node-types dynamic-options`, `connections list/categories`) now use authenticated operation IDs. |
| 48 | +- `validate_create_workflow_model_v1_workflows_utils_validate_create_workflow_model_post` |
| 49 | +- `get_nodetype_models_v1_node_types__get` |
| 50 | +- `get_nodetype_model_by_name_v1_node_types_name__name__get` |
| 51 | +- `get_dynamic_options_v1_node_types_name__node_type_name__dynamic_options_post` (blocked) |
| 52 | +- `get_supported_node_types_v1_workspaces__workspace_id__workforce_node_types_get` |
| 53 | +- `get_providers_v1_model_providers__get` |
| 54 | +- `get_anonymous...`, `get_agent_thread...`, and anonymous workflow/read telemetry rows for MCP runtime flows. |
| 55 | + |
| 56 | +## Runtime behavior contract |
| 57 | + |
| 58 | +- Declared entries are the MCP-first baseline in this repo. |
| 59 | +- Unsupported/out-of-scope rows are omitted by default so the catalog/policy surface is intentionally quieter. |
| 60 | +- Side-effectful operations remain discoverable in manifest and docs only when policy says blocked. |
0 commit comments