From 0740495552cd62d335061a2cdd782759dbda1256 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Mon, 6 Jul 2026 14:46:14 -0700 Subject: [PATCH] Read App Intents Documentation Nucleic-Session: 56C5F781-4444-466B-91CE-A7734A8E117F Co-authored-by: Nucleic --- .../AppIntents/NucleicShortcuts.swift | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 NucleicRemote/NucleicRemote/AppIntents/NucleicShortcuts.swift diff --git a/NucleicRemote/NucleicRemote/AppIntents/NucleicShortcuts.swift b/NucleicRemote/NucleicRemote/AppIntents/NucleicShortcuts.swift new file mode 100644 index 0000000..6e16131 --- /dev/null +++ b/NucleicRemote/NucleicRemote/AppIntents/NucleicShortcuts.swift @@ -0,0 +1,45 @@ +import AppIntents + +/// Curates the handful of genuinely voice-worthy actions for Siri / Spotlight (§8: keep the spoken +/// set to ~4 — approve, unblock, open, "what needs me" — and expose the long tail through Shortcuts +/// only). Every phrase must name the app; `\(.applicationName)` resolves to "Nucleic". +struct NucleicShortcuts: AppShortcutsProvider { + static var appShortcuts: [AppShortcut] { + AppShortcut( + intent: SessionsNeedingMeIntent(), + phrases: [ + "What needs me in \(.applicationName)", + "What's waiting in \(.applicationName)", + "Which agents need me in \(.applicationName)", + ], + shortTitle: "What Needs Me", + systemImageName: "bell.badge") + + AppShortcut( + intent: AnswerApprovalIntent(), + phrases: [ + "Approve in \(.applicationName)", + "Answer an approval in \(.applicationName)", + ], + shortTitle: "Answer Approval", + systemImageName: "checkmark.shield") + + AppShortcut( + intent: SendFollowUpIntent(), + phrases: [ + "Send a follow-up in \(.applicationName)", + "Tell an agent in \(.applicationName)", + ], + shortTitle: "Send Follow-Up", + systemImageName: "arrowshape.turn.up.right") + + AppShortcut( + intent: OpenSessionIntent(), + phrases: [ + "Open a session in \(.applicationName)", + "Open \(.applicationName)", + ], + shortTitle: "Open Session", + systemImageName: "bubble.left.and.text.bubble.right") + } +}