spine-framework 0.3.124 → 0.3.126
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/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,49 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*
|
|
22
|
-
* **`system` flag on `FieldDefinition`:** When `system: true`, the field
|
|
23
|
-
* maps to a real DB column (e.g. `title`, `status`). When absent or false,
|
|
24
|
-
* the field value lives in the `data` JSONB column.
|
|
25
|
-
*
|
|
26
|
-
* @seeAlso src/hooks/useSchemaRecord.ts (consumes FieldDefinition[])
|
|
27
|
-
* @seeAlso src/hooks/useForm.ts (consumes FieldDefinition[] for validation)
|
|
28
|
-
* @seeAlso src/hooks/useListSchema.ts (consumes DesignSchema + View)
|
|
29
|
-
* @seeAlso functions/_shared/schema-utils.ts (server-side schema generation)
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
// ─── FIELD DEFINITIONS ───────────────────────────────────────────────────────────
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Definition of a single field in a `design_schema`. Drives both UI rendering
|
|
36
|
-
* and client-side validation in `useForm`.
|
|
37
|
-
*
|
|
38
|
-
* @prop data_type - Controls rendering widget and validation rules
|
|
39
|
-
* @prop label - Human-readable display label
|
|
40
|
-
* @prop required - Whether the field must be non-empty on save
|
|
41
|
-
* @prop system - If true, maps to a top-level DB column; false/absent → `data` JSONB
|
|
42
|
-
* @prop name - Injected at runtime by hooks; not stored in the schema itself
|
|
43
|
-
* @prop validation - Type-specific constraint overrides
|
|
44
|
-
* @prop options - Choice list for select/multiselect/radio fields
|
|
45
|
-
* @prop permissions - Role-based read/write access map; absent = all roles allowed
|
|
46
|
-
*/
|
|
1
|
+
|
|
2
|
+
// CIL[BEGIN chunk_id="types_fielddefinition_1783637731" type="interface" identity="FieldDefinition" parent="none"]
|
|
3
|
+
// CIL[DOC-MACRO purpose="Define a single field in a design schema that drives UI rendering and client-side validation"]
|
|
4
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent field specifications including data type, validation rules, and role-based permissions"]
|
|
5
|
+
// CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
6
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
7
|
+
// CIL[DOC-MICRO logic_summary="Represent field specifications including data type, validation rules, and role-based permissions" notable_decisions="[]"]
|
|
8
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
9
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
10
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
11
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
12
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
13
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
14
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
15
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
47
21
|
export interface FieldDefinition {
|
|
48
22
|
data_type: 'text' | 'textarea' | 'rich_text' | 'email' | 'phone' | 'url' |
|
|
49
23
|
'number' | 'currency' | 'range' | 'date' | 'datetime' | 'boolean' |
|
|
@@ -51,10 +25,10 @@ export interface FieldDefinition {
|
|
|
51
25
|
'file' | 'image' | 'json' | 'reference' | 'address'
|
|
52
26
|
label: string
|
|
53
27
|
required: boolean
|
|
54
|
-
system?: boolean
|
|
55
|
-
|
|
28
|
+
system?: boolean
|
|
29
|
+
|
|
56
30
|
name?: string
|
|
57
|
-
|
|
31
|
+
|
|
58
32
|
placeholder?: string
|
|
59
33
|
description?: string
|
|
60
34
|
rows?: number
|
|
@@ -80,23 +54,32 @@ export interface FieldDefinition {
|
|
|
80
54
|
reference_kind?: string
|
|
81
55
|
reference_type?: string
|
|
82
56
|
}
|
|
83
|
-
|
|
84
|
-
options?: (string | { value: string; label: string })[]
|
|
57
|
+
|
|
58
|
+
options?: (string | { value: string; label: string })[]
|
|
85
59
|
permissions?: {
|
|
86
|
-
[role: string]: string[]
|
|
60
|
+
[role: string]: string[]
|
|
87
61
|
}
|
|
88
62
|
}
|
|
63
|
+
// CIL[END chunk_id="types_fielddefinition_1783637731"]
|
|
64
|
+
// CIL[BEGIN chunk_id="types_viewfieldconfig_1783637731" type="interface" identity="ViewFieldConfig" parent="none"]
|
|
65
|
+
// CIL[DOC-MACRO purpose="Define per-field display/behaviour config within a view for UI rendering"]
|
|
66
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent view-specific field overrides including widget type and interaction flags"]
|
|
67
|
+
// CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
68
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
69
|
+
// CIL[DOC-MICRO logic_summary="Represent view-specific field overrides including widget type and interaction flags" notable_decisions="[]"]
|
|
70
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
71
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
72
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
73
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
74
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
75
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
76
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
77
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
89
81
|
|
|
90
|
-
// ─── VIEW TYPES ─────────────────────────────────────────────────────────────────
|
|
91
82
|
|
|
92
|
-
/**
|
|
93
|
-
* Per-field display/behaviour config within a view. Stored as
|
|
94
|
-
* `design_schema.views[viewSlug].fields[fieldName]`.
|
|
95
|
-
*
|
|
96
|
-
* @prop display_type - Override the default widget for this field in this view
|
|
97
|
-
* @prop sortable - Whether the column header shows a sort toggle in list views
|
|
98
|
-
* @prop searchable - Whether the field is included in free-text search
|
|
99
|
-
*/
|
|
100
83
|
export interface ViewFieldConfig {
|
|
101
84
|
display_type: 'input' | 'textarea' | 'rich_text' | 'select' | 'multiselect' |
|
|
102
85
|
'radio' | 'checkbox' | 'switch' | 'date_picker' | 'datetime_picker' |
|
|
@@ -106,17 +89,24 @@ export interface ViewFieldConfig {
|
|
|
106
89
|
sortable?: boolean
|
|
107
90
|
searchable?: boolean
|
|
108
91
|
}
|
|
92
|
+
// CIL[END chunk_id="types_viewfieldconfig_1783637731"]
|
|
93
|
+
// CIL[BEGIN chunk_id="types_listview_1783637731" type="interface" identity="ListView" parent="none"]
|
|
94
|
+
// CIL[DOC-MACRO purpose="Define a list view configuration for rendering data as table, card grid, or Kanban board"]
|
|
95
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent list display settings including fields, sorting, filters, stats, and grouping"]
|
|
96
|
+
// CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
97
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
98
|
+
// CIL[DOC-MICRO logic_summary="Represent list display settings including fields, sorting, filters, stats, and grouping" notable_decisions="[]"]
|
|
99
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
100
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
101
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
102
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
103
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
104
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
105
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
106
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
107
|
+
|
|
108
|
+
|
|
109
109
|
|
|
110
|
-
/**
|
|
111
|
-
* A list view definition. Rendered by `DataListPage` as a table, card grid,
|
|
112
|
-
* or Kanban board depending on `display`.
|
|
113
|
-
*
|
|
114
|
-
* @prop fields - Ordered map of field name → `ViewFieldConfig`
|
|
115
|
-
* @prop default_sort - Initial sort applied before user interaction
|
|
116
|
-
* @prop filters - Field names to expose as filter controls
|
|
117
|
-
* @prop stats - Summary stat cards shown above the list
|
|
118
|
-
* @prop group_by - Field to use as board column grouping (`display: 'board'` only)
|
|
119
|
-
*/
|
|
120
110
|
export interface ListView {
|
|
121
111
|
type: 'list'
|
|
122
112
|
display: 'table' | 'card' | 'board'
|
|
@@ -134,50 +124,99 @@ export interface ListView {
|
|
|
134
124
|
color?: string
|
|
135
125
|
filter?: Record<string, any>
|
|
136
126
|
}>
|
|
137
|
-
group_by?: string
|
|
127
|
+
group_by?: string
|
|
138
128
|
}
|
|
129
|
+
// CIL[END chunk_id="types_listview_1783637731"]
|
|
130
|
+
// CIL[BEGIN chunk_id="types_detailviewsection_1783637731" type="interface" identity="DetailViewSection" parent="none"]
|
|
131
|
+
// CIL[DOC-MACRO purpose="Define a single section within a DetailView that groups related fields"]
|
|
132
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent logical groupings of fields with optional titles for detail forms"]
|
|
133
|
+
// CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
134
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
135
|
+
// CIL[DOC-MICRO logic_summary="Represent logical groupings of fields with optional titles for detail forms" notable_decisions="[]"]
|
|
136
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
137
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
138
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
139
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
140
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
141
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
142
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
143
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
144
|
+
|
|
145
|
+
|
|
139
146
|
|
|
140
|
-
/**
|
|
141
|
-
* A single section within a `DetailView`. Groups related fields under
|
|
142
|
-
* an optional title. Field permissions from the schema still apply —
|
|
143
|
-
* there are no section-level permission overrides.
|
|
144
|
-
*/
|
|
145
147
|
export interface DetailViewSection {
|
|
146
148
|
title: string
|
|
147
149
|
fields: Record<string, ViewFieldConfig>
|
|
148
|
-
|
|
150
|
+
|
|
149
151
|
}
|
|
152
|
+
// CIL[END chunk_id="types_detailviewsection_1783637731"]
|
|
153
|
+
// CIL[BEGIN chunk_id="types_detailview_1783637731" type="interface" identity="DetailView" parent="none"]
|
|
154
|
+
// CIL[DOC-MACRO purpose="Define a detail view configuration for rendering sectioned record forms"]
|
|
155
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent detail form layout with multiple field sections"]
|
|
156
|
+
// CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
157
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
158
|
+
// CIL[DOC-MICRO logic_summary="Represent detail form layout with multiple field sections" notable_decisions="[]"]
|
|
159
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
160
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
161
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
162
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
163
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
164
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
165
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
166
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
167
|
+
|
|
168
|
+
|
|
150
169
|
|
|
151
|
-
/**
|
|
152
|
-
* A detail view definition. Rendered by `DataDetailPage` as a sectioned
|
|
153
|
-
* record form.
|
|
154
|
-
*/
|
|
155
170
|
export interface DetailView {
|
|
156
171
|
type: 'detail'
|
|
157
172
|
label: string
|
|
158
173
|
sections: DetailViewSection[]
|
|
159
174
|
}
|
|
175
|
+
// CIL[END chunk_id="types_detailview_1783637731"]
|
|
176
|
+
// CIL[BEGIN chunk_id="types_view_1783637731" type="type" identity="View" parent="none"]
|
|
177
|
+
// CIL[DOC-MACRO purpose="Define discriminated union of all supported view types for schema-driven UI"]
|
|
178
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent all possible view configurations (list and detail)"]
|
|
179
|
+
// CIL[DOC-CONTEXT module="View" layer="unknown" related_files="[]"]
|
|
180
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
181
|
+
// CIL[DOC-MICRO logic_summary="Implements View" notable_decisions="[]"]
|
|
182
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
183
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
184
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
185
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
186
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
187
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
188
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
189
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
190
|
+
|
|
191
|
+
|
|
160
192
|
|
|
161
|
-
/** Discriminated union of all supported view types. */
|
|
162
193
|
export type View = ListView | DetailView
|
|
194
|
+
// CIL[END chunk_id="types_view_1783637731"]
|
|
195
|
+
// CIL[BEGIN chunk_id="types_functionalitybindings_1783637731" type="interface" identity="FunctionalityBindings" parent="none"]
|
|
196
|
+
// CIL[DOC-MACRO purpose="Define optional automation and integration bindings attached to a DesignSchema"]
|
|
197
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent trigger conditions and targets for pipelines, AI agents, embeddings, integrations, and constraints"]
|
|
198
|
+
// CIL[DOC-CONTEXT module="FunctionalityBindings" layer="unknown" related_files="[]"]
|
|
199
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
200
|
+
// CIL[DOC-MICRO logic_summary="Implements FunctionalityBindings" notable_decisions="[]"]
|
|
201
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
202
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
203
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
204
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
205
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
206
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
207
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
208
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
163
213
|
|
|
164
|
-
// ─── FUNCTIONALITY BINDINGS ──────────────────────────────────────────────────────────
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Optional automation and integration bindings attached to a `DesignSchema`.
|
|
168
|
-
* Each array entry describes a trigger condition and the target pipeline,
|
|
169
|
-
* agent, embedding, integration, or constraint.
|
|
170
|
-
*
|
|
171
|
-
* These bindings are evaluated by API handlers and the system cron — not
|
|
172
|
-
* by the frontend. They are included here as a type contract so the frontend
|
|
173
|
-
* can read and display binding metadata without making blind `any` casts.
|
|
174
|
-
*/
|
|
175
214
|
export interface FunctionalityBindings {
|
|
176
215
|
pipelines?: Array<{
|
|
177
216
|
pipeline_id: string
|
|
178
217
|
trigger: 'manual' | 'on_create' | 'on_update' | 'on_field_change' | 'on_delete' | 'scheduled'
|
|
179
|
-
field?: string
|
|
180
|
-
condition?: string
|
|
218
|
+
field?: string
|
|
219
|
+
condition?: string
|
|
181
220
|
roles: string[]
|
|
182
221
|
}>
|
|
183
222
|
ai_agents?: Array<{
|
|
@@ -205,45 +244,61 @@ export interface FunctionalityBindings {
|
|
|
205
244
|
}>
|
|
206
245
|
constraints?: Array<{
|
|
207
246
|
type: 'unique' | 'conditional_required' | 'immutable'
|
|
208
|
-
fields?: string[]
|
|
209
|
-
field?: string
|
|
210
|
-
condition?: string
|
|
247
|
+
fields?: string[]
|
|
248
|
+
field?: string
|
|
249
|
+
condition?: string
|
|
211
250
|
message: string
|
|
212
|
-
after?: 'create' | 'update'
|
|
251
|
+
after?: 'create' | 'update'
|
|
213
252
|
}>
|
|
214
253
|
}
|
|
254
|
+
// CIL[END chunk_id="types_functionalitybindings_1783637731"]
|
|
255
|
+
// CIL[BEGIN chunk_id="types_designschema_1783637731" type="interface" identity="DesignSchema" parent="none"]
|
|
256
|
+
// CIL[DOC-MACRO purpose="Define the complete design schema for a types record stored as JSONB in the database"]
|
|
257
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent the full schema definition including fields, views, permissions, and functionality bindings"]
|
|
258
|
+
// CIL[DOC-CONTEXT module="DesignSchema" layer="unknown" related_files="[]"]
|
|
259
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
260
|
+
// CIL[DOC-MICRO logic_summary="Implements DesignSchema" notable_decisions="[]"]
|
|
261
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
262
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
263
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
264
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
265
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
266
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
267
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
268
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
215
273
|
|
|
216
|
-
// ─── DESIGN SCHEMA ────────────────────────────────────────────────────────────────
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* The complete design schema for a `types` record. Stored as a JSONB column
|
|
220
|
-
* (`design_schema`) and stamp-copied onto records at create time.
|
|
221
|
-
*
|
|
222
|
-
* @prop record_permissions - Role → allowed CRUD actions map for the entire record
|
|
223
|
-
* @prop fields - All field definitions keyed by field name
|
|
224
|
-
* @prop views - Named view definitions (`list`, `detail`, etc.)
|
|
225
|
-
* @prop functionality - Optional automation bindings (pipelines, agents, etc.)
|
|
226
|
-
*/
|
|
227
274
|
export interface DesignSchema {
|
|
228
275
|
record_permissions: {
|
|
229
|
-
[role: string]: string[]
|
|
276
|
+
[role: string]: string[]
|
|
230
277
|
}
|
|
231
278
|
fields: Record<string, FieldDefinition>
|
|
232
279
|
views: Record<string, View>
|
|
233
280
|
functionality?: FunctionalityBindings
|
|
234
281
|
}
|
|
282
|
+
// CIL[END chunk_id="types_designschema_1783637731"]
|
|
283
|
+
// CIL[BEGIN chunk_id="types_itemtype_1783637731" type="interface" identity="ItemType" parent="none"]
|
|
284
|
+
// CIL[DOC-MACRO purpose="Define a type record from the v2.types table with complete schema and validation configuration"]
|
|
285
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent a configurable data type with design schema, validation rules, and metadata"]
|
|
286
|
+
// CIL[DOC-CONTEXT module="ItemType" layer="unknown" related_files="[]"]
|
|
287
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
288
|
+
// CIL[DOC-MICRO logic_summary="Implements ItemType" notable_decisions="[]"]
|
|
289
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
290
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
291
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
292
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
293
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
294
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
295
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
296
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
235
301
|
|
|
236
|
-
// ─── RECORD SHAPES ─────────────────────────────────────────────────────────────────
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* A row from the `v2.types` table. Represents a type definition (item type,
|
|
240
|
-
* account type, person type, etc.) including its full `design_schema`.
|
|
241
|
-
*
|
|
242
|
-
* @prop kind - Discriminator: `'item'` | `'account'` | `'person'` | etc.
|
|
243
|
-
* @prop design_schema - Full schema defining fields, views, and functionality
|
|
244
|
-
* @prop validation_schema - Auto-generated JSON Schema used for server-side validation
|
|
245
|
-
* @prop ownership - `'pack'` | `'tenant'` (pack-ownership tracking)
|
|
246
|
-
*/
|
|
247
302
|
export interface ItemType {
|
|
248
303
|
id: string
|
|
249
304
|
name: string
|
|
@@ -257,7 +312,7 @@ export interface ItemType {
|
|
|
257
312
|
fields: Record<string, {
|
|
258
313
|
data_type: string
|
|
259
314
|
required?: boolean
|
|
260
|
-
[key: string]: any
|
|
315
|
+
[key: string]: any
|
|
261
316
|
}>
|
|
262
317
|
}
|
|
263
318
|
ownership: string
|
|
@@ -267,15 +322,24 @@ export interface ItemType {
|
|
|
267
322
|
created_at: string
|
|
268
323
|
updated_at: string
|
|
269
324
|
}
|
|
325
|
+
// CIL[END chunk_id="types_itemtype_1783637731"]
|
|
326
|
+
// CIL[BEGIN chunk_id="types_item_1783637731" type="interface" identity="Item" parent="none"]
|
|
327
|
+
// CIL[DOC-MACRO purpose="Define a data item record from the v2.items table representing an instance of a type"]
|
|
328
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent a concrete data record with type reference, data payload, and metadata"]
|
|
329
|
+
// CIL[DOC-CONTEXT module="Item" layer="unknown" related_files="[]"]
|
|
330
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
331
|
+
// CIL[DOC-MICRO logic_summary="Implements Item" notable_decisions="[]"]
|
|
332
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
333
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
334
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
335
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
336
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
337
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
338
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
339
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
340
|
+
|
|
341
|
+
|
|
270
342
|
|
|
271
|
-
/**
|
|
272
|
-
* A row from the `v2.items` table. The `data` JSONB column holds all
|
|
273
|
-
* custom field values; system fields (`title`, `status`, etc.) are top-level.
|
|
274
|
-
*
|
|
275
|
-
* @prop design_schema - Stamp of the type's schema at create time (for resilience
|
|
276
|
-
* to schema changes; may be stale relative to `types` table)
|
|
277
|
-
* @prop validation_schema - Stamp of the validation schema at create time
|
|
278
|
-
*/
|
|
279
343
|
export interface Item {
|
|
280
344
|
id: string
|
|
281
345
|
item_type_id: string
|
|
@@ -290,19 +354,51 @@ export interface Item {
|
|
|
290
354
|
created_by?: string
|
|
291
355
|
account_id: string
|
|
292
356
|
app_id?: string
|
|
293
|
-
design_schema?: Record<string, any>
|
|
294
|
-
validation_schema?: Record<string, any>
|
|
357
|
+
design_schema?: Record<string, any>
|
|
358
|
+
validation_schema?: Record<string, any>
|
|
295
359
|
}
|
|
360
|
+
// CIL[END chunk_id="types_item_1783637731"]
|
|
361
|
+
// CIL[BEGIN chunk_id="types_validationerror_1783637731" type="interface" identity="ValidationError" parent="none"]
|
|
362
|
+
// CIL[DOC-MACRO purpose="Define a validation error for form field validation feedback"]
|
|
363
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent field-specific validation errors with messages"]
|
|
364
|
+
// CIL[DOC-CONTEXT module="ValidationError" layer="unknown" related_files="[]"]
|
|
365
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
366
|
+
// CIL[DOC-MICRO logic_summary="Implements ValidationError" notable_decisions="[]"]
|
|
367
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
368
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
369
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
370
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
371
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
372
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
373
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
374
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
296
378
|
|
|
297
|
-
// ─── FORM & QUERY TYPES ───────────────────────────────────────────────────────────
|
|
298
379
|
|
|
299
|
-
/** A field-level validation failure from `useForm` or server-side validation. */
|
|
300
380
|
export interface ValidationError {
|
|
301
381
|
field: string
|
|
302
382
|
message: string
|
|
303
383
|
}
|
|
384
|
+
// CIL[END chunk_id="types_validationerror_1783637731"]
|
|
385
|
+
// CIL[BEGIN chunk_id="types_formstate_1783637731" type="interface" identity="FormState" parent="none"]
|
|
386
|
+
// CIL[DOC-MACRO purpose="Define form state management for reactive forms with data, errors, and submission status"]
|
|
387
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent complete form state including data, validation errors, touched fields, and submission status"]
|
|
388
|
+
// CIL[DOC-CONTEXT module="FormState" layer="unknown" related_files="[]"]
|
|
389
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
390
|
+
// CIL[DOC-MICRO logic_summary="Implements FormState" notable_decisions="[]"]
|
|
391
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
392
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
393
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
394
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
395
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
396
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
397
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
398
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
399
|
+
|
|
400
|
+
|
|
304
401
|
|
|
305
|
-
/** Snapshot of form state — used as a shared type between `useForm` and form components. */
|
|
306
402
|
export interface FormState {
|
|
307
403
|
data: Record<string, any>
|
|
308
404
|
errors: Record<string, string>
|
|
@@ -310,35 +406,115 @@ export interface FormState {
|
|
|
310
406
|
isSubmitting: boolean
|
|
311
407
|
isValid: boolean
|
|
312
408
|
}
|
|
409
|
+
// CIL[END chunk_id="types_formstate_1783637731"]
|
|
410
|
+
// CIL[BEGIN chunk_id="types_paginationparams_1783637731" type="interface" identity="PaginationParams" parent="none"]
|
|
411
|
+
// CIL[DOC-MACRO purpose="Define pagination parameters for list queries with limit, offset, and page options"]
|
|
412
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent pagination controls for data list APIs"]
|
|
413
|
+
// CIL[DOC-CONTEXT module="PaginationParams" layer="unknown" related_files="[]"]
|
|
414
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
415
|
+
// CIL[DOC-MICRO logic_summary="Implements PaginationParams" notable_decisions="[]"]
|
|
416
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
417
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
418
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
419
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
420
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
421
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
422
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
423
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
424
|
+
|
|
425
|
+
|
|
313
426
|
|
|
314
|
-
/** Pagination query parameters for list endpoints. */
|
|
315
427
|
export interface PaginationParams {
|
|
316
428
|
limit?: number
|
|
317
429
|
offset?: number
|
|
318
430
|
page?: number
|
|
319
431
|
}
|
|
432
|
+
// CIL[END chunk_id="types_paginationparams_1783637731"]
|
|
433
|
+
// CIL[BEGIN chunk_id="types_sortparams_1783637731" type="interface" identity="SortParams" parent="none"]
|
|
434
|
+
// CIL[DOC-MACRO purpose="Define sorting parameters for list queries with field and direction"]
|
|
435
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent sorting controls for ordered data display"]
|
|
436
|
+
// CIL[DOC-CONTEXT module="SortParams" layer="unknown" related_files="[]"]
|
|
437
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
438
|
+
// CIL[DOC-MICRO logic_summary="Implements SortParams" notable_decisions="[]"]
|
|
439
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
440
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
441
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
442
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
443
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
444
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
445
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
446
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
447
|
+
|
|
448
|
+
|
|
320
449
|
|
|
321
|
-
/** Sort order specification for list endpoints. */
|
|
322
450
|
export interface SortParams {
|
|
323
451
|
field: string
|
|
324
452
|
direction: 'asc' | 'desc'
|
|
325
453
|
}
|
|
454
|
+
// CIL[END chunk_id="types_sortparams_1783637731"]
|
|
455
|
+
// CIL[BEGIN chunk_id="types_filterparams_1783637731" type="interface" identity="FilterParams" parent="none"]
|
|
456
|
+
// CIL[DOC-MACRO purpose="Define filter parameters for list queries with flexible key-value filtering"]
|
|
457
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent filter controls for data list APIs"]
|
|
458
|
+
// CIL[DOC-CONTEXT module="FilterParams" layer="unknown" related_files="[]"]
|
|
459
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
460
|
+
// CIL[DOC-MICRO logic_summary="Implements FilterParams" notable_decisions="[]"]
|
|
461
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
462
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
463
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
464
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
465
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
466
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
467
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
468
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
469
|
+
|
|
470
|
+
|
|
326
471
|
|
|
327
|
-
/** Arbitrary key→value filter map for list endpoints. */
|
|
328
472
|
export interface FilterParams {
|
|
329
473
|
[key: string]: any
|
|
330
474
|
}
|
|
475
|
+
// CIL[END chunk_id="types_filterparams_1783637731"]
|
|
476
|
+
// CIL[BEGIN chunk_id="types_searchparams_1783637731" type="interface" identity="SearchParams" parent="none"]
|
|
477
|
+
// CIL[DOC-MACRO purpose="Define comprehensive search parameters combining pagination, search, sort, and filters"]
|
|
478
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent complete search controls for data list APIs"]
|
|
479
|
+
// CIL[DOC-CONTEXT module="SearchParams" layer="unknown" related_files="[]"]
|
|
480
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
481
|
+
// CIL[DOC-MICRO logic_summary="Implements SearchParams" notable_decisions="[]"]
|
|
482
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
483
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
484
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
485
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
486
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
487
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
488
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
489
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
490
|
+
|
|
491
|
+
|
|
331
492
|
|
|
332
|
-
/** Combined search, sort, filter, and pagination params for list queries. */
|
|
333
493
|
export interface SearchParams extends PaginationParams {
|
|
334
494
|
search?: string
|
|
335
495
|
sort?: SortParams
|
|
336
496
|
filters?: FilterParams
|
|
337
497
|
}
|
|
498
|
+
// CIL[END chunk_id="types_searchparams_1783637731"]
|
|
499
|
+
// CIL[BEGIN chunk_id="types_entitycolumn_1783637731" type="interface" identity="EntityColumn" parent="none"]
|
|
500
|
+
// CIL[DOC-MACRO purpose="Define column configuration for entity list display with sorting and display options"]
|
|
501
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent column metadata for data table rendering"]
|
|
502
|
+
// CIL[DOC-CONTEXT module="EntityColumn" layer="unknown" related_files="[]"]
|
|
503
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
504
|
+
// CIL[DOC-MICRO logic_summary="Implements EntityColumn" notable_decisions="[]"]
|
|
505
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
506
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
507
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
508
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
509
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
510
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
511
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
512
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
338
516
|
|
|
339
|
-
// ─── UI DISPLAY TYPES ────────────────────────────────────────────────────────────────
|
|
340
517
|
|
|
341
|
-
/** A rendered column descriptor for list/table UI components. */
|
|
342
518
|
export interface EntityColumn {
|
|
343
519
|
key: string
|
|
344
520
|
label: string
|
|
@@ -348,8 +524,24 @@ export interface EntityColumn {
|
|
|
348
524
|
badgeColors?: Record<string, string>
|
|
349
525
|
maxLength?: number
|
|
350
526
|
}
|
|
527
|
+
// CIL[END chunk_id="types_entitycolumn_1783637731"]
|
|
528
|
+
// CIL[BEGIN chunk_id="types_entitystat_1783637731" type="interface" identity="EntityStat" parent="none"]
|
|
529
|
+
// CIL[DOC-MACRO purpose="Define stat card configuration for entity list summaries with counts and filters"]
|
|
530
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent summary statistics display for data lists"]
|
|
531
|
+
// CIL[DOC-CONTEXT module="EntityStat" layer="unknown" related_files="[]"]
|
|
532
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
533
|
+
// CIL[DOC-MICRO logic_summary="Implements EntityStat" notable_decisions="[]"]
|
|
534
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
535
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
536
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
537
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
538
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
539
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
540
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
541
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
542
|
+
|
|
543
|
+
|
|
351
544
|
|
|
352
|
-
/** A stat card shown above entity list pages (count or filtered count). */
|
|
353
545
|
export interface EntityStat {
|
|
354
546
|
title: string
|
|
355
547
|
type: 'count' | 'filter_count'
|
|
@@ -357,27 +549,50 @@ export interface EntityStat {
|
|
|
357
549
|
color: string
|
|
358
550
|
filter?: Record<string, any>
|
|
359
551
|
}
|
|
552
|
+
// CIL[END chunk_id="types_entitystat_1783637731"]
|
|
553
|
+
// CIL[BEGIN chunk_id="types_entityfilter_1783637731" type="interface" identity="EntityFilter" parent="none"]
|
|
554
|
+
// CIL[DOC-MACRO purpose="Define filter configuration for entity lists with search, enum, and boolean filter types"]
|
|
555
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent filter controls for data list filtering"]
|
|
556
|
+
// CIL[DOC-CONTEXT module="EntityFilter" layer="unknown" related_files="[]"]
|
|
557
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
558
|
+
// CIL[DOC-MICRO logic_summary="Implements EntityFilter" notable_decisions="[]"]
|
|
559
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
560
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
561
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
562
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
563
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
564
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
565
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
566
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
567
|
+
|
|
568
|
+
|
|
360
569
|
|
|
361
|
-
/** A filter control definition for entity list pages. */
|
|
362
570
|
export interface EntityFilter {
|
|
363
571
|
key: string
|
|
364
572
|
label: string
|
|
365
573
|
type: 'search' | 'enum' | 'boolean'
|
|
366
574
|
options?: string[]
|
|
367
575
|
}
|
|
576
|
+
// CIL[END chunk_id="types_entityfilter_1783637731"]
|
|
577
|
+
// CIL[BEGIN chunk_id="types_itemprogress_1783637731" type="interface" identity="ItemProgress" parent="none"]
|
|
578
|
+
// CIL[DOC-MACRO purpose="Define progress tracking for items with status, scoring, and detailed progress data"]
|
|
579
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Represent user progress through items with completion status and metadata"]
|
|
580
|
+
// CIL[DOC-CONTEXT module="ItemProgress" layer="unknown" related_files="[]"]
|
|
581
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
582
|
+
// CIL[DOC-MICRO logic_summary="Implements ItemProgress" notable_decisions="[]"]
|
|
583
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
584
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
585
|
+
// CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
586
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
587
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
588
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
589
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
590
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
368
595
|
|
|
369
|
-
// ─── ITEM PROGRESS ───────────────────────────────────────────────────────────
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* A per-person, per-item progress record. Tracks pipeline status, score, and
|
|
373
|
-
* arbitrary interaction data for courses, onboarding, tasks, and quizzes.
|
|
374
|
-
*
|
|
375
|
-
* `title` is auto-composed as "<item title> — <person name>".
|
|
376
|
-
* `description` is auto-composed as "Completed · score 85 · 2 attempts".
|
|
377
|
-
* `data` holds extensible fields: attempts, time_spent, last_position, etc.
|
|
378
|
-
*
|
|
379
|
-
* INVARIANT: (person_id, item_id) is unique — state, not a log.
|
|
380
|
-
*/
|
|
381
596
|
export interface ItemProgress {
|
|
382
597
|
id: string
|
|
383
598
|
type_id: string
|
|
@@ -405,3 +620,4 @@ export interface ItemProgress {
|
|
|
405
620
|
created_at: string
|
|
406
621
|
updated_at: string
|
|
407
622
|
}
|
|
623
|
+
// CIL[END chunk_id="types_itemprogress_1783637731"]
|