Skip to content

Delegate codegen sync to intentcall_cli; add Jaspr three-gate example#103

Open
Arenukvern wants to merge 8 commits into
mainfrom
feat/intentcall-cli-delegation-jaspr-example
Open

Delegate codegen sync to intentcall_cli; add Jaspr three-gate example#103
Arenukvern wants to merge 8 commits into
mainfrom
feat/intentcall-cli-delegation-jaspr-example

Conversation

@Arenukvern

@Arenukvern Arenukvern commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • flutter-mcp-toolkit codegen sync and init intentcall-platform now delegate in-process to intentcall_cli (intentcall platform sync --host flutter and platform hooks init).
  • Adds jaspr_web_example/ — a web-only Jaspr host profile with committed manifest/WebMCP artifacts and .intentcall/web_build_hook.sh (build_runner → manifest export → platform sync).
  • Adds tool/contracts/check_intentcall_jaspr_three_gate.sh to make check-contracts for the two-gate manifest/platform freshness recipe plus Jaspr hook presence.
  • Updates flutter_test_app iOS/macOS codegen scripts to the new three-step hook template.

Cutover note: intentcall_cli and intentcall_platform_sync are path-pinned to a sibling agentkit checkout until they ship on pub.dev (^0.6.0). check_no_path_deps allows only those paths during migration.

Test plan

  • dart test mcp_server_dart/test/codegen_sync_command_test.dart mcp_server_dart/test/init_intentcall_platform_test.dart
  • bash tool/contracts/check_intentcall_hosted_consumer.sh
  • bash tool/contracts/check_intentcall_jaspr_three_gate.sh
  • After intentcall_cli publishes: switch mcp_server_dart to hosted intentcall_cli: ^0.6.0 and drop sibling path overrides

Made with Cursor

Summary by CodeRabbit

  • New Features
    • Added a Jaspr web IntentCall example with configuration and a three-step verification flow (build → manifest validation → web platform sync).
  • Bug Fixes
    • Updated iOS/macOS/web codegen/sync workflows to validate manifests before syncing and to fail fast on sync errors.
    • Improved CLI workflows by delegating platform sync and platform hook initialization to IntentCall tooling.
  • Documentation
    • Added example README and clarified the authoritative host configuration and committed web manifest fixture.
  • Chores / Tests
    • Strengthened CI “three-gate” checks, added an Apple Runner compile-proof gate, and expanded dependency/path-dependency policy enforcement.

flutter-mcp-toolkit codegen sync and init intentcall-platform now call
intentcall_cli in-process. Adds jaspr_web_example with a three-gate CI
contract (hooks, manifest export --check, platform sync --check).

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR delegates MCP CLI commands to intentcall_cli, adds a Jaspr web example with contract checks, and updates Flutter test app artifacts, dependency resolution, and path-dependency enforcement across the workspace.

Changes

IntentCall delegation, example app, and path-policy updates

Layer / File(s) Summary
CLI delegation and protocol scheme plumbing
mcp_server_dart/lib/src/cli/codegen_sync_command.dart, mcp_server_dart/lib/src/cli/init_intentcall_platform_command.dart, mcp_server_dart/lib/src/cli/intentcall_delegate.dart, mcp_server_dart/lib/src/capabilities/dynamic_registry/dynamic_registry.dart, mcp_toolkit/lib/src/agent_call_entry_extensions.dart, mcp_toolkit/lib/src/mcp_toolkit_binding.dart, mcp_toolkit/lib/src/mcp_toolkit_binding_base.dart, mcp_toolkit/lib/src/mcp_toolkit_extensions.dart, mcp_server_dart/pubspec.yaml, mcp_toolkit/pubspec.yaml, mcp_toolkit/lib/src/services/reveal_search_service.dart
codegen sync and init intentcall-platform now delegate to intentcall_cli; protocolScheme is stored and forwarded through MCP toolkit initialization, and resource URIs are resolved with the scheme-aware helper. The toolkit also updates reveal-search numeric decoding and dependency declarations for the new intentcall packages.
Jaspr web example and CI gate
jaspr_web_example/*, tool/contracts/check_intentcall_jaspr_three_gate.sh, makefile, CHANGELOG.md, docs/evidence/dogfood/dogfood_web_eval.yaml, docs/intentcall/README.md
Adds the jaspr_web_example package, its web manifest/bootstrap/hook/docs, the three-gate contract script wired into check-contracts, and the related changelog, documentation, and evaluation tracker updates.
Flutter test app platform assets and build wiring
flutter_test_app/*
Updates the Flutter test app config, generated manifests, platform build scripts, Xcode/project wiring, and platform-specific metadata for the committed artifact layout.
Dependency path policy and hosted output updates
pubspec.yaml, packages/*/pubspec.yaml, tool/intentcall/check_no_path_deps.sh, tool/intentcall/check_no_path_deps_test.sh, tool/intentcall/print_hosted_deps.sh, tool/contracts/check_intentcall_hosted_consumer.sh
Moves workspace packages to local path dependencies, rewrites the path-dependency gate and its tests, and updates hosted dependency output and gate messages.

Estimated code review effort: 5 (Critical) | ~90 minutes

Possibly related PRs

  • Arenukvern/mcp_flutter#93: Directly relates to the same tool/intentcall/check_no_path_deps.sh gate and its test coverage, which are revised in this PR.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: delegation to intentcall_cli and the new Jaspr three-gate example.
Description check ✅ Passed The description covers the main changes, migration note, and test plan, so it is mostly complete despite template-format differences.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/intentcall-cli-delegation-jaspr-example

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
jaspr_web_example/.intentcall/web_build_hook.sh (1)

1-8: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Define intentcall before calling it
jaspr_web_example/.intentcall/web_build_hook.sh invokes intentcall directly, but this script doesn't define the wrapper used in tool/contracts/check_intentcall_jaspr_three_gate.sh, and jaspr_web_example/pubspec.yaml doesn't declare intentcall_cli. Add the wrapper here (and the intentcall_cli path dependency) so the hook can run on its own.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jaspr_web_example/.intentcall/web_build_hook.sh` around lines 1 - 8, The web
build hook calls intentcall directly without defining the wrapper or ensuring
the CLI dependency is available. Update
jaspr_web_example/.intentcall/web_build_hook.sh to include the same intentcall
wrapper used by tool/contracts/check_intentcall_jaspr_three_gate.sh, and add the
intentcall_cli path dependency in jaspr_web_example/pubspec.yaml so the script
can run independently. Use the existing intentcall platform sync and intentcall
manifest export steps as the locations to wire in the wrapper.
🧹 Nitpick comments (4)
tool/intentcall/check_no_path_deps.sh (1)

33-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Allowlist path duplicated across bash and Python with divergence risk.

The Python version-check block is embedded in a <<'PY' heredoc (quoted, no variable expansion), so it hardcodes "../../agentkit/packages/intentcall_cli" / "../../agentkit/packages/intentcall_platform_sync" independently of the bash allowed_intentcall_cli_path / allowed_platform_sync_path variables defined at Lines 33-34. If either allowlist path changes, both places must be updated manually or the checks silently diverge.

Separately, the exemption logic is asymmetric: intentcall_cli is exempted via git-source OR local path (Lines 90-97), but intentcall_platform_sync is only exempted via local path (Lines 98-102) — worth confirming this is intentional given both packages are described as "path-pinned to a sibling agentkit checkout" per the PR objectives.

Also applies to: 65-67, 89-102

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tool/intentcall/check_no_path_deps.sh` around lines 33 - 34, The allowlist
paths are duplicated between the bash variables and the quoted Python heredoc in
check_no_path_deps.sh, which can drift out of sync; update the script so the
path values used by the Python checks come from the same single source as
allowed_intentcall_cli_path and allowed_platform_sync_path, or otherwise
centralize them to avoid hardcoded duplicates. While touching the exemption
logic around the intentcall_cli and intentcall_platform_sync checks, verify the
asymmetric handling is intentional and make the conditions consistent if both
packages are meant to be path-pinned sibling checkouts.
mcp_server_dart/lib/src/cli/intentcall_delegate.dart (1)

4-15: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Unused dry-run flag.

The parser defines dry-run, but neither delegatePlatformSync nor its caller ever sets it — the flag is always false. Harmless but dead surface area; either wire it through or drop it until needed.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mcp_server_dart/lib/src/cli/intentcall_delegate.dart` around lines 4 - 15,
The _platformSyncParser() defines a dry-run flag that is never read, so either
remove that option from the parser or wire it through the delegate flow. Update
delegatePlatformSync and its caller in intentcall_delegate.dart to accept and
pass the parsed dry-run value if it is meant to be supported; otherwise delete
the unused flag to keep the CLI surface consistent.
flutter_test_app/ios/intentcall_codegen.sh (1)

1-7: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Identical script duplicated between iOS and macOS targets.

flutter_test_app/ios/intentcall_codegen.sh and flutter_test_app/macos/intentcall_codegen.sh are byte-for-byte identical. Consider extracting a shared script sourced/invoked by both to avoid drift when this logic changes again.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/ios/intentcall_codegen.sh` around lines 1 - 7, The
intentcall_codegen.sh logic is duplicated between the iOS and macOS targets, so
update the shared generation flow to avoid future drift. Extract the common
commands currently in intentcall_codegen.sh into a single reusable script or
shared helper, and have both platform-specific scripts invoke that shared entry
point while preserving the same build_runner, manifest export, and platform sync
behavior.
mcp_server_dart/pubspec.yaml (1)

27-28: 🧹 Nitpick | 🔵 Trivial

Path-pinned deps are a build-portability risk until published.

intentcall_cli and the intentcall_platform_sync override point at ../../agentkit/packages/..., which only resolves if that sibling checkout exists at the exact relative location in every environment (CI, other contributors' machines). This is called out as an intentional, temporary migration step in the PR description with an allowlist in check_no_path_deps.sh, so flagging mainly to ensure there's a tracked follow-up to remove these once the packages are published to pub.dev.

Also applies to: 48-51

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mcp_server_dart/pubspec.yaml` around lines 27 - 28, Path-based package
references for intentcall_cli and the intentcall_platform_sync override are a
temporary portability risk that should be tracked and removed once published
packages are available. Keep these dependencies only as an intentional migration
step for now, but update the pubspec entries to use published pub.dev versions
as soon as they exist, and ensure the follow-up is captured so the local
relative path dependency is not left in place permanently.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@flutter_test_app/ios/intentcall_codegen.sh`:
- Around line 1-6: The intentcall platform hook script runs three commands but
only the final sync step is protected from failure, so add strict shell error
handling at the top of the script (for example in the intentcall-platform hook)
so the sequence stops immediately if build_runner or manifest export fails.
Update the shell script around the existing cd, dart run build_runner build,
intentcall manifest export --check, and intentcall platform sync steps to use
the same fail-fast pattern as the comparable web_build_hook.sh.
- Around line 4-5: The iOS/macOS build script currently invokes the bare
intentcall command, which can fail in Xcode if that binary is not on the build
environment PATH. Update the intentcall_codegen.sh flow so it uses the same
wrapper/setup used by check_intentcall_jaspr_three_gate.sh, or otherwise
resolves intentcall explicitly before running the manifest export and platform
sync steps. Keep the fix centered on the intentcall invocations so the Xcode
build phases can find the tool reliably.

In `@flutter_test_app/macos/intentcall_codegen.sh`:
- Around line 1-6: Add strict shell error handling at the start of the
intentcall_codegen.sh script so failures in the build steps stop execution
immediately. Update the script that runs dart run build_runner build
--delete-conflicting-outputs, intentcall manifest export --check, and intentcall
platform sync so it uses set -e or set -euo pipefail before these commands. This
ensures any failure in build_runner or manifest export prevents the final sync
from running.

In `@jaspr_web_example/README.md`:
- Around line 6-8: The documented build recipe and the committed web hook
behavior are inconsistent because the hook runs a real platform sync while the
README step shows a dry-run check. Update the README’s build instructions around
the recipe and the “Or run the committed hook” text so they clearly match the
behavior of web_build_hook.sh and intentcall platform sync, either by
documenting the real sync plus separate verification or by changing the
hook/recipe to use --check consistently.
- Around line 29-33: The README example mixes two different host setups, so the
fallback command should be aligned with the Jaspr example instead of the
Flutter-oriented one. Update the command block near the intentcall-platform
setup to remove the generic “or:” fallback and replace it with the Jaspr CLI
init command that matches the existing intentcall.yaml host configuration, using
the relevant README example text around the init instructions.

In `@tool/contracts/check_intentcall_jaspr_three_gate.sh`:
- Around line 20-23: The hook-presence gate in the jaspr three-gate script is
self-healing instead of enforcing the check, so a missing or stale hook never
fails CI. Update the intentcall platform hooks init logic to keep the --check
invocation as the gate and remove the fallback regeneration path, or make it
exit non-zero after a failed check; the relevant flow is the hooks init call
guarded by the example project-dir variable. Ensure the script reports the
failure and stops so developers must commit the hook changes rather than
regenerating them locally.

---

Outside diff comments:
In `@jaspr_web_example/.intentcall/web_build_hook.sh`:
- Around line 1-8: The web build hook calls intentcall directly without defining
the wrapper or ensuring the CLI dependency is available. Update
jaspr_web_example/.intentcall/web_build_hook.sh to include the same intentcall
wrapper used by tool/contracts/check_intentcall_jaspr_three_gate.sh, and add the
intentcall_cli path dependency in jaspr_web_example/pubspec.yaml so the script
can run independently. Use the existing intentcall platform sync and intentcall
manifest export steps as the locations to wire in the wrapper.

---

Nitpick comments:
In `@flutter_test_app/ios/intentcall_codegen.sh`:
- Around line 1-7: The intentcall_codegen.sh logic is duplicated between the iOS
and macOS targets, so update the shared generation flow to avoid future drift.
Extract the common commands currently in intentcall_codegen.sh into a single
reusable script or shared helper, and have both platform-specific scripts invoke
that shared entry point while preserving the same build_runner, manifest export,
and platform sync behavior.

In `@mcp_server_dart/lib/src/cli/intentcall_delegate.dart`:
- Around line 4-15: The _platformSyncParser() defines a dry-run flag that is
never read, so either remove that option from the parser or wire it through the
delegate flow. Update delegatePlatformSync and its caller in
intentcall_delegate.dart to accept and pass the parsed dry-run value if it is
meant to be supported; otherwise delete the unused flag to keep the CLI surface
consistent.

In `@mcp_server_dart/pubspec.yaml`:
- Around line 27-28: Path-based package references for intentcall_cli and the
intentcall_platform_sync override are a temporary portability risk that should
be tracked and removed once published packages are available. Keep these
dependencies only as an intentional migration step for now, but update the
pubspec entries to use published pub.dev versions as soon as they exist, and
ensure the follow-up is captured so the local relative path dependency is not
left in place permanently.

In `@tool/intentcall/check_no_path_deps.sh`:
- Around line 33-34: The allowlist paths are duplicated between the bash
variables and the quoted Python heredoc in check_no_path_deps.sh, which can
drift out of sync; update the script so the path values used by the Python
checks come from the same single source as allowed_intentcall_cli_path and
allowed_platform_sync_path, or otherwise centralize them to avoid hardcoded
duplicates. While touching the exemption logic around the intentcall_cli and
intentcall_platform_sync checks, verify the asymmetric handling is intentional
and make the conditions consistent if both packages are meant to be path-pinned
sibling checkouts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c789c797-e179-4c0c-a9e1-2e0bf30e423a

📥 Commits

Reviewing files that changed from the base of the PR and between 46e5d89 and bbaba7c.

⛔ Files ignored due to path filters (1)
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (18)
  • CHANGELOG.md
  • flutter_test_app/ios/intentcall_codegen.sh
  • flutter_test_app/macos/intentcall_codegen.sh
  • jaspr_web_example/.intentcall/web_build_hook.sh
  • jaspr_web_example/README.md
  • jaspr_web_example/intentcall.yaml
  • jaspr_web_example/pubspec.yaml
  • jaspr_web_example/web/agent_manifest.json
  • jaspr_web_example/web/intentcall_webmcp.generated.js
  • jaspr_web_example/web/manifest.json
  • makefile
  • mcp_server_dart/lib/src/cli/codegen_sync_command.dart
  • mcp_server_dart/lib/src/cli/init_intentcall_platform_command.dart
  • mcp_server_dart/lib/src/cli/intentcall_delegate.dart
  • mcp_server_dart/pubspec.yaml
  • tool/contracts/check_intentcall_jaspr_three_gate.sh
  • tool/intentcall/check_no_path_deps.sh
  • tool/intentcall/print_hosted_deps.sh

Comment on lines 1 to 6
# intentcall-platform: begin
cd "${SRCROOT}/.."
flutter-mcp-toolkit codegen sync --platform ios,macos || exit 1
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Missing set -e: only the last of three steps fails the build on error.

dart run build_runner build and intentcall manifest export --check have no explicit error handling and the script has no set -e/set -euo pipefail, so a failure in either of the first two steps is silently ignored and the script proceeds to sync with stale/invalid generated code. Compare with jaspr_web_example/.intentcall/web_build_hook.sh, which opens with set -euo pipefail for the same three-step sequence.

🛠️ Proposed fix
 # intentcall-platform: begin
 cd "${SRCROOT}/.."
+set -euo pipefail
 dart run build_runner build --delete-conflicting-outputs
 intentcall manifest export --check
 intentcall platform sync --platform ios,macos || exit 1
 # intentcall-platform: end
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# intentcall-platform: begin
cd "${SRCROOT}/.."
flutter-mcp-toolkit codegen sync --platform ios,macos || exit 1
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end
# intentcall-platform: begin
cd "${SRCROOT}/.."
set -euo pipefail
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end
🧰 Tools
🪛 Shellcheck (0.11.0)

[warning] 2-2: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/ios/intentcall_codegen.sh` around lines 1 - 6, The
intentcall platform hook script runs three commands but only the final sync step
is protected from failure, so add strict shell error handling at the top of the
script (for example in the intentcall-platform hook) so the sequence stops
immediately if build_runner or manifest export fails. Update the shell script
around the existing cd, dart run build_runner build, intentcall manifest export
--check, and intentcall platform sync steps to use the same fail-fast pattern as
the comparable web_build_hook.sh.

Comment thread flutter_test_app/ios/intentcall_codegen.sh Outdated
Comment on lines 1 to 6
# intentcall-platform: begin
cd "${SRCROOT}/.."
flutter-mcp-toolkit codegen sync --platform ios,macos || exit 1
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Missing set -e, same as the iOS script.

Same issue as flutter_test_app/ios/intentcall_codegen.sh: no set -e/set -euo pipefail, so build_runner or manifest export --check failures are swallowed before the final sync step.

🛠️ Proposed fix
 # intentcall-platform: begin
 cd "${SRCROOT}/.."
+set -euo pipefail
 dart run build_runner build --delete-conflicting-outputs
 intentcall manifest export --check
 intentcall platform sync --platform ios,macos || exit 1
 # intentcall-platform: end
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# intentcall-platform: begin
cd "${SRCROOT}/.."
flutter-mcp-toolkit codegen sync --platform ios,macos || exit 1
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end
# intentcall-platform: begin
cd "${SRCROOT}/.."
set -euo pipefail
dart run build_runner build --delete-conflicting-outputs
intentcall manifest export --check
intentcall platform sync --platform ios,macos || exit 1
# intentcall-platform: end
🧰 Tools
🪛 Shellcheck (0.11.0)

[warning] 2-2: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/macos/intentcall_codegen.sh` around lines 1 - 6, Add strict
shell error handling at the start of the intentcall_codegen.sh script so
failures in the build steps stop execution immediately. Update the script that
runs dart run build_runner build --delete-conflicting-outputs, intentcall
manifest export --check, and intentcall platform sync so it uses set -e or set
-euo pipefail before these commands. This ensures any failure in build_runner or
manifest export prevents the final sync from running.

Comment on lines +6 to +8
1. `dart run build_runner build --delete-conflicting-outputs`
2. `intentcall manifest export --check`
3. `intentcall platform sync --platform web --check`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

--check in the documented recipe doesn't match the committed hook's actual behavior.

Step 3 of the recipe is documented as intentcall platform sync --platform web --check, but the committed hook (.intentcall/web_build_hook.sh) runs intentcall platform sync --platform web without --check — a real sync, not a dry-run check. Readers following "Or run the committed hook" will get a different (mutating) outcome than the enumerated recipe implies, then are told to run a fourth, separate --check invocation afterward. Clarify whether the hook intentionally performs a real sync (and the extra line is a post-hoc verification step) or whether the hook should use --check to match the stated recipe.

Also applies to: 16-22

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jaspr_web_example/README.md` around lines 6 - 8, The documented build recipe
and the committed web hook behavior are inconsistent because the hook runs a
real platform sync while the README step shows a dry-run check. Update the
README’s build instructions around the recipe and the “Or run the committed
hook” text so they clearly match the behavior of web_build_hook.sh and
intentcall platform sync, either by documenting the real sync plus separate
verification or by changing the hook/recipe to use --check consistently.

Comment on lines +29 to +33
```bash
dart run mcp_server_dart/bin/flutter_mcp_toolkit.dart init intentcall-platform \
--project-dir jaspr_web_example
# or: intentcall platform hooks init --host jaspr --project-dir .
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== README excerpt ==\n'
git ls-files 'jaspr_web_example/README.md'
echo

nl -ba jaspr_web_example/README.md | sed -n '20,45p'

printf '\n== intentcall_delegate references ==\n'
rg -n "delegatePlatformHooksInit|hardcodes|--host flutter|host: jaspr|intentcall-platform|platform hooks init" \
  jaspr_web_example mcp_server_dart -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**'

printf '\n== file list around delegate ==\n'
fd -a 'intentcall_delegate\.ts|intentcall_delegate\.dart|intentcall.*delegate' mcp_server_dart jaspr_web_example || true

Repository: Arenukvern/mcp_flutter

Length of output: 250


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== README excerpt ==\n'
awk 'NR>=20 && NR<=45 { printf "%6d  %s\n", NR, $0 }' jaspr_web_example/README.md

printf '\n== Matching references ==\n'
rg -n "delegatePlatformHooksInit|hardcodes|--host flutter|host: jaspr|intentcall-platform|platform hooks init" \
  jaspr_web_example mcp_server_dart -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**'

printf '\n== Candidate files ==\n'
fd -a 'intentcall_delegate\.dart|intentcall_delegate\.ts|intentcall.*delegate' mcp_server_dart jaspr_web_example || true

Repository: Arenukvern/mcp_flutter

Length of output: 3595


🏁 Script executed:

#!/bin/bash
set -euo pipefail

awk 'NR>=1 && NR<=120 { printf "%6d  %s\n", NR, $0 }' mcp_server_dart/lib/src/cli/intentcall_delegate.dart

Repository: Arenukvern/mcp_flutter

Length of output: 1879


🏁 Script executed:

#!/bin/bash
set -euo pipefail

awk 'NR>=1 && NR<=80 { printf "%6d  %s\n", NR, $0 }' mcp_server_dart/lib/src/cli/init_intentcall_platform_command.dart

Repository: Arenukvern/mcp_flutter

Length of output: 587


Drop the or: fallback here; the commands initialize different hosts. flutter_mcp_toolkit init intentcall-platform always uses --host flutter, while this example’s intentcall.yaml uses host: jaspr. Replace the second line with the Jaspr CLI command instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jaspr_web_example/README.md` around lines 29 - 33, The README example mixes
two different host setups, so the fallback command should be aligned with the
Jaspr example instead of the Flutter-oriented one. Update the command block near
the intentcall-platform setup to remove the generic “or:” fallback and replace
it with the Jaspr CLI init command that matches the existing intentcall.yaml
host configuration, using the relevant README example text around the init
instructions.

Comment on lines +20 to +23
echo "== jaspr three-gate: hook presence =="
if ! intentcall platform hooks init --host jaspr --check --project-dir "${example}"; then
intentcall platform hooks init --host jaspr --project-dir "${example}"
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Self-healing hook-presence gate defeats the check.

The PR objective states this script verifies "hook presence," but when --check fails (hook missing/stale), the script silently runs hooks init without --check and continues — it never fails. A missing/uncommitted hook file in the repo will always pass CI, since the fallback regenerates it locally in the CI workspace instead of surfacing a "commit the hook" failure.

🐛 Proposed fix: fail instead of self-healing
 echo "== jaspr three-gate: hook presence =="
-if ! intentcall platform hooks init --host jaspr --check --project-dir "${example}"; then
-  intentcall platform hooks init --host jaspr --project-dir "${example}"
-fi
+if ! intentcall platform hooks init --host jaspr --check --project-dir "${example}"; then
+  echo "hook missing/stale; run:" >&2
+  echo "  intentcall platform hooks init --host jaspr --project-dir ${example}" >&2
+  echo "and commit the result." >&2
+  exit 1
+fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
echo "== jaspr three-gate: hook presence =="
if ! intentcall platform hooks init --host jaspr --check --project-dir "${example}"; then
intentcall platform hooks init --host jaspr --project-dir "${example}"
fi
echo "== jaspr three-gate: hook presence =="
if ! intentcall platform hooks init --host jaspr --check --project-dir "${example}"; then
echo "hook missing/stale; run:" >&2
echo " intentcall platform hooks init --host jaspr --project-dir ${example}" >&2
echo "and commit the result." >&2
exit 1
fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tool/contracts/check_intentcall_jaspr_three_gate.sh` around lines 20 - 23,
The hook-presence gate in the jaspr three-gate script is self-healing instead of
enforcing the check, so a missing or stale hook never fails CI. Update the
intentcall platform hooks init logic to keep the --check invocation as the gate
and remove the fallback regeneration path, or make it exit non-zero after a
failed check; the relevant flow is the hooks init call guarded by the example
project-dir variable. Ensure the script reports the failure and stops so
developers must commit the hook changes rather than regenerating them locally.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@flutter_test_app/web/agent_manifest.json`:
- Around line 72-83: The tool manifest entries are incorrectly including
apple.entities for action-only tools. Update the agent manifest in the
apple.appIntents/apple.appShortcuts/tool entry block to remove apple.entities
while keeping the other Apple capabilities intact; use the existing manifest
keys as the location anchor for this cleanup.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 37631ca8-290d-4188-ab5e-53c1ffd76b7f

📥 Commits

Reviewing files that changed from the base of the PR and between bbaba7c and 23d2309.

⛔ Files ignored due to path filters (2)
  • flutter_test_app/ios/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
  • flutter_test_app/macos/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
📒 Files selected for processing (2)
  • flutter_test_app/lib/intentcall_showcase_entries.dart
  • flutter_test_app/web/agent_manifest.json

Comment on lines +72 to +83
"apple.appIntents": {
"include": true
},
"apple.appShortcuts": {
"include": true
},
"apple.entities": {
"include": true
},
"apple.spotlight": {
"include": true
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check how "apple.entities" is consumed by codegen/platform-sync tooling for tool-kind manifest entries.
rg -n 'apple\.entities' --type json -C 3
rg -n 'apple.entities|surfaces' -g '*.dart' -A 5 -B 2

Repository: Arenukvern/mcp_flutter

Length of output: 216


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate relevant manifest/docs/codegen files and inspect the exact schema handling.
git ls-files | rg 'agent_manifest\.json|manifest|platform-sync|codegen|entities|app_screen|app_intent|intentcall|tool' || true

printf '\n--- agent_manifest references ---\n'
rg -n '"apple\.entities"|apple\.entities|app_screen|entityType|kind": "tool"|intentcall_platform' .

printf '\n--- focused files ---\n'
fd -a 'agent_manifest.json|pubspec.yaml|README.md|*.dart|*.json|*.md' . | sed -n '1,200p'

Repository: Arenukvern/mcp_flutter

Length of output: 22887


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the reviewed file and nearby docs for the exact surfaces declared on tool entries.
wc -l flutter_test_app/web/agent_manifest.json
sed -n '1,220p' flutter_test_app/web/agent_manifest.json

printf '\n--- docs and implementation references ---\n'
rg -n 'apple\.entities|apple\.appIntents|apple\.spotlight|entityType|app_screen|AppEntity|IndexedEntity|tool"|' flutter_test_app .

Repository: Arenukvern/mcp_flutter

Length of output: 50381


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- files mentioning manifest/schema/entity surfaces ---'
git ls-files | rg '(^|/)(manifest|schema|codegen|platform-sync|intentcall|entity|app_screen|agent_manifest)\.(dart|json|md|yaml|yml|ts|js|swift)$|agent_manifest\.json$'

printf '\n%s\n' '--- direct references ---'
rg -n '"apple\.entities"|apple\.entities|entityType|app_screen|AppEntity|IndexedEntity|kind": "tool"|kind.*tool|surfaces' flutter_test_app .

printf '\n%s\n' '--- agent_manifest excerpt ---'
sed -n '1,220p' flutter_test_app/web/agent_manifest.json

Repository: Arenukvern/mcp_flutter

Length of output: 29627


🌐 Web query:

"intentcall_platform 0.6.0 apple.entities tool manifest schema app_screen entityType"

💡 Result:

The term "intentcall_platform" refers to a specific package within the open-source "intentcall" project, which is a library designed for platform emitters and sync helpers (e.g., for WebMCP, native protocols, and Flutter) [1][2][3]. As of July 7, 2026, the intentcall packages are in an early pre-release state (version 0.2.1) and are not associated with a 0.6.0 version [1][4]. The query appears to conflate concepts from the intentcall ecosystem with Apple's App Intents framework: 1. intentcall_platform: This package provides native/web emitters and Flutter plugin support for the intentcall framework [2][3]. It is not a platform itself that uses an "apple.entities" tool manifest schema [4]. 2. Apple Entities (AppEntity): In the context of Apple's App Intents framework, developers define "app entities" (e.g., using the AppEntity protocol and @AppEntity macro) to expose data to the system [5][6]. These are typically defined using Swift code and macros, rather than a "tool manifest schema" [7][8]. The specific term "app_screen" as an entityType is not a standard part of Apple's public App Intents schema, though developers can define custom entity types for various data models within their own applications [5][9]. 3. Manifest Schemas: The intentcall project uses its own JSON-based "agent_manifest.json" to describe tools and intents for cross-platform compatibility, which is handled by the intentcall_apple package to map these to Apple Shortcuts/App Intents [10]. There is no official "apple.entities" manifest schema involving an "app_screen" entityType in either the intentcall library or Apple's official documentation [2][5][6]. It is likely that the query references a custom implementation or an internal configuration schema within a specific development project [11].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Narrow search to any local docs or generated schema around intentcall_platform.
rg -n 'intentcall_platform|apple\.entities|app_screen|entityType|tool-kind|kind": "tool"' flutter_test_app . --glob '!**/.dart_tool/**'

Repository: Arenukvern/mcp_flutter

Length of output: 18597


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- creating_dynamic_tools docs ---'
sed -n '1,220p' docs/guides/creating_dynamic_tools.mdx

printf '\n%s\n' '--- flutter_test_app INTENTCALL_PLATFORM.md ---'
sed -n '1,180p' flutter_test_app/INTENTCALL_PLATFORM.md

printf '\n%s\n' '--- codegen/tests mentioning surfaces or entities ---'
rg -n 'apple\.entities|apple\.appIntents|apple\.spotlight|surfaces|entityTypes|AppEntity|IndexedEntity|EntityStringQuery|IndexedEntityQuery' \
  mcp_server_dart packages flutter_test_app docs -g '!**/.dart_tool/**' -g '!**/generated/**'

Repository: Arenukvern/mcp_flutter

Length of output: 15790


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the manifest codegen contract and the platform-specific docs that describe entity exposure.
sed -n '1,240p' docs/intentcall/README.md
printf '\n%s\n' '---'
sed -n '1,260p' flutter_test_app/INTENTCALL_PLATFORM.md
printf '\n%s\n' '---'
rg -n 'apple\.entities|entityType|AppEntity|IndexedEntity|EntityStringQuery|IndexedEntityQuery|surfaces' \
  mcp_server_dart packages flutter_test_app docs plugin -g '!**/.dart_tool/**' -g '!**/generated/**'

Repository: Arenukvern/mcp_flutter

Length of output: 28109


Drop apple.entities from these tool entries. apple.entities is documented for the app_screen entity type/AppEntity projection, not action-only tools; if it is ignored, it is dead config, and if it is consumed, it risks generating entity scaffolding where none exists.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/web/agent_manifest.json` around lines 72 - 83, The tool
manifest entries are incorrectly including apple.entities for action-only tools.
Update the agent manifest in the apple.appIntents/apple.appShortcuts/tool entry
block to remove apple.entities while keeping the other Apple capabilities
intact; use the existing manifest keys as the location anchor for this cleanup.

…add new code assets

- Added new dependencies for `code_assets` and `hooks` in `pubspec.lock`.
- Updated `pubspec.yaml` to include path overrides for various `intentcall_*` packages.
- Removed deprecated tools and shortcuts from web manifests and generated files.
- Introduced a new `intentcall.yaml` configuration for the flutter test app.
- Updated CI scripts to reflect changes in dependency management.

This commit enhances the project structure and prepares for future development with the intentcall framework.
…ration

- Updated `dogfood_web_eval.yaml` to use a relative path for evaluation artifacts.
- Simplified `DynamicResourceEntry` by removing unnecessary properties from `props`.
- Introduced `resolveResourceUri` method in `AgentCallEntryMcpToolkit` to improve resource URI resolution logic.
- Added support for a configurable `protocolScheme` in `MCPToolkitBindingBase` to derive resource URIs.
- Updated `MCPToolkitBinding` and `MCPToolkitExtensions` to utilize the new `resolveResourceUri` method.

These changes enhance the clarity and functionality of resource URI management within the toolkit.

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

🧹 Nitpick comments (2)
flutter_test_app/pubspec.yaml (1)

32-46: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider removing redundant dependency_overrides entries for direct path dependencies.

intentcall_bridge, intentcall_core, intentcall_platform, and intentcall_webmcp appear in both dependencies and dependency_overrides with identical paths. Since a path: constraint in dependencies already resolves all transitive references to the same local package, the overrides for these four are redundant. The remaining override-only entries (intentcall_cli, intentcall_codegen, etc.) are correct for pinning transitive dependencies.

Also applies to: 60-85

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/pubspec.yaml` around lines 32 - 46, Remove the redundant
`dependency_overrides` entries for `intentcall_bridge`, `intentcall_core`,
`intentcall_platform`, and `intentcall_webmcp` in `pubspec.yaml`, since their
`path:` entries in `dependencies` already cover them. Keep only the
override-only packages used to pin transitive deps, and verify the dependency
list still references the same packages via their existing `path` constraints.
tool/intentcall/check_no_path_deps_test.sh (1)

41-64: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider adding a test case for empty-value intentcall_* entries.

The actual consumer pubspecs (e.g., mcp_toolkit/pubspec.yaml) now use empty values like intentcall_core: with no version or path. The current test suite covers hosted, wrong-path, and valid-path scenarios but not the empty-value case. Adding this test would clarify the script's expected behavior for the pattern used in this PR.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tool/intentcall/check_no_path_deps_test.sh` around lines 41 - 64, The test
coverage for check_no_path_deps.sh is missing the empty-value intentcall_*
pubspec pattern now used by consumers. Update check_no_path_deps_test.sh to add
a case around the existing hosted/wrong-path/valid-path checks that exercises an
intentcall_core: entry with no version or path, using the test helper or direct
fixture setup, and assert the script’s expected pass/fail behavior. Keep the new
case aligned with the existing intentcall_core and intentcall_schema fixtures so
the intentcall path-dependency rules remain clear.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@flutter_test_app/ios/Runner.xcodeproj/project.pbxproj`:
- Line 511: The Runner target configurations are overriding the project
deployment target with an invalid iOS version. Update the
IPHONEOS_DEPLOYMENT_TARGET setting in the Runner target’s Debug, Release, and
Profile configurations to a real supported version (likely 17.0) so it no longer
overrides the project-level 13.0 value. Use the Runner target entries in
project.pbxproj to locate and correct all three configuration blocks
consistently.

In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj`:
- Around line 605-611: The Runner build settings have mismatched
MACOSX_DEPLOYMENT_TARGET values between the project-level configuration and the
target-level configuration. Update the Runner entries in project.pbxproj so the
same deployment target is used consistently across both levels, either by
changing the target-level setting in the Runner build configurations to match
the project-level value or by aligning the project-level value to the intended
target.

In `@mcp_toolkit/pubspec.yaml`:
- Around line 17-20: The intentcall_* dependencies in pubspec.yaml are only
declared as bare entries, but the dependency check script reads this file
directly and expects explicit path-based overrides. Update the dependency
entries for intentcall_bridge, intentcall_core, intentcall_platform, and
intentcall_schema in pubspec.yaml to use path: stanzas so
tool/intentcall/check_no_path_deps.sh can detect them correctly.

---

Nitpick comments:
In `@flutter_test_app/pubspec.yaml`:
- Around line 32-46: Remove the redundant `dependency_overrides` entries for
`intentcall_bridge`, `intentcall_core`, `intentcall_platform`, and
`intentcall_webmcp` in `pubspec.yaml`, since their `path:` entries in
`dependencies` already cover them. Keep only the override-only packages used to
pin transitive deps, and verify the dependency list still references the same
packages via their existing `path` constraints.

In `@tool/intentcall/check_no_path_deps_test.sh`:
- Around line 41-64: The test coverage for check_no_path_deps.sh is missing the
empty-value intentcall_* pubspec pattern now used by consumers. Update
check_no_path_deps_test.sh to add a case around the existing
hosted/wrong-path/valid-path checks that exercises an intentcall_core: entry
with no version or path, using the test helper or direct fixture setup, and
assert the script’s expected pass/fail behavior. Keep the new case aligned with
the existing intentcall_core and intentcall_schema fixtures so the intentcall
path-dependency rules remain clear.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4dec1f97-9119-4aeb-9734-27829f468249

📥 Commits

Reviewing files that changed from the base of the PR and between 23d2309 and 7c442a8.

⛔ Files ignored due to path filters (4)
  • flutter_test_app/ios/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
  • flutter_test_app/macos/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
  • jaspr_web_example/lib/generated/agent_catalog.g.dart is excluded by !**/generated/**
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (34)
  • docs/evidence/dogfood/dogfood_web_eval.yaml
  • flutter_test_app/INTENTCALL_PLATFORM.md
  • flutter_test_app/android/app/src/main/res/xml/intentcall_shortcuts.xml
  • flutter_test_app/intentcall.yaml
  • flutter_test_app/ios/Runner.xcodeproj/project.pbxproj
  • flutter_test_app/ios/intentcall_codegen.sh
  • flutter_test_app/linux/intentcall_protocol.desktop
  • flutter_test_app/macos/Flutter/GeneratedPluginRegistrant.swift
  • flutter_test_app/macos/Runner.xcodeproj/project.pbxproj
  • flutter_test_app/macos/intentcall_codegen.sh
  • flutter_test_app/pubspec.yaml
  • flutter_test_app/web/intentcall_webmcp.generated.js
  • flutter_test_app/web/manifest.json
  • flutter_test_app/windows/intentcall_protocol.reg
  • flutter_test_app/windows/intentcall_protocol_msix.xml
  • jaspr_web_example/pubspec.yaml
  • jaspr_web_example/web/agent_manifest.json
  • jaspr_web_example/web/intentcall_webmcp.generated.js
  • jaspr_web_example/web/manifest.json
  • mcp_server_dart/lib/src/capabilities/dynamic_registry/dynamic_registry.dart
  • mcp_server_dart/pubspec.yaml
  • mcp_toolkit/lib/src/agent_call_entry_extensions.dart
  • mcp_toolkit/lib/src/mcp_toolkit_binding.dart
  • mcp_toolkit/lib/src/mcp_toolkit_binding_base.dart
  • mcp_toolkit/lib/src/mcp_toolkit_extensions.dart
  • mcp_toolkit/pubspec.yaml
  • packages/core/pubspec.yaml
  • packages/server_capability_core/pubspec.yaml
  • packages/server_capability_kernel/pubspec.yaml
  • pubspec.yaml
  • tool/contracts/check_intentcall_hosted_consumer.sh
  • tool/intentcall/check_no_path_deps.sh
  • tool/intentcall/check_no_path_deps_test.sh
  • tool/intentcall/print_hosted_deps.sh
💤 Files with no reviewable changes (1)
  • flutter_test_app/android/app/src/main/res/xml/intentcall_shortcuts.xml
✅ Files skipped from review due to trivial changes (9)
  • flutter_test_app/intentcall.yaml
  • tool/contracts/check_intentcall_hosted_consumer.sh
  • flutter_test_app/windows/intentcall_protocol_msix.xml
  • flutter_test_app/linux/intentcall_protocol.desktop
  • flutter_test_app/windows/intentcall_protocol.reg
  • flutter_test_app/macos/intentcall_codegen.sh
  • flutter_test_app/INTENTCALL_PLATFORM.md
  • flutter_test_app/macos/Flutter/GeneratedPluginRegistrant.swift
  • jaspr_web_example/pubspec.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • flutter_test_app/ios/intentcall_codegen.sh

DEVELOPMENT_TEAM = B9Z4F97G34;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 27.0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Fix IPHONEOS_DEPLOYMENT_TARGET = 27.0 — iOS 27 does not exist.

All three Runner target configurations (Debug, Release, Profile) set IPHONEOS_DEPLOYMENT_TARGET = 27.0, while the project-level configurations still use 13.0. The target-level setting overrides the project-level, making the effective deployment target 27.0. No device or simulator has iOS 27, so the app cannot be installed or run. This is almost certainly a typo—likely intended as 17.0.

🔧 Proposed fix for all three Runner target configurations
 // Runner Debug (line 698)
-				IPHONEOS_DEPLOYMENT_TARGET = 27.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 17.0;

 // Runner Release (line 722)
-				IPHONEOS_DEPLOYMENT_TARGET = 27.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 17.0;

 // Runner Profile (line 511)
-				IPHONEOS_DEPLOYMENT_TARGET = 27.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 17.0;

Also applies to: 698-698, 722-722

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/ios/Runner.xcodeproj/project.pbxproj` at line 511, The
Runner target configurations are overriding the project deployment target with
an invalid iOS version. Update the IPHONEOS_DEPLOYMENT_TARGET setting in the
Runner target’s Debug, Release, and Profile configurations to a real supported
version (likely 17.0) so it no longer overrides the project-level 13.0 value.
Use the Runner target entries in project.pbxproj to locate and correct all three
configuration blocks consistently.

Comment on lines +605 to +611
DEVELOPMENT_TEAM = B9Z4F97G34;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 27.0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check all MACOSX_DEPLOYMENT_TARGET values in the pbxproj
rg -n 'MACOSX_DEPLOYMENT_TARGET' flutter_test_app/macos/Runner.xcodeproj/project.pbxproj

Repository: Arenukvern/mcp_flutter

Length of output: 406


Align MACOSX_DEPLOYMENT_TARGET across the Runner configs. The target-level settings are 27.0 while the project-level settings remain 12.0, so the app will inherit the higher minimum on those Runner targets. If 27.0 is intentional, update the project-level values to match; otherwise revert the target-level values to 12.0.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj` around lines 605 -
611, The Runner build settings have mismatched MACOSX_DEPLOYMENT_TARGET values
between the project-level configuration and the target-level configuration.
Update the Runner entries in project.pbxproj so the same deployment target is
used consistently across both levels, either by changing the target-level
setting in the Runner build configurations to match the project-level value or
by aligning the project-level value to the intended target.

Comment thread mcp_toolkit/pubspec.yaml
Comment on lines +17 to +20
intentcall_bridge:
intentcall_core:
intentcall_platform:
intentcall_schema:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify whether check_no_path_deps.sh passes against the actual pubspecs.
bash tool/intentcall/check_no_path_deps.sh 2>&1
echo "default exit code: $?"

bash tool/intentcall/check_no_path_deps.sh --strict-root 2>&1
echo "strict-root exit code: $?"

Repository: Arenukvern/mcp_flutter

Length of output: 380


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Inspecting relevant files...\n'

for f in tool/intentcall/check_no_path_deps.sh mcp_toolkit/pubspec.yaml pubspec.yaml; do
  if [ -f "$f" ]; then
    echo "===== $f ====="
    wc -l "$f"
    sed -n '1,240p' "$f" | cat -n
  fi
done

Repository: Arenukvern/mcp_flutter

Length of output: 8764


Add explicit path: stanzas for the intentcall_* depstool/intentcall/check_no_path_deps.sh scans mcp_toolkit/pubspec.yaml directly, so the root dependency_overrides don’t satisfy the gate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mcp_toolkit/pubspec.yaml` around lines 17 - 20, The intentcall_* dependencies
in pubspec.yaml are only declared as bare entries, but the dependency check
script reads this file directly and expects explicit path-based overrides.
Update the dependency entries for intentcall_bridge, intentcall_core,
intentcall_platform, and intentcall_schema in pubspec.yaml to use path: stanzas
so tool/intentcall/check_no_path_deps.sh can detect them correctly.

- Added Swift Package Manager support in `pubspec.yaml`.
- Removed deprecated Podfiles and related configurations for iOS and macOS.
- Updated Xcode project files to reflect changes in framework references and configurations.
- Adjusted README instructions for iOS Simulator usage.
- Cleaned up unnecessary files and references to streamline project structure.

These changes enhance compatibility and simplify the project setup for Flutter development.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

♻️ Duplicate comments (2)
flutter_test_app/macos/Runner.xcodeproj/project.pbxproj (1)

528-528: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

MACOSX_DEPLOYMENT_TARGET = 27.0 remains unresolved — macOS 27 does not exist.

All three Runner target configurations (Debug at line 662, Release at line 684, Profile at line 528) still set MACOSX_DEPLOYMENT_TARGET = 27.0, overriding the project-level 12.0. This was flagged in a previous review and has not been addressed. The app cannot be built or run on any macOS version.

Also applies to: 662-662, 684-684

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj` at line 528, The
Runner target configurations still override the project deployment target with
an invalid macOS version, leaving the app unbuildable. Update the target
settings in project.pbxproj for the Runner Debug, Release, and Profile
configurations so they no longer set MACOSX_DEPLOYMENT_TARGET to 27.0 and
instead inherit or match the valid project-level deployment target. Use the
Runner target configuration entries and the MACOSX_DEPLOYMENT_TARGET setting as
the places to fix.
flutter_test_app/ios/Runner.xcodeproj/project.pbxproj (1)

407-407: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

IPHONEOS_DEPLOYMENT_TARGET = 27.0 remains unresolved — iOS 27 does not exist.

All three Runner target configurations (Debug at line 591, Release at line 615, Profile at line 407) still set IPHONEOS_DEPLOYMENT_TARGET = 27.0, overriding the project-level 13.0. This was flagged in a previous review and has not been addressed. The app cannot be installed or run on any device or simulator.

Also applies to: 591-591, 615-615

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/ios/Runner.xcodeproj/project.pbxproj` at line 407, The
Runner target build settings still override the project-level iOS version with
an invalid deployment target. Update the target configurations in
project.pbxproj for the Runner Debug, Release, and Profile settings so they all
use a valid iOS deployment target that matches the project setting (13.0)
instead of 27.0. Check the Runner configuration entries referenced by
IPHONEOS_DEPLOYMENT_TARGET and remove any remaining per-target override that
conflicts with the project-level value.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj`:
- Around line 377-378: Remove the duplicated IntentCallGenerated.swift build
entry from the Runner PBXSourcesBuildPhase so the same build file UUID is only
listed once in project.pbxproj. Update the sources array in the Xcode project
configuration around the IntentCallGenerated.swift in Sources entry to keep a
single reference and eliminate the duplicate compile step that causes build/link
errors.
- Around line 179-180: The Runner PBXGroup in the Xcode project contains a
duplicate child entry for IntentCallGenerated.swift using the same UUID, so
update the project.pbxproj entry under the Runner group to keep only one
reference. Locate the duplicated child list item for 2ACD08B50FF5BD527FB66694 /
IntentCallGenerated.swift and remove the extra occurrence so the macOS project
matches the iOS project structure.

---

Duplicate comments:
In `@flutter_test_app/ios/Runner.xcodeproj/project.pbxproj`:
- Line 407: The Runner target build settings still override the project-level
iOS version with an invalid deployment target. Update the target configurations
in project.pbxproj for the Runner Debug, Release, and Profile settings so they
all use a valid iOS deployment target that matches the project setting (13.0)
instead of 27.0. Check the Runner configuration entries referenced by
IPHONEOS_DEPLOYMENT_TARGET and remove any remaining per-target override that
conflicts with the project-level value.

In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj`:
- Line 528: The Runner target configurations still override the project
deployment target with an invalid macOS version, leaving the app unbuildable.
Update the target settings in project.pbxproj for the Runner Debug, Release, and
Profile configurations so they no longer set MACOSX_DEPLOYMENT_TARGET to 27.0
and instead inherit or match the valid project-level deployment target. Use the
Runner target configuration entries and the MACOSX_DEPLOYMENT_TARGET setting as
the places to fix.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 87d284ce-c3aa-4bae-b598-d9c7be924b90

📥 Commits

Reviewing files that changed from the base of the PR and between 7c442a8 and 1be31cd.

⛔ Files ignored due to path filters (1)
  • flutter_test_app/macos/Podfile.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • flutter_test_app/README.md
  • flutter_test_app/ios/Flutter/Debug.xcconfig
  • flutter_test_app/ios/Flutter/Release.xcconfig
  • flutter_test_app/ios/Podfile
  • flutter_test_app/ios/Runner.xcodeproj/project.pbxproj
  • flutter_test_app/ios/Runner.xcworkspace/contents.xcworkspacedata
  • flutter_test_app/macos/Flutter/Flutter-Debug.xcconfig
  • flutter_test_app/macos/Flutter/Flutter-Release.xcconfig
  • flutter_test_app/macos/Podfile
  • flutter_test_app/macos/Runner.xcodeproj/project.pbxproj
  • flutter_test_app/macos/Runner.xcworkspace/contents.xcworkspacedata
  • flutter_test_app/pubspec.yaml
  • mcp_server_dart/lib/src/cli/codegen_sync_command.dart
  • mcp_server_dart/lib/src/cli/init_intentcall_platform_command.dart
  • mcp_server_dart/lib/src/cli/intentcall_delegate.dart
  • mcp_server_dart/pubspec.yaml
  • mcp_toolkit/lib/src/services/reveal_search_service.dart
💤 Files with no reviewable changes (8)
  • flutter_test_app/ios/Flutter/Release.xcconfig
  • flutter_test_app/ios/Podfile
  • flutter_test_app/ios/Runner.xcworkspace/contents.xcworkspacedata
  • flutter_test_app/macos/Flutter/Flutter-Release.xcconfig
  • flutter_test_app/macos/Podfile
  • flutter_test_app/macos/Flutter/Flutter-Debug.xcconfig
  • flutter_test_app/macos/Runner.xcworkspace/contents.xcworkspacedata
  • flutter_test_app/ios/Flutter/Debug.xcconfig
✅ Files skipped from review due to trivial changes (1)
  • flutter_test_app/README.md
🚧 Files skipped from review as they are similar to previous changes (5)
  • mcp_server_dart/lib/src/cli/init_intentcall_platform_command.dart
  • mcp_server_dart/lib/src/cli/intentcall_delegate.dart
  • flutter_test_app/pubspec.yaml
  • mcp_server_dart/pubspec.yaml
  • mcp_server_dart/lib/src/cli/codegen_sync_command.dart

Comment thread flutter_test_app/macos/Runner.xcodeproj/project.pbxproj Outdated
Comment thread flutter_test_app/macos/Runner.xcodeproj/project.pbxproj Outdated
- Introduced `check_apple_runner_compile.sh` script to validate the compilation of the Runner against `intentcall_platform_apple`.
- Updated `makefile` to include the new compile check in the `check-contracts` target.
- Enhanced `README.md` to document the new compile gate and its usage.
- Modified `IntentCallGenerated.swift` to ensure it imports `intentcall_platform_apple` and does not define `IntentCallNativeBridge`.
- Updated project configurations to reflect changes in the generated Swift files.

These changes improve the build process for Apple platforms and ensure compliance with the new plugin architecture.

@coderabbitai coderabbitai 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.

♻️ Duplicate comments (1)
flutter_test_app/macos/Runner.xcodeproj/project.pbxproj (1)

520-526: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

MACOSX_DEPLOYMENT_TARGET mismatch still present: target-level 27.0 vs project-level 12.0.

All three Runner target configurations (Debug, Release, Profile) set MACOSX_DEPLOYMENT_TARGET = 27.0 while the project-level configurations remain at 12.0. The effective deployment target will be the higher value (27.0), but the inconsistency is misleading and should be aligned — either bump the project-level settings to 27.0 or revert the target-level settings to 12.0.

Additionally, 27.0 is an unusually high deployment target. Verify this corresponds to a released macOS version and is the intended minimum for this test app.

Also applies to: 654-660, 676-682

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj` around lines 520 -
526, The Runner target configurations still override MACOSX_DEPLOYMENT_TARGET to
27.0 while the project-level settings remain at 12.0, so align the deployment
target values across the project. Update the relevant Runner build settings in
project.pbxproj for the Debug, Release, and Profile configurations to match the
intended minimum version, and verify the chosen value is a valid released macOS
target.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@flutter_test_app/macos/Runner.xcodeproj/project.pbxproj`:
- Around line 520-526: The Runner target configurations still override
MACOSX_DEPLOYMENT_TARGET to 27.0 while the project-level settings remain at
12.0, so align the deployment target values across the project. Update the
relevant Runner build settings in project.pbxproj for the Debug, Release, and
Profile configurations to match the intended minimum version, and verify the
chosen value is a valid released macOS target.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7593d99a-0ede-4b52-bb24-79cd648bc918

📥 Commits

Reviewing files that changed from the base of the PR and between 1be31cd and 74bf16a.

⛔ Files ignored due to path filters (2)
  • flutter_test_app/ios/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
  • flutter_test_app/macos/Runner/Generated/IntentCallGenerated.swift is excluded by !**/generated/**
📒 Files selected for processing (5)
  • docs/intentcall/README.md
  • flutter_test_app/INTENTCALL_PLATFORM.md
  • flutter_test_app/macos/Runner.xcodeproj/project.pbxproj
  • makefile
  • tool/contracts/check_apple_runner_compile.sh
✅ Files skipped from review due to trivial changes (2)
  • makefile
  • flutter_test_app/INTENTCALL_PLATFORM.md

- Added a new launch configuration for the Flutter test app with Chrome and WebMCP support in `launch.json`.
- Updated the README.md to include additional links related to WebMCP and DevTools WebMCP Support.

These changes improve the development experience for Flutter applications using WebMCP features.
- Updated the `flutter-mcp-toolkit-maintain-web` and related documentation to include Chrome DevTools MCP features, specifically `list_webmcp_tools` and `execute_webmcp_tool`.
- Improved descriptions and usage instructions for the `flutter_test_app` web showcase hooks, emphasizing the integration with Chrome DevTools.
- Added detailed instructions for setting up VS Code and Cursor launch configurations to support persistent Chrome profiles and WebMCP features.

These changes enhance the development experience for Flutter applications utilizing WebMCP and Chrome DevTools.
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.

1 participant