Conversation
Extends handle_launch_program with a Node capability-gated path, mapping the free-text program slot to a NodeNativeAction and dispatching through neon-utils' shared invoke_native_action helper. Unmapped programs keep the existing not_supported fallback.
Was added to trace a context.node stamping issue during live E2E testing; no longer needed now that the round trip is confirmed working.
Member
@mikejgray can you update |
NeonDaniel
requested changes
Sep 9, 2026
NeonDaniel
left a comment
Member
There was a problem hiding this comment.
Suggested refactoring PROGRAM_TO_NATIVE_ACTION to use voc resources for future language support
The neon-utils helper renders <NodeNativeAction value>.dialog for the spoken action name and has no built-in fallback text, so every action this skill launches needs its own dialog file. Timeout wording per review.
Replace the hardcoded program-to-action dict with one .voc file per NodeNativeAction value, resolved with voc_match, so other languages can add program names without touching code. Whole-word matching also handles slots like "the camera" without an entry per phrasing.
neon-utils~=1.12 does not resolve a prerelease, so the alpha published from NeonGeckoCom/neon-utils#568 needs an explicit floor.
The enum this skill imports first shipped in the 0.0.3a2 prerelease; the ~=0.0,>=0.0.2 spec resolved the 0.0.2 stable in CI, which does not have it.
mikejgray
marked this pull request as ready for review
September 9, 2026 02:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR lets a Node open apps by voice: camera, clock, reminders, voice recorder, and bare "open messages"/"open mail" (no content). It adds a Node branch to
handle_launch_program, checked before the existing mobile and Klat branches. The branch resolves the spoken program name to a native action, then calls the shared helper in NeonGeckoCom/neon-utils#568 to check support, dispatch, and speak the result.Program names live in one
.vocfile perNodeNativeActionvalue (launch_clock_app.vocholds clock, alarm, timer, and so on), resolved withvoc_match. Other languages add program names by adding vocab, with no code change. Programs that match no vocab still get the existing "not supported" message.handle_browse_websiteis untouched.Spoken text for these actions lives in this skill's dialog files, like any other dialog: the four
native_action_*dialogs (not supported, success, timeout, error) plus one<NodeNativeAction value>.dialogper action holding its spoken name. The shared helper has no built-in fallback text; a missing file gets the standard OVOS behavior of speaking the key.Test plan
<action>.vocin the skill and checks that every line resolves to its action, so the vocab and the code cannot drift apart.minerva test-resourcesandminerva test-intentspass locally againsttest/test_resources.yamlandtest/test_intents.yaml.CI note
requirements.txtfloorsneon-utilsat1.14.2a5(the alpha published from NeonGeckoCom/neon-utils#568) andneon-data-modelsat0.0.3a2(the first prerelease withNodeNativeAction). Neither spec resolved a prerelease before, so earlier CI runs failed at import: firstNo module named 'neon_utils.native_actions', thencannot import name 'NodeNativeAction' from 'neon_data_models.enum'after neon-utils published.Depends on NeonGeckoCom/neon-utils#568.