spine-framework 0.3.144 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5051 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +20 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,47 +1,42 @@
|
|
|
1
|
-
// CIL[BEGIN
|
|
2
|
-
// CIL[DOC-MACRO purpose="
|
|
3
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
4
|
-
// CIL[DOC-CONTEXT module="
|
|
5
|
-
// CIL[DOC-CONTRACT inputs="
|
|
6
|
-
// CIL[DOC-MICRO logic_summary="
|
|
7
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Netlify function that ingests and synchronises agent-annotated CIL chunks for a project."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Expose actions for selecting files, storing markers, updating documentation, detecting changes, marking dead code, and renaming files."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="project_id and action query" outputs="action-specific JSON payload" errors="Project not found or invalid action" side_effects="Reads and writes CIL chunk records in the admin database"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports shared middleware, db, admin-data, resolveTypeId and Node fs, path and crypto; declares a createHandler export." notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
8
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
-
// CIL[DOC-AUDIENCE audience="
|
|
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"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="cil-workers"]
|
|
16
10
|
|
|
17
11
|
|
|
18
12
|
import { createHandler } from './_shared/middleware'
|
|
19
13
|
import { adminDb } from './_shared/db'
|
|
20
14
|
import { create as adminCreate, update as adminUpdate } from './admin-data'
|
|
21
15
|
import { resolveTypeId } from './_shared/resolve-ids'
|
|
16
|
+
import { computeContentHash } from './_shared/cil'
|
|
22
17
|
import * as fs from 'fs'
|
|
23
18
|
import * as path from 'path'
|
|
24
19
|
import * as crypto from 'crypto'
|
|
20
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Netlify function that ingests and synchronises agent-annotated CIL chunks for a project.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
21
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
22
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
23
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
24
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
25
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
26
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:module_header:module_header"]
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
|
|
30
|
-
// CIL[
|
|
31
|
-
// CIL[
|
|
32
|
-
// CIL[DOC-
|
|
33
|
-
// CIL[DOC-
|
|
34
|
-
// CIL[DOC-
|
|
35
|
-
// CIL[DOC-
|
|
36
|
-
// CIL[DOC-
|
|
37
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
32
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentIngestRequest:interface" type="interface" identity="AgentIngestRequest" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
33
|
+
// CIL[DOC-MACRO purpose="Defines the request payload accepted by the cil-agent-ingest handler."]
|
|
34
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a strongly-typed contract for project_id, file metadata, marker arrays, chunk updates and rename parameters."]
|
|
35
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="types" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
36
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
37
|
+
// CIL[DOC-MICRO logic_summary="Optional string fields plus chunks and file_ids arrays used across handler actions." notable_decisions="[]"]
|
|
38
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
38
39
|
// CIL[DOC-STABILITY stability="stable"]
|
|
39
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
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
40
|
interface AgentIngestRequest {
|
|
46
41
|
project_id: string
|
|
47
42
|
file_id?: string
|
|
@@ -56,26 +51,26 @@ interface AgentIngestRequest {
|
|
|
56
51
|
file_ids?: string[]
|
|
57
52
|
new_file_path?: string
|
|
58
53
|
}
|
|
54
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines the request payload accepted by the cil-agent-ingest handler.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
55
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
56
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
57
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
58
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
59
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
60
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentIngestRequest:interface"]
|
|
59
61
|
|
|
60
62
|
|
|
61
63
|
|
|
62
64
|
|
|
63
65
|
|
|
64
|
-
// CIL[
|
|
65
|
-
// CIL[
|
|
66
|
-
// CIL[DOC-
|
|
67
|
-
// CIL[DOC-
|
|
68
|
-
// CIL[DOC-
|
|
69
|
-
// CIL[DOC-
|
|
70
|
-
// CIL[DOC-
|
|
71
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
66
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentParsedMarker:interface" type="interface" identity="AgentParsedMarker" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
67
|
+
// CIL[DOC-MACRO purpose="Represents a single CIL chunk boundary as parsed from source."]
|
|
68
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Capture start_line, end_line, type, identity, parent and extra attributes for a marker."]
|
|
69
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="types" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
70
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
71
|
+
// CIL[DOC-MICRO logic_summary="Includes chunk_id as legacy support plus an attributes record for forward compatibility." notable_decisions="[]"]
|
|
72
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
72
73
|
// CIL[DOC-STABILITY stability="stable"]
|
|
73
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
74
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
75
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
76
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
77
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
78
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
79
74
|
interface AgentParsedMarker {
|
|
80
75
|
chunk_id: string
|
|
81
76
|
start_line: number
|
|
@@ -85,26 +80,26 @@ interface AgentParsedMarker {
|
|
|
85
80
|
parent: string
|
|
86
81
|
attributes?: Record<string, string>
|
|
87
82
|
}
|
|
83
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Represents a single CIL chunk boundary as parsed from source.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
84
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
85
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
86
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
87
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
88
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
89
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentParsedMarker:interface"]
|
|
88
90
|
|
|
89
91
|
|
|
90
92
|
|
|
91
93
|
|
|
92
94
|
|
|
93
|
-
// CIL[
|
|
94
|
-
// CIL[
|
|
95
|
-
// CIL[DOC-
|
|
96
|
-
// CIL[DOC-
|
|
97
|
-
// CIL[DOC-
|
|
98
|
-
// CIL[DOC-
|
|
99
|
-
// CIL[DOC-
|
|
100
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
95
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentParsedDocs:interface" type="interface" identity="AgentParsedDocs" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
96
|
+
// CIL[DOC-MACRO purpose="Holds all parsed CIL documentation tags for a chunk."]
|
|
97
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Collect macro, responsibility, context, contract, micro, examples, confidence, stability and audience fields."]
|
|
98
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="types" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
99
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
100
|
+
// CIL[DOC-MICRO logic_summary="Raw map mirrors the source tag contents; confidence flags are stored as an array." notable_decisions="[]"]
|
|
101
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
101
102
|
// CIL[DOC-STABILITY stability="stable"]
|
|
102
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
103
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
104
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
105
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
106
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
107
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
108
103
|
interface AgentParsedDocs {
|
|
109
104
|
macro?: string
|
|
110
105
|
responsibility?: string
|
|
@@ -117,131 +112,72 @@ interface AgentParsedDocs {
|
|
|
117
112
|
audience?: string
|
|
118
113
|
raw: Record<string, string>
|
|
119
114
|
}
|
|
115
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Holds all parsed CIL documentation tags for a chunk.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
116
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
117
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
118
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
119
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
120
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
121
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:AgentParsedDocs:interface"]
|
|
120
122
|
|
|
121
123
|
|
|
122
124
|
|
|
123
125
|
|
|
124
126
|
|
|
125
|
-
// CIL[
|
|
126
|
-
// CIL[
|
|
127
|
-
// CIL[DOC-
|
|
128
|
-
// CIL[DOC-
|
|
129
|
-
// CIL[DOC-
|
|
130
|
-
// CIL[DOC-
|
|
131
|
-
// CIL[DOC-
|
|
132
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
127
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:computeFileHash:function" type="function" identity="computeFileHash" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
128
|
+
// CIL[DOC-MACRO purpose="Compute a SHA-256 digest of a file or string."]
|
|
129
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a stable hex hash for content comparison and integrity checks."]
|
|
130
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
131
|
+
// CIL[DOC-CONTRACT inputs="content: string" outputs="hex hash string" errors="none" side_effects="none"]
|
|
132
|
+
// CIL[DOC-MICRO logic_summary="Creates a sha256 hash from utf-8 content and returns the hex digest." notable_decisions="[]"]
|
|
133
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
133
134
|
// CIL[DOC-STABILITY stability="stable"]
|
|
134
|
-
// 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."]
|
|
135
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
136
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
137
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
138
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
139
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
140
135
|
function computeFileHash(content: string): string {
|
|
141
136
|
return crypto.createHash('sha256').update(content, 'utf8').digest('hex')
|
|
142
137
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_agent_ingest_computefilehash_1784235266"]
|
|
149
|
-
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_agent_ingest_estimatetokens_1784235266" type="function" identity="estimatetokens" parent="none"]
|
|
150
|
-
// CIL[DOC-MACRO purpose="Implements estimatetokens logic in cortex.functions.custom_cil-agent-ingest"]
|
|
151
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Execute estimatetokens and return its computed result"]
|
|
152
|
-
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-agent-ingest" layer="function" related_files="[]"]
|
|
153
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
154
|
-
// CIL[DOC-MICRO logic_summary="Provides estimatetokens with estimateTokens(text: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
155
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
156
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
157
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
158
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
159
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
160
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
138
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Compute a SHA-256 digest of a file or string.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
139
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
140
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
141
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
161
142
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
162
143
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
163
|
-
|
|
164
|
-
return Math.ceil(text.length / 4)
|
|
165
|
-
}
|
|
144
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:computeFileHash:function"]
|
|
166
145
|
|
|
167
146
|
|
|
168
147
|
|
|
169
148
|
|
|
170
149
|
|
|
171
|
-
// CIL[
|
|
172
|
-
// CIL[
|
|
173
|
-
// CIL[DOC-
|
|
174
|
-
// CIL[DOC-
|
|
175
|
-
// CIL[DOC-
|
|
176
|
-
// CIL[DOC-
|
|
177
|
-
// CIL[DOC-
|
|
178
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
150
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:estimateTokens:function" type="function" identity="estimateTokens" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
151
|
+
// CIL[DOC-MACRO purpose="Approximate token count for a block of text."]
|
|
152
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Convert character length to token count using a simple 1:4 ratio."]
|
|
153
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
154
|
+
// CIL[DOC-CONTRACT inputs="text: string" outputs="number" errors="none" side_effects="none"]
|
|
155
|
+
// CIL[DOC-MICRO logic_summary="Divides string length by four and rounds up to the nearest integer." notable_decisions="[]"]
|
|
156
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
179
157
|
// CIL[DOC-STABILITY stability="stable"]
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
183
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
184
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
185
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
186
|
-
function normaliseAgentChunkContent(raw: string): string {
|
|
187
|
-
const lines = raw.replace(/\r\n/g, '\n').split('\n')
|
|
188
|
-
const filtered = lines.filter(line => {
|
|
189
|
-
const trimmed = line.trim()
|
|
190
|
-
return !trimmed.match(/^(?:(?:\/\/|--|#)\s*|<!--\s*)CIL\[(BEGIN|END)/) && !trimmed.match(/^(?:(?:\/\/|--|#)\s*|<!--\s*)CIL\[DOC-/)
|
|
191
|
-
})
|
|
192
|
-
const collapsed: string[] = []
|
|
193
|
-
let lastBlank = false
|
|
194
|
-
for (const line of filtered) {
|
|
195
|
-
const isBlank = line.trim() === ''
|
|
196
|
-
if (isBlank && lastBlank) continue
|
|
197
|
-
collapsed.push(line)
|
|
198
|
-
lastBlank = isBlank
|
|
199
|
-
}
|
|
200
|
-
return collapsed.join('\n').trim()
|
|
158
|
+
function estimateTokens(text: string): number {
|
|
159
|
+
return Math.ceil(text.length / 4)
|
|
201
160
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_agent_ingest_normaliseagentchunkcontent_1784235266"]
|
|
208
|
-
// CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_agent_ingest_computeagentchunkhash_1784235266" type="function" identity="computeagentchunkhash" parent="none"]
|
|
209
|
-
// CIL[DOC-MACRO purpose="Implements computeagentchunkhash logic in cortex.functions.custom_cil-agent-ingest"]
|
|
210
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Execute computeagentchunkhash and return its computed result"]
|
|
211
|
-
// CIL[DOC-CONTEXT module="cortex.functions.custom_cil-agent-ingest" layer="function" related_files="[]"]
|
|
212
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
|
|
213
|
-
// CIL[DOC-MICRO logic_summary="Provides computeagentchunkhash with computeAgentChunkHash(codeContent: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
|
|
214
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
215
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
216
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
217
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
218
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
219
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
161
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Approximate token count for a block of text.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
162
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
163
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
164
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
220
165
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
221
166
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
222
|
-
|
|
223
|
-
return crypto.createHash('sha256').update(normaliseAgentChunkContent(codeContent)).digest('hex').slice(0, 16)
|
|
224
|
-
}
|
|
167
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:estimateTokens:function"]
|
|
225
168
|
|
|
226
169
|
|
|
227
170
|
|
|
228
171
|
|
|
229
172
|
|
|
230
|
-
// CIL[
|
|
231
|
-
// CIL[
|
|
232
|
-
// CIL[DOC-
|
|
233
|
-
// CIL[DOC-
|
|
234
|
-
// CIL[DOC-
|
|
235
|
-
// CIL[DOC-
|
|
236
|
-
// CIL[DOC-
|
|
237
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
173
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentAttributes:function" type="function" identity="parseAgentAttributes" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
174
|
+
// CIL[DOC-MACRO purpose="Parse key=value attribute pairs inside CIL marker or doc tag content."]
|
|
175
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a record of attribute names to their quoted string values."]
|
|
176
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
177
|
+
// CIL[DOC-CONTRACT inputs="attrString: string" outputs="Record<string, string>" errors="none" side_effects="none"]
|
|
178
|
+
// CIL[DOC-MICRO logic_summary="Uses a regex to capture word keys and double-quoted values, returning an object." notable_decisions="[]"]
|
|
179
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
238
180
|
// CIL[DOC-STABILITY stability="stable"]
|
|
239
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
240
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
241
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
242
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
243
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
244
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
245
181
|
function parseAgentAttributes(attrString: string): Record<string, string> {
|
|
246
182
|
const attrs: Record<string, string> = {}
|
|
247
183
|
const regex = /(\w+)="([^"]*)"/g
|
|
@@ -251,26 +187,26 @@ function parseAgentAttributes(attrString: string): Record<string, string> {
|
|
|
251
187
|
}
|
|
252
188
|
return attrs
|
|
253
189
|
}
|
|
190
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Parse key=value attribute pairs inside CIL marker or doc tag content.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
191
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
192
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
193
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
194
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
195
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
196
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentAttributes:function"]
|
|
254
197
|
|
|
255
198
|
|
|
256
199
|
|
|
257
200
|
|
|
258
201
|
|
|
259
|
-
// CIL[
|
|
260
|
-
// CIL[
|
|
261
|
-
// CIL[DOC-
|
|
262
|
-
// CIL[DOC-
|
|
263
|
-
// CIL[DOC-
|
|
264
|
-
// CIL[DOC-
|
|
265
|
-
// CIL[DOC-
|
|
266
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
202
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentCilMarkers:function" type="function" identity="parseAgentCilMarkers" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
203
|
+
// CIL[DOC-MACRO purpose="Scan source lines and build a list of CIL chunk markers with boundaries."]
|
|
204
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Match BEGIN and END lines, pair them on a stack, and emit marker metadata."]
|
|
205
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
206
|
+
// CIL[DOC-CONTRACT inputs="lines: string[]" outputs="AgentParsedMarker[]" errors="none" side_effects="none"]
|
|
207
|
+
// CIL[DOC-MICRO logic_summary="Supports //, --, # and HTML comment prefixes; legacy END chunk_id is preserved." notable_decisions="[]"]
|
|
208
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
267
209
|
// CIL[DOC-STABILITY stability="stable"]
|
|
268
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
269
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
270
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
271
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
272
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
273
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
274
210
|
function parseAgentCilMarkers(lines: string[]): AgentParsedMarker[] {
|
|
275
211
|
const markers: AgentParsedMarker[] = []
|
|
276
212
|
const stack: { line: number; attrs: Record<string, string> }[] = []
|
|
@@ -299,26 +235,26 @@ function parseAgentCilMarkers(lines: string[]): AgentParsedMarker[] {
|
|
|
299
235
|
|
|
300
236
|
return markers
|
|
301
237
|
}
|
|
238
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Scan source lines and build a list of CIL chunk markers with boundaries.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
239
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
240
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
241
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
242
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
243
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
244
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentCilMarkers:function"]
|
|
302
245
|
|
|
303
246
|
|
|
304
247
|
|
|
305
248
|
|
|
306
249
|
|
|
307
|
-
// CIL[
|
|
308
|
-
// CIL[
|
|
309
|
-
// CIL[DOC-
|
|
310
|
-
// CIL[DOC-
|
|
311
|
-
// CIL[DOC-
|
|
312
|
-
// CIL[DOC-
|
|
313
|
-
// CIL[DOC-
|
|
314
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
250
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentCilDocs:function" type="function" identity="parseAgentCilDocs" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
251
|
+
// CIL[DOC-MACRO purpose="Extract CIL documentation tags from a chunk line range."]
|
|
252
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Parse each DOC-* tag and map it into the AgentParsedDocs structure."]
|
|
253
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
254
|
+
// CIL[DOC-CONTRACT inputs="lines: string[], startLine: number, endLine: number" outputs="AgentParsedDocs" errors="none" side_effects="none"]
|
|
255
|
+
// CIL[DOC-MICRO logic_summary="Switches on tag key to populate macro, responsibility, context, contract, micro, examples, confidence, stability and audience fields." notable_decisions="[]"]
|
|
256
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
315
257
|
// CIL[DOC-STABILITY stability="stable"]
|
|
316
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
317
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
318
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
319
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
320
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
321
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
322
258
|
function parseAgentCilDocs(lines: string[], startLine: number, endLine: number): AgentParsedDocs {
|
|
323
259
|
const docs: AgentParsedDocs = { raw: {} }
|
|
324
260
|
for (let i = startLine - 1; i < endLine - 1; i++) {
|
|
@@ -370,67 +306,82 @@ function parseAgentCilDocs(lines: string[], startLine: number, endLine: number):
|
|
|
370
306
|
}
|
|
371
307
|
return docs
|
|
372
308
|
}
|
|
309
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Extract CIL documentation tags from a chunk line range.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
310
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
311
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
312
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
313
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
314
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
315
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:parseAgentCilDocs:function"]
|
|
373
316
|
|
|
374
317
|
|
|
375
318
|
|
|
376
319
|
|
|
377
320
|
|
|
378
|
-
// CIL[
|
|
379
|
-
// CIL[
|
|
380
|
-
// CIL[DOC-
|
|
381
|
-
// CIL[DOC-
|
|
382
|
-
// CIL[DOC-
|
|
383
|
-
// CIL[DOC-
|
|
384
|
-
// CIL[DOC-
|
|
385
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
321
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:mapAgentDocsToChunkData:function" type="function" identity="mapAgentDocsToChunkData" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
322
|
+
// CIL[DOC-MACRO purpose="Flatten parsed docs into database column fields for a chunk record."]
|
|
323
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Translate doc tags into macro, micro, input/output specs, side effects, module, layer and related files."]
|
|
324
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
325
|
+
// CIL[DOC-CONTRACT inputs="docs: AgentParsedDocs" outputs="Record<string, any>" errors="none" side_effects="none"]
|
|
326
|
+
// CIL[DOC-MICRO logic_summary="Falls back to raw tag content where typed values are missing; uses contract and micro attributes." notable_decisions="[]"]
|
|
327
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
386
328
|
// CIL[DOC-STABILITY stability="stable"]
|
|
387
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
388
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
389
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
390
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
391
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
392
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
393
329
|
function mapAgentDocsToChunkData(docs: AgentParsedDocs): Record<string, any> {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
330
|
+
// Only emit fields backed by DOC-* tags actually present in the source.
|
|
331
|
+
// Emitting empty strings for absent tags would wipe enriched fields on
|
|
332
|
+
// every store_markers call for chunks that use JSDoc or no doc tags.
|
|
333
|
+
const out: Record<string, any> = {}
|
|
334
|
+
if (docs.raw.MACRO || docs.macro) {
|
|
335
|
+
out.macro = docs.macro || docs.raw.MACRO || ''
|
|
336
|
+
out.description = docs.macro || ''
|
|
337
|
+
}
|
|
338
|
+
if (docs.raw.MICRO) {
|
|
339
|
+
out.micro = docs.micro?.logic_summary || ''
|
|
340
|
+
out.tags = docs.micro?.notable_decisions || ''
|
|
341
|
+
} else if (docs.raw.RESPONSIBILITY) {
|
|
342
|
+
out.micro = docs.responsibility || ''
|
|
343
|
+
}
|
|
344
|
+
if (docs.contract) {
|
|
345
|
+
out.input_spec = docs.contract.inputs || ''
|
|
346
|
+
out.output_spec = docs.contract.outputs || ''
|
|
347
|
+
out.side_effects = docs.contract.side_effects || ''
|
|
348
|
+
out.throws = docs.contract.errors || ''
|
|
349
|
+
out.depends_on = docs.contract.dependencies || ''
|
|
350
|
+
}
|
|
351
|
+
if (docs.context) {
|
|
352
|
+
out.module = docs.context.module || ''
|
|
353
|
+
out.layer = docs.context.layer || ''
|
|
354
|
+
out.see_also = docs.context.related_files || ''
|
|
412
355
|
}
|
|
356
|
+
if (docs.confidence) {
|
|
357
|
+
out.doc_confidence = docs.confidence.pass === 'second' ? 'ai_generated' : 'from_source'
|
|
358
|
+
out.confidence_score = docs.confidence.score || 0
|
|
359
|
+
out.confidence_flags = docs.confidence.flags || []
|
|
360
|
+
}
|
|
361
|
+
if (docs.raw.STABILITY || docs.stability) out.stability = docs.stability || ''
|
|
362
|
+
if (docs.raw.AUDIENCE || docs.audience) out.audience = docs.audience || ''
|
|
363
|
+
return out
|
|
413
364
|
}
|
|
365
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Flatten parsed docs into database column fields for a chunk record.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
366
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
367
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
368
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
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
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:mapAgentDocsToChunkData:function"]
|
|
414
372
|
|
|
415
373
|
|
|
416
374
|
|
|
417
375
|
|
|
418
376
|
|
|
419
|
-
// CIL[
|
|
420
|
-
// CIL[
|
|
421
|
-
// CIL[DOC-
|
|
422
|
-
// CIL[DOC-
|
|
423
|
-
// CIL[DOC-
|
|
424
|
-
// CIL[DOC-
|
|
425
|
-
// CIL[DOC-
|
|
426
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
377
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-agent-ingest.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/cil-agent-ingest.ts"]
|
|
378
|
+
// CIL[DOC-MACRO purpose="Main Netlify function handler for CIL agent ingestion actions."]
|
|
379
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Route query actions, validate project, read and write chunk records, and return action results."]
|
|
380
|
+
// CIL[DOC-CONTEXT module="cil-agent-ingest" layer="functions" related_files=".framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-agent-ingest.ts"]
|
|
381
|
+
// CIL[DOC-CONTRACT inputs="ctx: RequestContext, body: any" outputs="JSON response per action" errors="Project not found, missing fields, hash mismatch, unknown action" side_effects="Creates, updates, deactivates and renames CIL chunk and file records"]
|
|
382
|
+
// CIL[DOC-MICRO logic_summary="Implements six actions via createHandler: get_selected_files, store_markers, update_documentation, detect_changes, mark_dead and update_file_path." notable_decisions="[]"]
|
|
383
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
|
|
427
384
|
// CIL[DOC-STABILITY stability="stable"]
|
|
428
|
-
// CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
429
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
430
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
431
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
432
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
433
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
434
385
|
export const handler = createHandler(async (ctx, body) => {
|
|
435
386
|
const action = ctx.query?.action
|
|
436
387
|
const req = body as AgentIngestRequest
|
|
@@ -538,7 +489,7 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
538
489
|
const codeContent = lines.slice(m.start_line, m.end_line - 1).join('\n')
|
|
539
490
|
const docs = parseAgentCilDocs(lines, m.start_line, m.end_line)
|
|
540
491
|
const docFields = mapAgentDocsToChunkData(docs)
|
|
541
|
-
const chunkHash =
|
|
492
|
+
const chunkHash = computeContentHash(codeContent)
|
|
542
493
|
const tokenCount = estimateTokens(codeContent)
|
|
543
494
|
|
|
544
495
|
const baseData = {
|
|
@@ -553,6 +504,7 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
553
504
|
line_start: m.start_line,
|
|
554
505
|
line_end: m.end_line,
|
|
555
506
|
stored_hash: chunkHash,
|
|
507
|
+
content_hash: chunkHash,
|
|
556
508
|
code_content: codeContent,
|
|
557
509
|
token_count: tokenCount,
|
|
558
510
|
is_dead_code: false,
|
|
@@ -767,7 +719,12 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
767
719
|
|
|
768
720
|
throw new Error(`Unknown action: ${action}. Valid actions: get_selected_files, store_markers, update_documentation, detect_changes, mark_dead, update_file_path`)
|
|
769
721
|
})
|
|
722
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Main Netlify function handler for CIL agent ingestion actions.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/admin-data.ts"]
|
|
723
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
724
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
725
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
726
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
727
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
728
|
+
// CIL[END stable_id="~/.framework/functions/cil-agent-ingest.ts:handler:constant"]
|
|
770
729
|
|
|
771
730
|
|
|
772
|
-
|
|
773
|
-
// CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_agent_ingest_handler_1784235266"]
|