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,39 +1,28 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module src/hooks/useSchemaRecord
|
|
3
|
-
* @audience installer
|
|
4
|
-
* @layer frontend-hook
|
|
5
|
-
* @stability stable
|
|
6
|
-
*
|
|
7
|
-
* Schema-record data management hooks. Two complementary hooks:
|
|
8
|
-
*
|
|
9
|
-
* - **`useSchemaRecord`** — given an already-fetched record and its schema
|
|
10
|
-
* type, returns structured `FieldDefinition[]`, a managed `data` state
|
|
11
|
-
* seeded from `record.data` with schema defaults, and field setters.
|
|
12
|
-
* Used on detail/edit pages where the record is fetched by a parent hook.
|
|
13
|
-
*
|
|
14
|
-
* - **`useTypeSelection`** — fetches all types of a given `kind` and exposes
|
|
15
|
-
* a `selectedTypeId` state. Used on create pages for the type-first flow
|
|
16
|
-
* where the user picks a type before filling in fields.
|
|
17
|
-
*
|
|
18
|
-
* **Data seeding invariant:** `useSchemaRecord` re-seeds `data` state only
|
|
19
|
-
* when `record.id` or `schemaType.id` changes, not on every render. This
|
|
20
|
-
* prevents losing unsaved edits during re-renders.
|
|
21
|
-
*
|
|
22
|
-
* @seeAlso src/hooks/useEntityRecord.ts (fetches the record passed here)
|
|
23
|
-
* @seeAlso src/hooks/useForm.ts (consumes FieldDefinition[] from this hook)
|
|
24
|
-
* @seeAlso src/types/types.ts (FieldDefinition, ItemType)
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
1
|
import { useState, useEffect, useCallback } from 'react'
|
|
28
2
|
import { apiFetch } from '../lib/api'
|
|
29
3
|
import { FieldDefinition, ItemType } from '../types/types'
|
|
30
4
|
|
|
31
|
-
// ─── TYPES ───────────────────────────────────────────────────────────────────
|
|
32
5
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
// CIL[BEGIN chunk_id="uschemarecord_module_header_1783718716" type="module_header" identity="module_header" parent="none"]
|
|
12
|
+
// CIL[DOC-MACRO purpose="Define SchemaType interface for type records"]
|
|
13
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own the SchemaType interface definition"]
|
|
14
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
|
|
15
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
16
|
+
// CIL[DOC-MICRO logic_summary="Interface with id, name, slug, optional fields, and design_schema" notable_decisions="[]"]
|
|
17
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
18
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
19
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
20
|
+
// 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/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, \."]
|
|
21
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
22
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
23
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
24
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
25
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
37
26
|
export interface SchemaType {
|
|
38
27
|
id: string
|
|
39
28
|
name: string
|
|
@@ -44,11 +33,21 @@ export interface SchemaType {
|
|
|
44
33
|
app_id?: string
|
|
45
34
|
design_schema: ItemType['design_schema']
|
|
46
35
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
36
|
+
// CIL[END chunk_id="uschemarecord_module_header_1783718716"]
|
|
37
|
+
// CIL[BEGIN chunk_id="uschemarecord_schemarecord_1783718716" type="interface" identity="SchemaRecord" parent="none"]
|
|
38
|
+
// CIL[DOC-MACRO purpose="Define SchemaRecord interface for generic records"]
|
|
39
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own the SchemaRecord interface definition"]
|
|
40
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
41
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
42
|
+
// CIL[DOC-MICRO logic_summary="Interface with id, optional type_id/type, data JSONB, and index signature" notable_decisions="[]"]
|
|
43
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
44
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
45
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
46
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
47
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
48
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
49
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
50
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
52
51
|
export interface SchemaRecord {
|
|
53
52
|
id: string
|
|
54
53
|
type_id?: string
|
|
@@ -56,23 +55,39 @@ export interface SchemaRecord {
|
|
|
56
55
|
data: Record<string, any>
|
|
57
56
|
[key: string]: any
|
|
58
57
|
}
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
// CIL[END chunk_id="uschemarecord_schemarecord_1783718716"]
|
|
59
|
+
// CIL[BEGIN chunk_id="uschemarecord_options_1783718716" type="interface" identity="UseSchemaRecordOptions" parent="none"]
|
|
60
|
+
// CIL[DOC-MACRO purpose="Define options interface for useSchemaRecord hook"]
|
|
61
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own the UseSchemaRecordOptions interface definition"]
|
|
62
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
63
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
64
|
+
// CIL[DOC-MICRO logic_summary="Simple interface with typeApiKind field" notable_decisions="[]"]
|
|
65
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
66
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
67
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
68
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
69
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
70
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
71
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
72
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
61
73
|
export interface UseSchemaRecordOptions {
|
|
62
|
-
typeApiKind: string
|
|
74
|
+
typeApiKind: string
|
|
63
75
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
// CIL[END chunk_id="uschemarecord_options_1783718716"]
|
|
77
|
+
// CIL[BEGIN chunk_id="uschemarecord_result_1783718716" type="interface" identity="UseSchemaRecordResult" parent="none"]
|
|
78
|
+
// CIL[DOC-MACRO purpose="Define return type for useSchemaRecord hook"]
|
|
79
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own the UseSchemaRecordResult interface definition"]
|
|
80
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
81
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
82
|
+
// CIL[DOC-MICRO logic_summary="Interface with fields array, managed data, setters, and metadata" notable_decisions="[]"]
|
|
83
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
84
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
85
|
+
// 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/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
86
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
87
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
88
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
89
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
90
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
76
91
|
export interface UseSchemaRecordResult {
|
|
77
92
|
fields: FieldDefinition[]
|
|
78
93
|
data: Record<string, any>
|
|
@@ -82,38 +97,29 @@ export interface UseSchemaRecordResult {
|
|
|
82
97
|
loading: boolean
|
|
83
98
|
error: string | null
|
|
84
99
|
}
|
|
85
|
-
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
* @sideEffects React state mutations (data re-seed on record/type change only)
|
|
103
|
-
* @calledBy DataDetailPage.tsx, create pages
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```tsx
|
|
107
|
-
* const { fields, data, setField } = useSchemaRecord(record, schemaType)
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
100
|
+
// CIL[END chunk_id="uschemarecord_result_1783718716"]
|
|
101
|
+
// CIL[BEGIN chunk_id="uschemarecord_usefunction_1783718716" type="function" identity="useSchemaRecord" parent="none"]
|
|
102
|
+
// CIL[DOC-LEARNING topic="runtime-type:generic/schema_defaults" content="useSchemaRecord seeds empty record state from schemaType.design_schema.fields using each field's default value. It provides the schema used by GenericDetailPage for new records."]
|
|
103
|
+
// CIL[DOC-NOTE type="design_schema_caveat" content="A field missing a default will be undefined. The hook depends on the type record being loaded from the types table, which can fail if the type slug or kind is wrong."]
|
|
104
|
+
// CIL[DOC-MACRO purpose="Manage record data state with schema defaults and field definitions"]
|
|
105
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide derived state management for record data and fields"]
|
|
106
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
|
|
107
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="managed data, field definitions, setters" errors="none" side_effects="React state mutations"]
|
|
108
|
+
// CIL[DOC-MICRO logic_summary="Seed data from record.data with schema defaults, provide field setters, re-seed only on record/type change" notable_decisions="['reseed_on_id_change_only', 'default_value_seeding']"]
|
|
109
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
110
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
111
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
112
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
113
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
114
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
115
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
116
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
110
117
|
export function useSchemaRecord(
|
|
111
118
|
record: SchemaRecord | null,
|
|
112
119
|
schemaType: SchemaType | null
|
|
113
120
|
): UseSchemaRecordResult {
|
|
114
121
|
const [data, setDataState] = useState<Record<string, any>>({})
|
|
115
122
|
|
|
116
|
-
// Re-seed data state only when the record id or schema type id changes
|
|
117
123
|
const recordId = record?.id ?? null
|
|
118
124
|
const schemaTypeId = schemaType?.id ?? null
|
|
119
125
|
|
|
@@ -122,7 +128,6 @@ export function useSchemaRecord(
|
|
|
122
128
|
|
|
123
129
|
const base = record.data ? { ...record.data } : {}
|
|
124
130
|
|
|
125
|
-
// Seed defaults for fields that have no value
|
|
126
131
|
if (schemaType?.design_schema?.fields) {
|
|
127
132
|
for (const [name, field] of Object.entries(schemaType.design_schema.fields)) {
|
|
128
133
|
if (base[name] === undefined && (field as any).defaultValue !== undefined) {
|
|
@@ -132,7 +137,6 @@ export function useSchemaRecord(
|
|
|
132
137
|
}
|
|
133
138
|
|
|
134
139
|
setDataState(base)
|
|
135
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
136
140
|
}, [recordId, schemaTypeId])
|
|
137
141
|
|
|
138
142
|
const setData = useCallback((newData: Record<string, any>) => {
|
|
@@ -157,19 +161,21 @@ export function useSchemaRecord(
|
|
|
157
161
|
error: null
|
|
158
162
|
}
|
|
159
163
|
}
|
|
160
|
-
|
|
161
|
-
//
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
164
|
+
// CIL[END chunk_id="uschemarecord_usefunction_1783718716"]
|
|
165
|
+
// CIL[BEGIN chunk_id="uschemarecord_typeselectionresult_1783718716" type="interface" identity="UseTypeSelectionResult" parent="none"]
|
|
166
|
+
// CIL[DOC-MACRO purpose="Define return type for useTypeSelection hook"]
|
|
167
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own the UseTypeSelectionResult interface definition"]
|
|
168
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
|
|
169
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
170
|
+
// CIL[DOC-MICRO logic_summary="Interface with types array, selected type/id, setters, and loading state" notable_decisions="[]"]
|
|
171
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
172
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
173
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
174
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
175
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
176
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
177
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
178
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
173
179
|
export interface UseTypeSelectionResult {
|
|
174
180
|
types: SchemaType[]
|
|
175
181
|
selectedType: SchemaType | null
|
|
@@ -178,19 +184,21 @@ export interface UseTypeSelectionResult {
|
|
|
178
184
|
loading: boolean
|
|
179
185
|
error: string | null
|
|
180
186
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
187
|
+
// CIL[END chunk_id="uschemarecord_typeselectionresult_1783718716"]
|
|
188
|
+
// CIL[BEGIN chunk_id="uschemarecord_typeselection_1783718716" type="function" identity="useTypeSelection" parent="none"]
|
|
189
|
+
// CIL[DOC-MACRO purpose="Fetch and manage type selection for create flows"]
|
|
190
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Fetch active types by kind and manage selection state"]
|
|
191
|
+
// CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
|
|
192
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="types array, selected type, selection state" errors="network errors" side_effects="Network requests, React state mutations"]
|
|
193
|
+
// CIL[DOC-MICRO logic_summary="Fetch active types by kind on mount and kind change, manage selectedTypeId state, resolve selectedType by id" notable_decisions="['controlled_selection_state', 'fetch_on_kind_change']"]
|
|
194
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
195
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
196
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
197
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
198
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
199
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
200
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
201
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
194
202
|
export function useTypeSelection(kind: string): UseTypeSelectionResult {
|
|
195
203
|
const [types, setTypes] = useState<SchemaType[]>([])
|
|
196
204
|
const [selectedTypeId, setSelectedTypeId] = useState('')
|
|
@@ -221,3 +229,4 @@ export function useTypeSelection(kind: string): UseTypeSelectionResult {
|
|
|
221
229
|
|
|
222
230
|
return { types, selectedType, selectedTypeId, setSelectedTypeId, loading, error }
|
|
223
231
|
}
|
|
232
|
+
// CIL[END chunk_id="uschemarecord_typeselection_1783718716"]
|