# Apple Left a Layer Open. We Built It. > Published on ADIN (https://adin.chat/s/apple-left-a-layer-open-we-built-it) > Type: Article > Date: 2026-07-14 > Description: Nobody saw the gap. I saw the gap. Apple built six layers. Silicon. OS. Frameworks. Models. Intelligence. Interface. Six layers and they stopped. They stopped right before the part that matters to actual people. The evaluation layer. The research layer. The memory layer. The part where you think.... Nobody saw the gap. I saw the gap. Apple built six layers. Silicon. OS. Frameworks. Models. Intelligence. Interface. Six layers and they stopped. They stopped right before the part that matters to actual people. The evaluation layer. The research layer. The memory layer. The part where you think. They gave that to developers. They put it in Xcode. You need to know Swift to access your own intelligence. That is the most Apple thing that has ever happened. We don't think that's right. ADIN is the missing layer. 200 tools. Every single one maps to an App Intent. Zero new AI work. Zero new API cost. We wire what we already built into Apple's system and suddenly Siri can do things Siri has never been able to do. Not because Apple built it. Because we did and we handed Apple the key. "Research this in ADIN." Siri knows. Siri goes. Siri comes back with sources, summaries, a published article if you want one. All on-device. All private. All through Private Cloud Compute at zero token cost. That's not a feature. That's a new relationship between a person and their intelligence. Here is the architecture. Not because you asked. Because you need to know. 10 entities. Every piece of ADIN content -- research, flows, articles, goals, memories, watches, tasks, presentations -- typed Swift structs registered into Apple's Semantic Index. Siri can find anything. Spotlight surfaces everything. The whole device knows what you've built inside ADIN. 15 intents. 15 phrases that unlock 200 tools without opening an app. Without saying a password. Without knowing what's happening under the hood. Entity annotations on every screen. So when you're reading your research, Siri knows you're reading your research. "Publish it." Done. No navigation. No copy-paste. No app-switching. Interaction donations. Every time you use ADIN, we teach Siri you use ADIN. After 50 uses, Siri stops asking where to go. Siri just goes there. You don't say "in ADIN" anymore. You just say what you want. That's the end state. That's what we're building toward. 12 months. Four phases. Phase 1 ends February. Siri can trigger deep research, run flows, check stocks, set reminders, check weather. Internal. Clean. Fast. Phase 2 ends May. Every entity in the Semantic Index. Spotlight knows your goals. Siri finds your articles. The whole system is aware. Phase 3 ends August. On-screen annotations live. You look at a research card, Siri knows it's that card. AirPods read your proactive agent results aloud and ask if you want to act. Background tasks cancel without touching your phone. Phase 4 ends December. Cross-app entity exchange via Transferable API. Multi-device cloud sync. Custom branded Siri dialog. A 200-phrase test matrix that CI runs on every single PR. v1.0 ships December 22. People will ask why we didn't wait for Apple to build this. Apple doesn't build for curious people. Apple builds for everyone. We build for the person who wants to think faster, research deeper, remember everything, and act on it without friction. That person exists. That person is you if you're reading this. We are not fighting the Apple stack. We are the layer Apple needs and will never make. The entry point is App Intents. The destination is default. Full interactive deck: https://adin.chat/s/adin-apple-intelligence-strategic-integration-roadmap-m71r ## Visualizations ```bubblemap { "nodes": [ { "x": 750, "y": 0, "id": "user", "group": "User", "label": "User", "value": 30, "metadata": { "Role": "Human asking, acting, deciding", "Touch Points": "Siri, ADIN, Spotlight, Shortcuts" } }, { "x": 610.3300858899107, "y": 530.3300858899106, "id": "siri", "group": "Interface Layer", "label": "Siri", "value": 25, "metadata": { "Function": "Natural language actions inside apps", "Limitation": "Single-turn, app-bound context", "Gets smarter via": "App Intents + Semantic Index + Interaction Donations" } }, { "x": 490.3300858899107, "y": 599.6121181926657, "id": "spotlight", "group": "Interface Layer", "label": "Spotlight", "value": 15, "metadata": { "Function": "System-wide entity search", "Limitation": "Search only, no reasoning", "Powered by": "Semantic Index" } }, { "x": 490.33008588991066, "y": 461.04805358715555, "id": "shortcuts", "group": "Interface Layer", "label": "Shortcuts / Action Button", "value": 12, "metadata": { "Function": "Trigger intents manually or via hardware", "Powered by": "App Intents framework" } }, { "x": 100.00000000000004, "y": 750, "id": "adin_ui", "group": "ADIN Layer", "label": "ADIN Chat Interface", "value": 35, "metadata": { "vs Siri": "Deeper reasoning, research, creation, evaluation", "Function": "Conversational AI across all models + tools", "Advantage": "Multi-turn, cross-domain, persistent memory" } }, { "x": 5.204748896376251e-14, "y": 850, "id": "adin_eval", "group": "ADIN Layer", "label": "ADIN Eval Layer", "value": 28, "metadata": { "Feature": "Scorecard, model comparison, hill-climbing in plain English", "Function": "No-code evaluation of AI outputs and Flows", "Gap it fills": "Apple Eval Framework is Xcode-only / dev-only" } }, { "x": -99.99999999999996, "y": 750, "id": "adin_memory", "group": "ADIN Layer", "label": "ADIN Memory + Knowledge Graph", "value": 22, "metadata": { "Data": "Preferences, relationships, past work, taste profile", "Function": "Persistent user context across sessions", "vs Semantic Index": "Cross-app, cross-session, user-owned" } }, { "x": 2.7554552980815446e-14, "y": 650, "id": "adin_flows", "group": "ADIN Layer", "label": "ADIN Flows / Agents", "value": 20, "metadata": { "Runs on": "Foundation Models API + ADIN tool stack", "Function": "Scheduled multi-step AI workflows", "vs Shortcuts": "AI-native, multi-model, composable, no code" } }, { "x": -450.3300858899106, "y": 530.3300858899107, "id": "appintents", "group": "Apple Intelligence Layer", "label": "App Intents Framework", "value": 22, "metadata": { "Function": "Connect app actions + content to Siri", "ADIN role": "ADIN could expose its agents as App Intents", "Key concepts": "Entities, Schemas, Intents, Annotations, Donations" } }, { "x": -610.3300858899106, "y": 530.3300858899107, "id": "semindex", "group": "Apple Intelligence Layer", "label": "Semantic Index", "value": 20, "metadata": { "Search": "Meaning-based, not just keyword", "Function": "On-device entity knowledge store", "ADIN role": "ADIN entities could be indexed here" } } ], "edges": [ { "label": "voice / text commands", "source": "user", "target": "siri" }, { "label": "conversational AI work", "source": "user", "target": "adin_ui" }, { "label": "search", "source": "user", "target": "spotlight" }, { "label": "trigger actions", "source": "user", "target": "shortcuts" }, { "label": "routes through", "source": "siri", "target": "appintents" }, { "label": "queries entities", "source": "siri", "target": "semindex" }, { "label": "searches", "source": "spotlight", "target": "semindex" }, { "label": "executes intents", "source": "shortcuts", "target": "appintents" }, { "label": "primary model API", "source": "adin_ui", "target": "fmframework" }, { "label": "triggers eval", "source": "adin_ui", "target": "adin_eval" } ], "title": "Apple AI Stack + ADIN -- Proposed Architecture 2027" } ``` ```bubblemap { "nodes": [ { "x": 750, "y": 0, "id": "user", "group": "User", "label": "User", "value": 30, "metadata": { "Role": "Human asking, acting, deciding", "Touch Points": "Siri, ADIN, Spotlight, Shortcuts" } }, { "x": 610.3300858899107, "y": 530.3300858899106, "id": "siri", "group": "Interface Layer", "label": "Siri", "value": 25, "metadata": { "Function": "Natural language actions inside apps", "Limitation": "Single-turn, app-bound context", "Gets smarter via": "App Intents + Semantic Index + Interaction Donations" } }, { "x": 490.3300858899107, "y": 599.6121181926657, "id": "spotlight", "group": "Interface Layer", "label": "Spotlight", "value": 15, "metadata": { "Function": "System-wide entity search", "Limitation": "Search only, no reasoning", "Powered by": "Semantic Index" } }, { "x": 490.33008588991066, "y": 461.04805358715555, "id": "shortcuts", "group": "Interface Layer", "label": "Shortcuts / Action Button", "value": 12, "metadata": { "Function": "Trigger intents manually or via hardware", "Powered by": "App Intents framework" } }, { "x": 100.00000000000004, "y": 750, "id": "adin_ui", "group": "ADIN Layer", "label": "ADIN Chat Interface", "value": 35, "metadata": { "vs Siri": "Deeper reasoning, research, creation, evaluation", "Function": "Conversational AI across all models + tools", "Advantage": "Multi-turn, cross-domain, persistent memory" } }, { "x": 5.204748896376251e-14, "y": 850, "id": "adin_eval", "group": "ADIN Layer", "label": "ADIN Eval Layer", "value": 28, "metadata": { "Feature": "Scorecard, model comparison, hill-climbing in plain English", "Function": "No-code evaluation of AI outputs and Flows", "Gap it fills": "Apple Eval Framework is Xcode-only / dev-only" } }, { "x": -99.99999999999996, "y": 750, "id": "adin_memory", "group": "ADIN Layer", "label": "ADIN Memory + Knowledge Graph", "value": 22, "metadata": { "Data": "Preferences, relationships, past work, taste profile", "Function": "Persistent user context across sessions", "vs Semantic Index": "Cross-app, cross-session, user-owned" } }, { "x": 2.7554552980815446e-14, "y": 650, "id": "adin_flows", "group": "ADIN Layer", "label": "ADIN Flows / Agents", "value": 20, "metadata": { "Runs on": "Foundation Models API + ADIN tool stack", "Function": "Scheduled multi-step AI workflows", "vs Shortcuts": "AI-native, multi-model, composable, no code" } }, { "x": -450.3300858899106, "y": 530.3300858899107, "id": "appintents", "group": "Apple Intelligence Layer", "label": "App Intents Framework", "value": 22, "metadata": { "Function": "Connect app actions + content to Siri", "ADIN role": "ADIN could expose its agents as App Intents", "Key concepts": "Entities, Schemas, Intents, Annotations, Donations" } }, { "x": -610.3300858899106, "y": 530.3300858899107, "id": "semindex", "group": "Apple Intelligence Layer", "label": "Semantic Index", "value": 20, "metadata": { "Search": "Meaning-based, not just keyword", "Function": "On-device entity knowledge store", "ADIN role": "ADIN entities could be indexed here" } } ], "edges": [ { "label": "voice / text commands", "source": "user", "target": "siri" }, { "label": "conversational AI work", "source": "user", "target": "adin_ui" }, { "label": "search", "source": "user", "target": "spotlight" }, { "label": "trigger actions", "source": "user", "target": "shortcuts" }, { "label": "routes through", "source": "siri", "target": "appintents" }, { "label": "queries entities", "source": "siri", "target": "semindex" }, { "label": "searches", "source": "spotlight", "target": "semindex" }, { "label": "executes intents", "source": "shortcuts", "target": "appintents" }, { "label": "primary model API", "source": "adin_ui", "target": "fmframework" }, { "label": "triggers eval", "source": "adin_ui", "target": "adin_eval" } ], "title": "Apple AI Stack + ADIN -- Proposed Architecture 2027" } ``` ## Diagrams ```mermaid graph TD USER["👤 User"] subgraph UI["LAYER 6 -- User Interface"] SIRI["Siri\nNatural Language"] SPOT["Spotlight\nSearch"] SHORT["Shortcuts +\nAction Button"] end subgraph INTEL["LAYER 5 -- Apple Intelligence"] SEMIDX["Semantic Index\nEntity Knowledge Store"] APPINT["App Intents Framework\nEntities + Schemas + Intents"] ANNOT["Entity Annotations\nOn-Screen Awareness"] DONATE["Interaction Donations\nBehavior Learning"] end subgraph MODELS["LAYER 4 -- Model Layer"] ONDEV["Apple Foundation Model\nOn-Device\nFast · Private · Offline"] PCC["Apple Foundation Model\nPrivate Cloud Compute\nDeeper Reasoning · No Data Stored"] CLAUDE["Claude\nAnthropic Swift Package"] GEMINI["Gemini\nGoogle Swift Package"] CUSTOM["Custom Models\nCore AI or MLX\nYour Domain-Trained Models"] end subgraph FM["LAYER 3B -- Foundation Models Framework"] FMAPI["Unified Swift API\nLanguageModel Protocol"] GUIDED["Guided Generation\nStructured Output via Swift Structs"] TOOLCALL["Tool Calling\nReal-time Data Access"] DYNPROF["Dynamic Profile API\nMulti-Session Shared Context"] EVALFW["Evaluations Framework\nQuality Testing · Hill-Climbing"] end subgraph COREAI["LAYER 3A -- Core AI Framework"] CAI["Core AI Runtime\nC/GPU/Neural Engine"] PYTOOLS["Python Conversion Tools\nPyTorch → Core AI Asset"] PRECOMP["Pre-compiled Assets\nFast Load for Large Models"] DEBUGR["Core AI Debugger\nGraph Visualization + Tensor Inspection"] end subgraph MLX["LAYER 3C -- MLX #40;Open Source#41;"] MLXCORE["Numerical Computing\nLinear Algebra + Vectorized Ops"] AUTODIFF["Automatic Differentiation\nGradient Computation"] DISTRIB["Distributed Computing\nThunderbolt 5 RDMA Clusters"] MLXLM["MLX LM\n10k+ HuggingFace Models"] end subgraph OS["LAYER 2 -- Operating System #40;macOS 27 / iOS#41;"] KERN["Kernel-Level\nFile Access Control"] PRIV["Privacy Architecture\nPCC Verifiable Promise"] FMCLI["fm CLI Tool\nTerminal Access to Models"] end subgraph SILICON["LAYER 1 -- Apple Silicon"] CPU["CPU"] GPU["GPU"] NE["Neural Engine\nM5 Neural Accelerator"] TB5["Thunderbolt 5\nHigh-BW / Low-Latency"] end USER --> SIRI USER --> SPOT USER --> SHORT SIRI --> SEMIDX SIRI --> APPINT SPOT --> SEMIDX SHORT --> APPINT SEMIDX --> APPINT APPINT --> ANNOT APPINT --> DONATE APPINT --> FMAPI FMAPI --> ONDEV FMAPI --> PCC FMAPI --> CLAUDE FMAPI --> GEMINI FMAPI --> CUSTOM GUIDED --> FMAPI TOOLCALL --> FMAPI DYNPROF --> FMAPI EVALFW --> FMAPI CUSTOM --> CAI CUSTOM --> MLXCORE CAI --> PYTOOLS CAI --> PRECOMP CAI --> DEBUGR MLXCORE --> AUTODIFF MLXCORE --> DISTRIB MLXCORE --> MLXLM DISTRIB --> TB5 ONDEV --> NE ONDEV --> GPU CAI --> NE CAI --> GPU CAI --> CPU MLXCORE --> GPU MLXCORE --> NE KERN --> CAI KERN --> FMAPI PRIV --> PCC FMCLI --> ONDEV FMCLI --> PCC GPU --> SILICON NE --> SILICON CPU --> SILICON TB5 --> SILICON ``` ```mermaid graph TD subgraph LAYER1["BUILDING BLOCK 1 -- App Entities"] AE["AppEntity Protocol\nStruct with @Property wrappers\nHas: identifier + typed properties"] AESCHEMA["AppEntity Schema\nConform to domain schema\ne.g. TimerAppEntity schema\nAuto-configures @Property + Spotlight keys"] IDXENT["IndexedEntity Protocol\nAdopt to enter Semantic Index\nCall: indexAppEntities on create / rename / delete"] QUERIES["Entity Queries\nFor server-hosted or large catalogs\nSiri pulls entities on demand"] AE --> AESCHEMA AE --> IDXENT AE --> QUERIES end subgraph LAYER2["BUILDING BLOCK 2 -- App Schemas #40;Domains#41;"] CLOCKDOM["Clock Domain"] TIMERSC["Timer Schema\nproperties: duration · label · state"] ALARMSC["Alarm Schema\nproperties: time · label · recurring"] STOPSC["Stopwatch Schema\nproperties: elapsed · state"] OTHERDOM["Other Domains\nMessages · Calendar · Photos · Music\nand more..."] CLOCKDOM --> TIMERSC CLOCKDOM --> ALARMSC CLOCKDOM --> STOPSC end subgraph LAYER3["BUILDING BLOCK 3 -- App Intents"] INTENT["AppIntent Protocol\nStruct with @Parameter inputs\nperform method → typed output"] INTENTSCHEMA["Intent Schema\nConform to system schema\nAuto-handles: params · result type"] FGINTENT["Foreground Intent\nOpens app when run"] BGINTENT["Background Intent\nRuns silently, no app open"] INTENT --> INTENTSCHEMA INTENT --> FGINTENT INTENT --> BGINTENT end subgraph LAYER4["BUILDING BLOCK 4 -- Entity Annotations"] SWIFTUI_MOD["SwiftUI Modifier\n.appEntity#40;entityID#41;\nOne entity per view row"] COLLECTION["Collection + Selection Modifier\nFor lists with selectable items"] CANVAS["Custom Canvas API\nFor drawn / non-standard UI"] UIKIT_ANNOT["UIKit + AppKit Support\nNon-SwiftUI views"] NOTIF_ANNOT["Notification Annotation\nEntity attached to push notification\nSiri acts even when app is closed"] NOWPLAY["Now Playing Session Annotation\nSiri reads audio content aloud\ne.g. via AirPods"] ALARMKIT["AlarmKit Alarm Annotation\nSiri can snooze / cancel firing alarm\nwithout app visible"] end subgraph LAYER5["BUILDING BLOCK 5 -- Interaction Donations"] DONATION["IntentDonationManager.donate#40;#41;\nCreate in-app intent equivalent\nDonate after each user action"] TRANSCRIPT["Temporary Transcript\nSiri stores receipt of each action\nBuilds behavioral preference model"] ROUTING["App Routing Learning\nSiri learns which app user prefers\nfor each task over time"] ENTITYSTATE["Entity State Updates\nDonation teaches Siri entity changed\ne.g. stopwatch stopped after tap"] DONATION --> TRANSCRIPT TRANSCRIPT --> ROUTING TRANSCRIPT --> ENTITYSTATE end subgraph LAYER6["EXTRA APIs #40;Mentioned but not demoed#41;"] TRANSFER["Transferable API\nTranslate entities into formats\nneeded for cross-app actions"] DIALOG["Custom Dialog + Visuals\nBrand your Siri response UI"] CLOUDSYNC["Cloud Sync for Entities\nMark entities as syncable\nConversations work across devices"] AITESTING["AppIntentsTesting Framework\nTest + maintain your App Intents adoption\nNew in WWDC26"] end subgraph SEMIDX["SEMANTIC INDEX"] SI["Apple Intelligence Knowledge Store\nMeaning-based search · Property search\nCross-app entity lookup"] end subgraph SIRI_OUT["SIRI OUTPUTS"] S1["Take Action in App"] S2["Find Content"] S3["Remember Context\nAcross conversation turns"] S4["On-Screen Awareness\nKnows what user is looking at"] end AESCHEMA --> CLOCKDOM INTENTSCHEMA --> CLOCKDOM IDXENT --> SI QUERIES --> SI SI --> S2 SWIFTUI_MOD --> S4 COLLECTION --> S4 CANVAS --> S4 UIKIT_ANNOT --> S4 NOTIF_ANNOT --> S1 NOWPLAY --> S1 ALARMKIT --> S1 DONATION --> SI ROUTING --> S1 ENTITYSTATE --> SI INTENT --> S1 S1 --> S3 ``` ```mermaid sequenceDiagram actor User participant Siri participant SemanticIndex as Semantic Index participant AppIntents as App Intents Framework participant ADIN_Intent as ADIN AppIntent participant ADIN_Engine as ADIN Engine participant FM as Foundation Models Framework participant AppleModel as Apple Foundation Model participant ADIN_Memory as ADIN Memory / Knowledge Note over User,ADIN_Memory: SCENARIO A -- "Research Apple Intelligence for me in ADIN" User->>Siri: "Research Apple Intelligence for me in ADIN" Siri->>SemanticIndex: Query -- find ADINResearchEntity schema + ADIN app SemanticIndex-->>Siri: ADIN registered, ADINResearchIntent available Siri->>AppIntents: Resolve intent: ADINResearchIntent AppIntents->>ADIN_Intent: perform() called\ntopic = "Apple Intelligence"\ndepth = .standard ADIN_Intent->>ADIN_Engine: Delegate to researcher agent\nsearch_web + map_analyze ADIN_Engine->>FM: Model calls for synthesis FM->>AppleModel: On-device or PCC reasoning AppleModel-->>FM: Synthesized result FM-->>ADIN_Engine: Research output ADIN_Engine-->>ADIN_Intent: ADINResearchEntity created ADIN_Intent->>ADIN_Memory: indexAppEntities -- register new entity ADIN_Memory-->>SemanticIndex: Entity now searchable system-wide ADIN_Intent-->>AppIntents: Return ADINResearchEntity AppIntents-->>Siri: Result ready Siri-->>User: "Done. I found 12 sources on Apple Intelligence. Want me to publish it?" Note over User,ADIN_Memory: SCENARIO B -- "Publish it" while viewing article in ADIN User->>Siri: "Publish it" Siri->>AppIntents: On-screen entity annotation present?\nEntity: ADINArticleEntity #40;current view#41; AppIntents-->>Siri: Yes -- ADINArticleEntity annotated on screen Siri->>AppIntents: Resolve intent: ADINPublishArticleIntent\narticle = on-screen entity AppIntents->>ADIN_Intent: perform() -- post_to_network ADIN_Intent->>ADIN_Engine: post_to_network#40;confirm=true#41; ADIN_Engine-->>ADIN_Intent: Published -- shareURL returned ADIN_Intent->>ADIN_Memory: Update ADINArticleEntity with live URL\nindexAppEntities ADIN_Intent-->>AppIntents: Article entity updated AppIntents-->>Siri: Published successfully Siri-->>User: "Published. Here is the link." Note over User,ADIN_Memory: SCENARIO C -- Interaction Donation teaching Siri User->>ADIN_Engine: User taps "Publish" manually in ADIN UI ADIN_Engine->>ADIN_Intent: Create ADINPublishArticleIntent equivalent ADIN_Intent->>AppIntents: IntentDonationManager.donate#40;intent#41; AppIntents-->>SemanticIndex: Transcript entry saved Note right of SemanticIndex: Over time -- Siri learns:\nUser prefers ADIN for publishing\nAuto-routes future "publish" requests here ``` ```mermaid gantt title ADIN App Intents -- 12-Month Engineering Roadmap dateFormat YYYY-MM-DD axisFormat %b %Y section PHASE 1 · Foundation App target setup + Siri entitlements :done, p1_setup, 2027-01-01, 2027-01-14 ADINResearchEntity + ADINFlowEntity structs :done, p1_ent1, 2027-01-07, 2027-01-21 ADINResearchIntent implementation :active, p1_i1, 2027-01-14, 2027-02-04 ADINRunFlowIntent + ADINScheduleTaskIntent : p1_i2, 2027-01-21, 2027-02-11 ADINCheckStockIntent + ADINWeatherIntent : p1_i3, 2027-01-28, 2027-02-11 ADINCreateReminderIntent : p1_i4, 2027-02-04, 2027-02-18 Basic Siri phrase testing : p1_test, 2027-02-11, 2027-02-25 Phase 1 internal release :milestone, p1_ship, 2027-02-28, 1d section PHASE 2 · Entity Depth + Semantic Index Custom ADIN domain schema definition : p2_schema, 2027-03-01, 2027-03-15 ADINMemoryEntity + indexAppEntities : p2_mem, 2027-03-08, 2027-03-22 ADINArticleEntity + ADINGoalEntity : p2_ent2, 2027-03-15, 2027-03-29 ADINWatchEntity + ADINTaskEntity : p2_ent3, 2027-03-22, 2027-04-05 Semantic Index registration all entities : p2_semidx, 2027-03-29, 2027-04-12 ADINPublishArticleIntent : p2_pub, 2027-04-05, 2027-04-19 ADINCreateGoalIntent + ADINSaveMemoryIntent : p2_goals, 2027-04-12, 2027-04-26 Spotlight key configuration : p2_spot, 2027-04-19, 2027-05-03 Entity query support for server-hosted data : p2_query, 2027-04-26, 2027-05-17 Phase 2 beta release :milestone, p2_ship, 2027-05-21, 1d section PHASE 3 · Annotations + Donations SwiftUI entity annotations -- research cards : p3_sw1, 2027-06-01, 2027-06-15 SwiftUI entity annotations -- article editor : p3_sw2, 2027-06-08, 2027-06-22 Collection annotations -- Flow list : p3_col1, 2027-06-15, 2027-06-29 Collection annotations -- Goal + Watch lists : p3_col2, 2027-06-22, 2027-07-06 Notification annotations -- proactive agents : p3_notif, 2027-07-06, 2027-07-20 Background task annotations -- Flow runner : p3_bg, 2027-07-13, 2027-07-27 Interaction Donations -- research + publish : p3_don1, 2027-07-20, 2027-08-03 Interaction Donations -- flows + reminders : p3_don2, 2027-07-27, 2027-08-10 Interaction Donations -- stock checks + goals : p3_don3, 2027-08-03, 2027-08-17 Donations routing validation with Siri : p3_val, 2027-08-10, 2027-08-24 Phase 3 public release :milestone, p3_ship, 2027-08-28, 1d section PHASE 4 · Intelligence + Scale ADINPresentationEntity + ADINPortfolioEntity : p4_ent, 2027-09-01, 2027-09-22 Transferable API -- cross-app entity exchange : p4_trans, 2027-09-15, 2027-10-06 Entity Cloud Sync -- multi-device continuity : p4_sync, 2027-10-06, 2027-10-27 Custom Dialog + branded Siri response visuals : p4_dialog, 2027-10-20, 2027-11-03 AppIntentsTesting full suite : p4_tests, 2027-11-01, 2027-11-21 Donation performance audit + retrain baseline : p4_audit, 2027-11-10, 2027-11-28 Regression testing + edge case coverage : p4_regress, 2027-11-21, 2027-12-12 Full system QA + Siri phrase matrix : p4_qa, 2027-12-01, 2027-12-20 v1.0 App Intents complete :milestone, p4_ship, 2027-12-22, 1d ``` ```mermaid graph LR subgraph INFRA["Must-Do First"] ENTITLE["Siri Entitlements\n+ App Target Setup"] end subgraph P1_ENT["Phase 1 Entities"] RE["ADINResearchEntity"] FE["ADINFlowEntity"] end subgraph P1_INT["Phase 1 Intents"] RI["ADINResearchIntent"] RFI["ADINRunFlowIntent"] STI["ADINScheduleTaskIntent"] CSI["ADINCheckStockIntent"] WI["ADINWeatherIntent"] CRI["ADINCreateReminderIntent"] end subgraph SCHEMA["Phase 2 -- ADIN Domain Schema"] DOMAIN["ADINDomain\nSchema Definition"] end subgraph P2_ENT["Phase 2 Entities"] ME["ADINMemoryEntity"] AE["ADINArticleEntity"] GE["ADINGoalEntity"] WE["ADINWatchEntity"] TE["ADINTaskEntity"] end subgraph SEMIDX["Semantic Index Layer"] IDX["indexAppEntities\nAll Entity Types"] EQ["Entity Queries\nServer-Hosted Data"] end subgraph P2_INT["Phase 2 Intents"] PAI["ADINPublishArticleIntent"] CGI["ADINCreateGoalIntent"] SMI["ADINSaveMemoryIntent"] end subgraph P3_ANN["Phase 3 -- Annotations"] SWA["SwiftUI .appEntity\nResearch + Article views"] COL["Collection Annotations\nFlow + Goal + Watch lists"] NOTIF["Notification Annotations\nProactive agent results"] BG["Background Task Annotations\nFlow runner"] end subgraph P3_DON["Phase 3 -- Donations"] DON1["Donate: research + publish"] DON2["Donate: flows + reminders"] DON3["Donate: stocks + goals"] ROUTE["Siri Routing Test\n50+ donations → ADIN-first"] end subgraph P4["Phase 4 -- Scale + Polish"] PE["ADINPresentationEntity\n+ ADINPortfolioEntity"] TRANS["Transferable API"] CSYNC["Entity Cloud Sync"] DIALOG["Custom Dialog + Visuals"] TESTS["AppIntentsTesting\nFull Suite"] QA["System QA\n200-phrase Matrix"] end ENTITLE --> RE ENTITLE --> FE RE --> RI FE --> RFI FE --> STI ENTITLE --> CSI ENTITLE --> WI ENTITLE --> CRI RI --> SCHEMA RFI --> SCHEMA SCHEMA --> ME SCHEMA --> AE SCHEMA --> GE SCHEMA --> WE SCHEMA --> TE ME --> IDX AE --> IDX GE --> IDX WE --> IDX TE --> IDX RE --> IDX FE --> IDX IDX --> EQ AE --> PAI IDX --> PAI GE --> CGI ME --> SMI IDX --> SWA PAI --> SWA SWA --> COL COL --> NOTIF NOTIF --> BG BG --> DON1 DON1 --> DON2 DON2 --> DON3 DON3 --> ROUTE ROUTE --> PE PE --> TRANS TRANS --> CSYNC ROUTE --> DIALOG ROUTE --> TESTS TESTS --> QA ``` ```mermaid graph TD USER["👤 User"] subgraph UI["LAYER 6 -- User Interface"] SIRI["Siri\nNatural Language"] SPOT["Spotlight\nSearch"] SHORT["Shortcuts +\nAction Button"] end subgraph INTEL["LAYER 5 -- Apple Intelligence"] SEMIDX["Semantic Index\nEntity Knowledge Store"] APPINT["App Intents Framework\nEntities + Schemas + Intents"] ANNOT["Entity Annotations\nOn-Screen Awareness"] DONATE["Interaction Donations\nBehavior Learning"] end subgraph MODELS["LAYER 4 -- Model Layer"] ONDEV["Apple Foundation Model\nOn-Device\nFast · Private · Offline"] PCC["Apple Foundation Model\nPrivate Cloud Compute\nDeeper Reasoning · No Data Stored"] CLAUDE["Claude\nAnthropic Swift Package"] GEMINI["Gemini\nGoogle Swift Package"] CUSTOM["Custom Models\nCore AI or MLX\nYour Domain-Trained Models"] end subgraph FM["LAYER 3B -- Foundation Models Framework"] FMAPI["Unified Swift API\nLanguageModel Protocol"] GUIDED["Guided Generation\nStructured Output via Swift Structs"] TOOLCALL["Tool Calling\nReal-time Data Access"] DYNPROF["Dynamic Profile API\nMulti-Session Shared Context"] EVALFW["Evaluations Framework\nQuality Testing · Hill-Climbing"] end subgraph COREAI["LAYER 3A -- Core AI Framework"] CAI["Core AI Runtime\nC/GPU/Neural Engine"] PYTOOLS["Python Conversion Tools\nPyTorch → Core AI Asset"] PRECOMP["Pre-compiled Assets\nFast Load for Large Models"] DEBUGR["Core AI Debugger\nGraph Visualization + Tensor Inspection"] end subgraph MLX["LAYER 3C -- MLX #40;Open Source#41;"] MLXCORE["Numerical Computing\nLinear Algebra + Vectorized Ops"] AUTODIFF["Automatic Differentiation\nGradient Computation"] DISTRIB["Distributed Computing\nThunderbolt 5 RDMA Clusters"] MLXLM["MLX LM\n10k+ HuggingFace Models"] end subgraph OS["LAYER 2 -- Operating System #40;macOS 27 / iOS#41;"] KERN["Kernel-Level\nFile Access Control"] PRIV["Privacy Architecture\nPCC Verifiable Promise"] FMCLI["fm CLI Tool\nTerminal Access to Models"] end subgraph SILICON["LAYER 1 -- Apple Silicon"] CPU["CPU"] GPU["GPU"] NE["Neural Engine\nM5 Neural Accelerator"] TB5["Thunderbolt 5\nHigh-BW / Low-Latency"] end USER --> SIRI USER --> SPOT USER --> SHORT SIRI --> SEMIDX SIRI --> APPINT SPOT --> SEMIDX SHORT --> APPINT SEMIDX --> APPINT APPINT --> ANNOT APPINT --> DONATE APPINT --> FMAPI FMAPI --> ONDEV FMAPI --> PCC FMAPI --> CLAUDE FMAPI --> GEMINI FMAPI --> CUSTOM GUIDED --> FMAPI TOOLCALL --> FMAPI DYNPROF --> FMAPI EVALFW --> FMAPI CUSTOM --> CAI CUSTOM --> MLXCORE CAI --> PYTOOLS CAI --> PRECOMP CAI --> DEBUGR MLXCORE --> AUTODIFF MLXCORE --> DISTRIB MLXCORE --> MLXLM DISTRIB --> TB5 ONDEV --> NE ONDEV --> GPU CAI --> NE CAI --> GPU CAI --> CPU MLXCORE --> GPU MLXCORE --> NE KERN --> CAI KERN --> FMAPI PRIV --> PCC FMCLI --> ONDEV FMCLI --> PCC GPU --> SILICON NE --> SILICON CPU --> SILICON TB5 --> SILICON ``` ```mermaid graph TD subgraph LAYER1["BUILDING BLOCK 1 -- App Entities"] AE["AppEntity Protocol\nStruct with @Property wrappers\nHas: identifier + typed properties"] AESCHEMA["AppEntity Schema\nConform to domain schema\ne.g. TimerAppEntity schema\nAuto-configures @Property + Spotlight keys"] IDXENT["IndexedEntity Protocol\nAdopt to enter Semantic Index\nCall: indexAppEntities on create / rename / delete"] QUERIES["Entity Queries\nFor server-hosted or large catalogs\nSiri pulls entities on demand"] AE --> AESCHEMA AE --> IDXENT AE --> QUERIES end subgraph LAYER2["BUILDING BLOCK 2 -- App Schemas #40;Domains#41;"] CLOCKDOM["Clock Domain"] TIMERSC["Timer Schema\nproperties: duration · label · state"] ALARMSC["Alarm Schema\nproperties: time · label · recurring"] STOPSC["Stopwatch Schema\nproperties: elapsed · state"] OTHERDOM["Other Domains\nMessages · Calendar · Photos · Music\nand more..."] CLOCKDOM --> TIMERSC CLOCKDOM --> ALARMSC CLOCKDOM --> STOPSC end subgraph LAYER3["BUILDING BLOCK 3 -- App Intents"] INTENT["AppIntent Protocol\nStruct with @Parameter inputs\nperform method → typed output"] INTENTSCHEMA["Intent Schema\nConform to system schema\nAuto-handles: params · result type"] FGINTENT["Foreground Intent\nOpens app when run"] BGINTENT["Background Intent\nRuns silently, no app open"] INTENT --> INTENTSCHEMA INTENT --> FGINTENT INTENT --> BGINTENT end subgraph LAYER4["BUILDING BLOCK 4 -- Entity Annotations"] SWIFTUI_MOD["SwiftUI Modifier\n.appEntity#40;entityID#41;\nOne entity per view row"] COLLECTION["Collection + Selection Modifier\nFor lists with selectable items"] CANVAS["Custom Canvas API\nFor drawn / non-standard UI"] UIKIT_ANNOT["UIKit + AppKit Support\nNon-SwiftUI views"] NOTIF_ANNOT["Notification Annotation\nEntity attached to push notification\nSiri acts even when app is closed"] NOWPLAY["Now Playing Session Annotation\nSiri reads audio content aloud\ne.g. via AirPods"] ALARMKIT["AlarmKit Alarm Annotation\nSiri can snooze / cancel firing alarm\nwithout app visible"] end subgraph LAYER5["BUILDING BLOCK 5 -- Interaction Donations"] DONATION["IntentDonationManager.donate#40;#41;\nCreate in-app intent equivalent\nDonate after each user action"] TRANSCRIPT["Temporary Transcript\nSiri stores receipt of each action\nBuilds behavioral preference model"] ROUTING["App Routing Learning\nSiri learns which app user prefers\nfor each task over time"] ENTITYSTATE["Entity State Updates\nDonation teaches Siri entity changed\ne.g. stopwatch stopped after tap"] DONATION --> TRANSCRIPT TRANSCRIPT --> ROUTING TRANSCRIPT --> ENTITYSTATE end subgraph LAYER6["EXTRA APIs #40;Mentioned but not demoed#41;"] TRANSFER["Transferable API\nTranslate entities into formats\nneeded for cross-app actions"] DIALOG["Custom Dialog + Visuals\nBrand your Siri response UI"] CLOUDSYNC["Cloud Sync for Entities\nMark entities as syncable\nConversations work across devices"] AITESTING["AppIntentsTesting Framework\nTest + maintain your App Intents adoption\nNew in WWDC26"] end subgraph SEMIDX["SEMANTIC INDEX"] SI["Apple Intelligence Knowledge Store\nMeaning-based search · Property search\nCross-app entity lookup"] end subgraph SIRI_OUT["SIRI OUTPUTS"] S1["Take Action in App"] S2["Find Content"] S3["Remember Context\nAcross conversation turns"] S4["On-Screen Awareness\nKnows what user is looking at"] end AESCHEMA --> CLOCKDOM INTENTSCHEMA --> CLOCKDOM IDXENT --> SI QUERIES --> SI SI --> S2 SWIFTUI_MOD --> S4 COLLECTION --> S4 CANVAS --> S4 UIKIT_ANNOT --> S4 NOTIF_ANNOT --> S1 NOWPLAY --> S1 ALARMKIT --> S1 DONATION --> SI ROUTING --> S1 ENTITYSTATE --> SI INTENT --> S1 S1 --> S3 ``` ```mermaid sequenceDiagram actor User participant Siri participant SemanticIndex as Semantic Index participant AppIntents as App Intents Framework participant ADIN_Intent as ADIN AppIntent participant ADIN_Engine as ADIN Engine participant FM as Foundation Models Framework participant AppleModel as Apple Foundation Model participant ADIN_Memory as ADIN Memory / Knowledge Note over User,ADIN_Memory: SCENARIO A -- "Research Apple Intelligence for me in ADIN" User->>Siri: "Research Apple Intelligence for me in ADIN" Siri->>SemanticIndex: Query -- find ADINResearchEntity schema + ADIN app SemanticIndex-->>Siri: ADIN registered, ADINResearchIntent available Siri->>AppIntents: Resolve intent: ADINResearchIntent AppIntents->>ADIN_Intent: perform() called\ntopic = "Apple Intelligence"\ndepth = .standard ADIN_Intent->>ADIN_Engine: Delegate to researcher agent\nsearch_web + map_analyze ADIN_Engine->>FM: Model calls for synthesis FM->>AppleModel: On-device or PCC reasoning AppleModel-->>FM: Synthesized result FM-->>ADIN_Engine: Research output ADIN_Engine-->>ADIN_Intent: ADINResearchEntity created ADIN_Intent->>ADIN_Memory: indexAppEntities -- register new entity ADIN_Memory-->>SemanticIndex: Entity now searchable system-wide ADIN_Intent-->>AppIntents: Return ADINResearchEntity AppIntents-->>Siri: Result ready Siri-->>User: "Done. I found 12 sources on Apple Intelligence. Want me to publish it?" Note over User,ADIN_Memory: SCENARIO B -- "Publish it" while viewing article in ADIN User->>Siri: "Publish it" Siri->>AppIntents: On-screen entity annotation present?\nEntity: ADINArticleEntity #40;current view#41; AppIntents-->>Siri: Yes -- ADINArticleEntity annotated on screen Siri->>AppIntents: Resolve intent: ADINPublishArticleIntent\narticle = on-screen entity AppIntents->>ADIN_Intent: perform() -- post_to_network ADIN_Intent->>ADIN_Engine: post_to_network#40;confirm=true#41; ADIN_Engine-->>ADIN_Intent: Published -- shareURL returned ADIN_Intent->>ADIN_Memory: Update ADINArticleEntity with live URL\nindexAppEntities ADIN_Intent-->>AppIntents: Article entity updated AppIntents-->>Siri: Published successfully Siri-->>User: "Published. Here is the link." Note over User,ADIN_Memory: SCENARIO C -- Interaction Donation teaching Siri User->>ADIN_Engine: User taps "Publish" manually in ADIN UI ADIN_Engine->>ADIN_Intent: Create ADINPublishArticleIntent equivalent ADIN_Intent->>AppIntents: IntentDonationManager.donate#40;intent#41; AppIntents-->>SemanticIndex: Transcript entry saved Note right of SemanticIndex: Over time -- Siri learns:\nUser prefers ADIN for publishing\nAuto-routes future "publish" requests here ``` ## Data ```datatable { "columns": [ { "key": "adin_entity", "label": "ADIN Entity", "format": "text" }, { "key": "appentity_name", "label": "AppEntity Name", "format": "text" }, { "key": "properties", "label": "Key @Properties", "format": "text" }, { "key": "schema", "label": "System Schema / Domain", "format": "text" }, { "key": "indexed", "label": "IndexedEntity?", "format": "text" }, { "key": "query_type", "label": "Query Type", "format": "text" } ], "rows": [ { "schema": "Custom -- ADIN domain", "indexed": "Yes -- index on create/update", "properties": "query: String, status: ResearchStatus, sourceCount: Int, summary: String", "query_type": "Local -- all stored in ADIN knowledge graph", "adin_entity": "Research Topic", "appentity_name": "ADINResearchEntity" }, { "schema": "Custom -- publishing domain", "indexed": "Yes -- searchable by title, topic, date", "properties": "title: String, publishedAt: Date, url: URL, category: ArticleCategory, wordCount: Int", "query_type": "Local + Server -- posts live on ADIN Network", "adin_entity": "Network Article / Post", "appentity_name": "ADINArticleEntity" }, { "schema": "Custom -- automation domain", "indexed": "Yes -- surface in Spotlight and Siri", "properties": "name: String, schedule: CronExpression, status: FlowStatus, lastRun: Date, outputDestination: String", "query_type": "Local", "adin_entity": "Flow / Automation", "appentity_name": "ADINFlowEntity" }, { "schema": "Custom -- knowledge domain", "indexed": "Yes -- meaning-based search via Semantic Index", "properties": "key: String, content: String, category: MemoryCategory, scope: MemoryScope, createdAt: Date", "query_type": "Local -- persistent memory store", "adin_entity": "Memory / Knowledge Item", "appentity_name": "ADINMemoryEntity" }, { "schema": "Custom -- finance domain", "indexed": "Yes -- find by symbol or asset type", "properties": "symbol: String, assetType: AssetType, threshold: Double, direction: WatchDirection, triggerCount: Int", "query_type": "Local", "adin_entity": "Tracked Stock / Crypto Watch", "appentity_name": "ADINWatchEntity" }, { "schema": "Custom -- productivity domain", "indexed": "Yes -- track active goals via Siri", "properties": "title: String, targetValue: Double, currentValue: Double, unit: String, deadline: Date, status: GoalStatus", "query_type": "Local", "adin_entity": "Goal", "appentity_name": "ADINGoalEntity" }, { "schema": "Custom -- creative domain", "indexed": "Yes -- find by title", "properties": "title: String, slug: String, shareURL: URL, slideCount: Int, theme: String, createdAt: Date", "query_type": "Server -- presentations on ADIN CDN", "adin_entity": "Presentation / Deck", "appentity_name": "ADINPresentationEntity" }, { "schema": "Custom -- finance / VC domain", "indexed": "Yes -- search by name or sector", "properties": "name: String, sector: String, status: PortfolioStatus, investmentStage: String, lastReview: Date", "query_type": "Local + Server", "adin_entity": "Portfolio Company", "appentity_name": "ADINPortfolioCompanyEntity" }, { "schema": "Could adopt Calendar-adjacent schema", "indexed": "Yes -- show upcoming tasks in Spotlight", "properties": "name: String, prompt: String, schedule: String, nextRun: Date, outputDestination: String", "query_type": "Local", "adin_entity": "Scheduled Task", "appentity_name": "ADINTaskEntity" }, { "schema": "Could adopt Photos-adjacent schema", "indexed": "Yes", "properties": "title: String, slug: String, layerCount: Int, shareURL: URL, createdAt: Date", "query_type": "Server", "adin_entity": "Image Project", "appentity_name": "ADINImageProjectEntity" } ], "title": "ADIN Tools → App Intents Mapping: Entities" } ``` ```datatable { "columns": [ { "key": "user_says", "label": "User Says to Siri", "format": "text" }, { "key": "intent_name", "label": "AppIntent Name", "format": "text" }, { "key": "parameters", "label": "@Parameters", "format": "text" }, { "key": "output", "label": "Output / Result", "format": "text" }, { "key": "fg_bg", "label": "Mode", "format": "text" }, { "key": "adin_tool", "label": "Maps to ADIN Tool", "format": "text" } ], "rows": [ { "fg_bg": "Background", "output": "ADINResearchEntity -- returns summary + source count", "adin_tool": "delegate(researcher) + search_web", "user_says": "Research Apple Intelligence for me in ADIN", "parameters": "topic: String, depth: ResearchDepth, outputFormat: OutputFormat", "intent_name": "ADINResearchIntent" }, { "fg_bg": "Background", "output": "String -- narrative summary", "adin_tool": "map_analyze + memory read", "user_says": "Summarize my ADIN research on Apple Intelligence", "parameters": "research: ADINResearchEntity", "intent_name": "ADINSummarizeResearchIntent" }, { "fg_bg": "Background", "output": "ADINArticleEntity -- updated with live URL", "adin_tool": "post_to_network", "user_says": "Publish my ADIN article about AI", "parameters": "article: ADINArticleEntity, visibility: Visibility", "intent_name": "ADINPublishArticleIntent" }, { "fg_bg": "Background", "output": "ADINPresentationEntity -- with shareURL", "adin_tool": "create_presentation", "user_says": "Create a presentation about WWDC in ADIN", "parameters": "topic: String, slideCount: Int, theme: String", "intent_name": "ADINCreatePresentationIntent" }, { "fg_bg": "Background", "output": "String -- price + change summary", "adin_tool": "get_stock_price + display_stock", "user_says": "Check the Nvidia stock in ADIN", "parameters": "symbol: String, timeframe: Timeframe", "intent_name": "ADINCheckStockIntent" }, { "fg_bg": "Background", "output": "ADINWatchEntity", "adin_tool": "create_watch", "user_says": "Set an ADIN watch when Bitcoin hits 100k", "parameters": "symbol: String, threshold: Double, direction: WatchDirection, delivery: DeliveryMethod", "intent_name": "ADINCreateWatchIntent" }, { "fg_bg": "Background", "output": "String -- flow execution result", "adin_tool": "run_task_now", "user_says": "Start my ADIN morning Flow", "parameters": "flow: ADINFlowEntity", "intent_name": "ADINRunFlowIntent" }, { "fg_bg": "Background", "output": "ADINTaskEntity", "adin_tool": "schedule_task", "user_says": "Schedule an ADIN research task for every Monday", "parameters": "prompt: String, schedule: String, outputDestination: OutputDestination", "intent_name": "ADINScheduleTaskIntent" }, { "fg_bg": "Background", "output": "ADINGoalEntity", "adin_tool": "create_goal", "user_says": "Set a goal to merge 10 PRs this month in ADIN", "parameters": "title: String, targetValue: Double, unit: String, deadline: Date, integrationSource: IntegrationSource", "intent_name": "ADINCreateGoalIntent" }, { "fg_bg": "Background", "output": "String -- confirmation", "adin_tool": "create_reminder", "user_says": "Remind me to review my ADIN portfolio companies", "parameters": "title: String, dueDate: Date, dueTime: String, priority: Priority", "intent_name": "ADINCreateReminderIntent" }, { "fg_bg": "Background", "output": "String -- email count + top subject lines", "adin_tool": "list_emails", "user_says": "Check my ADIN email inbox", "parameters": "query: String?, maxResults: Int", "intent_name": "ADINCheckEmailIntent" }, { "fg_bg": "Background + Confirmation", "output": "Void -- deletion confirmed", "adin_tool": "delete_email", "user_says": "Show me the fourth one", "parameters": "message: ADINEmailEntity, confirmDeletion: Bool", "intent_name": "ADINDeleteEmailIntent" }, { "fg_bg": "Background", "output": "String -- weather summary", "adin_tool": "display_weather", "user_says": "What's the weather in ADIN", "parameters": "location: String, days: Int, displayMode: WeatherMode", "intent_name": "ADINWeatherIntent" }, { "fg_bg": "Foreground", "output": "Void -- opens ADIN in foreground at deck", "adin_tool": "list_my_presentations + open URL", "user_says": "Open my ADIN presentation about AI", "parameters": "presentation: ADINPresentationEntity", "intent_name": "ADINOpenPresentationIntent" }, { "fg_bg": "Background", "output": "ADINMemoryEntity", "adin_tool": "memory(action:save)", "user_says": "Save a memory in ADIN that I prefer dark mode", "parameters": "key: String, content: String, category: MemoryCategory", "intent_name": "ADINSaveMemoryIntent" } ], "title": "ADIN Tools → App Intents Mapping: Intents" } ``` ```datatable { "columns": [ { "key": "adin_surface", "label": "ADIN UI Surface", "format": "text" }, { "key": "annotation_type", "label": "Annotation API Used", "format": "text" }, { "key": "entity_tagged", "label": "Entity Tagged", "format": "text" }, { "key": "siri_unlocks", "label": "What Siri Can Now Do", "format": "text" } ], "rows": [ { "adin_surface": "Research result card in chat", "siri_unlocks": "\"Summarize this\" / \"Publish it\" while looking at the result", "entity_tagged": "ADINResearchEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Article editor panel", "siri_unlocks": "\"Publish this article\" / \"Share the link\" from current view", "entity_tagged": "ADINArticleEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Presentation viewer", "siri_unlocks": "\"Add a slide about X\" / \"Share this deck\"", "entity_tagged": "ADINPresentationEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Flow list / Active flows", "siri_unlocks": "\"Run the second one\" / \"Pause all my flows\"", "entity_tagged": "ADINFlowEntity", "annotation_type": "Collection + Selection modifier" }, { "adin_surface": "Goal tracker screen", "siri_unlocks": "\"Update my PR goal to 8\" while viewing goals", "entity_tagged": "ADINGoalEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Watch/Alert list", "siri_unlocks": "\"Delete the Bitcoin watch\" while viewing alerts", "entity_tagged": "ADINWatchEntity", "annotation_type": "Collection + Selection modifier" }, { "adin_surface": "Proactive agent notification", "siri_unlocks": "Siri reads notification content aloud via AirPods + acts on it", "entity_tagged": "ADINFlowEntity or ADINResearchEntity", "annotation_type": "Notification Annotation" }, { "adin_surface": "Background Flow running", "siri_unlocks": "\"Cancel my running research task\" even when ADIN not visible", "entity_tagged": "ADINTaskEntity", "annotation_type": "AlarmKit-style background annotation" }, { "adin_surface": "Scheduled task running in background", "siri_unlocks": "Siri can pause / resume / report on background tasks", "entity_tagged": "ADINTaskEntity", "annotation_type": "Notification + background entity annotation" } ], "title": "ADIN → App Intents: Entity Annotations by Surface" } ``` ```datatable { "columns": [ { "key": "phase", "label": "Phase", "format": "text" }, { "key": "timeline", "label": "Timeline", "format": "text" }, { "key": "task", "label": "Engineering Task", "format": "text" }, { "key": "acceptance", "label": "Acceptance Criteria", "format": "text" }, { "key": "owner", "label": "Domain", "format": "text" }, { "key": "blocker", "label": "Prerequisite", "format": "text" } ], "rows": [ { "task": "App target setup + Siri entitlements", "owner": "iOS Platform", "phase": "P1", "blocker": "Apple Developer account with Siri entitlement", "timeline": "Jan 1-14", "acceptance": "ADIN iOS/macOS target has NSSiriUsageDescription, App Intents framework linked, SiriKit entitlement provisioned" }, { "task": "ADINResearchEntity struct", "owner": "iOS Platform", "phase": "P1", "blocker": "App target setup", "timeline": "Jan 7-21", "acceptance": "Struct compiles with @Property id, query, status, sourceCount, summary. Conforms to AppEntity. Provides displayRepresentation." }, { "task": "ADINFlowEntity struct", "owner": "iOS Platform", "phase": "P1", "blocker": "App target setup", "timeline": "Jan 7-21", "acceptance": "Struct with @Property name, schedule, status, lastRun. Conforms to AppEntity + AppEntityQuery to load from existing Flow store." }, { "task": "ADINResearchIntent", "owner": "iOS Platform + AI Engine", "phase": "P1", "blocker": "ADINResearchEntity struct", "timeline": "Jan 14-Feb 4", "acceptance": "Siri responds to 'Research X in ADIN' -- triggers delegate(researcher) + returns ADINResearchEntity with populated summary. Works offline via on-device Foundation Model." }, { "task": "ADINRunFlowIntent + ADINScheduleTaskIntent", "owner": "iOS Platform + Flows", "phase": "P1", "blocker": "ADINFlowEntity", "timeline": "Jan 21-Feb 11", "acceptance": "'Start my ADIN morning Flow' executes correct flow. 'Schedule X every Monday' creates task with cron. Both run in background -- no app open required." }, { "task": "ADINCheckStockIntent + ADINWeatherIntent", "owner": "iOS Platform", "phase": "P1", "blocker": "None -- wraps existing ADIN tools", "timeline": "Jan 28-Feb 11", "acceptance": "'Check Nvidia in ADIN' returns price + day change as Siri dialog. 'Weather in ADIN' returns condition + temp. Both under 3 seconds total." }, { "task": "ADINCreateReminderIntent", "owner": "iOS Platform", "phase": "P1", "blocker": "None", "timeline": "Feb 4-18", "acceptance": "'Remind me to X on Thursday at 9am in ADIN' creates reminder, returns confirmation string. Reminder visible in ADIN reminder list." }, { "task": "Phase 1 Siri phrase testing matrix", "owner": "QA", "phase": "P1", "blocker": "All P1 intents shipped", "timeline": "Feb 11-28", "acceptance": "50-phrase test matrix covering each intent. Pass rate ≥90% for exact phrases, ≥75% for paraphrases. Phrase matrix lives in AppIntentsTesting suite." }, { "task": "Custom ADIN domain schema definition", "owner": "iOS Platform", "phase": "P2", "blocker": "Phase 1 complete", "timeline": "Mar 1-15", "acceptance": "ADINDomain defined with sub-schemas: ResearchSchema, FlowSchema, ArticleSchema, GoalSchema, WatchSchema. Each schema auto-configures @Property wrappers + Spotlight keys." }, { "task": "ADINMemoryEntity + indexAppEntities", "owner": "iOS Platform + Memory", "phase": "P2", "blocker": "ADIN domain schema", "timeline": "Mar 8-22", "acceptance": "ADINMemoryEntity struct done. indexAppEntities() called on save/update/delete in memory store. Spotlight returns ADIN memories in search results." } ], "title": "Phase-by-Phase Milestone Detail -- Engineering Tasks + Acceptance Criteria" } ``` ```datatable { "columns": [ { "key": "adin_entity", "label": "ADIN Entity", "format": "text" }, { "key": "appentity_name", "label": "AppEntity Name", "format": "text" }, { "key": "properties", "label": "Key @Properties", "format": "text" }, { "key": "schema", "label": "System Schema / Domain", "format": "text" }, { "key": "indexed", "label": "IndexedEntity?", "format": "text" }, { "key": "query_type", "label": "Query Type", "format": "text" } ], "rows": [ { "schema": "Custom -- ADIN domain", "indexed": "Yes -- index on create/update", "properties": "query: String, status: ResearchStatus, sourceCount: Int, summary: String", "query_type": "Local -- all stored in ADIN knowledge graph", "adin_entity": "Research Topic", "appentity_name": "ADINResearchEntity" }, { "schema": "Custom -- publishing domain", "indexed": "Yes -- searchable by title, topic, date", "properties": "title: String, publishedAt: Date, url: URL, category: ArticleCategory, wordCount: Int", "query_type": "Local + Server -- posts live on ADIN Network", "adin_entity": "Network Article / Post", "appentity_name": "ADINArticleEntity" }, { "schema": "Custom -- automation domain", "indexed": "Yes -- surface in Spotlight and Siri", "properties": "name: String, schedule: CronExpression, status: FlowStatus, lastRun: Date, outputDestination: String", "query_type": "Local", "adin_entity": "Flow / Automation", "appentity_name": "ADINFlowEntity" }, { "schema": "Custom -- knowledge domain", "indexed": "Yes -- meaning-based search via Semantic Index", "properties": "key: String, content: String, category: MemoryCategory, scope: MemoryScope, createdAt: Date", "query_type": "Local -- persistent memory store", "adin_entity": "Memory / Knowledge Item", "appentity_name": "ADINMemoryEntity" }, { "schema": "Custom -- finance domain", "indexed": "Yes -- find by symbol or asset type", "properties": "symbol: String, assetType: AssetType, threshold: Double, direction: WatchDirection, triggerCount: Int", "query_type": "Local", "adin_entity": "Tracked Stock / Crypto Watch", "appentity_name": "ADINWatchEntity" }, { "schema": "Custom -- productivity domain", "indexed": "Yes -- track active goals via Siri", "properties": "title: String, targetValue: Double, currentValue: Double, unit: String, deadline: Date, status: GoalStatus", "query_type": "Local", "adin_entity": "Goal", "appentity_name": "ADINGoalEntity" }, { "schema": "Custom -- creative domain", "indexed": "Yes -- find by title", "properties": "title: String, slug: String, shareURL: URL, slideCount: Int, theme: String, createdAt: Date", "query_type": "Server -- presentations on ADIN CDN", "adin_entity": "Presentation / Deck", "appentity_name": "ADINPresentationEntity" }, { "schema": "Custom -- finance / VC domain", "indexed": "Yes -- search by name or sector", "properties": "name: String, sector: String, status: PortfolioStatus, investmentStage: String, lastReview: Date", "query_type": "Local + Server", "adin_entity": "Portfolio Company", "appentity_name": "ADINPortfolioCompanyEntity" }, { "schema": "Could adopt Calendar-adjacent schema", "indexed": "Yes -- show upcoming tasks in Spotlight", "properties": "name: String, prompt: String, schedule: String, nextRun: Date, outputDestination: String", "query_type": "Local", "adin_entity": "Scheduled Task", "appentity_name": "ADINTaskEntity" }, { "schema": "Could adopt Photos-adjacent schema", "indexed": "Yes", "properties": "title: String, slug: String, layerCount: Int, shareURL: URL, createdAt: Date", "query_type": "Server", "adin_entity": "Image Project", "appentity_name": "ADINImageProjectEntity" } ], "title": "ADIN Tools → App Intents Mapping: Entities" } ``` ```datatable { "columns": [ { "key": "user_says", "label": "User Says to Siri", "format": "text" }, { "key": "intent_name", "label": "AppIntent Name", "format": "text" }, { "key": "parameters", "label": "@Parameters", "format": "text" }, { "key": "output", "label": "Output / Result", "format": "text" }, { "key": "fg_bg", "label": "Mode", "format": "text" }, { "key": "adin_tool", "label": "Maps to ADIN Tool", "format": "text" } ], "rows": [ { "fg_bg": "Background", "output": "ADINResearchEntity -- returns summary + source count", "adin_tool": "delegate(researcher) + search_web", "user_says": "Research Apple Intelligence for me in ADIN", "parameters": "topic: String, depth: ResearchDepth, outputFormat: OutputFormat", "intent_name": "ADINResearchIntent" }, { "fg_bg": "Background", "output": "String -- narrative summary", "adin_tool": "map_analyze + memory read", "user_says": "Summarize my ADIN research on Apple Intelligence", "parameters": "research: ADINResearchEntity", "intent_name": "ADINSummarizeResearchIntent" }, { "fg_bg": "Background", "output": "ADINArticleEntity -- updated with live URL", "adin_tool": "post_to_network", "user_says": "Publish my ADIN article about AI", "parameters": "article: ADINArticleEntity, visibility: Visibility", "intent_name": "ADINPublishArticleIntent" }, { "fg_bg": "Background", "output": "ADINPresentationEntity -- with shareURL", "adin_tool": "create_presentation", "user_says": "Create a presentation about WWDC in ADIN", "parameters": "topic: String, slideCount: Int, theme: String", "intent_name": "ADINCreatePresentationIntent" }, { "fg_bg": "Background", "output": "String -- price + change summary", "adin_tool": "get_stock_price + display_stock", "user_says": "Check the Nvidia stock in ADIN", "parameters": "symbol: String, timeframe: Timeframe", "intent_name": "ADINCheckStockIntent" }, { "fg_bg": "Background", "output": "ADINWatchEntity", "adin_tool": "create_watch", "user_says": "Set an ADIN watch when Bitcoin hits 100k", "parameters": "symbol: String, threshold: Double, direction: WatchDirection, delivery: DeliveryMethod", "intent_name": "ADINCreateWatchIntent" }, { "fg_bg": "Background", "output": "String -- flow execution result", "adin_tool": "run_task_now", "user_says": "Start my ADIN morning Flow", "parameters": "flow: ADINFlowEntity", "intent_name": "ADINRunFlowIntent" }, { "fg_bg": "Background", "output": "ADINTaskEntity", "adin_tool": "schedule_task", "user_says": "Schedule an ADIN research task for every Monday", "parameters": "prompt: String, schedule: String, outputDestination: OutputDestination", "intent_name": "ADINScheduleTaskIntent" }, { "fg_bg": "Background", "output": "ADINGoalEntity", "adin_tool": "create_goal", "user_says": "Set a goal to merge 10 PRs this month in ADIN", "parameters": "title: String, targetValue: Double, unit: String, deadline: Date, integrationSource: IntegrationSource", "intent_name": "ADINCreateGoalIntent" }, { "fg_bg": "Background", "output": "String -- confirmation", "adin_tool": "create_reminder", "user_says": "Remind me to review my ADIN portfolio companies", "parameters": "title: String, dueDate: Date, dueTime: String, priority: Priority", "intent_name": "ADINCreateReminderIntent" }, { "fg_bg": "Background", "output": "String -- email count + top subject lines", "adin_tool": "list_emails", "user_says": "Check my ADIN email inbox", "parameters": "query: String?, maxResults: Int", "intent_name": "ADINCheckEmailIntent" }, { "fg_bg": "Background + Confirmation", "output": "Void -- deletion confirmed", "adin_tool": "delete_email", "user_says": "Show me the fourth one", "parameters": "message: ADINEmailEntity, confirmDeletion: Bool", "intent_name": "ADINDeleteEmailIntent" }, { "fg_bg": "Background", "output": "String -- weather summary", "adin_tool": "display_weather", "user_says": "What's the weather in ADIN", "parameters": "location: String, days: Int, displayMode: WeatherMode", "intent_name": "ADINWeatherIntent" }, { "fg_bg": "Foreground", "output": "Void -- opens ADIN in foreground at deck", "adin_tool": "list_my_presentations + open URL", "user_says": "Open my ADIN presentation about AI", "parameters": "presentation: ADINPresentationEntity", "intent_name": "ADINOpenPresentationIntent" }, { "fg_bg": "Background", "output": "ADINMemoryEntity", "adin_tool": "memory(action:save)", "user_says": "Save a memory in ADIN that I prefer dark mode", "parameters": "key: String, content: String, category: MemoryCategory", "intent_name": "ADINSaveMemoryIntent" } ], "title": "ADIN Tools → App Intents Mapping: Intents" } ``` ```datatable { "columns": [ { "key": "adin_surface", "label": "ADIN UI Surface", "format": "text" }, { "key": "annotation_type", "label": "Annotation API Used", "format": "text" }, { "key": "entity_tagged", "label": "Entity Tagged", "format": "text" }, { "key": "siri_unlocks", "label": "What Siri Can Now Do", "format": "text" } ], "rows": [ { "adin_surface": "Research result card in chat", "siri_unlocks": "\"Summarize this\" / \"Publish it\" while looking at the result", "entity_tagged": "ADINResearchEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Article editor panel", "siri_unlocks": "\"Publish this article\" / \"Share the link\" from current view", "entity_tagged": "ADINArticleEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Presentation viewer", "siri_unlocks": "\"Add a slide about X\" / \"Share this deck\"", "entity_tagged": "ADINPresentationEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Flow list / Active flows", "siri_unlocks": "\"Run the second one\" / \"Pause all my flows\"", "entity_tagged": "ADINFlowEntity", "annotation_type": "Collection + Selection modifier" }, { "adin_surface": "Goal tracker screen", "siri_unlocks": "\"Update my PR goal to 8\" while viewing goals", "entity_tagged": "ADINGoalEntity", "annotation_type": "SwiftUI .appEntity() modifier" }, { "adin_surface": "Watch/Alert list", "siri_unlocks": "\"Delete the Bitcoin watch\" while viewing alerts", "entity_tagged": "ADINWatchEntity", "annotation_type": "Collection + Selection modifier" }, { "adin_surface": "Proactive agent notification", "siri_unlocks": "Siri reads notification content aloud via AirPods + acts on it", "entity_tagged": "ADINFlowEntity or ADINResearchEntity", "annotation_type": "Notification Annotation" }, { "adin_surface": "Background Flow running", "siri_unlocks": "\"Cancel my running research task\" even when ADIN not visible", "entity_tagged": "ADINTaskEntity", "annotation_type": "AlarmKit-style background annotation" }, { "adin_surface": "Scheduled task running in background", "siri_unlocks": "Siri can pause / resume / report on background tasks", "entity_tagged": "ADINTaskEntity", "annotation_type": "Notification + background entity annotation" } ], "title": "ADIN → App Intents: Entity Annotations by Surface" } ```