@declarion/react 0.57.0 → 0.59.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist-lib/AgentChatPanel.impl-DBH1Ff4G.js +1200 -0
- package/dist-lib/DetailAuditStrip-9eJM2Fml.js +288 -0
- package/dist-lib/{DraggableChildrenTable-BV5sb8Uo.js → DraggableChildrenTable-4RZC351U.js} +87 -86
- package/dist-lib/Grid-CQabaBLx.js +405 -0
- package/dist-lib/{LayoutRenderer-C9AH9cXf.js → LayoutRenderer-DGKWZKpW.js} +1000 -1114
- package/dist-lib/{ListCardsBody-DXcDg536.js → ListCardsBody-DfGmyNIu.js} +84 -84
- package/dist-lib/MarkdownRenderer-BDbzDv_y.js +87 -0
- package/dist-lib/{RefreshControl-CNtN8zSl.js → RefreshControl-Bhoib0ZA.js} +126 -155
- package/dist-lib/SmartDetailPage.impl-DFjz29Ff.js +1565 -0
- package/dist-lib/SmartListPage.impl-BrZLE_Gb.js +3046 -0
- package/dist-lib/{SmartRecordListPage.impl-Bkl9aZJ8.js → SmartRecordListPage.impl-C1FJLr80.js} +281 -280
- package/dist-lib/SortHeaderMenu-Cijxk4cX.js +107 -0
- package/dist-lib/action-dispatch-DY0c8U81.js +1967 -0
- package/dist-lib/api/client.d.ts +5 -0
- package/dist-lib/api/data.d.ts +2 -4
- package/dist-lib/api/entities.d.ts +8 -15
- package/dist-lib/api/events.d.ts +3 -3
- package/dist-lib/cardProjection-Bkl2SSYz.js +499 -0
- package/dist-lib/components/actions/ResponsiveActionBar.d.ts +17 -16
- package/dist-lib/components/agents/AgentChatPanel.d.ts +3 -13
- package/dist-lib/components/agents/AgentChatPanel.impl.d.ts +14 -0
- package/dist-lib/components/agents/AgentPicker.d.ts +1 -2
- package/dist-lib/components/chrome/PageShell.d.ts +7 -0
- package/dist-lib/components/chrome/RecordHeader.d.ts +1 -2
- package/dist-lib/components/chrome/headerActionZone.d.ts +27 -0
- package/dist-lib/components/detail-layout/DetailAuditStrip.d.ts +1 -2
- package/dist-lib/components/detail-layout/DetailHighlights.d.ts +1 -2
- package/dist-lib/components/detail-layout/blockMeta.d.ts +2 -1
- package/dist-lib/components/fields/BoolField.d.ts +1 -1
- package/dist-lib/components/fields/EnumField.d.ts +1 -1
- package/dist-lib/components/fields/IntArrayField.d.ts +1 -1
- package/dist-lib/components/fields/MultilangArrayField.d.ts +2 -0
- package/dist-lib/components/fields/MultilangField.d.ts +1 -1
- package/dist-lib/components/fields/MultilangTextField.d.ts +1 -1
- package/dist-lib/components/fields/NumberField.d.ts +1 -1
- package/dist-lib/components/fields/PasswordField.d.ts +1 -1
- package/dist-lib/components/fields/RefCombobox.d.ts +1 -1
- package/dist-lib/components/fields/SecretField.d.ts +1 -1
- package/dist-lib/components/fields/StringArrayField.d.ts +1 -1
- package/dist-lib/components/fields/TimestampField.d.ts +1 -1
- package/dist-lib/components/fields/cells/registry.d.ts +2 -1
- package/dist-lib/components/fields/index.d.ts +2 -1
- package/dist-lib/components/fields/langMap.d.ts +2 -0
- package/dist-lib/components/fields/secretValue.d.ts +2 -0
- package/dist-lib/components/file-widgets/UnknownFileWidget.d.ts +3 -0
- package/dist-lib/components/file-widgets/UploadFailureText.d.ts +4 -0
- package/dist-lib/components/file-widgets/helpers.d.ts +1 -1
- package/dist-lib/components/file-widgets/host.d.ts +4 -3
- package/dist-lib/components/file-widgets/types.d.ts +1 -0
- package/dist-lib/components/file-widgets/upload.d.ts +18 -3
- package/dist-lib/components/filters/filter-op-label.d.ts +3 -0
- package/dist-lib/components/layout/ImpersonationBanner.d.ts +1 -1
- package/dist-lib/components/layout/ImpersonationFrame.d.ts +1 -1
- package/dist-lib/components/layout/Layout.d.ts +2 -1
- package/dist-lib/components/layout/Sidebar.d.ts +2 -1
- package/dist-lib/components/layout/TenantChip.d.ts +1 -1
- package/dist-lib/components/list/ViewSwitcher.d.ts +4 -2
- package/dist-lib/components/pages/DocumentsMenu.d.ts +1 -2
- package/dist-lib/components/pages/ExportMenu.d.ts +3 -5
- package/dist-lib/components/pages/RecordDocumentsPanel.d.ts +1 -2
- package/dist-lib/components/pages/auth/AuthShell.d.ts +4 -31
- package/dist-lib/components/pages/exportRequest.d.ts +4 -6
- package/dist-lib/components/pages/list/DeleteViewDialog.d.ts +8 -0
- package/dist-lib/components/pages/list/ListCardRow.d.ts +1 -2
- package/dist-lib/components/pages/list/ListCardsBody.d.ts +0 -1
- package/dist-lib/components/pages/list/ListFloatbar.d.ts +2 -2
- package/dist-lib/components/pages/list/ListHeader.d.ts +2 -2
- package/dist-lib/components/pages/list/ListNoRows.d.ts +4 -5
- package/dist-lib/components/pages/list/ListToolbar.d.ts +3 -2
- package/dist-lib/components/pages/list/ListUrlBanner.d.ts +10 -0
- package/dist-lib/components/pages/list/RowActionsCell.d.ts +2 -4
- package/dist-lib/components/pages/list/RowContextMenu.d.ts +1 -2
- package/dist-lib/components/pages/list/columns.d.ts +2 -1
- package/dist-lib/components/pages/list/filter-meta.d.ts +2 -1
- package/dist-lib/components/pages/list/useActiveView.d.ts +38 -0
- package/dist-lib/components/pages/list/useListColumnLayout.d.ts +6 -5
- package/dist-lib/components/pages/list/useListQuery.d.ts +4 -4
- package/dist-lib/components/pages/list/useListSort.d.ts +5 -4
- package/dist-lib/components/pages/list/useListViews.d.ts +18 -8
- package/dist-lib/components/pages/list/useRowMenu.d.ts +2 -3
- package/dist-lib/components/pages/profile/Profile.d.ts +3 -0
- package/dist-lib/components/params/ParamsBlock.d.ts +1 -13
- package/dist-lib/components/params/param-editors.d.ts +3 -11
- package/dist-lib/components/primitives/ClassifiedFieldLocked.d.ts +1 -2
- package/dist-lib/components/shared/DynamicIcon.d.ts +2 -2
- package/dist-lib/components/shared/LoadingSkeleton.d.ts +1 -0
- package/dist-lib/components/shared/LucideIcon.d.ts +1 -1
- package/dist-lib/components/shared/useOwnRefresh.d.ts +1 -1
- package/dist-lib/declarion-react.css +1 -1
- package/dist-lib/embed/theme.d.ts +1 -1
- package/dist-lib/embed/useEmbedNavigate.d.ts +1 -1
- package/dist-lib/failure-v-uGSpbX.js +158 -0
- package/dist-lib/{field-classification-D6xQYn-h.js → field-classification-C28XE-_P.js} +514 -307
- package/dist-lib/format-count-DA4wmmWR.js +1771 -0
- package/dist-lib/hooks/useEntityData.d.ts +1 -1
- package/dist-lib/hooks/useFilters.d.ts +7 -5
- package/dist-lib/hooks/useLanguage.d.ts +4 -0
- package/dist-lib/hooks/useParams.d.ts +4 -51
- package/dist-lib/hooks/useRegisterScreenTab.d.ts +1 -1
- package/dist-lib/hooks/useSSE.d.ts +3 -3
- package/dist-lib/hooks/useTabTitle.d.ts +2 -0
- package/dist-lib/hooks/useText.d.ts +3 -3
- package/dist-lib/hooks/useVersionWatcher.d.ts +1 -1
- package/dist-lib/hooks/useViews.d.ts +20 -0
- package/dist-lib/index.d.ts +8 -7
- package/dist-lib/index.js +2716 -5803
- package/dist-lib/lib/action-dispatch.d.ts +2 -1
- package/dist-lib/lib/actions.d.ts +30 -42
- package/dist-lib/lib/anchor.d.ts +3 -4
- package/dist-lib/lib/decimal-text.d.ts +1 -0
- package/dist-lib/lib/document-templates.d.ts +1 -2
- package/dist-lib/lib/download.d.ts +2 -1
- package/dist-lib/lib/evidence-verdict.d.ts +2 -1
- package/dist-lib/lib/failure.d.ts +2 -0
- package/dist-lib/lib/field-classification.d.ts +3 -3
- package/dist-lib/lib/filters.d.ts +18 -2
- package/dist-lib/lib/format-count.d.ts +8 -7
- package/dist-lib/lib/language.d.ts +19 -0
- package/dist-lib/lib/mass-edit.d.ts +2 -1
- package/dist-lib/lib/realtime-query-keys.d.ts +1 -1
- package/dist-lib/lib/realtime-reconcile.d.ts +3 -4
- package/dist-lib/lib/screen-back.d.ts +4 -6
- package/dist-lib/lib/sort.d.ts +9 -9
- package/dist-lib/lib/timestamp.d.ts +5 -7
- package/dist-lib/lib/ui-actions.d.ts +2 -1
- package/dist-lib/peekDraftStore-D-cTbiIr.js +199 -0
- package/dist-lib/registry-Cb3W-czW.js +1950 -0
- package/dist-lib/safe-url-oSJw5pzO.js +34 -0
- package/dist-lib/stores/icon-registry.d.ts +2 -2
- package/dist-lib/stores/list-layout.d.ts +3 -4
- package/dist-lib/stores/realtime.d.ts +1 -1
- package/dist-lib/stores/tabs.d.ts +3 -2
- package/dist-lib/testing.d.ts +6 -0
- package/dist-lib/testing.js +98 -76
- package/dist-lib/types/api.d.ts +7 -8
- package/dist-lib/types/fieldType.d.ts +1 -1
- package/dist-lib/types/files.d.ts +4 -4
- package/dist-lib/types/schema.d.ts +44 -50
- package/dist-lib/useAgentConversation-D97IqE-J.js +623 -0
- package/dist-lib/{useCurrentScreen-CzwzQpoW.js → useCurrentScreen-BL5NZFCw.js} +2777 -3768
- package/dist-lib/useListQuery-BG1GyKtJ.js +103 -0
- package/dist-lib/useProperties-4Lg3odrt.js +83 -0
- package/dist-lib/{useTabSearchMirror-C39U85cg.js → useTabSearchMirror-ZVLlINBX.js} +49 -51
- package/dist-lib/useText-BFDCTUSo.js +952 -0
- package/dist-lib/{value-Bo8C8WMU.js → value-By1-WJ8J.js} +74 -76
- package/dist-lib/vite/fingerprint-plugin.d.ts +2 -3
- package/package.json +9 -9
- package/dist-lib/Grid-DWgUPuZ3.js +0 -404
- package/dist-lib/MarkdownRenderer-CcSFc2N3.js +0 -85
- package/dist-lib/RecordIdBadge-CGxPR-8q.js +0 -24
- package/dist-lib/SmartDetailPage.impl-lskCd-WG.js +0 -1846
- package/dist-lib/SmartListPage.impl-CrGbdzyK.js +0 -2854
- package/dist-lib/SortHeaderMenu-SYSAaqQJ.js +0 -106
- package/dist-lib/action-dispatch-CR4ajBtT.js +0 -1985
- package/dist-lib/cardProjection-CW5RIMko.js +0 -699
- package/dist-lib/components/pages/home/HomeStub.d.ts +0 -6
- package/dist-lib/components/pages/jobs/Jobs.d.ts +0 -1
- package/dist-lib/components/pages/pipeline/Pipeline.d.ts +0 -1
- package/dist-lib/format-count-Dobmi-Ji.js +0 -1551
- package/dist-lib/hooks/useUserLocale.d.ts +0 -1
- package/dist-lib/lib/messages.d.ts +0 -12
- package/dist-lib/peekDraftStore-5wQ7lq_V.js +0 -194
- package/dist-lib/registry-CjgUaF7C.js +0 -1768
- package/dist-lib/useListQuery-D7Hr5WM1.js +0 -96
- package/dist-lib/useProperties-CqtCzFCr.js +0 -81
|
@@ -2,6 +2,7 @@ import { OrderedMap } from "./ordmap";
|
|
|
2
2
|
import type { FileFieldDef } from "./files";
|
|
3
3
|
import type { IconDef } from "../stores/icon-registry.d.ts";
|
|
4
4
|
import type { FilterNode } from "../lib/filters.d.ts";
|
|
5
|
+
import type { TextFn } from "../lib/language.d.ts";
|
|
5
6
|
export { OrderedMap };
|
|
6
7
|
export type { IconDef };
|
|
7
8
|
export type LocalizedString = Record<string, string>;
|
|
@@ -14,9 +15,8 @@ export type LocalizedString = Record<string, string>;
|
|
|
14
15
|
* none — no request at all; render the globe placeholder.
|
|
15
16
|
*
|
|
16
17
|
* Declared per column by `field.display.favicon_source`, and nowhere else -
|
|
17
|
-
* there is no parameter
|
|
18
|
-
*
|
|
19
|
-
* golang/internal/engine/types_field_display.go.
|
|
18
|
+
* there is no parameter. Absent = `google`, today's rendered default. The
|
|
19
|
+
* server accepts exactly these three values.
|
|
20
20
|
*/
|
|
21
21
|
export type FaviconSource = "google" | "direct" | "none";
|
|
22
22
|
/**
|
|
@@ -37,9 +37,8 @@ export interface EmptyStateDef {
|
|
|
37
37
|
* with Go's engine.DetailScreenNone - keep the literal "none" in sync.
|
|
38
38
|
*/
|
|
39
39
|
export declare const DETAIL_SCREEN_NONE = "none";
|
|
40
|
-
export declare function loc(ls: LocalizedString | undefined, lang?: string): string;
|
|
41
40
|
export declare const DISPLAY_KEY = "$display";
|
|
42
|
-
export declare function getDisplayValue(row: Record<string, unknown> | null | undefined, entity: {
|
|
41
|
+
export declare function getDisplayValue(t: TextFn, row: Record<string, unknown> | null | undefined, entity: {
|
|
43
42
|
display?: {
|
|
44
43
|
display_field?: string;
|
|
45
44
|
};
|
|
@@ -47,12 +46,13 @@ export declare function getDisplayValue(row: Record<string, unknown> | null | un
|
|
|
47
46
|
get(name: string): EntityField | undefined;
|
|
48
47
|
};
|
|
49
48
|
} | null | undefined): string | undefined;
|
|
50
|
-
export declare function resolveRefRecordLabel(record: Record<string, unknown>, displayKey: string | undefined, fallback: string): string;
|
|
51
|
-
export declare function screenTitleForPath(pathname: string, screens: Record<string, Screen> | undefined, entities?: Record<string, Entity>): {
|
|
49
|
+
export declare function resolveRefRecordLabel(t: TextFn, record: Record<string, unknown>, displayKey: string | undefined, fallback: string): string;
|
|
50
|
+
export declare function screenTitleForPath(t: TextFn, pathname: string, screens: Record<string, Screen> | undefined, entities?: Record<string, Entity>): {
|
|
52
51
|
title: string;
|
|
53
52
|
icon?: string;
|
|
53
|
+
exact: boolean;
|
|
54
54
|
} | undefined;
|
|
55
|
-
export declare function fieldDisplayName(field: EntityField, fieldName: string, entities?: Record<string, Entity>): string;
|
|
55
|
+
export declare function fieldDisplayName(t: TextFn, field: EntityField, fieldName: string, entities?: Record<string, Entity>): string;
|
|
56
56
|
export interface RefDisplay {
|
|
57
57
|
field: string;
|
|
58
58
|
}
|
|
@@ -163,8 +163,7 @@ export interface EntityField {
|
|
|
163
163
|
array?: boolean;
|
|
164
164
|
copyable?: boolean;
|
|
165
165
|
/**
|
|
166
|
-
*
|
|
167
|
-
* gating reads + writes on this field. Read-side: stripped from the
|
|
166
|
+
* Names the data_classifications tier gating reads + writes on this field. Read-side: stripped from the
|
|
168
167
|
* row when the caller lacks `classification:<tier>:read`. Write-side:
|
|
169
168
|
* 422 FIELDS_FORBIDDEN when the caller writes the key without
|
|
170
169
|
* `classification:<tier>:write`. Frontend reads the tier's localized
|
|
@@ -176,7 +175,7 @@ export interface EntityField {
|
|
|
176
175
|
}
|
|
177
176
|
/**
|
|
178
177
|
* Per-caller classification decision for one classified field on one
|
|
179
|
-
* entity.
|
|
178
|
+
* entity. Populated by the schema endpoint
|
|
180
179
|
* from the caller's grants + authority tier; the frontend reads this
|
|
181
180
|
* to render the locked-widget badge ("🔒 Compensation"), disable write
|
|
182
181
|
* inputs, and surface the operator-facing `required_permission` hint
|
|
@@ -332,8 +331,7 @@ export interface EntityVariant {
|
|
|
332
331
|
actions?: string[];
|
|
333
332
|
}
|
|
334
333
|
/** A set of CRUD op flags, each present or absent. The YAML-decoded shape of
|
|
335
|
-
* an entity's `public` opt-out block (deny-by-default authorization
|
|
336
|
-
* 2026-06-17). A flag being true means that op is open to ALL authenticated
|
|
334
|
+
* an entity's `public` opt-out block (deny-by-default authorization). A flag being true means that op is open to ALL authenticated
|
|
337
335
|
* callers with no grant required. Mirrors engine.OpSet. On the /api/schema
|
|
338
336
|
* wire it always serializes as this object (never a bare bool, even though
|
|
339
337
|
* YAML accepts `public: true`). */
|
|
@@ -396,8 +394,7 @@ export interface Entity {
|
|
|
396
394
|
associations?: Record<string, AssociationDef>;
|
|
397
395
|
files?: OrderedMap<FileFieldDef>;
|
|
398
396
|
detail_screen?: string;
|
|
399
|
-
/** Standard CSV export gate
|
|
400
|
-
* Absent block (or absent `enabled`) means export is enabled. Only an
|
|
397
|
+
/** Standard CSV export gate. Absent block (or absent `enabled`) means export is enabled. Only an
|
|
401
398
|
* explicit `enabled: false` opts out, mirroring the Go ExportEnabled()
|
|
402
399
|
* helper. Same shape ships on Screen for per-screen overrides. */
|
|
403
400
|
export?: ExportConfig;
|
|
@@ -410,8 +407,8 @@ export interface Entity {
|
|
|
410
407
|
* profile -> "user"). Absent = writes land under the entity's own code. Used
|
|
411
408
|
* by ParamsBlock to compute the attachable parameter set. */
|
|
412
409
|
params_scope?: string;
|
|
413
|
-
/** Server-enforced WHERE applied unconditionally on every read/write
|
|
414
|
-
*
|
|
410
|
+
/** Server-enforced WHERE applied unconditionally on every read/write.
|
|
411
|
+
* Values may be literal scalars
|
|
415
412
|
* OR `$caller.*` expressions (`$caller.user_id`, `$caller.tenant_id`)
|
|
416
413
|
* resolved at request time. Security boundary, not a UX hint. */
|
|
417
414
|
prefilter?: Record<string, unknown>;
|
|
@@ -421,9 +418,9 @@ export interface Entity {
|
|
|
421
418
|
* with_check). `"tenant_admin"` admits any administrative standing in the
|
|
422
419
|
* active tenant (superadmin / tenant_owner / any role grant). `"superadmin"`
|
|
423
420
|
* admits only the platform-wide god flag. Empty = no tier floor (standard
|
|
424
|
-
* RBAC). The legacy `"platform_admin"` alias was removed
|
|
421
|
+
* RBAC). The legacy `"platform_admin"` alias was removed. */
|
|
425
422
|
access?: "self" | "tenant_admin" | "superadmin";
|
|
426
|
-
/** Deny-by-default authorization
|
|
423
|
+
/** Deny-by-default authorization. Absent = every op
|
|
427
424
|
* requires its `entity:<code>:<op>` grant. `public.<op>: true` opts that op
|
|
428
425
|
* out of the grant requirement, opening it to all authenticated callers
|
|
429
426
|
* (NOT anonymous). The Entity.Access floor is checked first and is never
|
|
@@ -435,11 +432,11 @@ export interface Entity {
|
|
|
435
432
|
* Optional structural tree for placing and grouping actions across all
|
|
436
433
|
* placement slots. Absent = runtime composes a flat list from all actions
|
|
437
434
|
* matching each slot's visibility[], sorted by position ascending.
|
|
438
|
-
* Server delivers RBAC-pruned nodes in tagged-union wire format
|
|
435
|
+
* Server delivers RBAC-pruned nodes in tagged-union wire format.
|
|
439
436
|
*/
|
|
440
437
|
action_layout?: ActionLayoutNode[];
|
|
441
438
|
/**
|
|
442
|
-
*
|
|
439
|
+
* Per-caller classification access
|
|
443
440
|
* decision keyed by field name. Only present for entities that
|
|
444
441
|
* declare at least one classified field; absent on non-classification
|
|
445
442
|
* entities so the wire stays byte-equivalent for non-classification
|
|
@@ -454,8 +451,7 @@ export interface Entity {
|
|
|
454
451
|
* toolbar shows a green "Live" indicator. Absent or false (default OFF)
|
|
455
452
|
* means the entity is not live: no indicator, and the always-present
|
|
456
453
|
* manual refresh control is the only freshness mechanism. Server emits
|
|
457
|
-
* this with `omitempty`, so `false` arrives as absent.
|
|
458
|
-
* docs/plans/completed/2026-05-18-realtime-cdc-redesign.md.
|
|
454
|
+
* this with `omitempty`, so `false` arrives as absent.
|
|
459
455
|
*/
|
|
460
456
|
realtime?: boolean;
|
|
461
457
|
/**
|
|
@@ -464,8 +460,7 @@ export interface Entity {
|
|
|
464
460
|
* O(1) query-planner estimate, rendered coarse (~3.6M) for high-volume
|
|
465
461
|
* tables. Independent of `realtime`. The SDK keys list-view count
|
|
466
462
|
* precision on the response `meta.count_mode`, not this field, so a
|
|
467
|
-
* forced exact count still renders precisely.
|
|
468
|
-
* docs/plans/2026-05-18-declarative-row-count.md.
|
|
463
|
+
* forced exact count still renders precisely.
|
|
469
464
|
*/
|
|
470
465
|
count?: "exact" | "estimated";
|
|
471
466
|
/**
|
|
@@ -475,7 +470,7 @@ export interface Entity {
|
|
|
475
470
|
* AND the deployment has ClickHouse wired at boot - a cross-store hot+cold
|
|
476
471
|
* read cannot offset-paginate. Absent means "offset" (every plain Postgres /
|
|
477
472
|
* ClickHouse-only / ClickHouse-disabled-archive entity). The SDK branches the
|
|
478
|
-
* list UI on this.
|
|
473
|
+
* list UI on this.
|
|
479
474
|
*/
|
|
480
475
|
list_pagination?: "offset" | "cursor";
|
|
481
476
|
/**
|
|
@@ -488,7 +483,7 @@ export interface Entity {
|
|
|
488
483
|
* template is found via the lazy `document.templates.available` runtime
|
|
489
484
|
* probe (tenant templates are runtime data and are never baked into the
|
|
490
485
|
* schema). `generate_one` gates the detail-scope toolbar; `generate_many`
|
|
491
|
-
* gates the list-scope toolbar.
|
|
486
|
+
* gates the list-scope toolbar.
|
|
492
487
|
*/
|
|
493
488
|
documents?: {
|
|
494
489
|
generate_one?: boolean;
|
|
@@ -603,8 +598,8 @@ export interface AuditConfig {
|
|
|
603
598
|
enabled?: boolean;
|
|
604
599
|
lines?: AuditLineDef[];
|
|
605
600
|
}
|
|
606
|
-
/** Resolved per-screen visibility decision (deny-by-default authorization
|
|
607
|
-
*
|
|
601
|
+
/** Resolved per-screen visibility decision (deny-by-default authorization).
|
|
602
|
+
* Computed by the engine at load - authors write
|
|
608
603
|
* `public` / `required_permission`, never this. `public` and
|
|
609
604
|
* `required_permission` are mutually exclusive; `source` is the audit
|
|
610
605
|
* provenance (authored:public | authored | authored->public |
|
|
@@ -717,8 +712,7 @@ export interface Screen {
|
|
|
717
712
|
* viewer's own default view wins over it. */
|
|
718
713
|
default_view?: string;
|
|
719
714
|
/** Action slot promotion for list screens (rule-of-2). UI honors first 2.
|
|
720
|
-
*
|
|
721
|
-
* 2026-04-21-action-toolbar-priority-overflow. Use action_layout instead. */
|
|
715
|
+
* The detail-header `primary_record_actions` was removed; use action_layout. */
|
|
722
716
|
primary_actions?: string[];
|
|
723
717
|
primary_bulk_actions?: string[];
|
|
724
718
|
/** "open" (default) navigates to detail; "peek" opens QuickPeek drawer. */
|
|
@@ -735,7 +729,7 @@ export interface Screen {
|
|
|
735
729
|
* Optional per-screen structural tree for placing and grouping actions.
|
|
736
730
|
* When set, fully replaces entity.action_layout for this screen.
|
|
737
731
|
* Absent = inherit entity.action_layout (then default-flat if also absent).
|
|
738
|
-
* Server delivers RBAC-pruned nodes in tagged-union wire format
|
|
732
|
+
* Server delivers RBAC-pruned nodes in tagged-union wire format.
|
|
739
733
|
*/
|
|
740
734
|
action_layout?: ActionLayoutNode[];
|
|
741
735
|
}
|
|
@@ -860,7 +854,7 @@ export interface UIStep {
|
|
|
860
854
|
}
|
|
861
855
|
/**
|
|
862
856
|
* Leaf node in an action_layout tree. References a single action by code.
|
|
863
|
-
* Wire format
|
|
857
|
+
* Wire format: {"kind": "action", "code": "<code>"}
|
|
864
858
|
*/
|
|
865
859
|
export interface ActionLayoutLeaf {
|
|
866
860
|
kind: "action";
|
|
@@ -868,7 +862,7 @@ export interface ActionLayoutLeaf {
|
|
|
868
862
|
}
|
|
869
863
|
/**
|
|
870
864
|
* Branch node in an action_layout tree. Groups child nodes under a labelled dropdown.
|
|
871
|
-
* Wire format
|
|
865
|
+
* Wire format: {"kind": "group", "name": {...}, "icon": "...", "items": [...]}
|
|
872
866
|
* Items is always non-empty (enforced by loader).
|
|
873
867
|
*/
|
|
874
868
|
export interface ActionLayoutGroup {
|
|
@@ -900,7 +894,7 @@ export interface ActionConditionEntry {
|
|
|
900
894
|
export type ActionConditionList = ActionConditionEntry[];
|
|
901
895
|
export interface Action {
|
|
902
896
|
/**
|
|
903
|
-
* Server-side handler code. One of four dispatch fields
|
|
897
|
+
* Server-side handler code. One of four dispatch fields.
|
|
904
898
|
* Reason: the new wire format encodes dispatch mode by which field is set
|
|
905
899
|
* (handler | association | widget | href), so an explicit `type` enum is
|
|
906
900
|
* redundant and was removed. Exactly one of the four should be set per action.
|
|
@@ -908,12 +902,12 @@ export interface Action {
|
|
|
908
902
|
handler?: string;
|
|
909
903
|
/**
|
|
910
904
|
* Association code for nav-only actions that navigate to a related list.
|
|
911
|
-
* Reason: same dispatch-by-field-presence rule
|
|
905
|
+
* Reason: same dispatch-by-field-presence rule.
|
|
912
906
|
*/
|
|
913
907
|
association?: string;
|
|
914
908
|
/**
|
|
915
|
-
* SDK widget registry name.
|
|
916
|
-
*
|
|
909
|
+
* SDK widget registry name. The SDK has no widget registry yet: an action
|
|
910
|
+
* carrying `widget` logs a warning and falls back to `onRun`.
|
|
917
911
|
* Reason: lets actions render bespoke UI (e.g. inline picker) instead of
|
|
918
912
|
* server-handled forms, without inventing a new entity per widget.
|
|
919
913
|
*/
|
|
@@ -956,15 +950,15 @@ export interface Action {
|
|
|
956
950
|
*/
|
|
957
951
|
size?: "sm" | "md" | "lg";
|
|
958
952
|
/**
|
|
959
|
-
* Keyboard shortcut hint (e.g. "Cmd+S")
|
|
960
|
-
*
|
|
953
|
+
* Keyboard shortcut hint (e.g. "Cmd+S"), carried on the wire. The SDK
|
|
954
|
+
* neither renders it nor binds the key yet.
|
|
961
955
|
*/
|
|
962
956
|
shortcut?: string;
|
|
963
957
|
/**
|
|
964
958
|
* Localized explanation of what the action does. Surfaces as the control
|
|
965
959
|
* tooltip (precedence: disabled-reason > description > name) and the
|
|
966
960
|
* ActionDialog subtitle. Optional; absent renders exactly as before.
|
|
967
|
-
*
|
|
961
|
+
* Supersedes the removed `help` field.
|
|
968
962
|
*/
|
|
969
963
|
description?: LocalizedString;
|
|
970
964
|
};
|
|
@@ -973,25 +967,24 @@ export interface Action {
|
|
|
973
967
|
conditions?: ActionCondition[];
|
|
974
968
|
/**
|
|
975
969
|
* Ordering within a placement slot and overflow priority. Lower = earlier
|
|
976
|
-
* in bar AND last to overflow. Default 0; ties broken by
|
|
977
|
-
*
|
|
970
|
+
* in bar AND last to overflow. Default 0; ties broken by action code.
|
|
971
|
+
* Convention: step by 10 so a later action fits between two.
|
|
978
972
|
*/
|
|
979
973
|
position?: number;
|
|
980
974
|
/**
|
|
981
975
|
* Hide the action when condition does not hold against current row.
|
|
982
976
|
* Distinct from RBAC hide and from `enabled_if` disable. AND semantics
|
|
983
|
-
* across array elements.
|
|
977
|
+
* across array elements.
|
|
984
978
|
*/
|
|
985
979
|
visible_if?: ActionConditionList;
|
|
986
980
|
/**
|
|
987
981
|
* Disable the action (greyed out + tooltip) when condition does not hold.
|
|
988
982
|
* For bulk-mode multi-row selection, disabled if ANY selected row fails.
|
|
989
|
-
* See plan §1, §5.
|
|
990
983
|
*/
|
|
991
984
|
enabled_if?: ActionConditionList;
|
|
992
985
|
/**
|
|
993
986
|
* Localized tooltip shown when action is disabled by `enabled_if`.
|
|
994
|
-
* Required when `enabled_if` is set
|
|
987
|
+
* Required when `enabled_if` is set; the schema loader enforces it.
|
|
995
988
|
*/
|
|
996
989
|
enabled_if_reason?: LocalizedString;
|
|
997
990
|
/** Forces confirm + danger styling. */
|
|
@@ -1037,6 +1030,8 @@ export interface HandlerDef {
|
|
|
1037
1030
|
}
|
|
1038
1031
|
export interface Schema {
|
|
1039
1032
|
languages: LanguageDef[];
|
|
1033
|
+
language: string;
|
|
1034
|
+
deployment_language: string;
|
|
1040
1035
|
structures: Record<string, StructureDef>;
|
|
1041
1036
|
entities: Record<string, Entity>;
|
|
1042
1037
|
screens: Record<string, Screen>;
|
|
@@ -1059,7 +1054,7 @@ export interface Schema {
|
|
|
1059
1054
|
areas?: AreaDef[];
|
|
1060
1055
|
accents?: Record<string, AccentDef>;
|
|
1061
1056
|
/**
|
|
1062
|
-
*
|
|
1057
|
+
* data_classifications catalog keyed by
|
|
1063
1058
|
* tier code — display name + description + audit_on_read flag + icon
|
|
1064
1059
|
* + sod_protected flag. Absent when the consumer declares no tiers
|
|
1065
1060
|
* (preserves byte-equivalent wire shape for non-classification
|
|
@@ -1072,13 +1067,12 @@ export interface Schema {
|
|
|
1072
1067
|
* call sites. Carries ONLY declared/overridden entries (the built-in ~119
|
|
1073
1068
|
* travel as bare names, never here); absent when no module declares an
|
|
1074
1069
|
* `icons:` block. The Admin loads this into the runtime icon registry
|
|
1075
|
-
* (setIconRegistry) so custom glyphs render across the chrome.
|
|
1076
|
-
* 2026-06-12-consumer-extensible-icons.md §4.
|
|
1070
|
+
* (setIconRegistry) so custom glyphs render across the chrome.
|
|
1077
1071
|
*/
|
|
1078
1072
|
icons?: Record<string, IconDef>;
|
|
1079
1073
|
}
|
|
1080
1074
|
/**
|
|
1081
|
-
*
|
|
1075
|
+
* One entry in the top-level classifications map.
|
|
1082
1076
|
* Mirrors engine.DataClassification.
|
|
1083
1077
|
*/
|
|
1084
1078
|
export interface ClassificationTierDef {
|