Skip to main content
Configuration for the in-sheet AI Assistant, in three layers: project context properties that decide whether the assistant is shown, one sheet configuration key that points at an action configuration, and the action configuration itself. For the task-oriented walkthrough, see Configure the AI Assistant.

Project context properties

Set in the project’s com.polarion.context.properties. All are booleans and all default to true. nextedy.powersheet.aiAssistant and nextedy.powersheet.promotions are read from the project configuration and returned to the client together with the sheet configuration JSON.

Sheet configuration key

Availability statuses

Powersheet probes the Nextedy AI plugin’s health endpoint for the current project and resolves one of three statuses. The entry points — Menu › AI Assistant and the levels’ sparkle buttons — are usable only when the status is ok and at least one AI action is defined for the sheet. When the status is ok but the sheet defines no actions, the tooltip reads AI Assistant — configure AI actions for this powersheet to enable it. Installing the plugin and its license, and configuring the model key, are covered in Install Nextedy AI.

Action configuration

An action configuration is a YAML file in the project’s own repository at .polarion/nextedy/ai/<name>.yaml, where <name> is the value of assistantConfig. It holds a globals block and an actions block. actions is a map keyed by action id — the key identifies the action in the request the sheet sends, and is not repeated inside the action body. Each action supports the following keys.
scope decides where an action is offered, apply.field where it writesThe column an action searches, filters and writes against is resolved from apply.field; scope.columns only decides which columns offer the action. An action without apply.field is still offered, but only discovers: its suggestions carry no Apply, and its run card reads Suggestions for <ID> — nothing is written. An apply.field that matches no column on the sheet leaves the action offered, and its run card reads For <ID> — the target column is not on this sheet.contextSources.document.fields and contextSources.user.fields are accepted by the schema but neither is sent as context. Only row and project reach the model.
The AI Assistant panel beside a design requirement row, with the run card expanded to list Customer requirement, System requirement and Subsystem requirement values sent as context.

The run card's context list for an action whose row fields name columns on three levels of the sheet.

Globals interpolation

${globals.<key>} references inside discover.keywordPrompt and discover.rankPrompt are replaced from the configuration’s globals block before the prompt is sent. The globals block is a flat map of string values whose key names you choose; a reference to a key the block does not define resolves to an empty string. Write a phrase once in globals and refer to it as ${globals.<key>} from every prompt that needs it, rather than repeating it in each action.

Candidate query

The query sent to Polarion is built as:
with the last clause only when discover.search.query is present. When the target cell already holds work items, they are excluded: the query becomes (<query>) AND NOT (id:(<ids>)). The cell is read as the sheet shows it when the action runs, saved or not: a link removed without saving no longer excludes its item, and a link added without saving does. <types> comes from discover.search.type, or is derived from the entity type bound to the apply.field column when that key is absent. When neither resolves any type, the type: clause is omitted and the query is just project.id:"<projectId>", followed by any discover.search.query. Whatever the model returns is re-checked against the apply.field column’s own candidate filter, and any recommendation falling outside it is dropped; items already linked in the target cell are left out too. The run card counts the dropped ones as N dropped (not allowed here). When nothing is left, the assistant reports All N suggestions were filtered out by this column’s allowed values., or No new items found — everything suggested is already linked. when everything was already linked. The search does not apply that filter itself. It returns at most 30 candidates, and those the column would refuse still take up places among them, so an action can come back empty while items the column accepts exist. Where a Lucene clause can express the column’s constraints — its document scope, say — repeat them in discover.search.query.

Applying a recommendation

A recommendation is written into the apply.field column, on the row the action ran on — not on the row selected when Apply is clicked. The linked child row is inserted under every rendered instance of the parent the action ran against — deduplicated by upstream id — not only the one instance in view. This applies to every cardinality. Editing a link cell by hand is undoable through the same Changed link entry. Every write stays in the sheet’s change buffer, marked Unsaved in the panel, until the sheet is saved.

Conversation storage

See Also