Fixed issues related to operationPath and operationID resolving#2229
Fixed issues related to operationPath and operationID resolving#2229HimethW wants to merge 7 commits into
Conversation
…Description.url}#/paths/~1categories~1tree~1{categoryId} now in addition to toolshop#/paths/~1categories~1tree~1{categoryId}
here the string is split at the # and the two parts are evaluated seperately
… when a operationID is given it iterates through all the sources. now in addition to that, we can provide operationId: $sourceDescriptions.toolshopDescription.getProducts this will call a function that will find the correct source description first to narrow down and then use the already exisiting method to pinpoint the operationID within that source
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (4)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Updates the Arazzo Go runner’s operation resolution so steps can resolve operations using (1) qualified operationId expressions scoped to a specific sourceDescriptions entry and (2) more flexible operationPath forms (including $sourceDescriptions.<name>.url-style source references and path-only pointers). The PR also adds new example Arazzo files and expands internal documentation/handover notes.
Changes:
- Add support for qualified
operationIdlookups scoped to a named source description. - Enhance
operationPathresolution to handle$sourceDescriptions.<name>.url-style expressions and path-only pointers. - Add new go-runner test examples and expand documentation files.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| workspaces/arazzo/arazzo-designer-cli/internal/runner/executor/step_executor.go | Uses qualified-operationId parsing and forwards raw operationPath parts to FindByPath() for expression/braces handling. |
| workspaces/arazzo/arazzo-designer-cli/internal/runner/executor/operation_finder.go | Implements qualified operationId parsing + scoped lookup, resolves $sourceDescriptions.<name>.url refs, and adds path-only pointer fallback logic. |
| workspaces/arazzo/examples/go-runner-test/toolshop/16-operation-path-advanced.arazzo.yaml | New example demonstrating operationPath expression + path-only pointers. |
| workspaces/arazzo/examples/go-runner-test/toolshop/17-qualified-operation-id.arazzo.yaml | New example demonstrating qualified operationId syntax. |
| workspaces/arazzo/Explanation.md | Documentation updates reflecting MCP server task architecture and related features. |
| workspaces/arazzo/readme(project).md | Adds project setup notes (currently includes incorrect toolchain guidance and personal branch guidance). |
| workspaces/arazzo/handover.md | Adds a project handover document (includes sections not directly related to this PR’s change scope). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| } | ||
|
|
||
| // parseQualifiedOperationID parses the Arazzo spec form | ||
| // "$sourceDescriptions.NAME.operationId" into (sourceName, operationId, true). |
| // Supports both plain operationId and the qualified Arazzo spec form | ||
| // "$sourceDescriptions.NAME.operationId" which scopes the search to one source. |
| // resolvePathOnly handles JSON pointers that reference a path item rather than a | ||
| // specific operation, e.g. /paths/~1pet~1findByStatus (no HTTP method suffix). | ||
| // It returns the first HTTP method found for the decoded path, in httpMethods order. | ||
| func (of *OperationFinder) resolvePathOnly(jsonPointer, sourceName string, sourceDesc map[string]interface{}) *OperationInfo { |
| info: | ||
| title: Toolshop Qualified OperationID Example | ||
| summary: Demonstrates using scoped operationId references. | ||
| description: This example shows how to use the Arazzo spec compliant "$sourceDescriptions.NAME.operationId" syntax. |
| - condition: $statusCode == 200 | ||
|
|
||
| outputs: | ||
| productName: $steps.getProductDetailStep.outputs.response.body.name |
| - condition: $statusCode == 200 | ||
|
|
||
| outputs: | ||
| categoryData: $steps.getSpecificCategoryStep.outputs |
| ## Stuff to know | ||
| - in this repo the arazzo-extension-OTeL-v2 is the correct branch to be working on. as of now it is upto date with the wso2 arazzo-extension branch (I did a git pull origin arazzo-extension). this means it has the latest arazzo visulaizer plugin updates | ||
| - other than the plugin code it also has the explanation.md fully updated and pushed | ||
| - as for the arazzo-extension-cliupdate-v3 branch don't use it. it just has the --docker flag and the -o flag added to the cli and the pllan.md files in addition to this branch which are not usefull for the plugin. those are some of the personal updates done (needed them for the CLI tool in the arazzo-mcp-generator) | ||
| - so in the future make sure to use this v2 branch and continue |
| - need to have go(0.26 something) and node(i used 25) installed | ||
| - update the rush.json to be compatible with the node version | ||
| - do rush install (later if needed rush update. this can be useful if rush build is failing) | ||
| - the rush build -t arazzo-visualizer | ||
| - both need to be run from where the rush.json is at |
| 5. Marketing & Documentation | ||
| README: Refined the VS Code Marketplace README to heavily emphasize the live execution dashboard, OpenTelemetry tracing, the bundled Go runner, and the dual nature of "Try with AI" vs "Try with curl" (including the headless REST API). | ||
|
|
||
| Launch Strategy: Outlined a developer-focused marketing plan including architecture deep-dive blogs (Dev.to/Hashnode), a "Show HN" Hacker News launch, and short-form GIF/video content for social media. | ||
|
|
||
| 6. University Internship Report Context | ||
| We generated a massive, 35-40 page structured LaTeX document for an academic industrial training report (Color Code: CS Orange). The report comprehensively covers the intern's contributions to WSO2, detailing: | ||
|
|
||
| The LSP, RPC layers, and Webview architecture. | ||
|
|
||
| The Visitor pattern for AST parsing. | ||
|
|
||
| OpenTelemetry integration and the dual Arazzo/Trace server setup. | ||
|
|
||
| Soft skills development, organizational SWOT analysis, and references to the Arazzo and MCP specifications. | ||
|
|
||
| 7. Future Horizons: Arazzo for MCP | ||
| We discussed a cutting-edge theoretical architecture: adapting the Arazzo Go Runner to orchestrate Model Context Protocol (MCP) tools instead of standard REST APIs. This would involve creating a custom mcp-stdio source type in the YAML, allowing developers to build strictly deterministic, non-hallucinating agentic workflows. No newline at end of file |
| @@ -0,0 +1,33 @@ | |||
| ## Stuff to know | |||
| - in this repo the arazzo-extension-OTeL-v2 is the correct branch to be working on. as of now it is upto date with the wso2 arazzo-extension branch (I did a git pull origin arazzo-extension). this means it has the latest arazzo visulaizer plugin updates | |||
Bring over wso2/vscode-extensions#2229 so the runner resolves sourceDescription-qualified operationPath and operationId values in this standalone repo. Co-authored-by: Cursor <cursoragent@cursor.com>
opearationPath now supports
operationPath: '{$sourceDescriptions.toolshopDescription.url}#/paths/
1categories1tree~1{categoryId}'type of expressions
operationID now supports
operationId: $sourceDescriptions.toolshopDescription.getProducts
type of expressions