@praxisui/ai 9.0.0-beta.5 → 9.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,7 +34,7 @@ Peer dependencies:
34
34
  - `@angular/forms` `^21.0.0`
35
35
  - `@angular/material` `^21.0.0`
36
36
  - `@google/generative-ai` `^0.24.1`
37
- - `@praxisui/core` `^9.0.0-beta.4`
37
+ - `@praxisui/core` `^9.0.0-beta.12`
38
38
  - `rxjs` `~7.8.0`
39
39
 
40
40
  ## When to use
@@ -138,6 +138,8 @@ When a component exposes factual grounding for consultative answers, include a `
138
138
 
139
139
  Use `createComponentAuthoringContext(...)` from `@praxisui/ai` when returning the adapter context. The helper normalizes the contract into a JSON-safe object, drops `undefined` fields and rejects non-JSON values before they leak into `contextHints`.
140
140
 
141
+ Specialized component-authoring flows should also apply `withAuthoringScopePolicy(...)` or `withAuthoringScopePolicyContextHints(...)` before calling the backend turn resolver. These helpers do not classify prompts locally. They add a shared semantic policy that tells the backend/LLM to return `info` with no patch for loose instructions, greetings, meta-prompts or other turns outside the active component authoring context, while still allowing consultative answers and governed component edits when the semantic intent fits the declared contracts.
142
+
141
143
  The shell ships with centralized PT-BR default labels and accepts the `labels` input for a flow-specific override. The override is partial: omitted labels continue to come from the shared defaults.
142
144
 
143
145
  By default, the prompt composer submits with `Enter` and keeps `Shift+Enter` for multiline prompts. Hosts with custom composer behavior can set `submitOnEnter` to `false`.
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "generatedAt": "2026-07-08T18:51:42.756Z",
4
+ "packageName": "@praxisui/ai",
5
+ "packageVersion": "9.0.0-beta.50",
6
+ "sourceRegistry": "praxis-component-registry-ingestion",
7
+ "sourceRegistryVersion": "1.0.0",
8
+ "componentCount": 0,
9
+ "components": {},
10
+ "note": "Package-scoped Praxis component registry for source-free agent discovery. Use the canonical ingestion registry for cross-package aggregate analysis."
11
+ }
@@ -497,6 +497,73 @@ class BaseAiAdapter {
497
497
  }
498
498
  }
499
499
 
500
+ const PRAXIS_AUTHORING_SCOPE_POLICY_KIND = 'praxis.authoring-scope-policy.v1';
501
+ const PRAXIS_AUTHORING_SCOPE_POLICY_VERSION = '1.0';
502
+ function createAuthoringScopePolicyContext(options = {}) {
503
+ const componentId = normalizeText(options.componentId);
504
+ const componentType = normalizeText(options.componentType);
505
+ const componentLabel = normalizeText(options.componentLabel);
506
+ return {
507
+ kind: PRAXIS_AUTHORING_SCOPE_POLICY_KIND,
508
+ version: PRAXIS_AUTHORING_SCOPE_POLICY_VERSION,
509
+ scope: 'component-authoring-assistant',
510
+ componentId,
511
+ componentType,
512
+ componentLabel,
513
+ intentResolution: 'semantic-contract-first',
514
+ outOfScopeResponseType: 'info',
515
+ patchRequiresExecutableAuthoringIntent: true,
516
+ clarificationRequiresComponentAuthoringAmbiguity: true,
517
+ localKeywordRoutingAllowed: false,
518
+ friendlyFallback: {
519
+ tone: 'helpful',
520
+ includePraxisContext: true,
521
+ noPatch: true,
522
+ },
523
+ };
524
+ }
525
+ function createAuthoringScopePolicySystemMessage(options = {}) {
526
+ const componentLabel = normalizeText(options.componentLabel)
527
+ || normalizeText(options.componentType)
528
+ || 'current component';
529
+ return {
530
+ role: 'system',
531
+ content: [
532
+ 'Praxis component authoring scope policy:',
533
+ '- Resolve the user intent semantically using the declared Praxis contracts, current component context, conversation, capabilities, and grounding evidence. Do not classify intent by keyword matching.',
534
+ `- The active assistant is scoped to the ${componentLabel}. Return a patch only when the user semantically asks to create, change, configure, apply, open, export, filter, format, or otherwise materialize an executable operation for this component or a declared governed handoff.`,
535
+ '- If the prompt is a loose instruction, meta-prompt, greeting, small talk, or asks for a response that is not about the active Praxis authoring context, return type "info", canApply false, no patch, no componentEditPlan, and no runtime operation.',
536
+ '- For those out-of-scope prompts, answer in the user language with a concise friendly message that acknowledges the request and explains that this Praxis assistant can help inspect, explain, or safely change the current component.',
537
+ '- If the user asks an answerable factual question about the current component, return type "info" grounded in the declared context instead of inventing an edit plan.',
538
+ '- Ask a clarification only when there is a real component-authoring ambiguity that blocks a safe semantic decision.',
539
+ ].join('\n'),
540
+ };
541
+ }
542
+ function withAuthoringScopePolicy(request, options = {}) {
543
+ return {
544
+ ...request,
545
+ messages: withAuthoringScopePolicyMessage(request.messages ?? [], options),
546
+ contextHints: withAuthoringScopePolicyContextHints(request.contextHints, options),
547
+ };
548
+ }
549
+ function withAuthoringScopePolicyMessage(messages, options = {}) {
550
+ const policy = createAuthoringScopePolicySystemMessage(options);
551
+ const existing = messages ?? [];
552
+ const hasPolicy = existing.some((message) => message.role === 'system' && message.content.includes('Praxis component authoring scope policy:'));
553
+ return hasPolicy ? [...existing] : [policy, ...existing];
554
+ }
555
+ function withAuthoringScopePolicyContextHints(contextHints, options = {}) {
556
+ const existing = contextHints ?? {};
557
+ return {
558
+ ...existing,
559
+ authoringScopePolicy: createAuthoringScopePolicyContext(options),
560
+ };
561
+ }
562
+ function normalizeText(value) {
563
+ const normalized = value?.trim();
564
+ return normalized ? normalized : null;
565
+ }
566
+
500
567
  /**
501
568
  * @deprecated Component assistants must not infer governed authoring from user
502
569
  * wording. Route through the backend semantic resolver and use this only for
@@ -1962,7 +2029,19 @@ class AgenticAuthoringTurnClientService {
1962
2029
  if (phase.startsWith('preview.')) {
1963
2030
  return 'preview';
1964
2031
  }
2032
+ if (phase === 'tool.plan'
2033
+ || phase === 'tool.plan.skipped'
2034
+ || phase === 'tool.start'
2035
+ || phase === 'tool.result'
2036
+ || phase === 'tool.error'
2037
+ || phase === 'authoringEvidence.retrieve'
2038
+ || phase === 'authoringEvidence.result'
2039
+ || phase === 'authoringEvidence.error') {
2040
+ return 'plan';
2041
+ }
1965
2042
  if (phase === 'intent.resolve'
2043
+ || phase === 'intent.resolve.llm'
2044
+ || phase === 'intent.resolve.grounding'
1966
2045
  || phase === 'resource.discovery'
1967
2046
  || phase === 'projectKnowledge.retrieve'
1968
2047
  || phase === 'context.bundle') {
@@ -1971,9 +2050,10 @@ class AgenticAuthoringTurnClientService {
1971
2050
  return 'contextualize';
1972
2051
  }
1973
2052
  statusForPayload(payload) {
1974
- return this.readString(payload, 'statusText')
1975
- || this.readString(payload, 'summary')
1976
- || this.readString(payload, 'message')
2053
+ return this.readDisplayString(payload, 'statusText')
2054
+ || this.readDisplayString(payload, 'message')
2055
+ || this.readDisplayString(payload, 'label')
2056
+ || this.readDisplayString(payload, 'summary')
1977
2057
  || '';
1978
2058
  }
1979
2059
  resultDiagnostics(payload, event) {
@@ -2143,6 +2223,14 @@ class AgenticAuthoringTurnClientService {
2143
2223
  const candidate = value?.[key];
2144
2224
  return typeof candidate === 'string' ? candidate.trim() : '';
2145
2225
  }
2226
+ readDisplayString(value, key) {
2227
+ const candidate = this.readString(value, key);
2228
+ return this.isRedactedDisplayText(candidate) ? '' : candidate;
2229
+ }
2230
+ isRedactedDisplayText(value) {
2231
+ const normalized = value.trim().toLowerCase();
2232
+ return normalized === '[redacted]' || normalized === 'redacted';
2233
+ }
2146
2234
  toJsonObject(value) {
2147
2235
  return this.isRecord(value) ? value : null;
2148
2236
  }
@@ -2556,7 +2644,9 @@ class AiResponseValidatorService {
2556
2644
  case 'enum':
2557
2645
  return schema.enumValues?.some(e => e.value === value) || false;
2558
2646
  case 'object':
2559
- return typeof value === 'object' && value !== null;
2647
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
2648
+ case 'array':
2649
+ return Array.isArray(value);
2560
2650
  default:
2561
2651
  return true;
2562
2652
  }
@@ -5948,7 +6038,7 @@ class PraxisAiAssistantComponent {
5948
6038
  return null;
5949
6039
  }
5950
6040
  if (event.type === 'thought.step') {
5951
- const step = Number(payload?.['step']);
6041
+ const step = Number(payload?.['step']) || this.resolveStreamStepFromPhase(typeof payload?.['phase'] === 'string' ? payload['phase'] : '');
5952
6042
  const stepStateRaw = typeof payload?.['state'] === 'string' ? payload['state'].trim().toLowerCase() : '';
5953
6043
  const stepState = stepStateRaw === 'done'
5954
6044
  ? 'done'
@@ -6074,6 +6164,10 @@ class PraxisAiAssistantComponent {
6074
6164
  if (typeof summary === 'string' && summary.trim()) {
6075
6165
  return summary.trim();
6076
6166
  }
6167
+ const label = payload['label'];
6168
+ if (typeof label === 'string' && label.trim()) {
6169
+ return label.trim();
6170
+ }
6077
6171
  const nested = this.asRecord(payload['error']);
6078
6172
  const nestedMsg = nested?.['message'];
6079
6173
  if (typeof nestedMsg === 'string' && nestedMsg.trim()) {
@@ -6081,6 +6175,38 @@ class PraxisAiAssistantComponent {
6081
6175
  }
6082
6176
  return '';
6083
6177
  }
6178
+ resolveStreamStepFromPhase(phase) {
6179
+ const normalized = (phase || '').trim();
6180
+ if (!normalized)
6181
+ return 0;
6182
+ if (normalized === 'context.bundle'
6183
+ || normalized === 'runtime.context.grounding'
6184
+ || normalized === 'intent.resolve'
6185
+ || normalized === 'intent.resolve.llm'
6186
+ || normalized === 'intent.resolve.grounding'
6187
+ || normalized === 'resource.discovery'
6188
+ || normalized === 'projectKnowledge.retrieve') {
6189
+ return 1;
6190
+ }
6191
+ if (normalized === 'tool.plan'
6192
+ || normalized === 'tool.plan.skipped'
6193
+ || normalized === 'tool.start'
6194
+ || normalized === 'tool.result'
6195
+ || normalized === 'tool.error'
6196
+ || normalized === 'authoringEvidence.retrieve'
6197
+ || normalized === 'authoringEvidence.result'
6198
+ || normalized === 'authoringEvidence.error') {
6199
+ return 2;
6200
+ }
6201
+ if (normalized === 'preview.plan'
6202
+ || normalized === 'preview.compile'
6203
+ || normalized === 'preview.validate'
6204
+ || normalized === 'repair.attempt'
6205
+ || normalized === 'tool.loop') {
6206
+ return 3;
6207
+ }
6208
+ return 0;
6209
+ }
6084
6210
  requestStreamCancel() {
6085
6211
  if (!this.activeStreamId) {
6086
6212
  return;
@@ -8221,9 +8347,7 @@ class PraxisAiAssistantShellComponent {
8221
8347
  if (this.state === 'processing' || this.state === 'applying') {
8222
8348
  return true;
8223
8349
  }
8224
- return this.canApply
8225
- || this.state === 'clarification'
8226
- || this.state === 'review';
8350
+ return this.state === 'clarification';
8227
8351
  }
8228
8352
  updateProcessingTimer() {
8229
8353
  if (this.state !== 'processing') {
@@ -8258,6 +8382,9 @@ class PraxisAiAssistantShellComponent {
8258
8382
  getProcessingStatusText() {
8259
8383
  if (this.state !== 'processing')
8260
8384
  return '';
8385
+ if (this.statusText.trim()) {
8386
+ return this.statusText;
8387
+ }
8261
8388
  if (this.processingElapsedSeconds >= 30) {
8262
8389
  return 'Ainda preparando a resposta. Você pode cancelar e tentar novamente se precisar.';
8263
8390
  }
@@ -8499,6 +8626,7 @@ class PraxisAiAssistantShellComponent {
8499
8626
  return evidence
8500
8627
  .filter((item) => !!item.value?.trim())
8501
8628
  .map((item) => this.presentationEvidenceToChip(item))
8629
+ .filter((item) => !!item)
8502
8630
  .slice(0, 4);
8503
8631
  }
8504
8632
  if (this.isContextualPreviewActionQuickReply(reply)) {
@@ -8833,10 +8961,16 @@ class PraxisAiAssistantShellComponent {
8833
8961
  }
8834
8962
  presentationEvidenceToChip(item) {
8835
8963
  const value = item.value.trim();
8964
+ if (!this.isPublicDisplayText(value)) {
8965
+ return null;
8966
+ }
8967
+ const ariaLabel = item.ariaLabel?.trim() || value;
8836
8968
  return {
8837
8969
  icon: item.icon?.trim() || 'verified',
8838
8970
  value: this.friendlyTechnicalLabel(value),
8839
- ariaLabel: this.friendlyTechnicalLabel(item.ariaLabel?.trim() || value),
8971
+ ariaLabel: this.isPublicDisplayText(ariaLabel)
8972
+ ? this.friendlyTechnicalLabel(ariaLabel)
8973
+ : this.friendlyTechnicalLabel(value),
8840
8974
  };
8841
8975
  }
8842
8976
  getContextualActionChips(reply) {
@@ -8845,11 +8979,13 @@ class PraxisAiAssistantShellComponent {
8845
8979
  if (!details)
8846
8980
  return [];
8847
8981
  const chips = [];
8848
- const targetComponentId = this.quickReplyHint(details, hints, 'targetComponentId')
8849
- || this.quickReplyHint(details, hints, 'selectedComponentId');
8850
- const changeKind = this.quickReplyHint(details, hints, 'changeKind');
8851
- const capabilityId = this.quickReplyHint(details, hints, 'capabilityId');
8852
- const selectedWidgetKey = this.quickReplyHint(details, hints, 'selectedWidgetKey');
8982
+ const targetComponentId = [
8983
+ this.quickReplyHint(details, hints, 'targetComponentId'),
8984
+ this.quickReplyHint(details, hints, 'selectedComponentId'),
8985
+ ].find((value) => this.isPublicDisplayText(value)) ?? '';
8986
+ const changeKind = this.publicQuickReplyHint(details, hints, 'changeKind');
8987
+ const capabilityId = this.publicQuickReplyHint(details, hints, 'capabilityId');
8988
+ const selectedWidgetKey = this.publicQuickReplyHint(details, hints, 'selectedWidgetKey');
8853
8989
  if (targetComponentId) {
8854
8990
  chips.push({
8855
8991
  icon: 'widgets',
@@ -8880,6 +9016,10 @@ class PraxisAiAssistantShellComponent {
8880
9016
  }
8881
9017
  return chips.slice(0, 3);
8882
9018
  }
9019
+ publicQuickReplyHint(details, hints, key) {
9020
+ const value = this.quickReplyHint(details, hints, key);
9021
+ return this.isPublicDisplayText(value) ? value : '';
9022
+ }
8883
9023
  isGenericContextualActionDescription(value) {
8884
9024
  const normalized = value
8885
9025
  .normalize('NFD')
@@ -10645,4 +10785,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
10645
10785
  * Generated bundle index. Do not edit.
10646
10786
  */
10647
10787
 
10648
- export { AI_BACKEND_CONFIG_STORE, AI_BACKEND_ENDPOINTS, AI_BACKEND_STORAGE_OPTIONS, AI_CONTRACT_SCHEMA_HASH, AI_CONTRACT_VERSION, AI_INTENT_CONTRACT_SCHEMA_HASH, AI_INTENT_CONTRACT_VERSION, AI_STREAM_EVENT_SCHEMA_VERSION, AI_STREAM_EVENT_TYPES, AgenticAuthoringTurnClientService, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PRAXIS_ASSISTANT_CONTEXT_ATTACHMENT_LIMIT, PRAXIS_ASSISTANT_CONTEXT_ITEM_LIMIT, PRAXIS_ASSISTANT_CONTEXT_SCHEMA_FIELD_LIMIT, PRAXIS_ASSISTANT_CONTEXT_TEXT_LIMIT, PRAXIS_ASSISTANT_VOICE_INPUT_MODE, PRAXIS_ASSISTANT_VOICE_LANGUAGE, PraxisAi, PraxisAiAssistantComponent, PraxisAiAssistantDockComponent, PraxisAiAssistantSessionHostComponent, PraxisAiAssistantShellComponent, PraxisAiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnController, PraxisAssistantTurnOrchestratorService, SchemaMinifierService, createComponentAuthoringContext, createPraxisAssistantViewportLayout, normalizeAuthoringPrompt, normalizePraxisAssistantAttachmentSummary, normalizePraxisAssistantContextSnapshot, sanitizePraxisAssistantText, shouldRoutePromptToGovernedDecision, submitPraxisAssistantQuickReply, toAiJsonObject, toPraxisAssistantClarificationOption, toPraxisAssistantConversationMessages };
10788
+ export { AI_BACKEND_CONFIG_STORE, AI_BACKEND_ENDPOINTS, AI_BACKEND_STORAGE_OPTIONS, AI_CONTRACT_SCHEMA_HASH, AI_CONTRACT_VERSION, AI_INTENT_CONTRACT_SCHEMA_HASH, AI_INTENT_CONTRACT_VERSION, AI_STREAM_EVENT_SCHEMA_VERSION, AI_STREAM_EVENT_TYPES, AgenticAuthoringTurnClientService, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PRAXIS_ASSISTANT_CONTEXT_ATTACHMENT_LIMIT, PRAXIS_ASSISTANT_CONTEXT_ITEM_LIMIT, PRAXIS_ASSISTANT_CONTEXT_SCHEMA_FIELD_LIMIT, PRAXIS_ASSISTANT_CONTEXT_TEXT_LIMIT, PRAXIS_ASSISTANT_VOICE_INPUT_MODE, PRAXIS_ASSISTANT_VOICE_LANGUAGE, PRAXIS_AUTHORING_SCOPE_POLICY_KIND, PRAXIS_AUTHORING_SCOPE_POLICY_VERSION, PraxisAi, PraxisAiAssistantComponent, PraxisAiAssistantDockComponent, PraxisAiAssistantSessionHostComponent, PraxisAiAssistantShellComponent, PraxisAiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnController, PraxisAssistantTurnOrchestratorService, SchemaMinifierService, createAuthoringScopePolicyContext, createAuthoringScopePolicySystemMessage, createComponentAuthoringContext, createPraxisAssistantViewportLayout, normalizeAuthoringPrompt, normalizePraxisAssistantAttachmentSummary, normalizePraxisAssistantContextSnapshot, sanitizePraxisAssistantText, shouldRoutePromptToGovernedDecision, submitPraxisAssistantQuickReply, toAiJsonObject, toPraxisAssistantClarificationOption, toPraxisAssistantConversationMessages, withAuthoringScopePolicy, withAuthoringScopePolicyContextHints, withAuthoringScopePolicyMessage };
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@praxisui/ai",
3
- "version": "9.0.0-beta.5",
3
+ "version": "9.0.0-beta.50",
4
4
  "description": "AI building blocks and assistant integration for Praxis UI applications.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/core": "^9.0.0-beta.5",
8
+ "@praxisui/core": "^9.0.0-beta.50",
9
9
  "@angular/cdk": "^21.0.0",
10
10
  "@angular/forms": "^21.0.0",
11
11
  "@angular/material": "^21.0.0",
@@ -23,6 +23,7 @@
23
23
  "keywords": [
24
24
  "angular",
25
25
  "praxisui",
26
+ "praxis",
26
27
  "ai",
27
28
  "assistant",
28
29
  "llm",
@@ -39,7 +40,10 @@
39
40
  ".": {
40
41
  "types": "./types/praxisui-ai.d.ts",
41
42
  "default": "./fesm2022/praxisui-ai.mjs"
43
+ },
44
+ "./ai/component-registry.json": {
45
+ "default": "./ai/component-registry.json"
42
46
  }
43
47
  },
44
48
  "type": "module"
45
- }
49
+ }
@@ -292,6 +292,7 @@ interface AgenticAuthoringSemanticSelectedResourceContract {
292
292
  schemaUrl?: string | null;
293
293
  submitUrl?: string | null;
294
294
  submitMethod?: string | null;
295
+ label?: string | null;
295
296
  [key: string]: AiJsonValue | undefined;
296
297
  }
297
298
  interface AgenticAuthoringSemanticRetrievalEvidenceContract {
@@ -716,7 +717,7 @@ interface Capability {
716
717
  example?: string;
717
718
  safetyNotes?: string;
718
719
  }
719
- type RulePropertyType = 'string' | 'boolean' | 'object' | 'enum' | 'number';
720
+ type RulePropertyType = 'string' | 'boolean' | 'object' | 'array' | 'enum' | 'number';
720
721
  interface RulePropertyDefinition {
721
722
  name: string;
722
723
  type: RulePropertyType;
@@ -1397,6 +1398,27 @@ declare abstract class BaseAiAdapter<TConfig = any> implements AiConfigAdapter<T
1397
1398
  protected getCriticalWarnings(patch: any): string[];
1398
1399
  }
1399
1400
 
1401
+ type PraxisAuthoringScopeChatMessage = {
1402
+ role: 'user' | 'assistant' | 'system';
1403
+ content: string;
1404
+ };
1405
+ interface PraxisAuthoringScopePolicyOptions {
1406
+ componentId?: string | null;
1407
+ componentType?: string | null;
1408
+ componentLabel?: string | null;
1409
+ }
1410
+ interface PraxisAuthoringScopePolicyRequest {
1411
+ messages?: PraxisAuthoringScopeChatMessage[] | null;
1412
+ contextHints?: AiJsonObject | null;
1413
+ }
1414
+ declare const PRAXIS_AUTHORING_SCOPE_POLICY_KIND = "praxis.authoring-scope-policy.v1";
1415
+ declare const PRAXIS_AUTHORING_SCOPE_POLICY_VERSION = "1.0";
1416
+ declare function createAuthoringScopePolicyContext(options?: PraxisAuthoringScopePolicyOptions): AiJsonObject;
1417
+ declare function createAuthoringScopePolicySystemMessage(options?: PraxisAuthoringScopePolicyOptions): PraxisAuthoringScopeChatMessage;
1418
+ declare function withAuthoringScopePolicy<TRequest extends PraxisAuthoringScopePolicyRequest>(request: TRequest, options?: PraxisAuthoringScopePolicyOptions): TRequest;
1419
+ declare function withAuthoringScopePolicyMessage(messages: readonly PraxisAuthoringScopeChatMessage[] | null | undefined, options?: PraxisAuthoringScopePolicyOptions): PraxisAuthoringScopeChatMessage[];
1420
+ declare function withAuthoringScopePolicyContextHints(contextHints: AiJsonObject | null | undefined, options?: PraxisAuthoringScopePolicyOptions): AiJsonObject;
1421
+
1400
1422
  interface AiGovernedDecisionRoutingOptions {
1401
1423
  localCompositionTerms?: readonly string[];
1402
1424
  }
@@ -1765,6 +1787,8 @@ declare class AgenticAuthoringTurnClientService {
1765
1787
  private isQuickReply;
1766
1788
  private toPendingClarificationContract;
1767
1789
  private readString;
1790
+ private readDisplayString;
1791
+ private isRedactedDisplayText;
1768
1792
  private toJsonObject;
1769
1793
  private isRecord;
1770
1794
  static ɵfac: i0.ɵɵFactoryDeclaration<AgenticAuthoringTurnClientService, never>;
@@ -2263,6 +2287,7 @@ declare class PraxisAiAssistantComponent implements OnDestroy {
2263
2287
  private acceptStreamEvent;
2264
2288
  private resolveLastEventIdForStream;
2265
2289
  private extractStreamMessage;
2290
+ private resolveStreamStepFromPhase;
2266
2291
  private requestStreamCancel;
2267
2292
  private closeActiveStreamConnection;
2268
2293
  private resetStreamTracking;
@@ -2567,6 +2592,7 @@ declare class PraxisAiAssistantShellComponent implements OnChanges, OnDestroy {
2567
2592
  private quickReplyPresentationKind;
2568
2593
  private presentationEvidenceToChip;
2569
2594
  private getContextualActionChips;
2595
+ private publicQuickReplyHint;
2570
2596
  private isGenericContextualActionDescription;
2571
2597
  private trimSentencePunctuation;
2572
2598
  private shortPathLabel;
@@ -2736,5 +2762,5 @@ declare class AiRuleWizardDialogComponent implements OnInit {
2736
2762
  static ɵcmp: i0.ɵɵComponentDeclaration<AiRuleWizardDialogComponent, "praxis-ai-rule-wizard-dialog", never, {}, {}, never, never, true, never>;
2737
2763
  }
2738
2764
 
2739
- export { AI_BACKEND_CONFIG_STORE, AI_BACKEND_ENDPOINTS, AI_BACKEND_STORAGE_OPTIONS, AI_CONTRACT_SCHEMA_HASH, AI_CONTRACT_VERSION, AI_INTENT_CONTRACT_SCHEMA_HASH, AI_INTENT_CONTRACT_VERSION, AI_STREAM_EVENT_SCHEMA_VERSION, AI_STREAM_EVENT_TYPES, AgenticAuthoringTurnClientService, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PRAXIS_ASSISTANT_CONTEXT_ATTACHMENT_LIMIT, PRAXIS_ASSISTANT_CONTEXT_ITEM_LIMIT, PRAXIS_ASSISTANT_CONTEXT_SCHEMA_FIELD_LIMIT, PRAXIS_ASSISTANT_CONTEXT_TEXT_LIMIT, PRAXIS_ASSISTANT_VOICE_INPUT_MODE, PRAXIS_ASSISTANT_VOICE_LANGUAGE, PraxisAi, PraxisAiAssistantComponent, PraxisAiAssistantDockComponent, PraxisAiAssistantSessionHostComponent, PraxisAiAssistantShellComponent, PraxisAiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnController, PraxisAssistantTurnOrchestratorService, SchemaMinifierService, createComponentAuthoringContext, createPraxisAssistantViewportLayout, normalizeAuthoringPrompt, normalizePraxisAssistantAttachmentSummary, normalizePraxisAssistantContextSnapshot, sanitizePraxisAssistantText, shouldRoutePromptToGovernedDecision, submitPraxisAssistantQuickReply, toAiJsonObject, toPraxisAssistantClarificationOption, toPraxisAssistantConversationMessages };
2740
- export type { AgenticAuthoringApplyRequestContract, AgenticAuthoringApplyResultContract, AgenticAuthoringAttachmentSummaryContract, AgenticAuthoringCandidateContract, AgenticAuthoringComponentCapabilitiesResultContract, AgenticAuthoringComponentCapabilityCatalogContract, AgenticAuthoringComponentCapabilityContract, AgenticAuthoringComponentCapabilityExampleContract, AgenticAuthoringComponentFieldAliasContract, AgenticAuthoringConversationContextContract, AgenticAuthoringConversationMessageContract, AgenticAuthoringIntentResolutionRequestContract, AgenticAuthoringIntentResolutionResultContract, AgenticAuthoringManifestCompileResult, AgenticAuthoringManifestCompileResultContract, AgenticAuthoringManifestEditPlanRequest, AgenticAuthoringManifestEditPlanRequestContract, AgenticAuthoringManifestValidationResult, AgenticAuthoringManifestValidationResultContract, AgenticAuthoringPendingClarificationContract, AgenticAuthoringPlanRequestContract, AgenticAuthoringPreviewResultContract, AgenticAuthoringQuickReplyContract, AgenticAuthoringResolveTargetRequest, AgenticAuthoringResolveTargetRequestContract, AgenticAuthoringResolvedTarget, AgenticAuthoringResolvedTargetContract, AgenticAuthoringResourceCandidatesRequestContract, AgenticAuthoringResourceCandidatesResultContract, AgenticAuthoringSemanticDecisionContract, AgenticAuthoringTurnClientEvent, AgenticAuthoringTurnClientOptions, AgenticAuthoringTurnLifecycleEvent, AgenticAuthoringTurnStreamConnection, AgenticAuthoringTurnStreamConnectionOptions, AgenticAuthoringTurnStreamEnvelope, AgenticAuthoringTurnStreamEnvelopeContract, AgenticAuthoringTurnStreamEnvelopeEvent, AgenticAuthoringTurnStreamLifecycle, AgenticAuthoringTurnStreamRequest, AgenticAuthoringTurnStreamRequestContract, AgenticAuthoringTurnStreamStartOptions, AgenticAuthoringTurnStreamStartResponse, AgenticAuthoringTurnStreamStartResponseContract, AgenticAuthoringTurnStreamStartedEvent, AiAssistantObservationFeedbackRating, AiAssistantObservationFeedbackRatingValue, AiAssistantObservationFeedbackRequest, AiAssistantObservationFeedbackRequestContract, AiAssistantObservationFeedbackResponse, AiAssistantObservationFeedbackResponseContract, AiAssistantObservationResponseContract, AiAssistantObservationSummaryResponseContract, AiAssistantObservationSummaryRowContract, AiAuthoringResponseMode, AiAuthoringResponseModeKind, AiBackendConfigStore, AiBackendEndpoints, AiBackendStorageOptions, AiChatMessage, AiChatMessageContract, AiClarificationUiContract, AiComponentAuthoringContract, AiConfigAdapter, AiConsultativeAuthoringContext, AiContextDTO, AiContextHintsContract, AiContextTemplate, AiContextTemplateMeta, AiCurrentStateDigest, AiCurrentStateDigestContract, AiDomainCatalogContextHintContract, AiDomainCatalogContextHintIntent, AiDomainCatalogContextHintItemType, AiDomainCatalogRelationshipHintContract, AiExamplePair, AiGlobalConfigSnapshot, AiGovernedDecisionRoutingOptions, AiHeaderContext, AiIntegrationConfig, AiJsonArray, AiJsonObject, AiJsonPrimitive, AiJsonValue, AiMemoryInfoContract, AiModel, AiOptionContract, AiOrchestratorRequest, AiOrchestratorRequestContract, AiOrchestratorResponse, AiOrchestratorResponseContract, AiOrchestratorResponseType, AiPatchDiff, AiPatchDiffContract, AiPatchStreamCancelResponse, AiPatchStreamCancelResponseContract, AiPatchStreamConnection, AiPatchStreamConnectionErrorKind, AiPatchStreamEnvelope, AiPatchStreamEnvelopeContract, AiPatchStreamEventType, AiPatchStreamStartResponse, AiPatchStreamStartResponseContract, AiProviderCatalogItem, AiProviderCatalogResponse, AiProviderModelsRequest, AiProviderModelsResponse, AiProviderStatusResponse, AiProviderTestRequest, AiProviderTestResponse, AiResponseCompileResult, AiRuleResponse, AiSchemaContext, AiSchemaContextContract, AiSuggestion, AiSuggestionsRequest, AiSuggestionsResponse, AiTurnStreamEventType, AiUiContextRef, AiUiContextRefContract, AiValidationError, AiValidationResult, AiValidationWarning, AiWizardData, Capability, FieldSchemaLike, MinifiedField, PatchResult, PraxisAssistantActionContract, PraxisAssistantActionKind, PraxisAssistantAttachmentKind, PraxisAssistantAttachmentSummary, PraxisAssistantAuthoringManifestRef, PraxisAssistantCapabilityRef, PraxisAssistantClarificationOption, PraxisAssistantClarificationQuestion, PraxisAssistantClarificationQuestionType, PraxisAssistantComponentType, PraxisAssistantContextItem, PraxisAssistantContextMode, PraxisAssistantContextSessionDescriptor, PraxisAssistantContextSnapshot, PraxisAssistantConversationMessage, PraxisAssistantConversationMessageRole, PraxisAssistantDigest, PraxisAssistantDockTone, PraxisAssistantGovernanceHint, PraxisAssistantIdentity, PraxisAssistantOpenRequest, PraxisAssistantOpportunityCandidate, PraxisAssistantOpportunityCandidateStatus, PraxisAssistantOpportunityCatalog, PraxisAssistantOpportunityEvidence, PraxisAssistantOpportunityGroup, PraxisAssistantOpportunityMissingContext, PraxisAssistantOpportunitySafety, PraxisAssistantOpportunityTarget, PraxisAssistantOwnerType, PraxisAssistantPendingClarification, PraxisAssistantRecommendedIntent, PraxisAssistantRecommendedIntentAction, PraxisAssistantRecommendedIntentPresentation, PraxisAssistantRecommendedIntentTone, PraxisAssistantRiskLevel, PraxisAssistantSessionDescriptor, PraxisAssistantSessionIdentityRef, PraxisAssistantSessionPresence, PraxisAssistantSessionSnapshot, PraxisAssistantSessionVisibility, PraxisAssistantShellAction, PraxisAssistantShellActionTone, PraxisAssistantShellAttachment, PraxisAssistantShellContextItem, PraxisAssistantShellLabels, PraxisAssistantShellLayout, PraxisAssistantShellMessage, PraxisAssistantShellMessageAction, PraxisAssistantShellMessageRole, PraxisAssistantShellMode, PraxisAssistantShellQuickReply, PraxisAssistantShellQuickReplyEvidence, PraxisAssistantShellQuickReplyPresentation, PraxisAssistantShellQuickReplyPresentationItem, PraxisAssistantShellQuickReplyPresentationKind, PraxisAssistantShellState, PraxisAssistantTargetKind, PraxisAssistantTargetRef, PraxisAssistantTurnAction, PraxisAssistantTurnControllerOptions, PraxisAssistantTurnFlow, PraxisAssistantTurnPhase, PraxisAssistantTurnRequest, PraxisAssistantTurnResult, PraxisAssistantTurnViewState, PraxisAssistantViewportLayoutOptions, PraxisAssistantVoiceCaptureState, PraxisAssistantVoiceInputMode, ProblemResponseContract, PromptContext, RulePropertyDefinition, RulePropertySchema, RulePropertyType, ValidationContext, ValueKind };
2765
+ export { AI_BACKEND_CONFIG_STORE, AI_BACKEND_ENDPOINTS, AI_BACKEND_STORAGE_OPTIONS, AI_CONTRACT_SCHEMA_HASH, AI_CONTRACT_VERSION, AI_INTENT_CONTRACT_SCHEMA_HASH, AI_INTENT_CONTRACT_VERSION, AI_STREAM_EVENT_SCHEMA_VERSION, AI_STREAM_EVENT_TYPES, AgenticAuthoringTurnClientService, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PRAXIS_ASSISTANT_CONTEXT_ATTACHMENT_LIMIT, PRAXIS_ASSISTANT_CONTEXT_ITEM_LIMIT, PRAXIS_ASSISTANT_CONTEXT_SCHEMA_FIELD_LIMIT, PRAXIS_ASSISTANT_CONTEXT_TEXT_LIMIT, PRAXIS_ASSISTANT_VOICE_INPUT_MODE, PRAXIS_ASSISTANT_VOICE_LANGUAGE, PRAXIS_AUTHORING_SCOPE_POLICY_KIND, PRAXIS_AUTHORING_SCOPE_POLICY_VERSION, PraxisAi, PraxisAiAssistantComponent, PraxisAiAssistantDockComponent, PraxisAiAssistantSessionHostComponent, PraxisAiAssistantShellComponent, PraxisAiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnController, PraxisAssistantTurnOrchestratorService, SchemaMinifierService, createAuthoringScopePolicyContext, createAuthoringScopePolicySystemMessage, createComponentAuthoringContext, createPraxisAssistantViewportLayout, normalizeAuthoringPrompt, normalizePraxisAssistantAttachmentSummary, normalizePraxisAssistantContextSnapshot, sanitizePraxisAssistantText, shouldRoutePromptToGovernedDecision, submitPraxisAssistantQuickReply, toAiJsonObject, toPraxisAssistantClarificationOption, toPraxisAssistantConversationMessages, withAuthoringScopePolicy, withAuthoringScopePolicyContextHints, withAuthoringScopePolicyMessage };
2766
+ export type { AgenticAuthoringApplyRequestContract, AgenticAuthoringApplyResultContract, AgenticAuthoringAttachmentSummaryContract, AgenticAuthoringCandidateContract, AgenticAuthoringComponentCapabilitiesResultContract, AgenticAuthoringComponentCapabilityCatalogContract, AgenticAuthoringComponentCapabilityContract, AgenticAuthoringComponentCapabilityExampleContract, AgenticAuthoringComponentFieldAliasContract, AgenticAuthoringConversationContextContract, AgenticAuthoringConversationMessageContract, AgenticAuthoringIntentResolutionRequestContract, AgenticAuthoringIntentResolutionResultContract, AgenticAuthoringManifestCompileResult, AgenticAuthoringManifestCompileResultContract, AgenticAuthoringManifestEditPlanRequest, AgenticAuthoringManifestEditPlanRequestContract, AgenticAuthoringManifestValidationResult, AgenticAuthoringManifestValidationResultContract, AgenticAuthoringPendingClarificationContract, AgenticAuthoringPlanRequestContract, AgenticAuthoringPreviewResultContract, AgenticAuthoringQuickReplyContract, AgenticAuthoringResolveTargetRequest, AgenticAuthoringResolveTargetRequestContract, AgenticAuthoringResolvedTarget, AgenticAuthoringResolvedTargetContract, AgenticAuthoringResourceCandidatesRequestContract, AgenticAuthoringResourceCandidatesResultContract, AgenticAuthoringSemanticDecisionContract, AgenticAuthoringTurnClientEvent, AgenticAuthoringTurnClientOptions, AgenticAuthoringTurnLifecycleEvent, AgenticAuthoringTurnStreamConnection, AgenticAuthoringTurnStreamConnectionOptions, AgenticAuthoringTurnStreamEnvelope, AgenticAuthoringTurnStreamEnvelopeContract, AgenticAuthoringTurnStreamEnvelopeEvent, AgenticAuthoringTurnStreamLifecycle, AgenticAuthoringTurnStreamRequest, AgenticAuthoringTurnStreamRequestContract, AgenticAuthoringTurnStreamStartOptions, AgenticAuthoringTurnStreamStartResponse, AgenticAuthoringTurnStreamStartResponseContract, AgenticAuthoringTurnStreamStartedEvent, AiAssistantObservationFeedbackRating, AiAssistantObservationFeedbackRatingValue, AiAssistantObservationFeedbackRequest, AiAssistantObservationFeedbackRequestContract, AiAssistantObservationFeedbackResponse, AiAssistantObservationFeedbackResponseContract, AiAssistantObservationResponseContract, AiAssistantObservationSummaryResponseContract, AiAssistantObservationSummaryRowContract, AiAuthoringResponseMode, AiAuthoringResponseModeKind, AiBackendConfigStore, AiBackendEndpoints, AiBackendStorageOptions, AiChatMessage, AiChatMessageContract, AiClarificationUiContract, AiComponentAuthoringContract, AiConfigAdapter, AiConsultativeAuthoringContext, AiContextDTO, AiContextHintsContract, AiContextTemplate, AiContextTemplateMeta, AiCurrentStateDigest, AiCurrentStateDigestContract, AiDomainCatalogContextHintContract, AiDomainCatalogContextHintIntent, AiDomainCatalogContextHintItemType, AiDomainCatalogRelationshipHintContract, AiExamplePair, AiGlobalConfigSnapshot, AiGovernedDecisionRoutingOptions, AiHeaderContext, AiIntegrationConfig, AiJsonArray, AiJsonObject, AiJsonPrimitive, AiJsonValue, AiMemoryInfoContract, AiModel, AiOptionContract, AiOrchestratorRequest, AiOrchestratorRequestContract, AiOrchestratorResponse, AiOrchestratorResponseContract, AiOrchestratorResponseType, AiPatchDiff, AiPatchDiffContract, AiPatchStreamCancelResponse, AiPatchStreamCancelResponseContract, AiPatchStreamConnection, AiPatchStreamConnectionErrorKind, AiPatchStreamEnvelope, AiPatchStreamEnvelopeContract, AiPatchStreamEventType, AiPatchStreamStartResponse, AiPatchStreamStartResponseContract, AiProviderCatalogItem, AiProviderCatalogResponse, AiProviderModelsRequest, AiProviderModelsResponse, AiProviderStatusResponse, AiProviderTestRequest, AiProviderTestResponse, AiResponseCompileResult, AiRuleResponse, AiSchemaContext, AiSchemaContextContract, AiSuggestion, AiSuggestionsRequest, AiSuggestionsResponse, AiTurnStreamEventType, AiUiContextRef, AiUiContextRefContract, AiValidationError, AiValidationResult, AiValidationWarning, AiWizardData, Capability, FieldSchemaLike, MinifiedField, PatchResult, PraxisAssistantActionContract, PraxisAssistantActionKind, PraxisAssistantAttachmentKind, PraxisAssistantAttachmentSummary, PraxisAssistantAuthoringManifestRef, PraxisAssistantCapabilityRef, PraxisAssistantClarificationOption, PraxisAssistantClarificationQuestion, PraxisAssistantClarificationQuestionType, PraxisAssistantComponentType, PraxisAssistantContextItem, PraxisAssistantContextMode, PraxisAssistantContextSessionDescriptor, PraxisAssistantContextSnapshot, PraxisAssistantConversationMessage, PraxisAssistantConversationMessageRole, PraxisAssistantDigest, PraxisAssistantDockTone, PraxisAssistantGovernanceHint, PraxisAssistantIdentity, PraxisAssistantOpenRequest, PraxisAssistantOpportunityCandidate, PraxisAssistantOpportunityCandidateStatus, PraxisAssistantOpportunityCatalog, PraxisAssistantOpportunityEvidence, PraxisAssistantOpportunityGroup, PraxisAssistantOpportunityMissingContext, PraxisAssistantOpportunitySafety, PraxisAssistantOpportunityTarget, PraxisAssistantOwnerType, PraxisAssistantPendingClarification, PraxisAssistantRecommendedIntent, PraxisAssistantRecommendedIntentAction, PraxisAssistantRecommendedIntentPresentation, PraxisAssistantRecommendedIntentTone, PraxisAssistantRiskLevel, PraxisAssistantSessionDescriptor, PraxisAssistantSessionIdentityRef, PraxisAssistantSessionPresence, PraxisAssistantSessionSnapshot, PraxisAssistantSessionVisibility, PraxisAssistantShellAction, PraxisAssistantShellActionTone, PraxisAssistantShellAttachment, PraxisAssistantShellContextItem, PraxisAssistantShellLabels, PraxisAssistantShellLayout, PraxisAssistantShellMessage, PraxisAssistantShellMessageAction, PraxisAssistantShellMessageRole, PraxisAssistantShellMode, PraxisAssistantShellQuickReply, PraxisAssistantShellQuickReplyEvidence, PraxisAssistantShellQuickReplyPresentation, PraxisAssistantShellQuickReplyPresentationItem, PraxisAssistantShellQuickReplyPresentationKind, PraxisAssistantShellState, PraxisAssistantTargetKind, PraxisAssistantTargetRef, PraxisAssistantTurnAction, PraxisAssistantTurnControllerOptions, PraxisAssistantTurnFlow, PraxisAssistantTurnPhase, PraxisAssistantTurnRequest, PraxisAssistantTurnResult, PraxisAssistantTurnViewState, PraxisAssistantViewportLayoutOptions, PraxisAssistantVoiceCaptureState, PraxisAssistantVoiceInputMode, PraxisAuthoringScopeChatMessage, PraxisAuthoringScopePolicyOptions, PraxisAuthoringScopePolicyRequest, ProblemResponseContract, PromptContext, RulePropertyDefinition, RulePropertySchema, RulePropertyType, ValidationContext, ValueKind };