You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(mcp): implement FastMCP elicitation pattern for destructive operations (#173)
* Initial plan
* feat(mcp): add FastMCP elicitation pattern to destructive operations
- Added ConfirmationSchema for user confirmation via elicit()
- Implemented ctx.elicit() in create_purchase_order tool
- Implemented ctx.elicit() in receive_purchase_order tool
- Implemented ctx.elicit() in create_manufacturing_order tool
- Implemented ctx.elicit() in fulfill_order tool (both manufacturing and sales)
- Updated test fixtures to mock elicit() behavior
- Fixed type narrowing for elicitation results
Co-authored-by: dougborg <1261222+dougborg@users.noreply.github.com>
* test(mcp): fix wrapper test to call implementation directly
The wrapper function with @unpack_pydantic_params expects unpacked args from FastMCP,
so tests should call the implementation function directly.
Co-authored-by: dougborg <1261222+dougborg@users.noreply.github.com>
* chore: configure yamllint with 120 char line length
- Created .yamllint.yml config file
- Set line-length max to 120 characters
- Ignore .github/ directory (workflow files)
- Ignore docs/katana-openapi.yaml (OpenAPI spec)
- Updated pyproject.toml to match new line length limit
- All yamllint checks now pass
Co-authored-by: dougborg <1261222+dougborg@users.noreply.github.com>
* refactor(mcp): extract ConfirmationSchema to shared module
- Created katana_mcp/tools/schemas.py for shared Pydantic schemas
- Moved ConfirmationSchema from 3 separate files to shared location
- Updated imports in purchase_orders.py, manufacturing_orders.py, and orders.py
- Fixes DRY principle violation identified in PR review
This ensures consistency and makes future changes easier to manage.
Co-authored-by: dougborg <1261222+dougborg@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dougborg <1261222+dougborg@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .github/ISSUE_TEMPLATE/bug_report.yml
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,9 @@ body:
58
58
id: terms
59
59
attributes:
60
60
label: Code of Conduct
61
-
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/dougborg/katana-open-api-client/blob/main/CODE_OF_CONDUCT.md)
61
+
description: >-
62
+
By submitting this issue, you agree to follow our
63
+
[Code of Conduct](https://github.com/dougborg/katana-open-api-client/blob/main/CODE_OF_CONDUCT.md)
62
64
options:
63
65
- label: I agree to follow this project's Code of Conduct
Copy file name to clipboardExpand all lines: .github/ISSUE_TEMPLATE/feature_request.yml
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -43,7 +43,9 @@ body:
43
43
id: terms
44
44
attributes:
45
45
label: Code of Conduct
46
-
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/dougborg/katana-open-api-client/blob/main/CODE_OF_CONDUCT.md)
46
+
description: >-
47
+
By submitting this issue, you agree to follow our
48
+
[Code of Conduct](https://github.com/dougborg/katana-open-api-client/blob/main/CODE_OF_CONDUCT.md)
47
49
options:
48
50
- label: I agree to follow this project's Code of Conduct
Copy file name to clipboardExpand all lines: .github/workflows/copilot-setup-steps.yml
+4-1Lines changed: 4 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,10 @@ jobs:
20
20
# Set the permissions to the lowest permissions possible needed for your steps.
21
21
# Copilot will be given its own token for its operations.
22
22
permissions:
23
-
# If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
23
+
# If you want to clone the repository as part of your setup steps, for example
24
+
# to install dependencies, you'll need the `contents: read` permission. If you
25
+
# don't clone the repository in your setup steps, Copilot will do this for you
26
+
# automatically after the steps complete.
24
27
contents: read
25
28
26
29
# You can define any steps you want, and they will run before the agent starts.
When this PR is merged, it will trigger a new MCP server release with the conventional commit message `feat(mcp):`, which will bump the MCP server's MINOR version.
121
-
124
+
When this PR is merged, it will trigger a new MCP server release with the
125
+
conventional commit message `feat(mcp):`, which will bump the MCP server's
126
+
MINOR version.
127
+
122
128
---
123
-
*This PR was automatically created by the [Update MCP Client Dependency workflow](.github/workflows/update-mcp-dependency.yml).*
0 commit comments