Skip to content

feat(profile): add streamdeck_find_actions for plugin reuse discovery - #61

Merged
jack-arturo merged 7 commits into
mainfrom
feat/find-actions-discoverability
Jul 19, 2026
Merged

feat(profile): add streamdeck_find_actions for plugin reuse discovery#61
jack-arturo merged 7 commits into
mainfrom
feat/find-actions-discoverability

Conversation

@jack-arturo

@jack-arturo jack-arturo commented Jul 19, 2026

Copy link
Copy Markdown
Member

Summary

  • Add streamdeck_find_actions to scan configured keypad/encoder actions across profiles and return paste-ready native action blocks (fresh ActionID) for streamdeck_write_page.
  • Retarget tool descriptions and designer/profile skills so agents prefer find/reuse → synthesize → scripts.
  • Mark Stream Deck profile validation/refusal paths as MCP isError:true so clients do not treat rejected profile edits as successful writes.
  • Document the reuse-first funnel in the README Features/Tools sections.

Closes #62

Verification Evidence

  • Surface: MCP tool protocol
  • Tier 1: uv run pytest tests/test_profile_server.py -q5 passed in 0.18s
  • Tier 1: uv run pytest tests/ -q104 passed, 1 warning in 0.36s
  • Lint/format: uv run ruff format profile_server.py tests/test_profile_server.py && uv run ruff check profile_server.py tests/test_profile_server.pyAll checks passed!
  • Protocol smoke: SDK CallToolRequest(streamdeck_read_page, {directory_id:"missing-page"}) with stubbed missing profile → observed isError=True and ❌ Profile not found: <unspecified>
  • Red→green: AutoHub telemetry recorded Stream Deck profile/write failures as status='success' and isError:false; the patched handler now returns a CallToolResult with isError:true for those failure paths.
  • Claim: MCP clients can now reliably detect rejected Stream Deck profile operations before telling users a deck update succeeded.

Test plan

  • uv run pytest tests/test_profile_server.py -q
  • uv run pytest tests/ -q
  • uv run ruff format profile_server.py tests/test_profile_server.py && uv run ruff check profile_server.py tests/test_profile_server.py
  • Protocol-level SDK request-handler smoke for streamdeck_read_page failure
  • CI green on the PR

Risk

Read-only scan over local profile manifests; write path behavior is unchanged for successful writes. Failure/refusal branches now use the MCP protocol's error flag instead of encoding errors only as text content.

Make configured plugin buttons/dials the default authoring path by searching existing profiles and retargeting tools and skills toward find → synthesize → scripts.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 451289f649

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_manager.py Outdated
Comment thread profile_manager.py Outdated
Comment thread profile_manager.py Outdated
Comment thread profile_manager.py

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 13d1c37bd4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_manager.py Outdated
Comment thread profile_server.py Outdated
Absolutize and copy page-local assets on paste, skip corrupt page refs, mint ActionIDs per materialized raw action, and tolerate malformed position keys while scanning.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3f7f7d7ea0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_manager.py Outdated
Comment thread profile_server.py
Comment thread profile_manager.py
Skip bad profile manifests and malformed action keys during find/layout inference, and require mcp>=1.25.0 so CallToolResult isError paths work.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

1 similar comment
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c2551630a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_server.py Outdated
Comment thread profile_manager.py
Comment thread profile_manager.py
Comment thread profile_manager.py
Add paste-ready hit.button with controller for dials, soft-walk pages only in find_actions, skip corrupt profiles in resolve_profile, and tolerate bad slots in read_page while preserving strict manifest errors for targeted reads.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2f4813effc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_manager.py
Comment thread profile_manager.py Outdated
Comment thread profile_manager.py
Raise on targeted corrupt profile_id, skip actions with bad State values during find/read, and absolutize read_page raw assets so cross-page raw pastes copy icons.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2370c2b47d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread profile_manager.py
Comment thread profile_manager.py Outdated
Skip malformed Actions values during find/read scans, and only absolutize page-local assets that resolve under the source page Images/ directory.
@jack-arturo

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: a3f3d43091

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jack-arturo
jack-arturo merged commit dd3e58d into main Jul 19, 2026
7 checks passed
@jack-arturo
jack-arturo deleted the feat/find-actions-discoverability branch July 19, 2026 04:29
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.

Mark Stream Deck profile validation failures as MCP tool errors

1 participant