spine-framework 0.3.125 → 0.3.127
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 +169 -97
- package/.framework/cli/commands/generate.ts +82 -161
- 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} +147 -54
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +222 -347
- 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 +162 -14
- 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 +687 -533
- 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 +173 -145
- 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 +192 -115
- 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 +3 -3
- 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
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_module_header_1784235266" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Module header and top-level exports for cortex.functions.custom_cil-context"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Own module-level imports, exports, and configuration for cortex.functions.custom_cil-context"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="module exports and side effects" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Declares module scope, imports dependencies, and exports public surface of cortex.functions.custom_cil-context" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
10
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
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
|
+
import { createHandler } from './_shared/middleware'
|
|
21
|
+
import { adminDb } from './_shared/db'
|
|
22
|
+
import { resolveLinkTypeId } from './_shared/resolve-ids'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_module_header_1784235266"]
|
|
31
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_getchunkbyid_1784235266" type="function" identity="getchunkbyid" parent="none"]
|
|
32
|
+
// CIL[DOC-MACRO purpose="Implements getchunkbyid logic in cortex.functions.custom_cil-context"]
|
|
33
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute getchunkbyid and return its computed result"]
|
|
34
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
|
|
35
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
36
|
+
// CIL[DOC-MICRO logic_summary="Provides getchunkbyid with getChunkById(id: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
37
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
38
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
39
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
|
|
40
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
41
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
42
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
43
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
44
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
45
|
+
async function getChunkById(id: string): Promise<any | null> {
|
|
46
|
+
const { data } = await adminDb.from('items').select('id, title, data')
|
|
47
|
+
.eq('id', id).maybeSingle()
|
|
48
|
+
return data
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_getchunkbyid_1784235266"]
|
|
56
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_findchunkbyname_1784235266" type="function" identity="findchunkbyname" parent="none"]
|
|
57
|
+
// CIL[DOC-MACRO purpose="Implements findchunkbyname logic in cortex.functions.custom_cil-context"]
|
|
58
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute findchunkbyname and return its computed result"]
|
|
59
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
|
|
60
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
61
|
+
// CIL[DOC-MICRO logic_summary="Provides findchunkbyname with findChunkByName(name: string, projectId?: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
62
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
63
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
64
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
|
|
65
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
66
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
67
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
68
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
69
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
70
|
+
async function findChunkByName(name: string, projectId?: string): Promise<any | null> {
|
|
71
|
+
let q = adminDb.from('items').select('id, title, data')
|
|
72
|
+
.filter('data->>kb_type', 'eq', 'cil_chunk')
|
|
73
|
+
.filter('data->>chunk_name', 'eq', name)
|
|
74
|
+
.eq('is_active', true)
|
|
75
|
+
if (projectId) q = q.filter('data->>project_id', 'eq', projectId)
|
|
76
|
+
const { data } = await q.limit(1).maybeSingle()
|
|
77
|
+
return data
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_findchunkbyname_1784235266"]
|
|
86
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_blastradiusbfs_1784235266" type="function" identity="blastradiusbfs" parent="none"]
|
|
87
|
+
// CIL[DOC-MACRO purpose="Implements blastradiusbfs logic in cortex.functions.custom_cil-context"]
|
|
88
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute blastradiusbfs and return its computed result"]
|
|
89
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
|
|
90
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
91
|
+
// CIL[DOC-MICRO logic_summary="Provides blastradiusbfs with blastRadiusBFS( inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
92
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
93
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
94
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
|
|
95
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
96
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
97
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
98
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
99
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
100
|
+
async function blastRadiusBFS(
|
|
101
|
+
chunkId: string,
|
|
102
|
+
maxDepth: number,
|
|
103
|
+
callsLinkTypeId: string
|
|
104
|
+
): Promise<{ chunk_id: string; chunk_name: string; file_path: string; depth: number }[]> {
|
|
105
|
+
const visited = new Set<string>([chunkId])
|
|
106
|
+
const queue: { id: string; depth: number }[] = [{ id: chunkId, depth: 0 }]
|
|
107
|
+
const result: { chunk_id: string; chunk_name: string; file_path: string; depth: number }[] = []
|
|
108
|
+
|
|
109
|
+
while (queue.length > 0) {
|
|
110
|
+
const { id, depth } = queue.shift()!
|
|
111
|
+
if (depth >= maxDepth) continue
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
const { data: callerLinks } = await adminDb.from('links').select('source_id')
|
|
115
|
+
.eq('link_type_id', callsLinkTypeId)
|
|
116
|
+
.eq('target_id', id)
|
|
117
|
+
|
|
118
|
+
for (const link of callerLinks || []) {
|
|
119
|
+
const callerId = link.source_id
|
|
120
|
+
if (visited.has(callerId)) continue
|
|
121
|
+
visited.add(callerId)
|
|
122
|
+
|
|
123
|
+
const callerChunk = await getChunkById(callerId)
|
|
124
|
+
if (!callerChunk) continue
|
|
125
|
+
|
|
126
|
+
result.push({
|
|
127
|
+
chunk_id: callerId,
|
|
128
|
+
chunk_name: callerChunk.data?.chunk_name || '',
|
|
129
|
+
file_path: callerChunk.data?.file_path || '',
|
|
130
|
+
depth: depth + 1,
|
|
131
|
+
})
|
|
132
|
+
queue.push({ id: callerId, depth: depth + 1 })
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return result
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_blastradiusbfs_1784235266"]
|
|
145
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_getconfigdeps_1784235266" type="function" identity="getconfigdeps" parent="none"]
|
|
146
|
+
// CIL[DOC-MACRO purpose="Implements getconfigdeps logic in cortex.functions.custom_cil-context"]
|
|
147
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute getconfigdeps and return its computed result"]
|
|
148
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
|
|
149
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
150
|
+
// CIL[DOC-MICRO logic_summary="Provides getconfigdeps with getConfigDeps( inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
151
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
152
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
153
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
|
|
154
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
155
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
156
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
157
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
158
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
159
|
+
async function getConfigDeps(
|
|
160
|
+
chunkId: string,
|
|
161
|
+
configuresLinkTypeId: string | null
|
|
162
|
+
): Promise<{ field_name: string; source_file: string; config_id: string }[]> {
|
|
163
|
+
if (!configuresLinkTypeId) return []
|
|
164
|
+
|
|
165
|
+
const { data: configLinks } = await adminDb.from('links').select('source_id, metadata')
|
|
166
|
+
.eq('link_type_id', configuresLinkTypeId)
|
|
167
|
+
.eq('target_id', chunkId)
|
|
168
|
+
|
|
169
|
+
if (!configLinks?.length) return []
|
|
170
|
+
|
|
171
|
+
const results: { field_name: string; source_file: string; config_id: string }[] = []
|
|
172
|
+
for (const link of configLinks) {
|
|
173
|
+
const configItem = await getChunkById(link.source_id)
|
|
174
|
+
if (!configItem) continue
|
|
175
|
+
results.push({
|
|
176
|
+
field_name: configItem.data?.field_name || link.metadata?.field_name || '',
|
|
177
|
+
source_file: configItem.data?.config_table || '',
|
|
178
|
+
config_id: link.source_id,
|
|
179
|
+
})
|
|
180
|
+
}
|
|
181
|
+
return results
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_getconfigdeps_1784235266"]
|
|
190
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_safetyverdict_1784235266" type="function" identity="safetyverdict" parent="none"]
|
|
191
|
+
// CIL[DOC-MACRO purpose="Implements safetyverdict logic in cortex.functions.custom_cil-context"]
|
|
192
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute safetyverdict and return its computed result"]
|
|
193
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[]"]
|
|
194
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
195
|
+
// CIL[DOC-MICRO logic_summary="Provides safetyverdict with safetyVerdict( inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
196
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
197
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
198
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
199
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
200
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
201
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
202
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
203
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
204
|
+
function safetyVerdict(
|
|
205
|
+
chunk: any,
|
|
206
|
+
blastRadius: any[],
|
|
207
|
+
driftStatus: 'current' | 'stale' | 'unknown',
|
|
208
|
+
configDeps: any[]
|
|
209
|
+
): { level: 'safe' | 'caution' | 'risky'; summary: string; flags: string[] } {
|
|
210
|
+
const d = chunk.data || {}
|
|
211
|
+
const flags: string[] = []
|
|
212
|
+
|
|
213
|
+
if (d.stability === 'stable') flags.push('stability=stable: downstream consumers may break on signature changes')
|
|
214
|
+
if (blastRadius.length >= 10) flags.push(`high blast radius: ${blastRadius.length} transitive callers`)
|
|
215
|
+
else if (blastRadius.length >= 3) flags.push(`moderate blast radius: ${blastRadius.length} callers`)
|
|
216
|
+
if (driftStatus === 'stale') flags.push('hash is stale — stored_hash does not match current disk content')
|
|
217
|
+
if (configDeps.length > 0) flags.push(`reads ${configDeps.length} config field(s): ${configDeps.map(c => c.field_name).join(', ')}`)
|
|
218
|
+
if (d.doc_confidence === 'unverified_legacy' || (!d.macro && !d.micro)) flags.push('no contract documentation — behaviour is undocumented')
|
|
219
|
+
if (d.is_dead_code) flags.push('flagged as dead code')
|
|
220
|
+
|
|
221
|
+
const level: 'safe' | 'caution' | 'risky' =
|
|
222
|
+
flags.length === 0 ? 'safe' :
|
|
223
|
+
(d.stability === 'stable' || blastRadius.length >= 10 || driftStatus === 'stale') ? 'risky' :
|
|
224
|
+
'caution'
|
|
225
|
+
|
|
226
|
+
const summary = level === 'safe'
|
|
227
|
+
? 'Low risk. Internal chunk, no significant callers, contract is documented.'
|
|
228
|
+
: level === 'caution'
|
|
229
|
+
? `Moderate risk. ${flags.length} concern(s) — review flags before editing.`
|
|
230
|
+
: `High risk. ${flags.filter(f => f.includes('stable') || f.includes('blast') || f.includes('stale')).join('; ')}`
|
|
231
|
+
|
|
232
|
+
return { level, summary, flags }
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_safetyverdict_1784235266"]
|
|
240
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_buildbrief_1784235266" type="function" identity="buildbrief" parent="none"]
|
|
241
|
+
// CIL[DOC-MACRO purpose="Implements buildbrief logic in cortex.functions.custom_cil-context"]
|
|
242
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Execute buildbrief and return its computed result"]
|
|
243
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[]"]
|
|
244
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
245
|
+
// CIL[DOC-MICRO logic_summary="Provides buildbrief with buildBrief(chunk: any, maxBlastDepth = 4 inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
246
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
247
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
248
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
249
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
250
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
251
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
252
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
253
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
254
|
+
async function buildBrief(chunk: any, maxBlastDepth = 4): Promise<Record<string, any>> {
|
|
255
|
+
const d = chunk.data || {}
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
const [callsLinkTypeId, testedByLinkTypeId, configuresLinkTypeId] = await Promise.all([
|
|
259
|
+
resolveLinkTypeId('cil_calls').catch(() => null),
|
|
260
|
+
resolveLinkTypeId('cil_tested_by').catch(() => null),
|
|
261
|
+
resolveLinkTypeId('cil_configures').catch(() => null),
|
|
262
|
+
])
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
const blastRadius = callsLinkTypeId
|
|
266
|
+
? await blastRadiusBFS(chunk.id, maxBlastDepth, callsLinkTypeId)
|
|
267
|
+
: []
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
let callees: { chunk_id: string; chunk_name: string; file_path: string }[] = []
|
|
271
|
+
if (callsLinkTypeId) {
|
|
272
|
+
const { data: calleeLinks } = await adminDb.from('links').select('target_id')
|
|
273
|
+
.eq('link_type_id', callsLinkTypeId).eq('source_id', chunk.id)
|
|
274
|
+
for (const l of calleeLinks || []) {
|
|
275
|
+
const callee = await getChunkById(l.target_id)
|
|
276
|
+
if (callee) callees.push({ chunk_id: callee.id, chunk_name: callee.data?.chunk_name || '', file_path: callee.data?.file_path || '' })
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
let testPaths: { path: string; is_e2e: boolean }[] = []
|
|
282
|
+
if (testedByLinkTypeId) {
|
|
283
|
+
const { data: testLinks } = await adminDb.from('links').select('target_id, metadata')
|
|
284
|
+
.eq('link_type_id', testedByLinkTypeId).eq('source_id', chunk.id)
|
|
285
|
+
for (const l of testLinks || []) {
|
|
286
|
+
testPaths.push({ path: l.metadata?.test_path || '', is_e2e: l.metadata?.is_e2e || false })
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (testPaths.length === 0) {
|
|
291
|
+
if (d.test_unit_path) testPaths.push({ path: d.test_unit_path, is_e2e: false })
|
|
292
|
+
if (d.test_e2e_path) testPaths.push({ path: d.test_e2e_path, is_e2e: true })
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
const configDeps = await getConfigDeps(chunk.id, configuresLinkTypeId)
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
const driftStatus: 'current' | 'stale' | 'unknown' = d.stored_hash
|
|
300
|
+
? 'unknown'
|
|
301
|
+
: 'unknown'
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
const verdict = safetyVerdict(chunk, blastRadius, driftStatus, configDeps)
|
|
305
|
+
|
|
306
|
+
return {
|
|
307
|
+
chunk_id: chunk.id,
|
|
308
|
+
chunk_name: d.chunk_name || '',
|
|
309
|
+
file_path: d.file_path || '',
|
|
310
|
+
line_start: d.line_start || null,
|
|
311
|
+
line_end: d.line_end || null,
|
|
312
|
+
chunk_type: d.chunk_type || '',
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
contract: {
|
|
316
|
+
macro: d.macro || '',
|
|
317
|
+
micro: d.micro || '',
|
|
318
|
+
input_spec: d.input_spec || '',
|
|
319
|
+
output_spec: d.output_spec || '',
|
|
320
|
+
side_effects: d.side_effects || '',
|
|
321
|
+
stability: d.stability || 'unknown',
|
|
322
|
+
doc_confidence: d.doc_confidence || 'unverified_legacy',
|
|
323
|
+
},
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
hash: {
|
|
327
|
+
stored_hash: d.stored_hash || null,
|
|
328
|
+
hash_updated_at: d.hash_updated_at || null,
|
|
329
|
+
drift_status: driftStatus,
|
|
330
|
+
},
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
blast_radius: {
|
|
334
|
+
direct_caller_count: blastRadius.filter(r => r.depth === 1).length,
|
|
335
|
+
total_affected: blastRadius.length,
|
|
336
|
+
max_depth_searched: maxBlastDepth,
|
|
337
|
+
callers: blastRadius,
|
|
338
|
+
},
|
|
339
|
+
calls: callees,
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
test_paths: testPaths,
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
config_dependencies: configDeps,
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
edit_safety: verdict,
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_buildbrief_1784235266"]
|
|
357
|
+
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_context_handler_1784235266" type="variable" identity="handler" parent="none"]
|
|
358
|
+
// CIL[DOC-MACRO purpose="Defines handler configuration or state in cortex.functions.custom_cil-context"]
|
|
359
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Hold the value and default configuration for handler"]
|
|
360
|
+
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-context" layer="function" related_files="[]"]
|
|
361
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="value of handler" errors="none" side_effects="none"]
|
|
362
|
+
// CIL[DOC-MICRO logic_summary="Declares handler with initial value or constant binding used by cortex.functions.custom_cil-context" notable_decisions="[]"]
|
|
363
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
364
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
365
|
+
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
366
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
367
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
368
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
369
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
370
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
371
|
+
export const handler = createHandler(async (ctx, body) => {
|
|
372
|
+
const action = ctx.query?.action || 'get_context'
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
if (action === 'get_context') {
|
|
376
|
+
const chunkId = ctx.query?.chunk_id || body?.chunk_id
|
|
377
|
+
if (!chunkId) throw new Error('chunk_id is required')
|
|
378
|
+
|
|
379
|
+
const chunk = await getChunkById(chunkId)
|
|
380
|
+
if (!chunk) throw new Error(`Chunk not found: ${chunkId}`)
|
|
381
|
+
|
|
382
|
+
const maxDepth = parseInt(ctx.query?.max_depth || body?.max_depth || '4', 10)
|
|
383
|
+
const brief = await buildBrief(chunk, maxDepth)
|
|
384
|
+
|
|
385
|
+
return { ok: true, brief }
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
if (action === 'find_context') {
|
|
390
|
+
const chunkName = ctx.query?.chunk_name || body?.chunk_name
|
|
391
|
+
const projectId = ctx.query?.project_id || body?.project_id
|
|
392
|
+
if (!chunkName) throw new Error('chunk_name is required')
|
|
393
|
+
|
|
394
|
+
const chunk = await findChunkByName(chunkName, projectId)
|
|
395
|
+
if (!chunk) {
|
|
396
|
+
return {
|
|
397
|
+
ok: false,
|
|
398
|
+
error: `No chunk named "${chunkName}" found${projectId ? ` in project ${projectId}` : ''}`,
|
|
399
|
+
hint: 'Use custom_cil-graph?action=search to find chunks by description',
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
const maxDepth = parseInt(ctx.query?.max_depth || body?.max_depth || '4', 10)
|
|
404
|
+
const brief = await buildBrief(chunk, maxDepth)
|
|
405
|
+
|
|
406
|
+
return { ok: true, brief }
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
if (action === 'post_edit') {
|
|
413
|
+
const chunkId = ctx.query?.chunk_id || body?.chunk_id
|
|
414
|
+
if (!chunkId) throw new Error('chunk_id is required')
|
|
415
|
+
|
|
416
|
+
const chunk = await getChunkById(chunkId)
|
|
417
|
+
if (!chunk) throw new Error(`Chunk not found: ${chunkId}`)
|
|
418
|
+
|
|
419
|
+
const d = chunk.data || {}
|
|
420
|
+
const hasHash = !!d.stored_hash
|
|
421
|
+
|
|
422
|
+
return {
|
|
423
|
+
ok: true,
|
|
424
|
+
chunk_id: chunkId,
|
|
425
|
+
chunk_name: d.chunk_name || '',
|
|
426
|
+
file_path: d.file_path || '',
|
|
427
|
+
stored_hash: d.stored_hash || null,
|
|
428
|
+
hash_updated_at: d.hash_updated_at || null,
|
|
429
|
+
has_stored_hash: hasHash,
|
|
430
|
+
action_required: hasHash
|
|
431
|
+
? 'Run custom_cil-ingest?action=reindex_chunk to refresh the stored hash and code_content after your edit, then run custom_cil-validate?action=validate_file to confirm drift is resolved.'
|
|
432
|
+
: 'No stored hash — run Pass 2 (custom_cil-ingest?action=pass2) to generate chunk boundaries and hashes for this file.',
|
|
433
|
+
next_steps: [
|
|
434
|
+
`POST /api/custom_cil-ingest?action=reindex_chunk { "project_id": "${d.project_id || '<project_id>'}", "chunk_id": "${chunkId}", "also_embed": true }`,
|
|
435
|
+
`GET /api/custom_cil-validate?action=validate_file&file_id=${d.file_id || '<file_id>'}`,
|
|
436
|
+
],
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
throw new Error(`Unknown action: ${action}. Valid: get_context, find_context, post_edit`)
|
|
441
|
+
})
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_context_handler_1784235266"]
|