Supporting AI Search

Load this card when a task makes a page searchable by AI Navigation (AI Search): a GoTo action control, an AINavigationPrompt, or the links and chooser actions a search selects from, with their documentation. Its rules are generated from the AI Navigation contract, which owns them. The searchable destinations are ordinary links and actions; their meaning comes from the source documentation.

Order of work

  1. Plan each supported goal as a reachable destination and expose it through links or finite chooser actions (ai.obligations.planning, ai.candidates.*).
  2. Opt the page in with a GoTo control or a prompt resource (ai.search.*, ai.prompt.*).
  3. Document each destination's meaning and domain vocabulary (ai.obligations.*), then compile with Studio and fix every reported rule.

Rules to apply

Studio does not check these rules. Each is quoted from its owner.

Limits and checks

Owner: llm-client-requests.md#limits-and-checks

  • llm.search.context-limits: AI Search: the context is at most 256 KiB, with a nonempty intent, a nonempty guidance, a page object, and 1–256 candidates whose id values are unique, nonempty and at most 128 characters.

Owner: protocols.md#ai-navigation-and-ai-search

  • ai.search.definition: AI Navigation and AI Search name the same capability: use a person’s text or editable voice transcript to select an existing offered link or action. The App supplies destination meaning; the client constructs and validates complete requests before selection; AI returns only candidate identifiers. A candidate is one offered invocation and binding or finite chooser leaf, so two links to one Request with different bound topics, or two eligible leaves of one action, are distinct candidates.
  • ai.search.availability: This feature requires an implementing client and a supporting modern Hub. It is unavailable on legacy Hubs and on non-task pages. An offered GoTo action control enables Search on its owning task page, using the same currently eligible choices. App guidance is optional. A resolved Union or page prompt also opts a task page into Search when it has no Go to control. Hub policy may disable it. Search and task-scoped Assistant are independent features.
  • ai.search.prompt-no-authority: A navigation prompt does not grant access or enable tool execution.

Prompt attribute and composition

Owner: protocols.md#prompt-attribute-and-composition

  • ai.prompt.editor-page: A request editor uses its own Request variant's page declaration; an instruction that opens that editor does not become its page. A synthetic request-list landing has only the Union declaration available.
  • ai.prompt.composition: Resolve the Union and current page resources through ordinary localization, in that order, and concatenate their texts with a blank line. Both declarations contribute. Page guidance adds local meaning and can refine common selection preferences; it does not erase the Union guidance. An absent declaration contributes nothing. Either declaration suffices to opt the page into AI Navigation. An offered GoTo control also enables it with neither declaration; the platform uses the ordinary destination labels, descriptions and current eligible choices. With no offered Go to and neither declaration, the page does not offer it. A control with no eligible choices does not establish availability. Detect the case-sensitive control name GoTo, independently of its localized or template caption and placement.
  • ai.prompt.no-runtime-arguments: The App authors the resource at development time; a navigation prompt takes no runtime message arguments. Runtime page and item values are supplied separately as data. The platform supplies the general selection instructions and result format.
  • ai.prompt.cannot-expand: App guidance and runtime text cannot expand the candidate set or change construction, access, validation, confirmation, or submission rules. The existing LLMToolCall attribute continues to control Hub tool projection; it is not this page opt-in.

Candidate discovery and assembly before AI

Owner: protocols.md#candidate-discovery-and-assembly-before-ai

  • ai.candidates.complete-only: Exclude a candidate whose request cannot be fully assembled and validated. Do not ask the model to fill a missing field, invent a binding, or choose new arguments. Do not send domain requests or calculations just to search for additional candidates. With no valid candidate, report no available match without invoking AI.
  • ai.candidates.app-wide-coverage (judgment): App-wide coverage requires the App to expose the intended destinations through links or finite chooser actions from the page offering that scope. The client does not traverse unoffered pages or combine raw enum values into speculative links.

Selection result and invocation

Owner: protocols.md#selection-result-and-invocation

  • ai.select.no-auto-submit: Auto-assembly does not change auto-submission. A request with no editable input follows the normal send-on-selection rule, subject to confirmation. Selecting a candidate for a finite chooser leaf selects that complete choice; it sends the already constructed request directly through the ordinary action path, retaining any RequestConfirmation. It does not reopen the chooser. Other populated editable fields still require the ordinary popup/editor submission. WorkflowRequest and EditRequest still open editors awaiting submission. AI Navigation neither submits another editor nor replaces its Next control. Landing forwarding and native Back keep their existing rules.

App and CodeBot authoring obligations

Owner: protocols.md#app-and-codebot-authoring-obligations

  • ai.obligations.planning (judgment):

    Area Obligation
    Planning Associate each supported user goal with an ordinary reachable destination. Expose the links or eligible finite chooser actions needed for the advertised search scope and make their requests constructible from real available data. A navigation request may open an editor where subsequent user input occurs.
  • ai.obligations.comments (judgment):

    Area Obligation
    Comments Describe each destination's purpose, scope, consequences, and distinguishing domain vocabulary in extracted source documentation. Document bound topic choices and linked items as well as the generic request.
  • ai.obligations.attributes (judgment):

    Area Obligation
    Attributes and data Use Link, NextRequest, applicable ConstrainedBy and ActionControl membership, and request-owned construction/confirmation declarations. Supply their actual runtime data; the AI does not create allowed sets.
  • ai.obligations.prompts (judgment):

    Area Obligation
    Prompt resources Guidance is optional for an offered GoTo control. When needed, put shared interpretation in the Union resource and local interpretation in the page resource. Keep cross-topic guidance here and destination-specific meaning with its documented destination, with one owner for each fact.
  • ai.obligations.review (judgment):

    Area Obligation
    Review Verify representative formal references, abbreviations, and everyday descriptions against the context the client will actually supply. Check unsupported and ambiguous queries as well as successful selections.
  • ai.obligations.private-comments (judgment): Ordinary private code comments are not extracted navigation knowledge. Missing domain meaning must be authored; collecting more schema does not create it.

  • ai.obligations.domain-references (judgment): For the Tax App, statutory references, form/schedule numbers, formal names, abbreviations, and common names must all be useful ways to find supported topics. A description can connect a qualified-business-income destination to Section 199A, Form 8995/8995-A, and QBI. These associations identify a topic; they do not assert that a taxpayer qualifies for a deduction. The actual destination, jurisdiction, tax year, and supported scope come from the App. When several topics share a form or citation, supply enough context to select the appropriate topic or its available overview, or offer the relevant alternatives for the person to choose. Multiple OpenSection links must carry their individual topic meaning.

Rules Studio enforces

Studio rejects a source that breaks one of these rules. The owner holds the full rule.

Prompt attribute and composition

Owner: protocols.md#prompt-attribute-and-composition

  • ai.prompt.declaration: AINavigationPrompt names one key in the declaring package StringResources
  • ai.prompt.placement: AINavigationPrompt goes on the protocol Union or a page-defining variant, at most once per location
  • ai.prompt.studio: Studio validates prompt placement, a nonempty key and an existing nonempty StringResource

Search Libertas