spine-framework 0.3.124 → 0.3.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,62 +1,46 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module ai-agents
|
|
3
|
-
* @audience core-contributor
|
|
4
|
-
* @layer api-handler
|
|
5
|
-
* @stability stable
|
|
6
|
-
*
|
|
7
|
-
* CRUD API for the `ai_agents` table. AI agent records define the configuration
|
|
8
|
-
* for agentic inference workloads: model settings, system prompts, available
|
|
9
|
-
* tools, capabilities, and constraints. The runtime execution is handled by
|
|
10
|
-
* `_shared/agent-runner.ts`.
|
|
11
|
-
*
|
|
12
|
-
* **Routed by:** `GET/POST/PATCH/DELETE /.netlify/functions/ai-agents`
|
|
13
|
-
*
|
|
14
|
-
* **Actions (standard CRUD only):**
|
|
15
|
-
* | method | condition | handler |
|
|
16
|
-
* |--------|-----------|---------|
|
|
17
|
-
* | GET | ?id | get |
|
|
18
|
-
* | GET | (default) | list |
|
|
19
|
-
* | POST | — | create |
|
|
20
|
-
* | PATCH | — | update |
|
|
21
|
-
* | DELETE | — | remove |
|
|
22
|
-
*
|
|
23
|
-
* **Authorization:** All operations use `ctx.db` (RLS-scoped). Authenticated
|
|
24
|
-
* principal required for writes.
|
|
25
|
-
*
|
|
26
|
-
* INVARIANT: `remove` is a hard delete.
|
|
27
|
-
* INVARIANT: `update` only patches allowed fields: name, description,
|
|
28
|
-
* model_config, system_prompt, tools, capabilities, constraints, metadata,
|
|
29
|
-
* is_active.
|
|
30
|
-
*
|
|
31
|
-
* @seeAlso agent-runner.ts (runAgent — runtime execution using these configs)
|
|
32
|
-
* @seeAlso prompt-configs.ts (prompt_configs referenced by agent configs)
|
|
33
|
-
* @seeAlso audit.ts (emitLog for ai_agent.* events)
|
|
34
|
-
*/
|
|
35
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// CIL[BEGIN chunk_id="ai-agents_module_header_1784019432" type="module_header" identity="imports" parent="none"]
|
|
8
|
+
// CIL[DOC-MACRO purpose="Import dependencies for AI agents CRUD operations"]
|
|
9
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide core middleware, database joins, audit logging, and permissions"]
|
|
10
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
11
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
|
|
12
|
+
// CIL[DOC-MICRO logic_summary="Imports required modules and configures permissions engine" notable_decisions="[]"]
|
|
13
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
14
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
15
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
16
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
17
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
18
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
19
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
20
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
21
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
36
22
|
import { createHandler } from './_shared/middleware'
|
|
37
|
-
import {
|
|
23
|
+
import { adminDb } from './_shared/db'
|
|
38
24
|
import { emitLog } from './_shared/audit'
|
|
25
|
+
import { isSystemAdmin } from './_shared/principal'
|
|
39
26
|
import { PermissionEngine, sanitizeRecordData } from './_shared/permissions'
|
|
40
27
|
|
|
41
28
|
const permissions = PermissionEngine as any
|
|
42
|
-
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
* @side-effects [DB queries, permission sanitization]
|
|
58
|
-
* @tags ai-agents, list, crud, pagination
|
|
59
|
-
*/
|
|
29
|
+
// CIL[END chunk_id="ai-agents_module_header_1784019432"]
|
|
30
|
+
// CIL[BEGIN chunk_id="ai-agents_list_1784019432" type="function" identity="list" parent="none"]
|
|
31
|
+
// CIL[DOC-MACRO purpose="List AI agents with filtering and pagination"]
|
|
32
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Query and sanitize AI agent records"]
|
|
33
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
34
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized_agent_records[]" errors="account_required,database_error" side_effects="database_queries,permission_filtering"]
|
|
35
|
+
// CIL[DOC-MICRO logic_summary="Builds query with filters, applies pagination, sanitizes results" notable_decisions="[]"]
|
|
36
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
37
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
38
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
39
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
40
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
41
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
42
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
43
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
60
44
|
export const list = createHandler(async (ctx, _body) => {
|
|
61
45
|
const { agent_type, is_active, limit = 100, offset = 0 } = ctx.query || {}
|
|
62
46
|
|
|
@@ -64,10 +48,11 @@ export const list = createHandler(async (ctx, _body) => {
|
|
|
64
48
|
throw new Error('Account context required')
|
|
65
49
|
}
|
|
66
50
|
|
|
67
|
-
|
|
68
|
-
|
|
51
|
+
const db = isSystemAdmin(ctx.principal) ? adminDb : ctx.db
|
|
52
|
+
|
|
53
|
+
let query = db
|
|
69
54
|
.from('ai_agents')
|
|
70
|
-
.select(
|
|
55
|
+
.select('*')
|
|
71
56
|
.order('name')
|
|
72
57
|
|
|
73
58
|
if (agent_type) {
|
|
@@ -91,23 +76,21 @@ export const list = createHandler(async (ctx, _body) => {
|
|
|
91
76
|
|
|
92
77
|
return sanitized
|
|
93
78
|
})
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
* @tags ai-agents, get, crud, single-record
|
|
110
|
-
*/
|
|
79
|
+
// CIL[END chunk_id="ai-agents_list_1784019432"]
|
|
80
|
+
// CIL[BEGIN chunk_id="ai-agents_get_1784019432" type="function" identity="get" parent="none"]
|
|
81
|
+
// CIL[DOC-MACRO purpose="Get single AI agent by ID with joins"]
|
|
82
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Retrieve and sanitize individual agent record"]
|
|
83
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
84
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized_agent_record" errors="id_required,record_not_found,database_error" side_effects="database_query,permission_filtering"]
|
|
85
|
+
// CIL[DOC-MICRO logic_summary="Queries single agent by ID, applies permission sanitization" notable_decisions="[]"]
|
|
86
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
87
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
88
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
89
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
90
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
91
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
92
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
93
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
111
94
|
export const get = createHandler(async (ctx, _body) => {
|
|
112
95
|
const { id } = ctx.query || {}
|
|
113
96
|
|
|
@@ -115,9 +98,11 @@ export const get = createHandler(async (ctx, _body) => {
|
|
|
115
98
|
throw new Error('Agent ID is required')
|
|
116
99
|
}
|
|
117
100
|
|
|
118
|
-
const
|
|
101
|
+
const db = isSystemAdmin(ctx.principal) ? adminDb : ctx.db
|
|
102
|
+
|
|
103
|
+
const { data, error: err } = await db
|
|
119
104
|
.from('ai_agents')
|
|
120
|
-
.select(
|
|
105
|
+
.select('*')
|
|
121
106
|
.eq('id', id)
|
|
122
107
|
.single()
|
|
123
108
|
|
|
@@ -125,23 +110,21 @@ export const get = createHandler(async (ctx, _body) => {
|
|
|
125
110
|
|
|
126
111
|
return await sanitizeRecordData(ctx, data, 'ai_agent')
|
|
127
112
|
})
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
* @tags ai-agents, create, crud, audit
|
|
144
|
-
*/
|
|
113
|
+
// CIL[END chunk_id="ai-agents_get_1784019432"]
|
|
114
|
+
// CIL[BEGIN chunk_id="ai-agents_create_1784019432" type="function" identity="create" parent="none"]
|
|
115
|
+
// CIL[DOC-MACRO purpose="Create new AI agent configuration"]
|
|
116
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate and insert new agent record with audit logging"]
|
|
117
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
118
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="created_agent_record" errors="name_required,user_context_required,database_error" side_effects="database_insert,audit_logging"]
|
|
119
|
+
// CIL[DOC-MICRO logic_summary="Validates required fields, inserts with defaults, logs creation" notable_decisions="[]"]
|
|
120
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
121
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
122
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
123
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
124
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
125
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
126
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
127
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
145
128
|
export const create = createHandler(async (ctx, body) => {
|
|
146
129
|
const { app_id, name, description, agent_type, model_config, system_prompt, tools, capabilities, constraints, metadata } = body
|
|
147
130
|
|
|
@@ -181,23 +164,21 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
181
164
|
|
|
182
165
|
return data
|
|
183
166
|
})
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
* @tags ai-agents, update, crud, audit
|
|
200
|
-
*/
|
|
167
|
+
// CIL[END chunk_id="ai-agents_create_1784019432"]
|
|
168
|
+
// CIL[BEGIN chunk_id="ai-agents_update_1784019432" type="function" identity="update" parent="none"]
|
|
169
|
+
// CIL[DOC-MACRO purpose="Update existing AI agent configuration"]
|
|
170
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Patch allowed fields on agent record with audit logging"]
|
|
171
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
172
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="updated_agent_record" errors="id_required,user_context_required,database_error" side_effects="database_update,audit_logging"]
|
|
173
|
+
// CIL[DOC-MICRO logic_summary="Filters allowed fields, adds timestamp, updates with validation" notable_decisions="[]"]
|
|
174
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
175
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
176
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
177
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
178
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
179
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
180
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
181
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
201
182
|
export const update = createHandler(async (ctx, body) => {
|
|
202
183
|
const id = body?.id || ctx.query?.id
|
|
203
184
|
const { id: _bodyId, ...updates } = body || {}
|
|
@@ -210,7 +191,7 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
210
191
|
throw new Error('User context (person and account) required')
|
|
211
192
|
}
|
|
212
193
|
|
|
213
|
-
const allowed = ['name', 'description', 'model_config', 'system_prompt', 'tools', 'capabilities', 'constraints', 'metadata', 'is_active']
|
|
194
|
+
const allowed = ['name', 'description', 'agent_type', 'model_config', 'system_prompt', 'tools', 'capabilities', 'constraints', 'metadata', 'is_active', 'app_id']
|
|
214
195
|
const updateData: Record<string, any> = { updated_at: new Date().toISOString() }
|
|
215
196
|
for (const key of allowed) {
|
|
216
197
|
if (updates[key] !== undefined) updateData[key] = updates[key]
|
|
@@ -232,23 +213,21 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
232
213
|
|
|
233
214
|
return data
|
|
234
215
|
})
|
|
235
|
-
//
|
|
236
|
-
|
|
237
|
-
//
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
* @tags ai-agents, remove, crud, audit
|
|
251
|
-
*/
|
|
216
|
+
// CIL[END chunk_id="ai-agents_update_1784019432"]
|
|
217
|
+
// CIL[BEGIN chunk_id="ai-agents_remove_1784019432" type="function" identity="remove" parent="none"]
|
|
218
|
+
// CIL[DOC-MACRO purpose="Delete AI agent configuration"]
|
|
219
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Hard delete agent record with audit logging"]
|
|
220
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[]"]
|
|
221
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="success_confirmation" errors="id_required,agent_not_found,database_error" side_effects="database_delete,audit_logging"]
|
|
222
|
+
// CIL[DOC-MICRO logic_summary="Validates existence, performs hard delete, logs deletion" notable_decisions="[]"]
|
|
223
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
224
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
225
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
226
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
227
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
228
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
229
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
230
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
252
231
|
export const remove = createHandler(async (ctx, _body) => {
|
|
253
232
|
const id = ctx.query?.id
|
|
254
233
|
|
|
@@ -278,25 +257,21 @@ export const remove = createHandler(async (ctx, _body) => {
|
|
|
278
257
|
|
|
279
258
|
return { success: true }
|
|
280
259
|
})
|
|
281
|
-
//
|
|
282
|
-
|
|
283
|
-
//
|
|
284
|
-
|
|
285
|
-
//
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
* @depended-by [Netlify function routing]
|
|
297
|
-
* @side-effects [Delegates to appropriate handler]
|
|
298
|
-
* @tags ai-agents, router, crud, netlify-function
|
|
299
|
-
*/
|
|
260
|
+
// CIL[END chunk_id="ai-agents_remove_1784019432"]
|
|
261
|
+
// CIL[BEGIN chunk_id="ai-agents_handler_1784019432" type="function" identity="handler" parent="none"]
|
|
262
|
+
// CIL[DOC-MACRO purpose="Route HTTP methods to appropriate CRUD handlers"]
|
|
263
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Dispatch requests based on method and query parameters"]
|
|
264
|
+
// CIL[DOC-CONTEXT module="ai-agents" layer="api-handler" related_files="[]"]
|
|
265
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="handler_response" errors="invalid_action_or_method" side_effects="delegates_to_crud_handlers"]
|
|
266
|
+
// CIL[DOC-MICRO logic_summary="Routes GET/POST/PATCH/DELETE to list/get/create/update/remove" notable_decisions="[]"]
|
|
267
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
268
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
269
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
270
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
271
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
272
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
273
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
274
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
300
275
|
export const handler = createHandler(async (ctx, body) => {
|
|
301
276
|
const { action } = ctx.query || {}
|
|
302
277
|
const method = ctx.query?.method || 'GET'
|
|
@@ -320,4 +295,4 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
320
295
|
|
|
321
296
|
throw new Error('Invalid action or method')
|
|
322
297
|
})
|
|
323
|
-
//
|
|
298
|
+
// CIL[END chunk_id="ai-agents_handler_1784019432"]
|