@praxisui/page-builder 8.0.0-beta.26 → 8.0.0-beta.27

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.
@@ -31,7 +31,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
31
31
  import * as i7 from '@angular/material/tabs';
32
32
  import { MatTabsModule } from '@angular/material/tabs';
33
33
  import { HttpClient, HttpHeaders } from '@angular/common/http';
34
- import { AI_STREAM_EVENT_TYPES, toPraxisAssistantConversationMessages, PraxisAssistantTurnOrchestratorService, PraxisAssistantSessionRegistryService, PraxisAiAssistantShellComponent } from '@praxisui/ai';
34
+ import { AI_STREAM_EVENT_TYPES, toPraxisAssistantConversationMessages, PraxisAssistantTurnOrchestratorService, PraxisAssistantSessionRegistryService, createPraxisAssistantViewportLayout, PraxisAiAssistantShellComponent } from '@praxisui/ai';
35
35
 
36
36
  const PLACEHOLDER = 1;
37
37
 
@@ -11345,10 +11345,11 @@ class PageBuilderAgenticAuthoringService {
11345
11345
  }
11346
11346
  createEventSource(url) {
11347
11347
  const factory = this.options?.eventSourceFactory;
11348
+ const options = { withCredentials: true };
11348
11349
  if (factory) {
11349
- return factory(url);
11350
+ return factory(url, options);
11350
11351
  }
11351
- return new EventSource(url);
11352
+ return new EventSource(url, options);
11352
11353
  }
11353
11354
  async probeTurnStreamEndpoint(url, abort) {
11354
11355
  if (typeof fetch === 'undefined') {
@@ -12010,7 +12011,7 @@ function compileUiCompositionPlan(plan) {
12010
12011
  layoutPreset: plan.layoutPreset,
12011
12012
  canvas: clone(plan.canvas),
12012
12013
  state: clone(plan.state),
12013
- widgets: plan.widgets.map(toWidgetInstance),
12014
+ widgets: plan.widgets.map((widget) => toWidgetInstance(widget, plan.bindings ?? [])),
12014
12015
  composition: {
12015
12016
  version: '1.0.0',
12016
12017
  links: (plan.bindings ?? []).map(toCompositionLink),
@@ -12170,17 +12171,32 @@ function validateNestedPath(nestedPath, diagnostics, path) {
12170
12171
  });
12171
12172
  }
12172
12173
  }
12173
- function toWidgetInstance(widget) {
12174
+ function toWidgetInstance(widget, bindings) {
12175
+ const outputs = linkedTopLevelOutputs(widget.key, widget.outputs, bindings);
12174
12176
  return {
12175
12177
  key: widget.key,
12176
12178
  definition: {
12177
12179
  id: widget.componentId,
12178
12180
  bindingOrder: widget.bindingOrder,
12179
12181
  inputs: clone(widget.inputs ?? {}),
12180
- outputs: clone(widget.outputs ?? {}),
12182
+ outputs,
12181
12183
  },
12182
12184
  };
12183
12185
  }
12186
+ function linkedTopLevelOutputs(widgetKey, declaredOutputs, bindings) {
12187
+ const outputs = clone(declaredOutputs ?? {});
12188
+ for (const binding of bindings) {
12189
+ const endpoint = binding.from;
12190
+ if (endpoint.kind !== 'component-port'
12191
+ || endpoint.direction !== 'output'
12192
+ || endpoint.widget !== widgetKey
12193
+ || endpoint.nestedPath?.length) {
12194
+ continue;
12195
+ }
12196
+ outputs[endpoint.port] ??= 'emit';
12197
+ }
12198
+ return outputs;
12199
+ }
12184
12200
  function toCompositionLink(binding) {
12185
12201
  const transform = binding.transform ? toCompositionTransform(binding.transform) : undefined;
12186
12202
  return {
@@ -13358,7 +13374,7 @@ class PageBuilderAgenticAuthoringTurnFlow {
13358
13374
  }
13359
13375
  shouldFallbackFromTurnStreamError(error) {
13360
13376
  if (this.isTurnStreamConnectionError(error)) {
13361
- return false;
13377
+ return true;
13362
13378
  }
13363
13379
  if (this.isTurnStreamStartTimeout(error)) {
13364
13380
  return true;
@@ -13688,8 +13704,8 @@ class PageBuilderAgenticAuthoringTurnFlow {
13688
13704
  || operationKind === 'remove';
13689
13705
  return !!intentResolution.valid
13690
13706
  && intentResolution.gate?.status === 'eligible'
13691
- && !!intentResolution.selectedCandidate
13692
13707
  && ((allowsMaterializedArtifactOperation
13708
+ && !!intentResolution.selectedCandidate
13693
13709
  && (artifactKind === 'form'
13694
13710
  || artifactKind === 'dashboard'
13695
13711
  || artifactKind === 'table'))
@@ -13705,12 +13721,15 @@ class PageBuilderAgenticAuthoringTurnFlow {
13705
13721
  return this.isExplicitPreviewCreationPrompt(prompt);
13706
13722
  }
13707
13723
  isGuidedPreviewIntent(intentResolution) {
13708
- if (!intentResolution.valid || intentResolution.gate?.status !== 'eligible' || !intentResolution.selectedCandidate) {
13724
+ if (!intentResolution.valid || intentResolution.gate?.status !== 'eligible') {
13709
13725
  return false;
13710
13726
  }
13711
13727
  if (this.isExecutableIntent(intentResolution)) {
13712
13728
  return true;
13713
13729
  }
13730
+ if (!intentResolution.selectedCandidate) {
13731
+ return false;
13732
+ }
13714
13733
  const artifactKind = intentResolution.artifactKind;
13715
13734
  return (artifactKind === 'dashboard' || artifactKind === 'page' || artifactKind === 'table' || artifactKind === 'form')
13716
13735
  && (intentResolution.operationKind === 'compose' || intentResolution.operationKind === 'explore');
@@ -13759,9 +13778,19 @@ class PageBuilderAgenticAuthoringTurnFlow {
13759
13778
  return action && artifact;
13760
13779
  }
13761
13780
  isExecutablePageCompositionIntent(intentResolution) {
13762
- return intentResolution.artifactKind === 'page'
13763
- && intentResolution.operationKind === 'compose'
13764
- && intentResolution.authoringProfile === 'ui-composition-plan@0.1.0';
13781
+ if (intentResolution.artifactKind !== 'page') {
13782
+ return false;
13783
+ }
13784
+ if ((intentResolution.operationKind === 'compose' || intentResolution.operationKind === 'modify')
13785
+ && intentResolution.authoringProfile === 'ui-composition-plan@0.1.0') {
13786
+ return true;
13787
+ }
13788
+ if (intentResolution.operationKind !== 'create') {
13789
+ return false;
13790
+ }
13791
+ return intentResolution.changeKind === 'create_master_detail'
13792
+ || intentResolution.changeKind === 'create_tabbed_master_detail_form'
13793
+ || intentResolution.changeKind === 'create_artifact';
13765
13794
  }
13766
13795
  resolveIntentClarification(intentResolution) {
13767
13796
  const questions = this.readIntentResolutionStringList(intentResolution?.clarificationQuestions);
@@ -14094,6 +14123,7 @@ function projectKnowledgeTarget(changeSet, conceptKey) {
14094
14123
  };
14095
14124
  }
14096
14125
 
14126
+ const AGENTIC_PAGE_COMPOSITION_REQUEST_OUTPUT = 'agenticPageCompositionRequested';
14097
14127
  class DynamicPageBuilderComponent {
14098
14128
  dialog;
14099
14129
  settingsPanel;
@@ -14129,6 +14159,7 @@ class DynamicPageBuilderComponent {
14129
14159
  pageLifecycleBusy = false;
14130
14160
  pageLifecycleResetRevision = null;
14131
14161
  pageChange = new EventEmitter();
14162
+ pageSaveRequested = new EventEmitter();
14132
14163
  agenticAuthoringApplied = new EventEmitter();
14133
14164
  agenticAuthoringSharedRuleHandoff = new EventEmitter();
14134
14165
  pageRestart = new EventEmitter();
@@ -14178,6 +14209,7 @@ class DynamicPageBuilderComponent {
14178
14209
  agenticComponentCapabilitiesPromise;
14179
14210
  agenticTurnController;
14180
14211
  sharedRuleHandoffRevision = 0;
14212
+ agenticAuthoringPanelLayoutTouched = false;
14181
14213
  constructor(dialog, settingsPanel) {
14182
14214
  this.dialog = dialog;
14183
14215
  this.settingsPanel = settingsPanel;
@@ -14206,6 +14238,24 @@ class DynamicPageBuilderComponent {
14206
14238
  this.clearSelectedWidgetIfMissing(cloned);
14207
14239
  this.pageChange.emit(cloned);
14208
14240
  }
14241
+ onRuntimeWidgetEvent(event) {
14242
+ if (event.output !== AGENTIC_PAGE_COMPOSITION_REQUEST_OUTPUT) {
14243
+ return;
14244
+ }
14245
+ const payload = this.toRecord(event.payload);
14246
+ const prompt = typeof payload?.['prompt'] === 'string' ? payload['prompt'].trim() : '';
14247
+ if (!prompt) {
14248
+ return;
14249
+ }
14250
+ const ownerWidgetKey = typeof event.ownerWidgetKey === 'string' ? event.ownerWidgetKey.trim() : '';
14251
+ if (ownerWidgetKey && this.resolveWidgetByKey(ownerWidgetKey)) {
14252
+ this.selectedWidgetKey.set(ownerWidgetKey);
14253
+ this.agenticAuthoringWidgetContextKey.set(ownerWidgetKey);
14254
+ }
14255
+ this.agenticAuthoringPrompt.set(prompt);
14256
+ this.openAgenticAuthoring();
14257
+ void this.previewAgenticAuthoring();
14258
+ }
14209
14259
  onConnectionEditorPageChange(next) {
14210
14260
  const cloned = this.clonePage(next);
14211
14261
  this.currentPage.set(cloned);
@@ -14214,7 +14264,7 @@ class DynamicPageBuilderComponent {
14214
14264
  }
14215
14265
  onRuntimeWidgetSelectionChange(widgetKey) {
14216
14266
  this.selectedWidgetKey.set(widgetKey);
14217
- if (this.agenticAuthoringWidgetContextKey()) {
14267
+ if (widgetKey && this.agenticAuthoringWidgetContextKey()) {
14218
14268
  this.agenticAuthoringWidgetContextKey.set(widgetKey);
14219
14269
  }
14220
14270
  }
@@ -14257,7 +14307,7 @@ class DynamicPageBuilderComponent {
14257
14307
  const type = resolved.componentId;
14258
14308
  const next = this.clonePage(this.currentPage());
14259
14309
  const key = `${type}-${generateId()}`;
14260
- const inputs = this.defaultInputsFor(type, resolved.inputs);
14310
+ const inputs = this.defaultInputsFor(type, resolved.inputs, key);
14261
14311
  const widgets = [...(next.widgets || []), { key, definition: { id: type, inputs } }];
14262
14312
  next.widgets = widgets;
14263
14313
  if (next.canvas) {
@@ -14284,9 +14334,11 @@ class DynamicPageBuilderComponent {
14284
14334
  this.runtime?.openPageSettings();
14285
14335
  }
14286
14336
  saveCurrentPage() {
14287
- const cloned = this.clonePage(this.currentPage());
14337
+ const runtimeSnapshot = this.runtime?.getPageSnapshot();
14338
+ const cloned = this.clonePage(runtimeSnapshot || this.currentPage());
14288
14339
  this.currentPage.set(cloned);
14289
14340
  this.pageChange.emit(cloned);
14341
+ this.pageSaveRequested.emit(this.clonePage(cloned));
14290
14342
  }
14291
14343
  applyConfigFromAdapter(config) {
14292
14344
  if (!config.page)
@@ -14338,6 +14390,17 @@ class DynamicPageBuilderComponent {
14338
14390
  this.agenticAuthoringError.set('');
14339
14391
  this.syncAgenticAuthoringSession('minimized');
14340
14392
  }
14393
+ onAgenticAuthoringLayoutChange(layout) {
14394
+ this.agenticAuthoringPanelLayoutTouched = true;
14395
+ this.agenticAuthoringPanelLayout.set(layout);
14396
+ }
14397
+ agenticAuthoringReviewRailActive() {
14398
+ return this.showSettings()
14399
+ && this.enableAgenticAuthoring
14400
+ && this.agenticAuthoringOpen()
14401
+ && !!this.agenticAuthoringPreviewResult()?.valid
14402
+ && !this.agenticAuthoringPanelLayoutTouched;
14403
+ }
14341
14404
  showAgenticAuthoringDock() {
14342
14405
  return this.showSettings()
14343
14406
  && this.enableAgenticAuthoring
@@ -14975,9 +15038,10 @@ class DynamicPageBuilderComponent {
14975
15038
  if (this.isGenericDataSourceQuickReplyPrompt(prompt) && this.isConfirmationQuickReply(reply)) {
14976
15039
  return this.agenticQuickReplyGovernedConfirmationPrompt(contextHints, visiblePrompt);
14977
15040
  }
14978
- return this.isHumanSafeResourceQuickReplyPrompt(prompt, contextHints)
14979
- ? prompt
14980
- : visiblePrompt;
15041
+ if (this.isHumanSafeResourceQuickReplyPrompt(prompt, contextHints)) {
15042
+ return prompt;
15043
+ }
15044
+ return this.agenticQuickReplyClarificationConfirmationPrompt(pendingClarification, visiblePrompt);
14981
15045
  }
14982
15046
  agenticQuickReplyClarificationConfirmationPrompt(pendingClarification, confirmationText) {
14983
15047
  const sourcePrompt = (pendingClarification?.sourcePrompt || '').trim();
@@ -16005,6 +16069,7 @@ class DynamicPageBuilderComponent {
16005
16069
  : state.statusText);
16006
16070
  this.agenticAuthoringError.set(state.errorText);
16007
16071
  this.agenticAuthoringPreviewResult.set(preview);
16072
+ this.moveAgenticAuthoringPanelToReviewSidecar(preview);
16008
16073
  this.agenticAuthoringAttachments.set(state.attachments);
16009
16074
  if (!this.sameSharedRuleHandoffIdentity(previousHandoff, handoff)) {
16010
16075
  this.clearSharedRuleCockpitState();
@@ -16053,6 +16118,17 @@ class DynamicPageBuilderComponent {
16053
16118
  this.agenticAuthoringSharedRuleHandoff.emit(resolved);
16054
16119
  }
16055
16120
  }
16121
+ moveAgenticAuthoringPanelToReviewSidecar(preview) {
16122
+ if (!preview?.valid || this.agenticAuthoringPanelLayoutTouched) {
16123
+ return;
16124
+ }
16125
+ this.agenticAuthoringPanelLayout.set(createPraxisAssistantViewportLayout({
16126
+ width: 440,
16127
+ height: 560,
16128
+ top: 96,
16129
+ margin: 24,
16130
+ }));
16131
+ }
16056
16132
  resolveAgenticSharedRuleHandoff(state) {
16057
16133
  const diagnostics = this.toRecord(state.diagnostics);
16058
16134
  const intentResolution = this.toRecord(diagnostics?.['intentResolution']);
@@ -16295,7 +16371,7 @@ class DynamicPageBuilderComponent {
16295
16371
  this.agenticAuthoringWidgetContextKey.set(null);
16296
16372
  }
16297
16373
  }
16298
- defaultInputsFor(type, presetInputs) {
16374
+ defaultInputsFor(type, presetInputs, widgetKey) {
16299
16375
  const metadata = this.componentMetadata.get(type);
16300
16376
  const inputs = {};
16301
16377
  for (const input of metadata?.inputs ?? []) {
@@ -16303,6 +16379,12 @@ class DynamicPageBuilderComponent {
16303
16379
  inputs[input.name] = this.cloneValue(input.default);
16304
16380
  }
16305
16381
  }
16382
+ if (metadata?.authoringManifestRef?.componentId
16383
+ && metadata.inputs?.some((input) => input.name === 'enableCustomization')
16384
+ && presetInputs?.['enableCustomization'] === undefined) {
16385
+ inputs['enableCustomization'] = true;
16386
+ }
16387
+ this.applyWidgetIdentityDefaults(metadata?.inputs, inputs, presetInputs, widgetKey);
16306
16388
  if (!presetInputs) {
16307
16389
  return inputs;
16308
16390
  }
@@ -16311,6 +16393,18 @@ class DynamicPageBuilderComponent {
16311
16393
  ...this.cloneValue(presetInputs),
16312
16394
  };
16313
16395
  }
16396
+ applyWidgetIdentityDefaults(metadataInputs, inputs, presetInputs, widgetKey) {
16397
+ if (!metadataInputs?.length || !widgetKey)
16398
+ return;
16399
+ const inputNames = new Set(metadataInputs.map((input) => input.name));
16400
+ for (const identityInput of ['componentInstanceId', 'tabsId', 'formId']) {
16401
+ if (inputNames.has(identityInput)
16402
+ && inputs[identityInput] === undefined
16403
+ && presetInputs?.[identityInput] === undefined) {
16404
+ inputs[identityInput] = widgetKey;
16405
+ }
16406
+ }
16407
+ }
16314
16408
  resolveAgenticComponentId() {
16315
16409
  const explicit = this.agenticAuthoringComponentId?.trim();
16316
16410
  if (explicit)
@@ -16321,9 +16415,9 @@ class DynamicPageBuilderComponent {
16321
16415
  return null;
16322
16416
  }
16323
16417
  resolveSelectedWidgetKey() {
16324
- const selected = this.agenticAuthoringWidgetContextKey();
16325
- if (selected && this.resolveWidgetByKey(selected)) {
16326
- return selected;
16418
+ const pinnedSelection = this.agenticAuthoringWidgetContextKey();
16419
+ if (pinnedSelection && this.resolveWidgetByKey(pinnedSelection)) {
16420
+ return pinnedSelection;
16327
16421
  }
16328
16422
  return null;
16329
16423
  }
@@ -16435,17 +16529,20 @@ class DynamicPageBuilderComponent {
16435
16529
  return resolvePraxisPageBuilderText(this.i18n, key, fallback);
16436
16530
  }
16437
16531
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicPageBuilderComponent, deps: [{ token: i1.MatDialog }, { token: SETTINGS_PANEL_BRIDGE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
16438
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: DynamicPageBuilderComponent, isStandalone: true, selector: "praxis-dynamic-page-builder", inputs: { page: "page", context: "context", strictValidation: "strictValidation", autoPersist: "autoPersist", enableCustomization: "enableCustomization", showSettingsButton: "showSettingsButton", pageIdentity: "pageIdentity", componentInstanceId: "componentInstanceId", pageEditorComponent: "pageEditorComponent", enableAgenticAuthoring: "enableAgenticAuthoring", agenticAuthoringProvider: "agenticAuthoringProvider", agenticAuthoringModel: "agenticAuthoringModel", agenticAuthoringApiKey: "agenticAuthoringApiKey", agenticAuthoringComponentId: "agenticAuthoringComponentId", agenticAuthoringScope: "agenticAuthoringScope", agenticAuthoringEtag: "agenticAuthoringEtag", agenticAuthoringIncludeLlmDiagnostics: "agenticAuthoringIncludeLlmDiagnostics", agenticAuthoringEnableStreaming: "agenticAuthoringEnableStreaming", agenticAuthoringContextHints: "agenticAuthoringContextHints", showPageLifecycleActions: "showPageLifecycleActions", canDeleteSavedPage: "canDeleteSavedPage", pageLifecycleBusy: "pageLifecycleBusy", pageLifecycleResetRevision: "pageLifecycleResetRevision" }, outputs: { pageChange: "pageChange", agenticAuthoringApplied: "agenticAuthoringApplied", agenticAuthoringSharedRuleHandoff: "agenticAuthoringSharedRuleHandoff", pageRestart: "pageRestart", savedPageDeleteRequested: "savedPageDeleteRequested" }, providers: [
16532
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: DynamicPageBuilderComponent, isStandalone: true, selector: "praxis-dynamic-page-builder", inputs: { page: "page", context: "context", strictValidation: "strictValidation", autoPersist: "autoPersist", enableCustomization: "enableCustomization", showSettingsButton: "showSettingsButton", pageIdentity: "pageIdentity", componentInstanceId: "componentInstanceId", pageEditorComponent: "pageEditorComponent", enableAgenticAuthoring: "enableAgenticAuthoring", agenticAuthoringProvider: "agenticAuthoringProvider", agenticAuthoringModel: "agenticAuthoringModel", agenticAuthoringApiKey: "agenticAuthoringApiKey", agenticAuthoringComponentId: "agenticAuthoringComponentId", agenticAuthoringScope: "agenticAuthoringScope", agenticAuthoringEtag: "agenticAuthoringEtag", agenticAuthoringIncludeLlmDiagnostics: "agenticAuthoringIncludeLlmDiagnostics", agenticAuthoringEnableStreaming: "agenticAuthoringEnableStreaming", agenticAuthoringContextHints: "agenticAuthoringContextHints", showPageLifecycleActions: "showPageLifecycleActions", canDeleteSavedPage: "canDeleteSavedPage", pageLifecycleBusy: "pageLifecycleBusy", pageLifecycleResetRevision: "pageLifecycleResetRevision" }, outputs: { pageChange: "pageChange", pageSaveRequested: "pageSaveRequested", agenticAuthoringApplied: "agenticAuthoringApplied", agenticAuthoringSharedRuleHandoff: "agenticAuthoringSharedRuleHandoff", pageRestart: "pageRestart", savedPageDeleteRequested: "savedPageDeleteRequested" }, providers: [
16439
16533
  providePraxisPageBuilderI18n(),
16440
16534
  { provide: DYNAMIC_PAGE_SHELL_EDITOR, useValue: WidgetShellEditorComponent },
16441
16535
  ], viewQueries: [{ propertyName: "runtime", first: true, predicate: ["runtime"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
16442
- <div class="builder-shell">
16536
+ <div
16537
+ class="builder-shell"
16538
+ [class.builder-shell--agentic-review-rail]="agenticAuthoringReviewRailActive()"
16539
+ >
16443
16540
  <praxis-dynamic-page
16444
16541
  #runtime
16445
16542
  [page]="currentPage()"
16446
16543
  [context]="context"
16447
16544
  [strictValidation]="strictValidation"
16448
- [autoPersist]="autoPersist"
16545
+ [autoPersist]="false"
16449
16546
  [enableCustomization]="showSettings()"
16450
16547
  [showPageSettingsButton]="false"
16451
16548
  [pageIdentity]="pageIdentity"
@@ -16453,6 +16550,7 @@ class DynamicPageBuilderComponent {
16453
16550
  [pageEditorComponent]="pageEditorComponent"
16454
16551
  [showWidgetAssistantButton]="enableAgenticAuthoring"
16455
16552
  (pageChange)="onRuntimePageChange($event)"
16553
+ (widgetEvent)="onRuntimeWidgetEvent($event)"
16456
16554
  (widgetSelectionChange)="onRuntimeWidgetSelectionChange($event)"
16457
16555
  (widgetAssistantRequested)="openAgenticAuthoringForWidget($event)"
16458
16556
  />
@@ -16500,7 +16598,7 @@ class DynamicPageBuilderComponent {
16500
16598
  (removeAttachment)="removeAgenticAttachment($event)"
16501
16599
  (editMessage)="editAgenticMessage($event)"
16502
16600
  (resendMessage)="resendAgenticMessage($event)"
16503
- (layoutChange)="agenticAuthoringPanelLayout.set($event)"
16601
+ (layoutChange)="onAgenticAuthoringLayoutChange($event)"
16504
16602
  (close)="minimizeAgenticAuthoring()"
16505
16603
  />
16506
16604
 
@@ -16778,7 +16876,7 @@ class DynamicPageBuilderComponent {
16778
16876
  [visible]="showSettings()"
16779
16877
  [canUndo]="false"
16780
16878
  [canRedo]="false"
16781
- [showSave]="autoPersist && hasPageWidgets()"
16879
+ [showSave]="hasPageWidgets()"
16782
16880
  [showPreview]="hasPageWidgets()"
16783
16881
  (add)="onAddComponent()"
16784
16882
  (settings)="openPageSettings()"
@@ -16841,7 +16939,7 @@ class DynamicPageBuilderComponent {
16841
16939
  </button>
16842
16940
  </praxis-floating-toolbar>
16843
16941
  </div>
16844
- `, isInline: true, styles: [":host{display:block;position:relative;min-height:var(--pdx-page-builder-min-height, 420px)}.builder-shell{display:block;position:relative;min-height:inherit;height:100%}.agentic-diagnostics-panel{position:absolute;z-index:21;right:16px;width:min(520px,calc(100% - 32px));max-height:min(440px,calc(100% - 32px));overflow:auto;padding:12px;border:1px solid rgba(107,114,128,.28);border-radius:8px;background:#fffffff5;color:#111827;box-shadow:0 14px 36px #0000003d}.agentic-diagnostics-panel--collapsed{width:min(280px,calc(100% - 32px));max-height:58px;overflow:hidden;padding:10px 12px;pointer-events:auto}.agentic-diagnostics-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}.agentic-diagnostics-panel__header-actions{display:flex;align-items:center;gap:8px}.agentic-diagnostics-panel__badge{padding:2px 6px;border:1px solid rgba(107,114,128,.28);border-radius:8px;font-size:11px;font-weight:600;color:#4b5563}.agentic-diagnostics-panel__toggle,.shared-rule-cockpit__toggle{appearance:none;border:1px solid rgba(30,64,175,.18);border-radius:999px;background:#ffffffd6;color:#1e3a8a;cursor:pointer;font-size:11px;font-weight:700;line-height:1;padding:6px 9px;white-space:nowrap}.agentic-diagnostics-panel__description{margin:8px 0 10px;color:#4b5563;font-size:12px;line-height:1.4}.agentic-diagnostics-panel pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.45;color:#1f2937}praxis-ai-assistant-shell{position:relative;z-index:140}.builder-shell__agentic-toggle{position:relative}.builder-shell__agentic-toggle--open,.builder-shell__agentic-toggle--minimized{outline:2px solid rgba(96,165,250,.52);outline-offset:2px}.builder-shell__agentic-toggle--minimized:after{content:\"\";position:absolute;top:6px;right:6px;width:8px;height:8px;border:2px solid var(--md-sys-color-surface, #111827);border-radius:999px;background:#34d399}.shared-rule-cockpit{position:absolute;z-index:120;left:16px;bottom:88px;width:min(720px,calc(100% - 32px));max-height:min(560px,calc(100vh - 140px));padding:14px;border:1px solid rgba(30,64,175,.22);border-radius:12px;background:linear-gradient(135deg,#eff6fffa,#fffbebf5);color:#172554;box-shadow:0 18px 46px #0f172a38;overflow:auto;overscroll-behavior:contain}.shared-rule-cockpit--collapsed{width:min(360px,calc(100% - 32px));max-height:72px;overflow:hidden;padding:10px 12px}.shared-rule-cockpit__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-rule-cockpit__header-actions{display:flex;align-items:center;gap:8px}.shared-rule-cockpit__header div{display:grid;gap:2px}.shared-rule-cockpit__header strong{font-size:14px;line-height:1.2}.shared-rule-cockpit__header span{color:#475569;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__badge{flex:0 0 auto;max-width:220px;padding:3px 8px;border:1px solid rgba(30,64,175,.2);border-radius:999px;background:#ffffffbd;color:#1e3a8a;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-rule-cockpit__description,.shared-rule-cockpit__status,.shared-rule-cockpit__error{margin:10px 0 0;color:#334155;font-size:12px;line-height:1.45}.shared-rule-cockpit__error{color:#991b1b;font-weight:600}.shared-rule-cockpit__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shared-rule-cockpit__facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}.shared-rule-cockpit__facts div{min-width:0;padding:8px;border-radius:10px;background:#ffffffb8}.shared-rule-cockpit__facts dt{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.shared-rule-cockpit__facts dd{margin:4px 0 0;color:#0f172a;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__enforcement-matrix{display:grid;gap:10px;margin-top:12px;padding:10px;border:1px solid rgba(30,64,175,.14);border-radius:12px;background:#ffffff94}.shared-rule-cockpit__matrix-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.shared-rule-cockpit__matrix-header div{display:grid;gap:2px}.shared-rule-cockpit__matrix-header strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__matrix-header span,.shared-rule-cockpit__matrix-source{color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-badge{flex:0 0 auto;padding:3px 8px;border-radius:999px;background:#16a34a1f;color:#166534;font-weight:800;white-space:nowrap}.shared-rule-cockpit__projection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shared-rule-cockpit__projection{display:grid;gap:3px;min-width:0;padding:9px;border:1px solid rgba(15,23,42,.08);border-radius:11px;background:#f8fafcd1}.shared-rule-cockpit__projection[data-status=ready]{border-color:#16a34a33;background:#f0fdf4d1}.shared-rule-cockpit__projection span{color:#1d4ed8;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}.shared-rule-cockpit__projection strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__projection small,.shared-rule-cockpit__projection em{color:#475569;font-size:11px;font-style:normal;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-source{margin:0}.shared-rule-cockpit__timeline{display:grid;gap:8px;max-height:190px;margin:12px 0 0;padding:0;overflow:auto;list-style:none}.shared-rule-cockpit__timeline-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px;border:1px solid rgba(30,64,175,.12);border-radius:12px;background:#ffffffc2}.shared-rule-cockpit__timeline-icon{display:grid;width:24px;height:24px;place-items:center;border-radius:999px;background:#1e40af1a;color:#1e3a8a;font-family:Material Icons;font-size:16px;line-height:1}.shared-rule-cockpit__timeline-item strong{color:#0f172a;font-size:12px;line-height:1.35}.shared-rule-cockpit__timeline-item p,.shared-rule-cockpit__timeline-item small,.shared-rule-cockpit__timeline-item time,.shared-rule-cockpit__timeline-empty{display:block;margin:3px 0 0;color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__timeline-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#0ea5e91f;color:#075985;font-size:10px;font-weight:700}.shared-rule-cockpit__timeline-empty{padding:10px;border-radius:12px;background:#ffffffa3}@media(max-width:720px){.shared-rule-cockpit{bottom:72px;max-height:calc(100vh - 112px)}.shared-rule-cockpit__facts,.shared-rule-cockpit__projection-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: DynamicWidgetPageComponent, selector: "praxis-dynamic-page", inputs: ["page", "context", "strictValidation", "enableCustomization", "showPageSettingsButton", "shellEditorComponent", "pageEditorComponent", "autoPersist", "pageIdentity", "componentInstanceId", "showWidgetAssistantButton"], outputs: ["pageChange", "widgetEvent", "widgetSelectionChange", "widgetAssistantRequested", "widgetDiagnosticsChange"] }, { kind: "component", type: FloatingToolbarComponent, selector: "praxis-floating-toolbar", inputs: ["visible", "canUndo", "canRedo", "showSave", "showPreview"], outputs: ["add", "undo", "redo", "settings", "preview", "save"] }, { kind: "component", type: ConnectionEditorComponent, selector: "praxis-connection-editor", inputs: ["open", "page"], outputs: ["pageChange", "focusWidget", "openPageSettings"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "layoutChange"] }] });
16942
+ `, isInline: true, styles: [":host{display:block;position:relative;min-height:var(--pdx-page-builder-min-height, 420px)}.builder-shell{display:block;position:relative;min-height:inherit;height:100%}.agentic-diagnostics-panel{position:absolute;z-index:21;right:16px;width:min(520px,calc(100% - 32px));max-height:min(440px,calc(100% - 32px));overflow:auto;padding:12px;border:1px solid rgba(107,114,128,.28);border-radius:8px;background:#fffffff5;color:#111827;box-shadow:0 14px 36px #0000003d}.agentic-diagnostics-panel--collapsed{width:min(280px,calc(100% - 32px));max-height:58px;overflow:hidden;padding:10px 12px;pointer-events:auto}.agentic-diagnostics-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}.agentic-diagnostics-panel__header-actions{display:flex;align-items:center;gap:8px}.agentic-diagnostics-panel__badge{padding:2px 6px;border:1px solid rgba(107,114,128,.28);border-radius:8px;font-size:11px;font-weight:600;color:#4b5563}.agentic-diagnostics-panel__toggle,.shared-rule-cockpit__toggle{appearance:none;border:1px solid rgba(30,64,175,.18);border-radius:999px;background:#ffffffd6;color:#1e3a8a;cursor:pointer;font-size:11px;font-weight:700;line-height:1;padding:6px 9px;white-space:nowrap}.agentic-diagnostics-panel__description{margin:8px 0 10px;color:#4b5563;font-size:12px;line-height:1.4}.agentic-diagnostics-panel pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.45;color:#1f2937}praxis-ai-assistant-shell{position:relative;z-index:140}@media(min-width:1100px){.builder-shell--agentic-review-rail{box-sizing:border-box;padding-right:464px}}.builder-shell__agentic-toggle{position:relative}.builder-shell__agentic-toggle--open,.builder-shell__agentic-toggle--minimized{outline:2px solid rgba(96,165,250,.52);outline-offset:2px}.builder-shell__agentic-toggle--minimized:after{content:\"\";position:absolute;top:6px;right:6px;width:8px;height:8px;border:2px solid var(--md-sys-color-surface, #111827);border-radius:999px;background:#34d399}.shared-rule-cockpit{position:absolute;z-index:120;left:16px;bottom:88px;width:min(720px,calc(100% - 32px));max-height:min(560px,calc(100vh - 140px));padding:14px;border:1px solid rgba(30,64,175,.22);border-radius:12px;background:linear-gradient(135deg,#eff6fffa,#fffbebf5);color:#172554;box-shadow:0 18px 46px #0f172a38;overflow:auto;overscroll-behavior:contain}.shared-rule-cockpit--collapsed{width:min(360px,calc(100% - 32px));max-height:72px;overflow:hidden;padding:10px 12px}.shared-rule-cockpit__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-rule-cockpit__header-actions{display:flex;align-items:center;gap:8px}.shared-rule-cockpit__header div{display:grid;gap:2px}.shared-rule-cockpit__header strong{font-size:14px;line-height:1.2}.shared-rule-cockpit__header span{color:#475569;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__badge{flex:0 0 auto;max-width:220px;padding:3px 8px;border:1px solid rgba(30,64,175,.2);border-radius:999px;background:#ffffffbd;color:#1e3a8a;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-rule-cockpit__description,.shared-rule-cockpit__status,.shared-rule-cockpit__error{margin:10px 0 0;color:#334155;font-size:12px;line-height:1.45}.shared-rule-cockpit__error{color:#991b1b;font-weight:600}.shared-rule-cockpit__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shared-rule-cockpit__facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}.shared-rule-cockpit__facts div{min-width:0;padding:8px;border-radius:10px;background:#ffffffb8}.shared-rule-cockpit__facts dt{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.shared-rule-cockpit__facts dd{margin:4px 0 0;color:#0f172a;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__enforcement-matrix{display:grid;gap:10px;margin-top:12px;padding:10px;border:1px solid rgba(30,64,175,.14);border-radius:12px;background:#ffffff94}.shared-rule-cockpit__matrix-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.shared-rule-cockpit__matrix-header div{display:grid;gap:2px}.shared-rule-cockpit__matrix-header strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__matrix-header span,.shared-rule-cockpit__matrix-source{color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-badge{flex:0 0 auto;padding:3px 8px;border-radius:999px;background:#16a34a1f;color:#166534;font-weight:800;white-space:nowrap}.shared-rule-cockpit__projection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shared-rule-cockpit__projection{display:grid;gap:3px;min-width:0;padding:9px;border:1px solid rgba(15,23,42,.08);border-radius:11px;background:#f8fafcd1}.shared-rule-cockpit__projection[data-status=ready]{border-color:#16a34a33;background:#f0fdf4d1}.shared-rule-cockpit__projection span{color:#1d4ed8;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}.shared-rule-cockpit__projection strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__projection small,.shared-rule-cockpit__projection em{color:#475569;font-size:11px;font-style:normal;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-source{margin:0}.shared-rule-cockpit__timeline{display:grid;gap:8px;max-height:190px;margin:12px 0 0;padding:0;overflow:auto;list-style:none}.shared-rule-cockpit__timeline-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px;border:1px solid rgba(30,64,175,.12);border-radius:12px;background:#ffffffc2}.shared-rule-cockpit__timeline-icon{display:grid;width:24px;height:24px;place-items:center;border-radius:999px;background:#1e40af1a;color:#1e3a8a;font-family:Material Icons;font-size:16px;line-height:1}.shared-rule-cockpit__timeline-item strong{color:#0f172a;font-size:12px;line-height:1.35}.shared-rule-cockpit__timeline-item p,.shared-rule-cockpit__timeline-item small,.shared-rule-cockpit__timeline-item time,.shared-rule-cockpit__timeline-empty{display:block;margin:3px 0 0;color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__timeline-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#0ea5e91f;color:#075985;font-size:10px;font-weight:700}.shared-rule-cockpit__timeline-empty{padding:10px;border-radius:12px;background:#ffffffa3}@media(max-width:720px){.shared-rule-cockpit{bottom:72px;max-height:calc(100vh - 112px)}.shared-rule-cockpit__facts,.shared-rule-cockpit__projection-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: DynamicWidgetPageComponent, selector: "praxis-dynamic-page", inputs: ["page", "context", "strictValidation", "enableCustomization", "showPageSettingsButton", "shellEditorComponent", "pageEditorComponent", "autoPersist", "pageIdentity", "componentInstanceId", "showWidgetAssistantButton"], outputs: ["pageChange", "widgetEvent", "widgetSelectionChange", "widgetAssistantRequested", "widgetDiagnosticsChange"] }, { kind: "component", type: FloatingToolbarComponent, selector: "praxis-floating-toolbar", inputs: ["visible", "canUndo", "canRedo", "showSave", "showPreview"], outputs: ["add", "undo", "redo", "settings", "preview", "save"] }, { kind: "component", type: ConnectionEditorComponent, selector: "praxis-connection-editor", inputs: ["open", "page"], outputs: ["pageChange", "focusWidget", "openPageSettings"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "layoutChange"] }] });
16845
16943
  }
16846
16944
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicPageBuilderComponent, decorators: [{
16847
16945
  type: Component,
@@ -16859,13 +16957,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
16859
16957
  providePraxisPageBuilderI18n(),
16860
16958
  { provide: DYNAMIC_PAGE_SHELL_EDITOR, useValue: WidgetShellEditorComponent },
16861
16959
  ], template: `
16862
- <div class="builder-shell">
16960
+ <div
16961
+ class="builder-shell"
16962
+ [class.builder-shell--agentic-review-rail]="agenticAuthoringReviewRailActive()"
16963
+ >
16863
16964
  <praxis-dynamic-page
16864
16965
  #runtime
16865
16966
  [page]="currentPage()"
16866
16967
  [context]="context"
16867
16968
  [strictValidation]="strictValidation"
16868
- [autoPersist]="autoPersist"
16969
+ [autoPersist]="false"
16869
16970
  [enableCustomization]="showSettings()"
16870
16971
  [showPageSettingsButton]="false"
16871
16972
  [pageIdentity]="pageIdentity"
@@ -16873,6 +16974,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
16873
16974
  [pageEditorComponent]="pageEditorComponent"
16874
16975
  [showWidgetAssistantButton]="enableAgenticAuthoring"
16875
16976
  (pageChange)="onRuntimePageChange($event)"
16977
+ (widgetEvent)="onRuntimeWidgetEvent($event)"
16876
16978
  (widgetSelectionChange)="onRuntimeWidgetSelectionChange($event)"
16877
16979
  (widgetAssistantRequested)="openAgenticAuthoringForWidget($event)"
16878
16980
  />
@@ -16920,7 +17022,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
16920
17022
  (removeAttachment)="removeAgenticAttachment($event)"
16921
17023
  (editMessage)="editAgenticMessage($event)"
16922
17024
  (resendMessage)="resendAgenticMessage($event)"
16923
- (layoutChange)="agenticAuthoringPanelLayout.set($event)"
17025
+ (layoutChange)="onAgenticAuthoringLayoutChange($event)"
16924
17026
  (close)="minimizeAgenticAuthoring()"
16925
17027
  />
16926
17028
 
@@ -17198,7 +17300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
17198
17300
  [visible]="showSettings()"
17199
17301
  [canUndo]="false"
17200
17302
  [canRedo]="false"
17201
- [showSave]="autoPersist && hasPageWidgets()"
17303
+ [showSave]="hasPageWidgets()"
17202
17304
  [showPreview]="hasPageWidgets()"
17203
17305
  (add)="onAddComponent()"
17204
17306
  (settings)="openPageSettings()"
@@ -17261,7 +17363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
17261
17363
  </button>
17262
17364
  </praxis-floating-toolbar>
17263
17365
  </div>
17264
- `, styles: [":host{display:block;position:relative;min-height:var(--pdx-page-builder-min-height, 420px)}.builder-shell{display:block;position:relative;min-height:inherit;height:100%}.agentic-diagnostics-panel{position:absolute;z-index:21;right:16px;width:min(520px,calc(100% - 32px));max-height:min(440px,calc(100% - 32px));overflow:auto;padding:12px;border:1px solid rgba(107,114,128,.28);border-radius:8px;background:#fffffff5;color:#111827;box-shadow:0 14px 36px #0000003d}.agentic-diagnostics-panel--collapsed{width:min(280px,calc(100% - 32px));max-height:58px;overflow:hidden;padding:10px 12px;pointer-events:auto}.agentic-diagnostics-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}.agentic-diagnostics-panel__header-actions{display:flex;align-items:center;gap:8px}.agentic-diagnostics-panel__badge{padding:2px 6px;border:1px solid rgba(107,114,128,.28);border-radius:8px;font-size:11px;font-weight:600;color:#4b5563}.agentic-diagnostics-panel__toggle,.shared-rule-cockpit__toggle{appearance:none;border:1px solid rgba(30,64,175,.18);border-radius:999px;background:#ffffffd6;color:#1e3a8a;cursor:pointer;font-size:11px;font-weight:700;line-height:1;padding:6px 9px;white-space:nowrap}.agentic-diagnostics-panel__description{margin:8px 0 10px;color:#4b5563;font-size:12px;line-height:1.4}.agentic-diagnostics-panel pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.45;color:#1f2937}praxis-ai-assistant-shell{position:relative;z-index:140}.builder-shell__agentic-toggle{position:relative}.builder-shell__agentic-toggle--open,.builder-shell__agentic-toggle--minimized{outline:2px solid rgba(96,165,250,.52);outline-offset:2px}.builder-shell__agentic-toggle--minimized:after{content:\"\";position:absolute;top:6px;right:6px;width:8px;height:8px;border:2px solid var(--md-sys-color-surface, #111827);border-radius:999px;background:#34d399}.shared-rule-cockpit{position:absolute;z-index:120;left:16px;bottom:88px;width:min(720px,calc(100% - 32px));max-height:min(560px,calc(100vh - 140px));padding:14px;border:1px solid rgba(30,64,175,.22);border-radius:12px;background:linear-gradient(135deg,#eff6fffa,#fffbebf5);color:#172554;box-shadow:0 18px 46px #0f172a38;overflow:auto;overscroll-behavior:contain}.shared-rule-cockpit--collapsed{width:min(360px,calc(100% - 32px));max-height:72px;overflow:hidden;padding:10px 12px}.shared-rule-cockpit__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-rule-cockpit__header-actions{display:flex;align-items:center;gap:8px}.shared-rule-cockpit__header div{display:grid;gap:2px}.shared-rule-cockpit__header strong{font-size:14px;line-height:1.2}.shared-rule-cockpit__header span{color:#475569;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__badge{flex:0 0 auto;max-width:220px;padding:3px 8px;border:1px solid rgba(30,64,175,.2);border-radius:999px;background:#ffffffbd;color:#1e3a8a;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-rule-cockpit__description,.shared-rule-cockpit__status,.shared-rule-cockpit__error{margin:10px 0 0;color:#334155;font-size:12px;line-height:1.45}.shared-rule-cockpit__error{color:#991b1b;font-weight:600}.shared-rule-cockpit__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shared-rule-cockpit__facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}.shared-rule-cockpit__facts div{min-width:0;padding:8px;border-radius:10px;background:#ffffffb8}.shared-rule-cockpit__facts dt{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.shared-rule-cockpit__facts dd{margin:4px 0 0;color:#0f172a;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__enforcement-matrix{display:grid;gap:10px;margin-top:12px;padding:10px;border:1px solid rgba(30,64,175,.14);border-radius:12px;background:#ffffff94}.shared-rule-cockpit__matrix-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.shared-rule-cockpit__matrix-header div{display:grid;gap:2px}.shared-rule-cockpit__matrix-header strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__matrix-header span,.shared-rule-cockpit__matrix-source{color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-badge{flex:0 0 auto;padding:3px 8px;border-radius:999px;background:#16a34a1f;color:#166534;font-weight:800;white-space:nowrap}.shared-rule-cockpit__projection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shared-rule-cockpit__projection{display:grid;gap:3px;min-width:0;padding:9px;border:1px solid rgba(15,23,42,.08);border-radius:11px;background:#f8fafcd1}.shared-rule-cockpit__projection[data-status=ready]{border-color:#16a34a33;background:#f0fdf4d1}.shared-rule-cockpit__projection span{color:#1d4ed8;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}.shared-rule-cockpit__projection strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__projection small,.shared-rule-cockpit__projection em{color:#475569;font-size:11px;font-style:normal;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-source{margin:0}.shared-rule-cockpit__timeline{display:grid;gap:8px;max-height:190px;margin:12px 0 0;padding:0;overflow:auto;list-style:none}.shared-rule-cockpit__timeline-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px;border:1px solid rgba(30,64,175,.12);border-radius:12px;background:#ffffffc2}.shared-rule-cockpit__timeline-icon{display:grid;width:24px;height:24px;place-items:center;border-radius:999px;background:#1e40af1a;color:#1e3a8a;font-family:Material Icons;font-size:16px;line-height:1}.shared-rule-cockpit__timeline-item strong{color:#0f172a;font-size:12px;line-height:1.35}.shared-rule-cockpit__timeline-item p,.shared-rule-cockpit__timeline-item small,.shared-rule-cockpit__timeline-item time,.shared-rule-cockpit__timeline-empty{display:block;margin:3px 0 0;color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__timeline-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#0ea5e91f;color:#075985;font-size:10px;font-weight:700}.shared-rule-cockpit__timeline-empty{padding:10px;border-radius:12px;background:#ffffffa3}@media(max-width:720px){.shared-rule-cockpit{bottom:72px;max-height:calc(100vh - 112px)}.shared-rule-cockpit__facts,.shared-rule-cockpit__projection-grid{grid-template-columns:1fr}}\n"] }]
17366
+ `, styles: [":host{display:block;position:relative;min-height:var(--pdx-page-builder-min-height, 420px)}.builder-shell{display:block;position:relative;min-height:inherit;height:100%}.agentic-diagnostics-panel{position:absolute;z-index:21;right:16px;width:min(520px,calc(100% - 32px));max-height:min(440px,calc(100% - 32px));overflow:auto;padding:12px;border:1px solid rgba(107,114,128,.28);border-radius:8px;background:#fffffff5;color:#111827;box-shadow:0 14px 36px #0000003d}.agentic-diagnostics-panel--collapsed{width:min(280px,calc(100% - 32px));max-height:58px;overflow:hidden;padding:10px 12px;pointer-events:auto}.agentic-diagnostics-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}.agentic-diagnostics-panel__header-actions{display:flex;align-items:center;gap:8px}.agentic-diagnostics-panel__badge{padding:2px 6px;border:1px solid rgba(107,114,128,.28);border-radius:8px;font-size:11px;font-weight:600;color:#4b5563}.agentic-diagnostics-panel__toggle,.shared-rule-cockpit__toggle{appearance:none;border:1px solid rgba(30,64,175,.18);border-radius:999px;background:#ffffffd6;color:#1e3a8a;cursor:pointer;font-size:11px;font-weight:700;line-height:1;padding:6px 9px;white-space:nowrap}.agentic-diagnostics-panel__description{margin:8px 0 10px;color:#4b5563;font-size:12px;line-height:1.4}.agentic-diagnostics-panel pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.45;color:#1f2937}praxis-ai-assistant-shell{position:relative;z-index:140}@media(min-width:1100px){.builder-shell--agentic-review-rail{box-sizing:border-box;padding-right:464px}}.builder-shell__agentic-toggle{position:relative}.builder-shell__agentic-toggle--open,.builder-shell__agentic-toggle--minimized{outline:2px solid rgba(96,165,250,.52);outline-offset:2px}.builder-shell__agentic-toggle--minimized:after{content:\"\";position:absolute;top:6px;right:6px;width:8px;height:8px;border:2px solid var(--md-sys-color-surface, #111827);border-radius:999px;background:#34d399}.shared-rule-cockpit{position:absolute;z-index:120;left:16px;bottom:88px;width:min(720px,calc(100% - 32px));max-height:min(560px,calc(100vh - 140px));padding:14px;border:1px solid rgba(30,64,175,.22);border-radius:12px;background:linear-gradient(135deg,#eff6fffa,#fffbebf5);color:#172554;box-shadow:0 18px 46px #0f172a38;overflow:auto;overscroll-behavior:contain}.shared-rule-cockpit--collapsed{width:min(360px,calc(100% - 32px));max-height:72px;overflow:hidden;padding:10px 12px}.shared-rule-cockpit__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-rule-cockpit__header-actions{display:flex;align-items:center;gap:8px}.shared-rule-cockpit__header div{display:grid;gap:2px}.shared-rule-cockpit__header strong{font-size:14px;line-height:1.2}.shared-rule-cockpit__header span{color:#475569;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__badge{flex:0 0 auto;max-width:220px;padding:3px 8px;border:1px solid rgba(30,64,175,.2);border-radius:999px;background:#ffffffbd;color:#1e3a8a;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-rule-cockpit__description,.shared-rule-cockpit__status,.shared-rule-cockpit__error{margin:10px 0 0;color:#334155;font-size:12px;line-height:1.45}.shared-rule-cockpit__error{color:#991b1b;font-weight:600}.shared-rule-cockpit__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shared-rule-cockpit__facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}.shared-rule-cockpit__facts div{min-width:0;padding:8px;border-radius:10px;background:#ffffffb8}.shared-rule-cockpit__facts dt{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.shared-rule-cockpit__facts dd{margin:4px 0 0;color:#0f172a;font-size:12px;overflow-wrap:anywhere}.shared-rule-cockpit__enforcement-matrix{display:grid;gap:10px;margin-top:12px;padding:10px;border:1px solid rgba(30,64,175,.14);border-radius:12px;background:#ffffff94}.shared-rule-cockpit__matrix-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.shared-rule-cockpit__matrix-header div{display:grid;gap:2px}.shared-rule-cockpit__matrix-header strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__matrix-header span,.shared-rule-cockpit__matrix-source{color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-badge{flex:0 0 auto;padding:3px 8px;border-radius:999px;background:#16a34a1f;color:#166534;font-weight:800;white-space:nowrap}.shared-rule-cockpit__projection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shared-rule-cockpit__projection{display:grid;gap:3px;min-width:0;padding:9px;border:1px solid rgba(15,23,42,.08);border-radius:11px;background:#f8fafcd1}.shared-rule-cockpit__projection[data-status=ready]{border-color:#16a34a33;background:#f0fdf4d1}.shared-rule-cockpit__projection span{color:#1d4ed8;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}.shared-rule-cockpit__projection strong{color:#0f172a;font-size:12px}.shared-rule-cockpit__projection small,.shared-rule-cockpit__projection em{color:#475569;font-size:11px;font-style:normal;overflow-wrap:anywhere}.shared-rule-cockpit__matrix-source{margin:0}.shared-rule-cockpit__timeline{display:grid;gap:8px;max-height:190px;margin:12px 0 0;padding:0;overflow:auto;list-style:none}.shared-rule-cockpit__timeline-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px;border:1px solid rgba(30,64,175,.12);border-radius:12px;background:#ffffffc2}.shared-rule-cockpit__timeline-icon{display:grid;width:24px;height:24px;place-items:center;border-radius:999px;background:#1e40af1a;color:#1e3a8a;font-family:Material Icons;font-size:16px;line-height:1}.shared-rule-cockpit__timeline-item strong{color:#0f172a;font-size:12px;line-height:1.35}.shared-rule-cockpit__timeline-item p,.shared-rule-cockpit__timeline-item small,.shared-rule-cockpit__timeline-item time,.shared-rule-cockpit__timeline-empty{display:block;margin:3px 0 0;color:#475569;font-size:11px;line-height:1.35;overflow-wrap:anywhere}.shared-rule-cockpit__timeline-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#0ea5e91f;color:#075985;font-size:10px;font-weight:700}.shared-rule-cockpit__timeline-empty{padding:10px;border-radius:12px;background:#ffffffa3}@media(max-width:720px){.shared-rule-cockpit{bottom:72px;max-height:calc(100vh - 112px)}.shared-rule-cockpit__facts,.shared-rule-cockpit__projection-grid{grid-template-columns:1fr}}\n"] }]
17265
17367
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: undefined, decorators: [{
17266
17368
  type: Optional
17267
17369
  }, {
@@ -17318,6 +17420,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
17318
17420
  type: Input
17319
17421
  }], pageChange: [{
17320
17422
  type: Output
17423
+ }], pageSaveRequested: [{
17424
+ type: Output
17321
17425
  }], agenticAuthoringApplied: [{
17322
17426
  type: Output
17323
17427
  }], agenticAuthoringSharedRuleHandoff: [{
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { MatDialogRef, MatDialog } from '@angular/material/dialog';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { EventEmitter, OnInit, WritableSignal, InjectionToken, Provider, OnChanges, Type, SimpleChanges } from '@angular/core';
4
- import { ComponentDocMeta, ComponentMetadataRegistry, WidgetShellConfig, WidgetShellAction, EndpointRef, ComponentPortPathSegment, LinkIntent, CompositionLink, WidgetPageDefinition, TransformKind, SettingsValueProvider as SettingsValueProvider$1, WidgetPageGroupingDefinition, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, PageIdentity, WidgetStateNode, WidgetDerivedStateNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog, DomainKnowledgeChangeSetRequest, DomainKnowledgeChangeSet, DomainKnowledgeChangeSetTimelineResponse, DomainKnowledgeChangeSetFilters, DomainKnowledgeValidationResponse, DomainKnowledgeStatusTransitionRequest, DomainRuleIntakeRequest, DomainRuleIntakeResponse, DomainRuleDefinitionRequest, DomainRuleDefinition, DomainRuleSimulationRequest, DomainRuleSimulationResponse, DomainRuleStatusTransitionRequest, DomainRulePublicationRequest, DomainRulePublicationResponse, DomainRuleMaterializationFilters, DomainRuleMaterialization, DomainRuleTimelineResponse, WidgetPageCanvasLayout, WidgetPageStateInput, WidgetInstance, ComponentAuthoringManifest, DynamicWidgetPageComponent, SettingsPanelBridge, RichTimelineItem } from '@praxisui/core';
4
+ import { ComponentDocMeta, ComponentMetadataRegistry, WidgetShellConfig, WidgetShellAction, EndpointRef, ComponentPortPathSegment, LinkIntent, CompositionLink, WidgetPageDefinition, TransformKind, SettingsValueProvider as SettingsValueProvider$1, WidgetPageGroupingDefinition, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, PageIdentity, WidgetStateNode, WidgetDerivedStateNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog, DomainKnowledgeChangeSetRequest, DomainKnowledgeChangeSet, DomainKnowledgeChangeSetTimelineResponse, DomainKnowledgeChangeSetFilters, DomainKnowledgeValidationResponse, DomainKnowledgeStatusTransitionRequest, DomainRuleIntakeRequest, DomainRuleIntakeResponse, DomainRuleDefinitionRequest, DomainRuleDefinition, DomainRuleSimulationRequest, DomainRuleSimulationResponse, DomainRuleStatusTransitionRequest, DomainRulePublicationRequest, DomainRulePublicationResponse, DomainRuleMaterializationFilters, DomainRuleMaterialization, DomainRuleTimelineResponse, WidgetPageCanvasLayout, WidgetPageStateInput, WidgetInstance, ComponentAuthoringManifest, DynamicWidgetPageComponent, SettingsPanelBridge, WidgetEventEnvelope, RichTimelineItem } from '@praxisui/core';
5
5
  export { WidgetShellComponent } from '@praxisui/core';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { BehaviorSubject, Observable } from 'rxjs';
@@ -1160,7 +1160,10 @@ interface PageBuilderAgenticAuthoringEventSource {
1160
1160
  addEventListener?(type: string, listener: (event: MessageEvent<string>) => void): void;
1161
1161
  close(): void;
1162
1162
  }
1163
- type PageBuilderAgenticAuthoringEventSourceFactory = (url: string) => PageBuilderAgenticAuthoringEventSource;
1163
+ interface PageBuilderAgenticAuthoringEventSourceOptions {
1164
+ withCredentials?: boolean;
1165
+ }
1166
+ type PageBuilderAgenticAuthoringEventSourceFactory = (url: string, options?: PageBuilderAgenticAuthoringEventSourceOptions) => PageBuilderAgenticAuthoringEventSource;
1164
1167
  interface PageBuilderAgenticAuthoringTurnStreamConnectionError {
1165
1168
  readonly praxisAgenticTurnStreamConnectionError: true;
1166
1169
  readonly cause: unknown;
@@ -1561,6 +1564,7 @@ interface PageBuilderGovernedContinuationAction {
1561
1564
  interface AgenticAuthoringQuickReply extends PraxisAssistantShellQuickReply {
1562
1565
  kind: string;
1563
1566
  }
1567
+ type AgenticAuthoringPanelLayout = PraxisAssistantShellLayout;
1564
1568
  type SharedRuleCockpitAction = 'definition' | 'simulation' | 'approve' | 'activate' | 'publication' | 'materializations' | 'timeline' | 'enforcement';
1565
1569
  type ProjectKnowledgeCockpitAction = 'change-set' | 'validate' | 'approve' | 'reject' | 'apply' | 'readback';
1566
1570
  interface SharedRuleEnforcementSummary {
@@ -1635,6 +1639,7 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1635
1639
  pageLifecycleBusy: boolean;
1636
1640
  pageLifecycleResetRevision: number | string | null;
1637
1641
  pageChange: EventEmitter<WidgetPageDefinition>;
1642
+ pageSaveRequested: EventEmitter<WidgetPageDefinition>;
1638
1643
  agenticAuthoringApplied: EventEmitter<PageBuilderApplyResult>;
1639
1644
  agenticAuthoringSharedRuleHandoff: EventEmitter<PageBuilderAgenticAuthoringSharedRuleHandoff>;
1640
1645
  pageRestart: EventEmitter<void>;
@@ -1679,10 +1684,12 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1679
1684
  private agenticComponentCapabilitiesPromise?;
1680
1685
  private agenticTurnController?;
1681
1686
  private sharedRuleHandoffRevision;
1687
+ private agenticAuthoringPanelLayoutTouched;
1682
1688
  constructor(dialog: MatDialog, settingsPanel: SettingsPanelBridge | null);
1683
1689
  ngOnChanges(changes: SimpleChanges): void;
1684
1690
  showSettings(): boolean;
1685
1691
  onRuntimePageChange(next: WidgetPageDefinition): void;
1692
+ onRuntimeWidgetEvent(event: WidgetEventEnvelope): void;
1686
1693
  onConnectionEditorPageChange(next: WidgetPageDefinition): void;
1687
1694
  onRuntimeWidgetSelectionChange(widgetKey: string | null): void;
1688
1695
  togglePreview(): void;
@@ -1701,6 +1708,8 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1701
1708
  openAgenticAuthoringForWidget(widgetKey: string): void;
1702
1709
  openAgenticAuthoringFromSession(session: PraxisAssistantSessionSnapshot): void;
1703
1710
  minimizeAgenticAuthoring(): void;
1711
+ onAgenticAuthoringLayoutChange(layout: AgenticAuthoringPanelLayout): void;
1712
+ agenticAuthoringReviewRailActive(): boolean;
1704
1713
  showAgenticAuthoringDock(): boolean;
1705
1714
  agenticAuthoringMinimized(): boolean;
1706
1715
  agenticAuthoringToggleLabel(): string;
@@ -1809,6 +1818,7 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1809
1818
  private applyAgenticPreviewLocally;
1810
1819
  private applyAgenticTurnState;
1811
1820
  private primeSharedRuleHandoff;
1821
+ private moveAgenticAuthoringPanelToReviewSidecar;
1812
1822
  private resolveAgenticSharedRuleHandoff;
1813
1823
  private resolveAgenticSharedRuleAssistantMessage;
1814
1824
  private resolveSharedRuleHandoffRuleType;
@@ -1831,6 +1841,7 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1831
1841
  private clonePage;
1832
1842
  private clearSelectedWidgetIfMissing;
1833
1843
  private defaultInputsFor;
1844
+ private applyWidgetIdentityDefaults;
1834
1845
  private resolveAgenticComponentId;
1835
1846
  private resolveSelectedWidgetKey;
1836
1847
  private resolveWidgetByKey;
@@ -1846,8 +1857,8 @@ declare class DynamicPageBuilderComponent implements OnChanges {
1846
1857
  private cloneValue;
1847
1858
  tx(key: string, fallback: string): string;
1848
1859
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicPageBuilderComponent, [null, { optional: true; }]>;
1849
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicPageBuilderComponent, "praxis-dynamic-page-builder", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "autoPersist": { "alias": "autoPersist"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showSettingsButton": { "alias": "showSettingsButton"; "required": false; }; "pageIdentity": { "alias": "pageIdentity"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "pageEditorComponent": { "alias": "pageEditorComponent"; "required": false; }; "enableAgenticAuthoring": { "alias": "enableAgenticAuthoring"; "required": false; }; "agenticAuthoringProvider": { "alias": "agenticAuthoringProvider"; "required": false; }; "agenticAuthoringModel": { "alias": "agenticAuthoringModel"; "required": false; }; "agenticAuthoringApiKey": { "alias": "agenticAuthoringApiKey"; "required": false; }; "agenticAuthoringComponentId": { "alias": "agenticAuthoringComponentId"; "required": false; }; "agenticAuthoringScope": { "alias": "agenticAuthoringScope"; "required": false; }; "agenticAuthoringEtag": { "alias": "agenticAuthoringEtag"; "required": false; }; "agenticAuthoringIncludeLlmDiagnostics": { "alias": "agenticAuthoringIncludeLlmDiagnostics"; "required": false; }; "agenticAuthoringEnableStreaming": { "alias": "agenticAuthoringEnableStreaming"; "required": false; }; "agenticAuthoringContextHints": { "alias": "agenticAuthoringContextHints"; "required": false; }; "showPageLifecycleActions": { "alias": "showPageLifecycleActions"; "required": false; }; "canDeleteSavedPage": { "alias": "canDeleteSavedPage"; "required": false; }; "pageLifecycleBusy": { "alias": "pageLifecycleBusy"; "required": false; }; "pageLifecycleResetRevision": { "alias": "pageLifecycleResetRevision"; "required": false; }; }, { "pageChange": "pageChange"; "agenticAuthoringApplied": "agenticAuthoringApplied"; "agenticAuthoringSharedRuleHandoff": "agenticAuthoringSharedRuleHandoff"; "pageRestart": "pageRestart"; "savedPageDeleteRequested": "savedPageDeleteRequested"; }, never, never, true, never>;
1860
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicPageBuilderComponent, "praxis-dynamic-page-builder", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "autoPersist": { "alias": "autoPersist"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showSettingsButton": { "alias": "showSettingsButton"; "required": false; }; "pageIdentity": { "alias": "pageIdentity"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "pageEditorComponent": { "alias": "pageEditorComponent"; "required": false; }; "enableAgenticAuthoring": { "alias": "enableAgenticAuthoring"; "required": false; }; "agenticAuthoringProvider": { "alias": "agenticAuthoringProvider"; "required": false; }; "agenticAuthoringModel": { "alias": "agenticAuthoringModel"; "required": false; }; "agenticAuthoringApiKey": { "alias": "agenticAuthoringApiKey"; "required": false; }; "agenticAuthoringComponentId": { "alias": "agenticAuthoringComponentId"; "required": false; }; "agenticAuthoringScope": { "alias": "agenticAuthoringScope"; "required": false; }; "agenticAuthoringEtag": { "alias": "agenticAuthoringEtag"; "required": false; }; "agenticAuthoringIncludeLlmDiagnostics": { "alias": "agenticAuthoringIncludeLlmDiagnostics"; "required": false; }; "agenticAuthoringEnableStreaming": { "alias": "agenticAuthoringEnableStreaming"; "required": false; }; "agenticAuthoringContextHints": { "alias": "agenticAuthoringContextHints"; "required": false; }; "showPageLifecycleActions": { "alias": "showPageLifecycleActions"; "required": false; }; "canDeleteSavedPage": { "alias": "canDeleteSavedPage"; "required": false; }; "pageLifecycleBusy": { "alias": "pageLifecycleBusy"; "required": false; }; "pageLifecycleResetRevision": { "alias": "pageLifecycleResetRevision"; "required": false; }; }, { "pageChange": "pageChange"; "pageSaveRequested": "pageSaveRequested"; "agenticAuthoringApplied": "agenticAuthoringApplied"; "agenticAuthoringSharedRuleHandoff": "agenticAuthoringSharedRuleHandoff"; "pageRestart": "pageRestart"; "savedPageDeleteRequested": "savedPageDeleteRequested"; }, never, never, true, never>;
1850
1861
  }
1851
1862
 
1852
1863
  export { ComponentPaletteDialogComponent, ConfirmDialogComponent, ConnectionEditorComponent, DynamicPageBuilderComponent, DynamicPageConfigEditorComponent, FloatingToolbarComponent, PAGE_BUILDER_AGENTIC_AUTHORING_OPTIONS, PAGE_BUILDER_AI_CAPABILITIES, PAGE_BUILDER_WIDGET_AI_CATALOGS, PLACEHOLDER, PRAXIS_PAGE_BUILDER_AUTHORING_MANIFEST, PageBuilderAgenticAuthoringService, PageConfigEditorComponent, TileToolbarComponent, WidgetShellEditorComponent, clearWidgetAiCatalogs, compileUiCompositionPlan, getPageAiCatalog, getWidgetAiCapabilities, providePageBuilderWidgetAiCatalogs, registerWidgetAiCatalog, registerWidgetAiCatalogs, validateUiCompositionPlan };
1853
- export type { Capability, CapabilityCatalog, CapabilityCategory, ComponentPaletteData, ComponentPaletteSelection, ConfirmDialogData, PageBuilderAgenticAuthoringAttachmentSummary, PageBuilderAgenticAuthoringCandidate, PageBuilderAgenticAuthoringComponentCapabilitiesResult, PageBuilderAgenticAuthoringComponentCapability, PageBuilderAgenticAuthoringComponentCapabilityCatalog, PageBuilderAgenticAuthoringComponentCapabilityExample, PageBuilderAgenticAuthoringComponentFieldAlias, PageBuilderAgenticAuthoringConversationMessage, PageBuilderAgenticAuthoringEventSource, PageBuilderAgenticAuthoringEventSourceFactory, PageBuilderAgenticAuthoringGateResult, PageBuilderAgenticAuthoringIntentResolutionRequest, PageBuilderAgenticAuthoringIntentResolutionResult, PageBuilderAgenticAuthoringOptions, PageBuilderAgenticAuthoringPendingClarification, PageBuilderAgenticAuthoringPromptRequest, PageBuilderAgenticAuthoringProvider, PageBuilderAgenticAuthoringQuickReply, PageBuilderAgenticAuthoringResourceCandidatesRequest, PageBuilderAgenticAuthoringResourceCandidatesResult, PageBuilderAgenticAuthoringSharedRuleHandoff, PageBuilderAgenticAuthoringTarget, PageBuilderAgenticAuthoringTurnStreamConnectionError, PageBuilderAgenticAuthoringTurnStreamEvent, PageBuilderAgenticAuthoringTurnStreamRequest, PageBuilderAgenticAuthoringTurnStreamStartResponse, PageBuilderApplyRequest, PageBuilderApplyResult, PageBuilderCompiledFormPatch, PageBuilderMinimalFormPlanResult, PageBuilderPreviewDiagnostics, PageBuilderPreviewResult, PageBuilderProjectKnowledgeAudit, UiCompositionPlan, UiCompositionPlanBinding, UiCompositionPlanCompileResult, UiCompositionPlanComponentPortEndpoint, UiCompositionPlanDiagnostic, UiCompositionPlanEndpoint, UiCompositionPlanGlobalActionEndpoint, UiCompositionPlanInputSource, UiCompositionPlanSourceEndpoint, UiCompositionPlanStateEndpoint, UiCompositionPlanTargetEndpoint, UiCompositionPlanTransform, UiCompositionPlanWidget, ValueKind };
1864
+ export type { Capability, CapabilityCatalog, CapabilityCategory, ComponentPaletteData, ComponentPaletteSelection, ConfirmDialogData, PageBuilderAgenticAuthoringAttachmentSummary, PageBuilderAgenticAuthoringCandidate, PageBuilderAgenticAuthoringComponentCapabilitiesResult, PageBuilderAgenticAuthoringComponentCapability, PageBuilderAgenticAuthoringComponentCapabilityCatalog, PageBuilderAgenticAuthoringComponentCapabilityExample, PageBuilderAgenticAuthoringComponentFieldAlias, PageBuilderAgenticAuthoringConversationMessage, PageBuilderAgenticAuthoringEventSource, PageBuilderAgenticAuthoringEventSourceFactory, PageBuilderAgenticAuthoringEventSourceOptions, PageBuilderAgenticAuthoringGateResult, PageBuilderAgenticAuthoringIntentResolutionRequest, PageBuilderAgenticAuthoringIntentResolutionResult, PageBuilderAgenticAuthoringOptions, PageBuilderAgenticAuthoringPendingClarification, PageBuilderAgenticAuthoringPromptRequest, PageBuilderAgenticAuthoringProvider, PageBuilderAgenticAuthoringQuickReply, PageBuilderAgenticAuthoringResourceCandidatesRequest, PageBuilderAgenticAuthoringResourceCandidatesResult, PageBuilderAgenticAuthoringSharedRuleHandoff, PageBuilderAgenticAuthoringTarget, PageBuilderAgenticAuthoringTurnStreamConnectionError, PageBuilderAgenticAuthoringTurnStreamEvent, PageBuilderAgenticAuthoringTurnStreamRequest, PageBuilderAgenticAuthoringTurnStreamStartResponse, PageBuilderApplyRequest, PageBuilderApplyResult, PageBuilderCompiledFormPatch, PageBuilderMinimalFormPlanResult, PageBuilderPreviewDiagnostics, PageBuilderPreviewResult, PageBuilderProjectKnowledgeAudit, UiCompositionPlan, UiCompositionPlanBinding, UiCompositionPlanCompileResult, UiCompositionPlanComponentPortEndpoint, UiCompositionPlanDiagnostic, UiCompositionPlanEndpoint, UiCompositionPlanGlobalActionEndpoint, UiCompositionPlanInputSource, UiCompositionPlanSourceEndpoint, UiCompositionPlanStateEndpoint, UiCompositionPlanTargetEndpoint, UiCompositionPlanTransform, UiCompositionPlanWidget, ValueKind };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/page-builder",
3
- "version": "8.0.0-beta.26",
3
+ "version": "8.0.0-beta.27",
4
4
  "description": "Page and widget builder utilities for Praxis UI (grid, dynamic widgets, editors).",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
@@ -8,9 +8,9 @@
8
8
  "@angular/forms": "^20.0.0",
9
9
  "@angular/cdk": "^20.0.0",
10
10
  "@angular/material": "^20.0.0",
11
- "@praxisui/ai": "^8.0.0-beta.26",
12
- "@praxisui/core": "^8.0.0-beta.26",
13
- "@praxisui/settings-panel": "^8.0.0-beta.26",
11
+ "@praxisui/ai": "^8.0.0-beta.27",
12
+ "@praxisui/core": "^8.0.0-beta.27",
13
+ "@praxisui/settings-panel": "^8.0.0-beta.27",
14
14
  "rxjs": "~7.8.0"
15
15
  },
16
16
  "dependencies": {