@almadar/core 10.47.0 → 10.49.0

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.
@@ -71,12 +71,12 @@ declare const RestAuthConfigSchema: z.ZodObject<{
71
71
  location: z.ZodOptional<z.ZodEnum<["query", "header"]>>;
72
72
  secretEnv: z.ZodOptional<z.ZodString>;
73
73
  }, "strip", z.ZodTypeAny, {
74
- type: "api-key" | "bearer" | "basic" | "oauth2";
74
+ type: "basic" | "api-key" | "bearer" | "oauth2";
75
75
  keyName?: string | undefined;
76
76
  location?: "header" | "query" | undefined;
77
77
  secretEnv?: string | undefined;
78
78
  }, {
79
- type: "api-key" | "bearer" | "basic" | "oauth2";
79
+ type: "basic" | "api-key" | "bearer" | "oauth2";
80
80
  keyName?: string | undefined;
81
81
  location?: "header" | "query" | undefined;
82
82
  secretEnv?: string | undefined;
@@ -93,12 +93,12 @@ declare const RestServiceDefSchema: z.ZodObject<{
93
93
  location: z.ZodOptional<z.ZodEnum<["query", "header"]>>;
94
94
  secretEnv: z.ZodOptional<z.ZodString>;
95
95
  }, "strip", z.ZodTypeAny, {
96
- type: "api-key" | "bearer" | "basic" | "oauth2";
96
+ type: "basic" | "api-key" | "bearer" | "oauth2";
97
97
  keyName?: string | undefined;
98
98
  location?: "header" | "query" | undefined;
99
99
  secretEnv?: string | undefined;
100
100
  }, {
101
- type: "api-key" | "bearer" | "basic" | "oauth2";
101
+ type: "basic" | "api-key" | "bearer" | "oauth2";
102
102
  keyName?: string | undefined;
103
103
  location?: "header" | "query" | undefined;
104
104
  secretEnv?: string | undefined;
@@ -110,7 +110,7 @@ declare const RestServiceDefSchema: z.ZodObject<{
110
110
  baseUrl: string;
111
111
  description?: string | undefined;
112
112
  auth?: {
113
- type: "api-key" | "bearer" | "basic" | "oauth2";
113
+ type: "basic" | "api-key" | "bearer" | "oauth2";
114
114
  keyName?: string | undefined;
115
115
  location?: "header" | "query" | undefined;
116
116
  secretEnv?: string | undefined;
@@ -123,7 +123,7 @@ declare const RestServiceDefSchema: z.ZodObject<{
123
123
  baseUrl: string;
124
124
  description?: string | undefined;
125
125
  auth?: {
126
- type: "api-key" | "bearer" | "basic" | "oauth2";
126
+ type: "basic" | "api-key" | "bearer" | "oauth2";
127
127
  keyName?: string | undefined;
128
128
  location?: "header" | "query" | undefined;
129
129
  secretEnv?: string | undefined;
@@ -309,12 +309,12 @@ declare const ServiceDefinitionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObj
309
309
  location: z.ZodOptional<z.ZodEnum<["query", "header"]>>;
310
310
  secretEnv: z.ZodOptional<z.ZodString>;
311
311
  }, "strip", z.ZodTypeAny, {
312
- type: "api-key" | "bearer" | "basic" | "oauth2";
312
+ type: "basic" | "api-key" | "bearer" | "oauth2";
313
313
  keyName?: string | undefined;
314
314
  location?: "header" | "query" | undefined;
315
315
  secretEnv?: string | undefined;
316
316
  }, {
317
- type: "api-key" | "bearer" | "basic" | "oauth2";
317
+ type: "basic" | "api-key" | "bearer" | "oauth2";
318
318
  keyName?: string | undefined;
319
319
  location?: "header" | "query" | undefined;
320
320
  secretEnv?: string | undefined;
@@ -326,7 +326,7 @@ declare const ServiceDefinitionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObj
326
326
  baseUrl: string;
327
327
  description?: string | undefined;
328
328
  auth?: {
329
- type: "api-key" | "bearer" | "basic" | "oauth2";
329
+ type: "basic" | "api-key" | "bearer" | "oauth2";
330
330
  keyName?: string | undefined;
331
331
  location?: "header" | "query" | undefined;
332
332
  secretEnv?: string | undefined;
@@ -339,7 +339,7 @@ declare const ServiceDefinitionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObj
339
339
  baseUrl: string;
340
340
  description?: string | undefined;
341
341
  auth?: {
342
- type: "api-key" | "bearer" | "basic" | "oauth2";
342
+ type: "basic" | "api-key" | "bearer" | "oauth2";
343
343
  keyName?: string | undefined;
344
344
  location?: "header" | "query" | undefined;
345
345
  secretEnv?: string | undefined;
@@ -524,12 +524,12 @@ declare const ServiceRefSchema: z.ZodUnion<[z.ZodDiscriminatedUnion<"type", [z.Z
524
524
  location: z.ZodOptional<z.ZodEnum<["query", "header"]>>;
525
525
  secretEnv: z.ZodOptional<z.ZodString>;
526
526
  }, "strip", z.ZodTypeAny, {
527
- type: "api-key" | "bearer" | "basic" | "oauth2";
527
+ type: "basic" | "api-key" | "bearer" | "oauth2";
528
528
  keyName?: string | undefined;
529
529
  location?: "header" | "query" | undefined;
530
530
  secretEnv?: string | undefined;
531
531
  }, {
532
- type: "api-key" | "bearer" | "basic" | "oauth2";
532
+ type: "basic" | "api-key" | "bearer" | "oauth2";
533
533
  keyName?: string | undefined;
534
534
  location?: "header" | "query" | undefined;
535
535
  secretEnv?: string | undefined;
@@ -541,7 +541,7 @@ declare const ServiceRefSchema: z.ZodUnion<[z.ZodDiscriminatedUnion<"type", [z.Z
541
541
  baseUrl: string;
542
542
  description?: string | undefined;
543
543
  auth?: {
544
- type: "api-key" | "bearer" | "basic" | "oauth2";
544
+ type: "basic" | "api-key" | "bearer" | "oauth2";
545
545
  keyName?: string | undefined;
546
546
  location?: "header" | "query" | undefined;
547
547
  secretEnv?: string | undefined;
@@ -554,7 +554,7 @@ declare const ServiceRefSchema: z.ZodUnion<[z.ZodDiscriminatedUnion<"type", [z.Z
554
554
  baseUrl: string;
555
555
  description?: string | undefined;
556
556
  auth?: {
557
- type: "api-key" | "bearer" | "basic" | "oauth2";
557
+ type: "basic" | "api-key" | "bearer" | "oauth2";
558
558
  keyName?: string | undefined;
559
559
  location?: "header" | "query" | undefined;
560
560
  secretEnv?: string | undefined;
@@ -1779,12 +1779,13 @@ declare const ScenePosSchema: z.ZodObject<{
1779
1779
  }>;
1780
1780
  /**
1781
1781
  * Camera behaviors, unifying the former per-host vocab (2D `camera` string +
1782
- * 3D `cameraMode`). `isometric`/`top-down` are fixed framings; `follow`/`chase`
1783
- * track a target; `perspective` is the 3D dramatic framing.
1782
+ * 3D `cameraMode`). `isometric`/`top-down`/`front` are fixed framings (`front` =
1783
+ * the straight-on flat elevation side-scroller / reference-sheet view);
1784
+ * `follow`/`chase` track a target; `perspective` is the 3D dramatic framing.
1784
1785
  */
1785
- declare const CAMERA_MODES: readonly ["isometric", "perspective", "top-down", "follow", "chase"];
1786
+ declare const CAMERA_MODES: readonly ["isometric", "perspective", "top-down", "front", "follow", "chase"];
1786
1787
  type CameraMode = (typeof CAMERA_MODES)[number];
1787
- declare const CameraModeSchema: z.ZodEnum<["isometric", "perspective", "top-down", "follow", "chase"]>;
1788
+ declare const CameraModeSchema: z.ZodEnum<["isometric", "perspective", "top-down", "front", "follow", "chase"]>;
1788
1789
  /**
1789
1790
  * A neutral camera pose shared by the 2D and 3D canvas hosts, so `type: canvas`
1790
1791
  * carries one camera object regardless of painter. `pos`/`target` are `ScenePos`
@@ -1828,7 +1829,7 @@ declare const CameraSchema: z.ZodObject<{
1828
1829
  }>>;
1829
1830
  zoom: z.ZodOptional<z.ZodNumber>;
1830
1831
  fov: z.ZodOptional<z.ZodNumber>;
1831
- mode: z.ZodOptional<z.ZodEnum<["isometric", "perspective", "top-down", "follow", "chase"]>>;
1832
+ mode: z.ZodOptional<z.ZodEnum<["isometric", "perspective", "top-down", "front", "follow", "chase"]>>;
1832
1833
  }, "strip", z.ZodTypeAny, {
1833
1834
  target?: {
1834
1835
  x: number;
@@ -1842,7 +1843,7 @@ declare const CameraSchema: z.ZodObject<{
1842
1843
  } | undefined;
1843
1844
  zoom?: number | undefined;
1844
1845
  fov?: number | undefined;
1845
- mode?: "isometric" | "perspective" | "top-down" | "follow" | "chase" | undefined;
1846
+ mode?: "isometric" | "perspective" | "top-down" | "front" | "follow" | "chase" | undefined;
1846
1847
  }, {
1847
1848
  target?: {
1848
1849
  x: number;
@@ -1856,7 +1857,7 @@ declare const CameraSchema: z.ZodObject<{
1856
1857
  } | undefined;
1857
1858
  zoom?: number | undefined;
1858
1859
  fov?: number | undefined;
1859
- mode?: "isometric" | "perspective" | "top-down" | "follow" | "chase" | undefined;
1860
+ mode?: "isometric" | "perspective" | "top-down" | "front" | "follow" | "chase" | undefined;
1860
1861
  }>;
1861
1862
  type SemanticAssetRefInput = z.input<typeof SemanticAssetRefSchema>;
1862
1863
  type AnimationDefInput = z.input<typeof AnimationDefSchema>;
@@ -2362,8 +2363,8 @@ type EntityData = Record<string, EntityRow[]>;
2362
2363
  *
2363
2364
  * DO NOT EDIT MANUALLY — regenerated by almadar-pattern-sync `patterns` command.
2364
2365
  *
2365
- * Generated: 2026-07-31T07:15:08.340Z
2366
- * Pattern count: 268
2366
+ * Generated: 2026-08-01T09:06:42.746Z
2367
+ * Pattern count: 269
2367
2368
  */
2368
2369
 
2369
2370
  /**
@@ -2375,7 +2376,7 @@ type PatternPropValue = Record<string, FieldValue | undefined>;
2375
2376
  * All valid pattern type names from @almadar/core/patterns registry.
2376
2377
  * Use this type in render-ui effects for compile-time validation.
2377
2378
  */
2378
- type PatternType = 'about-page-template' | 'accordion' | 'action-palette' | 'action-tile' | 'activation-block' | 'alert' | 'algorithm-canvas' | 'animated-counter' | 'animated-graphic' | 'animated-reveal' | 'article-section' | 'aside' | 'atlas-image' | 'atlas-panel' | 'auth-layout' | 'avatar' | 'badge' | 'behavior-view' | 'biology-canvas' | 'bloom-quiz-block' | 'book-chapter-view' | 'book-cover-page' | 'book-nav-bar' | 'book-table-of-contents' | 'book-viewer' | 'box' | 'branching-logic-builder' | 'breadcrumb' | 'button' | 'calendar-grid' | 'canvas' | 'canvas-2d' | 'card' | 'carousel' | 'case-study-card' | 'case-study-organism' | 'center' | 'chart' | 'chart-legend' | 'chat-bar' | 'checkbox' | 'chemistry-canvas' | 'choice-button' | 'code-block' | 'code-runner-panel' | 'community-links' | 'conditional-wrapper' | 'confetti-effect' | 'confirm-dialog' | 'connection-block' | 'container' | 'content-renderer' | 'content-section' | 'control-button' | 'control-grid' | 'counter-template' | 'cta-banner' | 'dashboard-grid' | 'dashboard-layout' | 'data-grid' | 'data-list' | 'date-range-picker' | 'date-range-selector' | 'day-cell' | 'detail-panel' | 'dialog' | 'dialogue-bubble' | 'divider' | 'doc-breadcrumb' | 'doc-pagination' | 'doc-search' | 'doc-sidebar' | 'doc-toc' | 'document-viewer' | 'draw-group' | 'draw-shape' | 'draw-shape-layer' | 'draw-sprite' | 'draw-sprite-layer' | 'draw-text' | 'draw-text-layer' | 'drawer' | 'drawer-slot' | 'edge-decoration' | 'emoji-picker' | 'empty-state' | 'entity-cards' | 'entity-list' | 'entity-table' | 'error-boundary' | 'error-state' | 'feature-card' | 'feature-detail-page-template' | 'feature-grid' | 'feature-grid-organism' | 'file-tree' | 'filter-group' | 'filter-pill' | 'flex' | 'flip-card' | 'flip-container' | 'floating-action-button' | 'form' | 'form-actions' | 'form-field' | 'form-layout' | 'form-section' | 'form-section-header' | 'game-audio-toggle' | 'game-hud' | 'game-icon' | 'game-menu' | 'game-shell' | 'generic-app-template' | 'geometric-pattern' | 'gradient-divider' | 'graph-canvas' | 'graph-view' | 'grid' | 'header' | 'health-bar' | 'hero-organism' | 'hero-section' | 'hstack' | 'icon' | 'import-preview-tree' | 'import-progress' | 'import-source-picker' | 'infinite-scroll-sentinel' | 'input' | 'input-group' | 'install-box' | 'jazari-state-machine' | 'label' | 'landing-page-template' | 'law-reference-tooltip' | 'learning-canvas' | 'lightbox' | 'likert-scale' | 'line-chart' | 'loading-state' | 'map-view' | 'markdown-content' | 'marketing-footer' | 'marketing-stat-card' | 'master-detail' | 'master-detail-layout' | 'math-canvas' | 'matrix-question' | 'media-gallery' | 'menu' | 'meter' | 'modal' | 'modal-slot' | 'module-card' | 'navigation' | 'notification' | 'number-stepper' | 'option-constraint-group' | 'orbital-visualization' | 'overlay' | 'page-header' | 'page-transition' | 'pagination' | 'pattern-tile' | 'physics-canvas' | 'popover' | 'positioned-canvas' | 'presence' | 'pricing-card' | 'pricing-grid' | 'pricing-organism' | 'pricing-page-template' | 'progress-bar' | 'progress-dots' | 'pull-quote' | 'pull-to-refresh' | 'qr-scanner' | 'quiz-block' | 'radio' | 'range-slider' | 'reflection-block' | 'relation-select' | 'repeatable-form-section' | 'reply-tree' | 'rich-block-editor' | 'runtime-debugger' | 'scaled-diagram' | 'score-display' | 'search-input' | 'section' | 'section-header' | 'segment-renderer' | 'select' | 'sequence-bar' | 'service-catalog' | 'showcase-card' | 'showcase-organism' | 'side-panel' | 'sidebar' | 'signature-pad' | 'simple-grid' | 'skeleton' | 'social-proof' | 'sortable-list' | 'spacer' | 'sparkline' | 'spinner' | 'split' | 'split-pane' | 'split-section' | 'stack' | 'star-rating' | 'stat-badge' | 'stat-card' | 'stat-display' | 'state-graph' | 'state-json-view' | 'state-machine-view' | 'stats-grid' | 'stats-organism' | 'status-dot' | 'step-flow' | 'step-flow-organism' | 'subagent-trace-panel' | 'svg-branch' | 'svg-connection' | 'svg-flow' | 'svg-grid' | 'svg-lobe' | 'svg-mesh' | 'svg-morph' | 'svg-node' | 'svg-pulse' | 'svg-ring' | 'svg-shield' | 'svg-stack' | 'swipeable-row' | 'switch' | 'tabbed-container' | 'table-view' | 'tabs' | 'tag-cloud' | 'tag-input' | 'team-card' | 'team-organism' | 'text-highlight' | 'textarea' | 'theme-toggle' | 'time-slot-cell' | 'timeline' | 'timer-display' | 'toast-slot' | 'tooltip' | 'trait-frame' | 'trait-slot' | 'trend-indicator' | 'typewriter-text' | 'typography' | 'ui-slot-renderer' | 'upload-drop-zone' | 'version-diff' | 'violation-alert' | 'vote-stack' | 'vstack' | 'wizard-container' | 'wizard-navigation' | 'wizard-progress';
2379
+ type PatternType = 'about-page-template' | 'accordion' | 'action-palette' | 'action-tile' | 'activation-block' | 'alert' | 'algorithm-canvas' | 'animated-counter' | 'animated-graphic' | 'animated-reveal' | 'article-section' | 'aside' | 'atlas-image' | 'atlas-panel' | 'auth-layout' | 'avatar' | 'badge' | 'behavior-view' | 'biology-canvas' | 'bloom-quiz-block' | 'book-chapter-view' | 'book-cover-page' | 'book-nav-bar' | 'book-table-of-contents' | 'book-viewer' | 'box' | 'branching-logic-builder' | 'breadcrumb' | 'button' | 'calendar-grid' | 'canvas' | 'canvas-2d' | 'card' | 'carousel' | 'case-study-card' | 'case-study-organism' | 'center' | 'chart' | 'chart-legend' | 'chat-bar' | 'checkbox' | 'chemistry-canvas' | 'choice-button' | 'code-block' | 'code-runner-panel' | 'community-links' | 'conditional-wrapper' | 'confetti-effect' | 'confirm-dialog' | 'connection-block' | 'container' | 'content-renderer' | 'content-section' | 'control-button' | 'control-grid' | 'counter-template' | 'cta-banner' | 'dashboard-grid' | 'dashboard-layout' | 'data-grid' | 'data-list' | 'date-range-picker' | 'date-range-selector' | 'day-cell' | 'detail-panel' | 'dialog' | 'dialogue-bubble' | 'divider' | 'doc-breadcrumb' | 'doc-pagination' | 'doc-search' | 'doc-sidebar' | 'doc-toc' | 'document-viewer' | 'draw-group' | 'draw-mesh' | 'draw-shape' | 'draw-shape-layer' | 'draw-sprite' | 'draw-sprite-layer' | 'draw-text' | 'draw-text-layer' | 'drawer' | 'drawer-slot' | 'edge-decoration' | 'emoji-picker' | 'empty-state' | 'entity-cards' | 'entity-list' | 'entity-table' | 'error-boundary' | 'error-state' | 'feature-card' | 'feature-detail-page-template' | 'feature-grid' | 'feature-grid-organism' | 'file-tree' | 'filter-group' | 'filter-pill' | 'flex' | 'flip-card' | 'flip-container' | 'floating-action-button' | 'form' | 'form-actions' | 'form-field' | 'form-layout' | 'form-section' | 'form-section-header' | 'game-audio-toggle' | 'game-hud' | 'game-icon' | 'game-menu' | 'game-shell' | 'generic-app-template' | 'geometric-pattern' | 'gradient-divider' | 'graph-canvas' | 'graph-view' | 'grid' | 'header' | 'health-bar' | 'hero-organism' | 'hero-section' | 'hstack' | 'icon' | 'import-preview-tree' | 'import-progress' | 'import-source-picker' | 'infinite-scroll-sentinel' | 'input' | 'input-group' | 'install-box' | 'jazari-state-machine' | 'label' | 'landing-page-template' | 'law-reference-tooltip' | 'learning-canvas' | 'lightbox' | 'likert-scale' | 'line-chart' | 'loading-state' | 'map-view' | 'markdown-content' | 'marketing-footer' | 'marketing-stat-card' | 'master-detail' | 'master-detail-layout' | 'math-canvas' | 'matrix-question' | 'media-gallery' | 'menu' | 'meter' | 'modal' | 'modal-slot' | 'module-card' | 'navigation' | 'notification' | 'number-stepper' | 'option-constraint-group' | 'orbital-visualization' | 'overlay' | 'page-header' | 'page-transition' | 'pagination' | 'pattern-tile' | 'physics-canvas' | 'popover' | 'positioned-canvas' | 'presence' | 'pricing-card' | 'pricing-grid' | 'pricing-organism' | 'pricing-page-template' | 'progress-bar' | 'progress-dots' | 'pull-quote' | 'pull-to-refresh' | 'qr-scanner' | 'quiz-block' | 'radio' | 'range-slider' | 'reflection-block' | 'relation-select' | 'repeatable-form-section' | 'reply-tree' | 'rich-block-editor' | 'runtime-debugger' | 'scaled-diagram' | 'score-display' | 'search-input' | 'section' | 'section-header' | 'segment-renderer' | 'select' | 'sequence-bar' | 'service-catalog' | 'showcase-card' | 'showcase-organism' | 'side-panel' | 'sidebar' | 'signature-pad' | 'simple-grid' | 'skeleton' | 'social-proof' | 'sortable-list' | 'spacer' | 'sparkline' | 'spinner' | 'split' | 'split-pane' | 'split-section' | 'stack' | 'star-rating' | 'stat-badge' | 'stat-card' | 'stat-display' | 'state-graph' | 'state-json-view' | 'state-machine-view' | 'stats-grid' | 'stats-organism' | 'status-dot' | 'step-flow' | 'step-flow-organism' | 'subagent-trace-panel' | 'svg-branch' | 'svg-connection' | 'svg-flow' | 'svg-grid' | 'svg-lobe' | 'svg-mesh' | 'svg-morph' | 'svg-node' | 'svg-pulse' | 'svg-ring' | 'svg-shield' | 'svg-stack' | 'swipeable-row' | 'switch' | 'tabbed-container' | 'table-view' | 'tabs' | 'tag-cloud' | 'tag-input' | 'team-card' | 'team-organism' | 'text-highlight' | 'textarea' | 'theme-toggle' | 'time-slot-cell' | 'timeline' | 'timer-display' | 'toast-slot' | 'tooltip' | 'trait-frame' | 'trait-slot' | 'trend-indicator' | 'typewriter-text' | 'typography' | 'ui-slot-renderer' | 'upload-drop-zone' | 'version-diff' | 'violation-alert' | 'vote-stack' | 'vstack' | 'wizard-container' | 'wizard-navigation' | 'wizard-progress';
2379
2380
  /**
2380
2381
  * Pattern props map — each pattern type maps to its valid props interface.
2381
2382
  */
@@ -2750,6 +2751,8 @@ interface PatternPropsMap {
2750
2751
  showCoordinates?: boolean | string | SExpr;
2751
2752
  showTileInfo?: boolean | string | SExpr;
2752
2753
  fogOfWar?: unknown[] | string | SExpr;
2754
+ lighting?: PatternPropValue | string | SExpr;
2755
+ post?: PatternPropValue | string | SExpr;
2753
2756
  tileClickEvent?: string | SExpr;
2754
2757
  unitClickEvent?: string | SExpr;
2755
2758
  tileHoverEvent?: string | SExpr;
@@ -3350,10 +3353,39 @@ interface PatternPropsMap {
3350
3353
  position: PatternPropValue | string | SExpr;
3351
3354
  scale?: number | string | SExpr;
3352
3355
  rotate?: number | string | SExpr;
3356
+ rotation?: unknown[] | string | SExpr;
3357
+ bone?: string | SExpr;
3358
+ skeleton?: boolean | string | SExpr;
3359
+ animation?: PatternPropValue | string | SExpr;
3353
3360
  opacity?: number | string | SExpr;
3354
3361
  clip?: string | SExpr;
3355
3362
  items: unknown[] | string | SExpr;
3356
3363
  };
3364
+ 'draw-mesh': {
3365
+ type: 'draw-mesh';
3366
+ id?: string | SExpr;
3367
+ shape: string | SExpr;
3368
+ position: PatternPropValue | string | SExpr;
3369
+ width?: number | string | SExpr;
3370
+ height?: number | string | SExpr;
3371
+ depth?: number | string | SExpr;
3372
+ radius?: number | string | SExpr;
3373
+ radiusTop?: number | string | SExpr;
3374
+ radiusBottom?: number | string | SExpr;
3375
+ tube?: number | string | SExpr;
3376
+ segments?: number | string | SExpr;
3377
+ vertices?: unknown[] | string | SExpr;
3378
+ faces?: unknown[] | string | SExpr;
3379
+ skin?: PatternPropValue | string | SExpr;
3380
+ rotation?: unknown[] | string | SExpr;
3381
+ pivot?: string | SExpr;
3382
+ material?: PatternPropValue | string | SExpr;
3383
+ outline?: PatternPropValue | string | SExpr;
3384
+ castShadow?: boolean | string | SExpr;
3385
+ receiveShadow?: boolean | string | SExpr;
3386
+ animation?: PatternPropValue | string | SExpr;
3387
+ opacity?: number | string | SExpr;
3388
+ };
3357
3389
  'draw-shape': {
3358
3390
  type: 'draw-shape';
3359
3391
  id?: string | SExpr;
@@ -0,0 +1,54 @@
1
+ import { O as OrbitalSchema } from './schema-1bzTH92n.js';
2
+ import { S as SExpr } from './expression-Yf7qvvOs.js';
3
+
4
+ /**
5
+ * Entity access policies — the declared `@read`/`@create`/`@update`/`@delete`
6
+ * directives, keyed by entity name.
7
+ *
8
+ * The JS mirror of `orbital-core/src/runtime/entity_access.rs`'s
9
+ * `EntityAccessPolicies`/`EntityAccessTable`. Both paths must agree: a
10
+ * directive is a per-row predicate (`@entity` = the candidate row, or for
11
+ * `@create` the incoming data; `@user` = the viewer), enforced once for
12
+ * every trait that touches the entity — the un-bypassable twin of a
13
+ * call-site `filter:`, which sibling traits can skip simply by not
14
+ * declaring one.
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+
19
+ /** An entity's four declared directives. Any may be absent — an absent
20
+ * directive means "no restriction" for that operation, exactly like an
21
+ * absent fetch `filter:`. */
22
+ interface EntityAccessPolicies {
23
+ read?: SExpr;
24
+ create?: SExpr;
25
+ update?: SExpr;
26
+ delete?: SExpr;
27
+ }
28
+ /**
29
+ * Every entity's access policies, keyed by entity name.
30
+ *
31
+ * A policy governs the **collection**, not the declaration. A `persistent:`
32
+ * collection is one table, and two entity declarations over one table cannot
33
+ * honestly carry different visibility rules. Keying by entity name alone let an
34
+ * organism declare `@read` on its own entity and still ship an ALLOW-ALL list
35
+ * wherever a page rendered through a std-atom trait that fetched the ATOM's
36
+ * entity on the same collection — measured on `std-customer-success`, where
37
+ * `/health-scores` returned 6 rows for every persona while the organism's own
38
+ * `/cs-accounts` correctly returned 3 vs 6. 36 of 54 app organisms share a
39
+ * collection this way (`R-SHADOW-ENTITY-SHARES-COLLECTION-DIRECTIVES-DONT-APPLY`).
40
+ *
41
+ * So an entity that declares nothing adopts the policy declared on its
42
+ * collection. This can only ever ADD a restriction: an entity with its own
43
+ * directives keeps exactly those, and an entity whose collection carries no
44
+ * declared policy is untouched. Conflicting declarations on one collection are
45
+ * rejected at validate time by `ORB_S_COLLECTION_POLICY_CONFLICT`.
46
+ *
47
+ * Mirrors `resolve_collection_inheritance` in
48
+ * `orbital-rust/crates/orbital-core/src/runtime/entity_access.rs`.
49
+ */
50
+ declare function entityAccessTable(schema: OrbitalSchema): Map<string, EntityAccessPolicies>;
51
+ /** One entity's access policies, or `undefined` when it declares none. */
52
+ declare function entityAccessPolicies(schema: OrbitalSchema, entityName: string): EntityAccessPolicies | undefined;
53
+
54
+ export { type EntityAccessPolicies as E, entityAccessTable as a, entityAccessPolicies as e };
@@ -1,7 +1,7 @@
1
- import { h as FactoryParamValue, c as FactoryConfigTier, b as FactoryConfigParam, F as FactoryCallSite, j as FactorySignature, R as RuleOverlay, p as RuleOverlayEntry, o as PresentationOverlay, T as TraitOverlay } from '../types-By96RdSM.js';
2
- export { a as FactoryCallSiteParams, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryExposure, g as FactoryPageSignature, i as FactoryProvenance, k as FactorySignatureCatalog, l as FactorySignatureEntityField, m as FactoryTraitSignature, J as JsonSchema, n as JsonSchemaType, O as OwnershipOverlayEntry, P as PresentationNavItem, S as SchemaFieldType, q as TraitOverlayEntry, r as TraitOverlayListener } from '../types-By96RdSM.js';
3
- import { a as EntityPersistence, E as EntityField } from '../effect-BZDXo4bV.js';
4
- import { a as TraitReference } from '../trait-1OkxYkAr.js';
1
+ import { h as FactoryParamValue, c as FactoryConfigTier, b as FactoryConfigParam, F as FactoryCallSite, j as FactorySignature, R as RuleOverlay, p as RuleOverlayEntry, o as PresentationOverlay, T as TraitOverlay } from '../types-CUdqUyzi.js';
2
+ export { a as FactoryCallSiteParams, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryExposure, g as FactoryPageSignature, i as FactoryProvenance, k as FactorySignatureCatalog, l as FactorySignatureEntityField, m as FactoryTraitSignature, J as JsonSchema, n as JsonSchemaType, O as OwnershipOverlayEntry, P as PresentationNavItem, S as SchemaFieldType, q as TraitOverlayEntry, r as TraitOverlayListener } from '../types-CUdqUyzi.js';
3
+ import { a as EntityPersistence, E as EntityField } from '../effect-DjMRX8sI.js';
4
+ import { a as TraitReference } from '../trait-DkMVtmED.js';
5
5
  export { J as JsonValue } from '../expression-Yf7qvvOs.js';
6
6
  import 'zod';
7
7
 
@@ -1,6 +1,6 @@
1
- import { O as OrbitalSchema, a as OrbitalDefinition } from '../schema-CGoLC-m6.js';
2
- import { h as CallSiteConfig, i as CallSiteConfigEntry, g as Trait } from '../trait-1OkxYkAr.js';
3
- import { E as EntityField, a as EntityPersistence } from '../effect-BZDXo4bV.js';
1
+ import { O as OrbitalSchema, a as OrbitalDefinition } from '../schema-1bzTH92n.js';
2
+ import { h as CallSiteConfig, i as CallSiteConfigEntry, g as Trait } from '../trait-DkMVtmED.js';
3
+ import { E as EntityField, a as EntityPersistence } from '../effect-DjMRX8sI.js';
4
4
  import { MakeTraitRefOpts } from '../builders.js';
5
5
  import '../expression-Yf7qvvOs.js';
6
6
  import 'zod';
@@ -317,7 +317,7 @@ var ScenePosSchema = z.object({
317
317
  y: z.number(),
318
318
  z: z.number().optional()
319
319
  });
320
- var CAMERA_MODES = ["isometric", "perspective", "top-down", "follow", "chase"];
320
+ var CAMERA_MODES = ["isometric", "perspective", "top-down", "front", "follow", "chase"];
321
321
  var CameraModeSchema = z.enum(CAMERA_MODES);
322
322
  z.object({
323
323
  pos: ScenePosSchema.optional(),