@praxisui/ai 8.0.0-beta.0 → 8.0.0-beta.11

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/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, ElementRef, OnInit, ChangeDetectorRef } from '@angular/core';
3
- import { Schema } from '@google/generative-ai';
2
+ import { InjectionToken, OnDestroy, ElementRef, OnChanges, EventEmitter, SimpleChanges, OnInit, ChangeDetectorRef } from '@angular/core';
3
+ import * as rxjs from 'rxjs';
4
4
  import { Observable } from 'rxjs';
5
- import { CdkOverlayOrigin } from '@angular/cdk/overlay';
5
+ import { Schema } from '@google/generative-ai';
6
+ import { ConnectedPosition, CdkOverlayOrigin } from '@angular/cdk/overlay';
6
7
  import * as _praxisui_ai from '@praxisui/ai';
7
8
  import { MatDialogRef } from '@angular/material/dialog';
8
9
  import { MatSnackBar } from '@angular/material/snack-bar';
@@ -12,6 +13,13 @@ declare class PraxisAi {
12
13
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisAi, "lib-praxis-ai", never, {}, {}, never, never, true, never>;
13
14
  }
14
15
 
16
+ /**
17
+ * Generated from praxis-config-starter/docs/ai/contracts/praxis-ai-api-contract-v1.1.openapi.yaml.
18
+ * Do not edit manually. Run praxis-config-starter/tools/contracts/generate-ai-contract-bindings.js.
19
+ */
20
+ declare const AI_CONTRACT_VERSION: "v1.1";
21
+ declare const AI_CONTRACT_SCHEMA_HASH: "dacaba8fa7ec21ee9ae31bab7057614837d2d1320d784d0ee61fb840efe55a35";
22
+ declare const AI_STREAM_EVENT_SCHEMA_VERSION: "v1";
15
23
  declare const AI_STREAM_EVENT_TYPES: readonly ["status", "thought.step", "heartbeat", "result", "error", "cancelled"];
16
24
  type AiJsonPrimitive = string | number | boolean | null;
17
25
  type AiJsonArray = AiJsonValue[];
@@ -98,6 +106,7 @@ interface AiOrchestratorResponseContract {
98
106
  contractVersion?: string | null;
99
107
  schemaHash?: string | null;
100
108
  patch?: AiJsonObject | null;
109
+ componentEditPlan?: AiJsonObject | null;
101
110
  diff?: AiPatchDiffContract[] | null;
102
111
  explanation?: string | null;
103
112
  warnings?: string[] | null;
@@ -113,6 +122,180 @@ interface AiOrchestratorResponseContract {
113
122
  allowedValues?: string[] | null;
114
123
  memory?: AiMemoryInfoContract;
115
124
  }
125
+ interface AgenticAuthoringConversationMessageContract {
126
+ id?: string | null;
127
+ role: 'user' | 'assistant' | 'system';
128
+ text?: string | null;
129
+ createdAt?: string | null;
130
+ }
131
+ interface AgenticAuthoringPendingClarificationContract {
132
+ sourcePrompt?: string | null;
133
+ questions?: string[];
134
+ assistantMessage?: string | null;
135
+ clientTurnId?: string | null;
136
+ diagnostics?: AiJsonObject | null;
137
+ }
138
+ interface AgenticAuthoringAttachmentSummaryContract {
139
+ id: string;
140
+ name: string;
141
+ kind: string;
142
+ mimeType?: string | null;
143
+ sizeBytes?: number | null;
144
+ source?: string | null;
145
+ hasPreview?: boolean;
146
+ }
147
+ interface AgenticAuthoringConversationContextContract {
148
+ sessionId?: string | null;
149
+ clientTurnId?: string | null;
150
+ conversationMessages?: AgenticAuthoringConversationMessageContract[];
151
+ pendingClarification?: AgenticAuthoringPendingClarificationContract | null;
152
+ attachmentSummaries?: AgenticAuthoringAttachmentSummaryContract[];
153
+ }
154
+ interface AgenticAuthoringIntentResolutionRequestContract extends AgenticAuthoringConversationContextContract {
155
+ userPrompt: string;
156
+ targetApp?: string | null;
157
+ targetComponentId?: string | null;
158
+ currentRoute?: string | null;
159
+ currentPage?: AiJsonObject | null;
160
+ selectedWidgetKey?: string | null;
161
+ provider?: string | null;
162
+ model?: string | null;
163
+ apiKey?: string | null;
164
+ contextHints?: AiJsonObject | null;
165
+ }
166
+ interface AgenticAuthoringCandidateContract {
167
+ resourcePath?: string | null;
168
+ operation?: string | null;
169
+ schemaUrl?: string | null;
170
+ submitUrl?: string | null;
171
+ submitMethod?: string | null;
172
+ score?: number | null;
173
+ reason?: string | null;
174
+ evidence?: string[] | null;
175
+ [key: string]: AiJsonValue | undefined;
176
+ }
177
+ interface AgenticAuthoringQuickReplyContract {
178
+ id: string;
179
+ kind: string;
180
+ label: string;
181
+ prompt: string;
182
+ description?: string | null;
183
+ icon?: string | null;
184
+ tone?: string | null;
185
+ contextHints?: AiJsonObject | null;
186
+ [key: string]: AiJsonValue | undefined;
187
+ }
188
+ interface AgenticAuthoringIntentResolutionResultContract {
189
+ valid?: boolean;
190
+ operationKind?: string | null;
191
+ artifactKind?: string | null;
192
+ changeKind?: string | null;
193
+ selectedCandidate?: AgenticAuthoringCandidateContract | null;
194
+ candidates?: AgenticAuthoringCandidateContract[];
195
+ gate?: AiJsonObject | null;
196
+ effectivePrompt?: string | null;
197
+ assistantMessage?: string | null;
198
+ quickReplies?: AgenticAuthoringQuickReplyContract[];
199
+ pendingClarification?: AgenticAuthoringPendingClarificationContract | null;
200
+ clarificationQuestions?: string[];
201
+ warnings?: string[];
202
+ failureCodes?: string[];
203
+ llmDiagnostics?: AiJsonObject | null;
204
+ [key: string]: AiJsonValue | AgenticAuthoringCandidateContract | AgenticAuthoringCandidateContract[] | AgenticAuthoringQuickReplyContract | AgenticAuthoringQuickReplyContract[] | AgenticAuthoringPendingClarificationContract | undefined;
205
+ }
206
+ interface AgenticAuthoringResourceCandidatesRequestContract {
207
+ retrievalQuery?: string | null;
208
+ userPrompt?: string | null;
209
+ artifactKind?: string | null;
210
+ limit?: number | null;
211
+ [key: string]: AiJsonValue | undefined;
212
+ }
213
+ interface AgenticAuthoringResourceCandidatesResultContract {
214
+ valid?: boolean;
215
+ tool?: string | null;
216
+ retrievalQuery?: string | null;
217
+ artifactKind?: string | null;
218
+ assistantMessage?: string | null;
219
+ candidates?: AgenticAuthoringCandidateContract[];
220
+ quickReplies?: AgenticAuthoringQuickReplyContract[];
221
+ warnings?: string[];
222
+ [key: string]: AiJsonValue | AgenticAuthoringCandidateContract[] | AgenticAuthoringQuickReplyContract[] | undefined;
223
+ }
224
+ interface AgenticAuthoringPlanRequestContract extends AgenticAuthoringConversationContextContract {
225
+ userPrompt: string;
226
+ provider?: string | null;
227
+ model?: string | null;
228
+ apiKey?: string | null;
229
+ currentPage?: AiJsonObject | null;
230
+ intentResolution?: AgenticAuthoringIntentResolutionResultContract | null;
231
+ contextHints?: AiJsonObject | null;
232
+ }
233
+ interface AgenticAuthoringTurnStreamRequestContract extends AgenticAuthoringConversationContextContract {
234
+ userPrompt: string;
235
+ targetApp?: string | null;
236
+ targetComponentId?: string | null;
237
+ currentRoute?: string | null;
238
+ currentPage?: AiJsonObject | null;
239
+ selectedWidgetKey?: string | null;
240
+ provider?: string | null;
241
+ model?: string | null;
242
+ apiKey?: string | null;
243
+ contextHints?: AiJsonObject | null;
244
+ componentCapabilities?: AgenticAuthoringComponentCapabilitiesResultContract | null;
245
+ [key: string]: AiJsonValue | AgenticAuthoringComponentCapabilitiesResultContract | AgenticAuthoringConversationMessageContract[] | AgenticAuthoringPendingClarificationContract | AgenticAuthoringAttachmentSummaryContract[] | undefined;
246
+ }
247
+ interface AgenticAuthoringPreviewResultContract {
248
+ valid?: boolean;
249
+ warnings?: string[];
250
+ minimalFormPlan?: AiJsonObject | null;
251
+ compiledFormPatch?: AiJsonObject | null;
252
+ uiCompositionPlan?: AiJsonObject | null;
253
+ diagnostics?: AiJsonObject | null;
254
+ [key: string]: AiJsonValue | undefined;
255
+ }
256
+ interface AgenticAuthoringApplyRequestContract {
257
+ componentType: string;
258
+ componentId: string;
259
+ scope?: string | null;
260
+ payload: AiJsonObject;
261
+ tags?: AiJsonObject | null;
262
+ [key: string]: AiJsonValue | undefined;
263
+ }
264
+ interface AgenticAuthoringApplyResultContract {
265
+ applied?: boolean;
266
+ etag?: string | null;
267
+ [key: string]: AiJsonValue | undefined;
268
+ }
269
+ interface AgenticAuthoringComponentFieldAliasContract {
270
+ field?: string | null;
271
+ aliases?: string[];
272
+ [key: string]: AiJsonValue | undefined;
273
+ }
274
+ interface AgenticAuthoringComponentCapabilityExampleContract {
275
+ prompt?: string | null;
276
+ intent?: string | null;
277
+ configHints?: string[];
278
+ [key: string]: AiJsonValue | undefined;
279
+ }
280
+ interface AgenticAuthoringComponentCapabilityContract {
281
+ id?: string | null;
282
+ changeKind?: string | null;
283
+ triggerTerms?: string[];
284
+ fieldAliases?: AgenticAuthoringComponentFieldAliasContract[];
285
+ examples?: AgenticAuthoringComponentCapabilityExampleContract[];
286
+ [key: string]: AiJsonValue | AgenticAuthoringComponentFieldAliasContract[] | AgenticAuthoringComponentCapabilityExampleContract[] | undefined;
287
+ }
288
+ interface AgenticAuthoringComponentCapabilityCatalogContract {
289
+ componentId?: string | null;
290
+ version?: string | null;
291
+ capabilities?: AgenticAuthoringComponentCapabilityContract[];
292
+ [key: string]: AiJsonValue | AgenticAuthoringComponentCapabilityContract[] | undefined;
293
+ }
294
+ interface AgenticAuthoringComponentCapabilitiesResultContract {
295
+ version?: string | null;
296
+ catalogs?: AgenticAuthoringComponentCapabilityCatalogContract[];
297
+ [key: string]: AiJsonValue | AgenticAuthoringComponentCapabilityCatalogContract[] | undefined;
298
+ }
116
299
  interface AiPatchStreamStartResponseContract {
117
300
  streamId: string;
118
301
  threadId: string;
@@ -123,6 +306,16 @@ interface AiPatchStreamStartResponseContract {
123
306
  expiresAt: string;
124
307
  fallbackPatchUrl: string;
125
308
  }
309
+ interface AgenticAuthoringTurnStreamStartResponseContract {
310
+ streamId: string;
311
+ threadId: string;
312
+ turnId: string;
313
+ eventSchemaVersion: string;
314
+ streamAuthMode?: 'cookie' | 'signed_url_token' | null;
315
+ streamAccessToken?: string | null;
316
+ expiresAt: string;
317
+ fallbackAuthoringUrl: string;
318
+ }
126
319
  interface AiPatchStreamCancelResponseContract {
127
320
  streamId?: string | null;
128
321
  threadId?: string | null;
@@ -141,7 +334,19 @@ interface AiPatchStreamEnvelopeContract<TPayload extends AiJsonObject = AiJsonOb
141
334
  type: AiPatchStreamEventType$1;
142
335
  payload: TPayload;
143
336
  }
337
+ interface AgenticAuthoringTurnStreamEnvelopeContract<TPayload extends AiJsonObject = AiJsonObject> extends AiPatchStreamEnvelopeContract<TPayload> {
338
+ }
339
+ interface ProblemResponseContract {
340
+ timestamp?: string | null;
341
+ status?: number | null;
342
+ error?: string | null;
343
+ message?: string | null;
344
+ path?: string | null;
345
+ detail?: string | null;
346
+ [key: string]: AiJsonValue | undefined;
347
+ }
144
348
  type AiPatchStreamEventType$1 = (typeof AI_STREAM_EVENT_TYPES)[number];
349
+ type AiTurnStreamEventType = (typeof AI_STREAM_EVENT_TYPES)[number];
145
350
 
146
351
  /**
147
352
  * Models for Praxis AI (Centralized)
@@ -282,6 +487,192 @@ interface RulePropertyDefinition {
282
487
  }
283
488
  type RulePropertySchema = Record<'field' | 'section' | 'action' | 'row' | 'column', RulePropertyDefinition[]>;
284
489
 
490
+ type PraxisAssistantShellMessageRole = 'user' | 'assistant' | 'system' | 'status' | 'error';
491
+ type PraxisAssistantShellMode = 'config' | 'agentic-authoring' | 'chat' | 'diagnostic' | 'review' | 'inline-help';
492
+ type PraxisAssistantShellState = 'idle' | 'listening' | 'processing' | 'clarification' | 'review' | 'applying' | 'success' | 'error';
493
+ interface PraxisAssistantShellMessage {
494
+ id: string;
495
+ role: PraxisAssistantShellMessageRole;
496
+ text: string;
497
+ status?: 'pending' | 'done' | 'error';
498
+ editable?: boolean;
499
+ resendable?: boolean;
500
+ actions?: readonly PraxisAssistantShellMessageAction[];
501
+ }
502
+ interface PraxisAssistantShellQuickReply {
503
+ id: string;
504
+ label: string;
505
+ prompt: string;
506
+ kind?: string;
507
+ description?: string | null;
508
+ icon?: string | null;
509
+ tone?: string | null;
510
+ contextHints?: Readonly<Record<string, unknown>> | null;
511
+ }
512
+ interface PraxisAssistantShellMessageAction {
513
+ id: string;
514
+ label: string;
515
+ kind?: 'edit' | 'resend' | 'copy' | 'custom' | string;
516
+ disabled?: boolean;
517
+ }
518
+ interface PraxisAssistantShellContextItem {
519
+ id: string;
520
+ label: string;
521
+ value?: string;
522
+ kind?: 'component' | 'schema' | 'selection' | 'route' | 'tenant' | 'mode' | 'custom' | string;
523
+ icon?: string;
524
+ }
525
+ interface PraxisAssistantShellAttachment {
526
+ id: string;
527
+ name: string;
528
+ kind: 'image' | 'file' | 'json' | 'schema' | 'text' | string;
529
+ mimeType?: string;
530
+ sizeBytes?: number;
531
+ file?: File;
532
+ previewUrl?: string;
533
+ source?: 'paste' | 'file-picker' | 'host' | string;
534
+ status?: 'ready' | 'uploading' | 'error';
535
+ error?: string;
536
+ }
537
+ interface PraxisAssistantShellLayout {
538
+ left: number;
539
+ top: number;
540
+ width: number;
541
+ height: number;
542
+ }
543
+ interface PraxisAssistantShellLabels {
544
+ title: string;
545
+ subtitle?: string;
546
+ close: string;
547
+ prompt: string;
548
+ promptPlaceholder: string;
549
+ emptyConversation: string;
550
+ submit: string;
551
+ apply: string;
552
+ conversationAria: string;
553
+ quickRepliesAria: string;
554
+ dragHandleAria: string;
555
+ resizeHandleAria: string;
556
+ contextAria: string;
557
+ attachmentsAria: string;
558
+ attach: string;
559
+ removeAttachment: string;
560
+ editMessage: string;
561
+ resendMessage: string;
562
+ modeConfig: string;
563
+ modeAgenticAuthoring: string;
564
+ modeChat: string;
565
+ modeDiagnostic: string;
566
+ modeReview: string;
567
+ modeInlineHelp: string;
568
+ stateIdle: string;
569
+ stateListening: string;
570
+ stateProcessing: string;
571
+ stateClarification: string;
572
+ stateReview: string;
573
+ stateApplying: string;
574
+ stateSuccess: string;
575
+ stateError: string;
576
+ }
577
+
578
+ type PraxisAssistantTurnPhase = 'capture' | 'contextualize' | 'clarify' | 'plan' | 'preview' | 'review' | 'apply' | 'summarize';
579
+ type PraxisAssistantClarificationQuestionType = 'text' | 'single-choice' | 'multi-choice' | 'confirm' | 'resource' | 'field' | 'schema' | 'date-range' | 'number' | 'color' | 'component';
580
+ interface PraxisAssistantClarificationOption {
581
+ id: string;
582
+ label: string;
583
+ value: string;
584
+ description?: string;
585
+ contextHints?: Record<string, unknown>;
586
+ }
587
+ interface PraxisAssistantClarificationQuestion {
588
+ id: string;
589
+ type: PraxisAssistantClarificationQuestionType;
590
+ label: string;
591
+ description?: string;
592
+ required?: boolean;
593
+ allowCustom?: boolean;
594
+ options?: readonly PraxisAssistantClarificationOption[];
595
+ }
596
+ interface PraxisAssistantTurnAction {
597
+ kind: 'submit' | 'clarify' | 'apply' | 'cancel' | 'retry' | 'edit-message' | 'resend-message' | 'attach' | 'remove-attachment' | string;
598
+ id?: string;
599
+ value?: unknown;
600
+ contextHints?: Record<string, unknown>;
601
+ }
602
+ interface PraxisAssistantPendingClarification {
603
+ sourcePrompt: string;
604
+ questions: readonly PraxisAssistantClarificationQuestion[];
605
+ assistantMessage?: string;
606
+ clientTurnId?: string;
607
+ diagnostics?: Record<string, unknown>;
608
+ }
609
+ interface PraxisAssistantTurnRequest {
610
+ mode: PraxisAssistantShellMode;
611
+ phase?: PraxisAssistantTurnPhase;
612
+ prompt?: string;
613
+ action?: PraxisAssistantTurnAction;
614
+ sessionId?: string;
615
+ clientTurnId?: string;
616
+ componentId?: string;
617
+ componentType?: string;
618
+ messages?: readonly PraxisAssistantShellMessage[];
619
+ contextItems?: readonly PraxisAssistantShellContextItem[];
620
+ attachments?: readonly PraxisAssistantShellAttachment[];
621
+ currentState?: unknown;
622
+ runtimeState?: unknown;
623
+ schemaFields?: unknown;
624
+ dataProfile?: unknown;
625
+ contextHints?: Record<string, unknown>;
626
+ preview?: unknown;
627
+ pendingPatch?: unknown;
628
+ pendingClarification?: PraxisAssistantPendingClarification;
629
+ }
630
+ interface PraxisAssistantTurnResult {
631
+ state: PraxisAssistantShellState;
632
+ phase?: PraxisAssistantTurnPhase;
633
+ assistantMessage?: string;
634
+ messages?: readonly PraxisAssistantShellMessage[];
635
+ quickReplies?: readonly PraxisAssistantShellQuickReply[];
636
+ clarificationQuestions?: readonly PraxisAssistantClarificationQuestion[];
637
+ contextItems?: readonly PraxisAssistantShellContextItem[];
638
+ attachments?: readonly PraxisAssistantShellAttachment[];
639
+ canApply?: boolean;
640
+ statusText?: string;
641
+ errorText?: string;
642
+ preview?: unknown;
643
+ pendingPatch?: unknown;
644
+ pendingClarification?: PraxisAssistantPendingClarification | null;
645
+ sessionId?: string;
646
+ clientTurnId?: string;
647
+ diagnostics?: Record<string, unknown>;
648
+ }
649
+ interface PraxisAssistantTurnViewState {
650
+ mode: PraxisAssistantShellMode;
651
+ state: PraxisAssistantShellState;
652
+ phase: PraxisAssistantTurnPhase;
653
+ sessionId?: string;
654
+ clientTurnId?: string;
655
+ messages: PraxisAssistantShellMessage[];
656
+ quickReplies: PraxisAssistantShellQuickReply[];
657
+ clarificationQuestions: PraxisAssistantClarificationQuestion[];
658
+ contextItems: PraxisAssistantShellContextItem[];
659
+ attachments: PraxisAssistantShellAttachment[];
660
+ canApply: boolean;
661
+ statusText: string;
662
+ errorText: string;
663
+ preview?: unknown;
664
+ pendingPatch?: unknown;
665
+ pendingClarification?: PraxisAssistantPendingClarification;
666
+ diagnostics?: Record<string, unknown>;
667
+ }
668
+ interface PraxisAssistantTurnFlow {
669
+ readonly mode: PraxisAssistantShellMode;
670
+ submit(request: PraxisAssistantTurnRequest): Promise<PraxisAssistantTurnResult> | rxjs.Observable<PraxisAssistantTurnResult>;
671
+ apply?(request: PraxisAssistantTurnRequest): Promise<PraxisAssistantTurnResult> | rxjs.Observable<PraxisAssistantTurnResult>;
672
+ cancel?(request: PraxisAssistantTurnRequest): Promise<PraxisAssistantTurnResult> | rxjs.Observable<PraxisAssistantTurnResult>;
673
+ retry?(request: PraxisAssistantTurnRequest): Promise<PraxisAssistantTurnResult> | rxjs.Observable<PraxisAssistantTurnResult>;
674
+ }
675
+
285
676
  interface PatchResult {
286
677
  success: boolean;
287
678
  warnings?: string[];
@@ -300,6 +691,13 @@ interface AiSuggestion {
300
691
  contextHints?: Record<string, unknown> | null;
301
692
  missingContext?: string[];
302
693
  }
694
+ interface AiResponseCompileResult {
695
+ patch?: AiJsonObject;
696
+ explanation?: string;
697
+ type?: 'error';
698
+ message?: string;
699
+ warnings?: string[];
700
+ }
303
701
  /**
304
702
  * Contrato fundamental para qualquer componente que suporte configuração via IA.
305
703
  * O Agente de IA usa esta interface para Ler (Introspecção) e Escrever (Patching) no componente.
@@ -352,12 +750,24 @@ interface AiConfigAdapter<TConfig = any> {
352
750
  * Usado para sugestões heurísticas mais precisas no backend.
353
751
  */
354
752
  getSchemaFields?(): Record<string, any>[];
753
+ /**
754
+ * Retorna contexto declarativo adicional para authoring assistido por IA.
755
+ * Deve conter contratos validaveis e instrucoes especificas do componente
756
+ * que o backend pode incluir em contextHints sem conhecer a lib concreta.
757
+ */
758
+ getAuthoringContext?(): AiJsonObject | null | undefined;
355
759
  /**
356
760
  * Retorna um snapshot do estado de tempo de execução (volátil).
357
761
  * Ex: { rowCount: 50, isLoading: false, sort: 'name:asc' }.
358
762
  * Usado para responder perguntas do usuário ("Por que está vazio?").
359
- */
763
+ */
360
764
  getRuntimeState?(): Record<string, any>;
765
+ /**
766
+ * Compila respostas declarativas especificas do componente em patch canonico.
767
+ * Ex.: uma tabela pode transformar "componentEditPlan" em alteracoes validadas de colunas.
768
+ * Retorne null/undefined quando a resposta ja estiver no contrato comum do assistente.
769
+ */
770
+ compileAiResponse?(response: Record<string, unknown>): AiResponseCompileResult | null | undefined;
361
771
  /**
362
772
  * Cria um snapshot do estado atual para fins de Undo.
363
773
  * Retorna um token opaco (pode ser o config JSON completo ou um ID).
@@ -392,6 +802,8 @@ declare abstract class BaseAiAdapter<TConfig = any> implements AiConfigAdapter<T
392
802
  getSuggestions(_forceReload?: boolean): Promise<AiSuggestion[]>;
393
803
  getSuggestionContext?(): Record<string, any>;
394
804
  getRuntimeState?(): Record<string, any>;
805
+ getAuthoringContext?(): Record<string, any> | null;
806
+ compileAiResponse?(_response: Record<string, unknown>): AiResponseCompileResult | null;
395
807
  /**
396
808
  * Helper to validate a patch against the capabilities catalog.
397
809
  * Removes keys that are not in the allowed paths.
@@ -453,8 +865,6 @@ declare class PraxisAiService {
453
865
  generateContentStream(prompt: string, modelName?: string): Observable<string>;
454
866
  generateJson<T>(prompt: string, modelName?: string, schema?: any): Observable<T | null>;
455
867
  isMockMode(): boolean;
456
- private extractUserIntent;
457
- private getMockPatch;
458
868
  listModels(apiKey?: string): Observable<AiModel[]>;
459
869
  testConnection(apiKey?: string, model?: string): Observable<boolean>;
460
870
  private resolveProvider;
@@ -464,7 +874,7 @@ declare class PraxisAiService {
464
874
  }
465
875
 
466
876
  declare const AI_INTENT_CONTRACT_VERSION: "v1.1";
467
- declare const AI_INTENT_CONTRACT_SCHEMA_HASH: "51b7901f1df633d89fc019a2e41f675cc5b87b135dfc8335aa96e53205034b26";
877
+ declare const AI_INTENT_CONTRACT_SCHEMA_HASH: "dacaba8fa7ec21ee9ae31bab7057614837d2d1320d784d0ee61fb840efe55a35";
468
878
  type AiSchemaContext = AiSchemaContextContract;
469
879
  interface AiSuggestionsRequest {
470
880
  componentId: string;
@@ -583,6 +993,18 @@ interface AiGlobalConfigSnapshot {
583
993
  gatewayUrl?: string;
584
994
  riskPolicy?: string;
585
995
  }
996
+ interface AiBackendConfigStore {
997
+ getAiConfigSnapshot?: () => AiGlobalConfigSnapshot | null | undefined;
998
+ aiConfigChanges$?: Observable<AiGlobalConfigSnapshot | null>;
999
+ saveAiConfig?: (config: AiGlobalConfigSnapshot) => Promise<void>;
1000
+ }
1001
+ interface AiBackendStorageOptions {
1002
+ headersFactory?: () => Record<string, string | undefined>;
1003
+ defaultHeaders?: Record<string, string>;
1004
+ allowLocalIdentityFallback?: boolean;
1005
+ }
1006
+ declare const AI_BACKEND_CONFIG_STORE: InjectionToken<AiBackendConfigStore>;
1007
+ declare const AI_BACKEND_STORAGE_OPTIONS: InjectionToken<AiBackendStorageOptions>;
586
1008
  declare class AiBackendApiService {
587
1009
  private readonly http;
588
1010
  private readonly globalConfigStore;
@@ -640,6 +1062,61 @@ declare class AiResponseValidatorService {
640
1062
  static ɵprov: i0.ɵɵInjectableDeclaration<AiResponseValidatorService>;
641
1063
  }
642
1064
 
1065
+ interface PraxisAssistantTurnControllerOptions {
1066
+ componentId?: string;
1067
+ componentType?: string;
1068
+ sessionId?: string;
1069
+ contextItems?: readonly PraxisAssistantShellContextItem[];
1070
+ attachments?: readonly PraxisAssistantShellAttachment[];
1071
+ currentState?: unknown;
1072
+ runtimeState?: unknown;
1073
+ schemaFields?: unknown;
1074
+ dataProfile?: unknown;
1075
+ contextHints?: Record<string, unknown>;
1076
+ }
1077
+ declare class PraxisAssistantTurnOrchestratorService {
1078
+ createController(flow: PraxisAssistantTurnFlow, options?: PraxisAssistantTurnControllerOptions): PraxisAssistantTurnController;
1079
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisAssistantTurnOrchestratorService, never>;
1080
+ static ɵprov: i0.ɵɵInjectableDeclaration<PraxisAssistantTurnOrchestratorService>;
1081
+ }
1082
+ declare class PraxisAssistantTurnController {
1083
+ private readonly flow;
1084
+ private readonly options;
1085
+ private readonly stateSubject;
1086
+ readonly state$: Observable<PraxisAssistantTurnViewState>;
1087
+ constructor(flow: PraxisAssistantTurnFlow, options: PraxisAssistantTurnControllerOptions);
1088
+ snapshot(): PraxisAssistantTurnViewState;
1089
+ setContextItems(items: readonly PraxisAssistantShellContextItem[]): void;
1090
+ setMessages(messages: readonly PraxisAssistantShellMessage[]): void;
1091
+ setAttachments(attachments: readonly PraxisAssistantShellAttachment[]): void;
1092
+ addAttachment(attachment: PraxisAssistantShellAttachment): void;
1093
+ removeAttachment(id: string): void;
1094
+ editMessage(messageId: string, text: string): void;
1095
+ resendMessage(messageId: string): Observable<PraxisAssistantTurnViewState>;
1096
+ submitEditedMessage(messageId: string, text: string): Observable<PraxisAssistantTurnViewState>;
1097
+ submitPrompt(prompt: string, action?: PraxisAssistantTurnAction): Observable<PraxisAssistantTurnViewState>;
1098
+ answerClarification(option: PraxisAssistantClarificationOption | string): Observable<PraxisAssistantTurnViewState>;
1099
+ apply(): Observable<PraxisAssistantTurnViewState>;
1100
+ retry(): Observable<PraxisAssistantTurnViewState>;
1101
+ cancel(): Observable<PraxisAssistantTurnViewState>;
1102
+ private runFlow;
1103
+ private buildRequest;
1104
+ private submitExistingUserMessage;
1105
+ private findUserMessageIndex;
1106
+ private resetReplayState;
1107
+ private applyResult;
1108
+ private resolveSubmitAction;
1109
+ private buildPendingClarification;
1110
+ private resolvePendingClarificationSourcePrompt;
1111
+ private resolveMessageRole;
1112
+ private resolvePhase;
1113
+ private buildMessage;
1114
+ private createId;
1115
+ private patchState;
1116
+ private cloneState;
1117
+ private toObservable;
1118
+ }
1119
+
643
1120
  type AssistantMessageRole = 'user' | 'assistant' | 'system';
644
1121
  interface AssistantHistoryMessage {
645
1122
  id: string;
@@ -694,6 +1171,7 @@ declare class PraxisAiAssistantComponent implements OnDestroy {
694
1171
  adapter: AiConfigAdapter;
695
1172
  riskPolicy: RiskPolicy | null;
696
1173
  allowManualPatchEdit: boolean;
1174
+ readonly overlayPositions: ConnectedPosition[];
697
1175
  overlayOrigin: CdkOverlayOrigin;
698
1176
  triggerButton?: ElementRef<HTMLButtonElement>;
699
1177
  inputElement: ElementRef<HTMLInputElement>;
@@ -965,6 +1443,7 @@ declare class PraxisAiAssistantComponent implements OnDestroy {
965
1443
  private closeActiveStreamConnection;
966
1444
  private resetStreamTracking;
967
1445
  private shouldFallbackToPatch;
1446
+ private compileAdapterResponse;
968
1447
  private handlePatchResponse;
969
1448
  private initHistory;
970
1449
  private buildHistoryWarnings;
@@ -1066,6 +1545,102 @@ declare class PraxisAiAssistantComponent implements OnDestroy {
1066
1545
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisAiAssistantComponent, "praxis-ai-assistant", never, { "adapter": { "alias": "adapter"; "required": true; }; "riskPolicy": { "alias": "riskPolicy"; "required": false; }; "allowManualPatchEdit": { "alias": "allowManualPatchEdit"; "required": false; }; }, {}, never, never, true, never>;
1067
1546
  }
1068
1547
 
1548
+ declare class PraxisAiAssistantShellComponent implements OnChanges, OnDestroy {
1549
+ labels: Partial<PraxisAssistantShellLabels> | null;
1550
+ mode: PraxisAssistantShellMode;
1551
+ state: PraxisAssistantShellState;
1552
+ contextItems: readonly PraxisAssistantShellContextItem[];
1553
+ attachments: readonly PraxisAssistantShellAttachment[];
1554
+ messages: readonly PraxisAssistantShellMessage[];
1555
+ quickReplies: readonly PraxisAssistantShellQuickReply[];
1556
+ prompt: string;
1557
+ statusText: string;
1558
+ errorText: string;
1559
+ testIdPrefix: string;
1560
+ panelTestId: string;
1561
+ submitTestId: string;
1562
+ applyTestId: string;
1563
+ busy: boolean;
1564
+ canSubmit: boolean;
1565
+ canApply: boolean;
1566
+ submitOnEnter: boolean;
1567
+ enableFileAttachments: boolean;
1568
+ attachmentAccept: string;
1569
+ attachmentMultiple: boolean;
1570
+ draggable: boolean;
1571
+ resizable: boolean;
1572
+ minWidth: number;
1573
+ minHeight: number;
1574
+ margin: number;
1575
+ layout: PraxisAssistantShellLayout;
1576
+ promptChange: EventEmitter<string>;
1577
+ submitPrompt: EventEmitter<string>;
1578
+ apply: EventEmitter<void>;
1579
+ close: EventEmitter<void>;
1580
+ attach: EventEmitter<void>;
1581
+ attachmentsPasted: EventEmitter<PraxisAssistantShellAttachment[]>;
1582
+ attachmentsSelected: EventEmitter<PraxisAssistantShellAttachment[]>;
1583
+ removeAttachment: EventEmitter<PraxisAssistantShellAttachment>;
1584
+ messageAction: EventEmitter<{
1585
+ message: PraxisAssistantShellMessage;
1586
+ action: PraxisAssistantShellMessageAction;
1587
+ }>;
1588
+ editMessage: EventEmitter<PraxisAssistantShellMessage>;
1589
+ resendMessage: EventEmitter<PraxisAssistantShellMessage>;
1590
+ quickReply: EventEmitter<PraxisAssistantShellQuickReply>;
1591
+ layoutChange: EventEmitter<PraxisAssistantShellLayout>;
1592
+ panel?: ElementRef<HTMLElement>;
1593
+ conversation?: ElementRef<HTMLElement>;
1594
+ private readonly cdr;
1595
+ protected currentPrompt: string;
1596
+ protected resolvedLabels: PraxisAssistantShellLabels;
1597
+ protected currentLayout: PraxisAssistantShellLayout;
1598
+ private pointerSession;
1599
+ private readonly ownedPreviewUrls;
1600
+ private readonly onWindowPointerMove;
1601
+ private readonly onWindowPointerUp;
1602
+ ngOnChanges(changes: SimpleChanges): void;
1603
+ ngOnDestroy(): void;
1604
+ protected onPromptInput(value: string): void;
1605
+ protected onSubmit(): void;
1606
+ protected onPromptKeydown(event: KeyboardEvent): void;
1607
+ protected onPromptPaste(event: ClipboardEvent): void;
1608
+ protected onAttachClick(fileInput: HTMLInputElement): void;
1609
+ protected onAttachmentFilesSelected(event: Event): void;
1610
+ protected onApply(): void;
1611
+ protected onQuickReply(reply: PraxisAssistantShellQuickReply): void;
1612
+ protected getQuickReplyAriaLabel(reply: PraxisAssistantShellQuickReply): string;
1613
+ protected getQuickReplyTone(reply: PraxisAssistantShellQuickReply): string;
1614
+ protected onRemoveAttachment(attachment: PraxisAssistantShellAttachment): void;
1615
+ protected onMessageAction(message: PraxisAssistantShellMessage, action: PraxisAssistantShellMessageAction): void;
1616
+ protected getModeLabel(): string;
1617
+ protected getStateLabel(): string;
1618
+ protected startDrag(event: PointerEvent): void;
1619
+ protected startResize(event: PointerEvent): void;
1620
+ protected trackMessage(_index: number, message: PraxisAssistantShellMessage): string;
1621
+ protected trackMessageAction(_index: number, action: PraxisAssistantShellMessageAction): string;
1622
+ protected trackQuickReply(_index: number, reply: PraxisAssistantShellQuickReply): string;
1623
+ protected trackContextItem(_index: number, item: PraxisAssistantShellContextItem): string;
1624
+ protected trackAttachment(_index: number, attachment: PraxisAssistantShellAttachment): string;
1625
+ private startPointerSession;
1626
+ private handlePointerMove;
1627
+ private finishPointerSession;
1628
+ private detachPointerListeners;
1629
+ private resolveBounds;
1630
+ private normalizeLayout;
1631
+ private clampLayout;
1632
+ private clamp;
1633
+ private scheduleConversationScroll;
1634
+ private fileAttachment;
1635
+ private createAttachmentId;
1636
+ private attachmentKind;
1637
+ private revokeDetachedPastedPreviewUrls;
1638
+ private revokeAllOwnedPreviewUrls;
1639
+ private revokeOwnedPreviewUrl;
1640
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisAiAssistantShellComponent, never>;
1641
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisAiAssistantShellComponent, "praxis-ai-assistant-shell", never, { "labels": { "alias": "labels"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "state": { "alias": "state"; "required": false; }; "contextItems": { "alias": "contextItems"; "required": false; }; "attachments": { "alias": "attachments"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; "quickReplies": { "alias": "quickReplies"; "required": false; }; "prompt": { "alias": "prompt"; "required": false; }; "statusText": { "alias": "statusText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "testIdPrefix": { "alias": "testIdPrefix"; "required": false; }; "panelTestId": { "alias": "panelTestId"; "required": false; }; "submitTestId": { "alias": "submitTestId"; "required": false; }; "applyTestId": { "alias": "applyTestId"; "required": false; }; "busy": { "alias": "busy"; "required": false; }; "canSubmit": { "alias": "canSubmit"; "required": false; }; "canApply": { "alias": "canApply"; "required": false; }; "submitOnEnter": { "alias": "submitOnEnter"; "required": false; }; "enableFileAttachments": { "alias": "enableFileAttachments"; "required": false; }; "attachmentAccept": { "alias": "attachmentAccept"; "required": false; }; "attachmentMultiple": { "alias": "attachmentMultiple"; "required": false; }; "draggable": { "alias": "draggable"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "margin": { "alias": "margin"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; }, { "promptChange": "promptChange"; "submitPrompt": "submitPrompt"; "apply": "apply"; "close": "close"; "attach": "attach"; "attachmentsPasted": "attachmentsPasted"; "attachmentsSelected": "attachmentsSelected"; "removeAttachment": "removeAttachment"; "messageAction": "messageAction"; "editMessage": "editMessage"; "resendMessage": "resendMessage"; "quickReply": "quickReply"; "layoutChange": "layoutChange"; }, never, never, true, never>;
1642
+ }
1643
+
1069
1644
  declare class AiContextBuilderService {
1070
1645
  private schemaMinifier;
1071
1646
  constructor(schemaMinifier: SchemaMinifierService);
@@ -1137,5 +1712,5 @@ declare class AiRuleWizardDialogComponent implements OnInit {
1137
1712
  static ɵcmp: i0.ɵɵComponentDeclaration<AiRuleWizardDialogComponent, "praxis-ai-rule-wizard-dialog", never, {}, {}, never, never, true, never>;
1138
1713
  }
1139
1714
 
1140
- export { AI_INTENT_CONTRACT_SCHEMA_HASH, AI_INTENT_CONTRACT_VERSION, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PraxisAi, PraxisAiAssistantComponent, PraxisAiService, SchemaMinifierService };
1141
- export type { AiChatMessage, AiConfigAdapter, AiContextDTO, AiContextTemplate, AiContextTemplateMeta, AiCurrentStateDigest, AiExamplePair, AiGlobalConfigSnapshot, AiHeaderContext, AiIntegrationConfig, AiModel, AiOrchestratorRequest, AiOrchestratorResponse, AiPatchDiff, AiPatchStreamCancelResponse, AiPatchStreamConnection, AiPatchStreamConnectionErrorKind, AiPatchStreamEnvelope, AiPatchStreamEventType, AiPatchStreamStartResponse, AiProviderCatalogItem, AiProviderCatalogResponse, AiProviderModelsRequest, AiProviderModelsResponse, AiProviderStatusResponse, AiProviderTestRequest, AiProviderTestResponse, AiRuleResponse, AiSchemaContext, AiSuggestion, AiSuggestionsRequest, AiSuggestionsResponse, AiUiContextRef, AiValidationError, AiValidationResult, AiValidationWarning, AiWizardData, Capability, FieldSchemaLike, MinifiedField, PatchResult, PromptContext, RulePropertyDefinition, RulePropertySchema, RulePropertyType, ValidationContext, ValueKind };
1715
+ export { AI_BACKEND_CONFIG_STORE, 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, AiBackendApiService, AiPatchStreamConnectionError, AiResponseValidatorService, AiRuleWizardDialogComponent, BaseAiAdapter, PraxisAi, PraxisAiAssistantComponent, PraxisAiAssistantShellComponent, PraxisAiService, PraxisAssistantTurnController, PraxisAssistantTurnOrchestratorService, SchemaMinifierService };
1716
+ export type { AgenticAuthoringApplyRequestContract, AgenticAuthoringApplyResultContract, AgenticAuthoringAttachmentSummaryContract, AgenticAuthoringCandidateContract, AgenticAuthoringComponentCapabilitiesResultContract, AgenticAuthoringComponentCapabilityCatalogContract, AgenticAuthoringComponentCapabilityContract, AgenticAuthoringComponentCapabilityExampleContract, AgenticAuthoringComponentFieldAliasContract, AgenticAuthoringConversationContextContract, AgenticAuthoringConversationMessageContract, AgenticAuthoringIntentResolutionRequestContract, AgenticAuthoringIntentResolutionResultContract, AgenticAuthoringPendingClarificationContract, AgenticAuthoringPlanRequestContract, AgenticAuthoringPreviewResultContract, AgenticAuthoringQuickReplyContract, AgenticAuthoringResourceCandidatesRequestContract, AgenticAuthoringResourceCandidatesResultContract, AgenticAuthoringTurnStreamEnvelopeContract, AgenticAuthoringTurnStreamRequestContract, AgenticAuthoringTurnStreamStartResponseContract, AiBackendConfigStore, AiBackendStorageOptions, AiChatMessage, AiChatMessageContract, AiClarificationUiContract, AiConfigAdapter, AiContextDTO, AiContextTemplate, AiContextTemplateMeta, AiCurrentStateDigest, AiCurrentStateDigestContract, AiExamplePair, AiGlobalConfigSnapshot, 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, PraxisAssistantClarificationOption, PraxisAssistantClarificationQuestion, PraxisAssistantClarificationQuestionType, PraxisAssistantPendingClarification, PraxisAssistantShellAttachment, PraxisAssistantShellContextItem, PraxisAssistantShellLabels, PraxisAssistantShellLayout, PraxisAssistantShellMessage, PraxisAssistantShellMessageAction, PraxisAssistantShellMessageRole, PraxisAssistantShellMode, PraxisAssistantShellQuickReply, PraxisAssistantShellState, PraxisAssistantTurnAction, PraxisAssistantTurnControllerOptions, PraxisAssistantTurnFlow, PraxisAssistantTurnPhase, PraxisAssistantTurnRequest, PraxisAssistantTurnResult, PraxisAssistantTurnViewState, ProblemResponseContract, PromptContext, RulePropertyDefinition, RulePropertySchema, RulePropertyType, ValidationContext, ValueKind };