spine-framework 0.3.125 → 0.3.127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +169 -97
- package/.framework/cli/commands/generate.ts +82 -161
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +147 -54
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +222 -347
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +162 -14
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +687 -533
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +173 -145
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +192 -115
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +3 -3
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,41 +1,31 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/**
|
|
3
|
-
* @module cli/commands/dev
|
|
4
|
-
* @audience installer
|
|
5
|
-
* @layer cli
|
|
6
|
-
* @stability stable
|
|
7
|
-
*
|
|
8
|
-
* `spine dev` command — unified development server for Spine.
|
|
9
|
-
* Handles assembly, integrity verification, and Vite dev server startup.
|
|
10
|
-
*
|
|
11
|
-
* **Commands:**
|
|
12
|
-
* | Subcommand | Description |
|
|
13
|
-
* |-------------------|-------------------------------------------------------|
|
|
14
|
-
* | `dev` | Start dev server with assembly and integrity check |
|
|
15
|
-
* | `dev --no-verify` | Skip integrity verification (faster) |
|
|
16
|
-
* | `dev --port 3002` | Use custom port (default: 3001) |
|
|
17
|
-
* | `dev --watch` | Watch v2-custom for changes and auto-reassemble |
|
|
18
|
-
* | `dev --no-watch` | Disable file watching (manual rebuild only) |
|
|
19
|
-
*
|
|
20
|
-
* **What happens:**
|
|
21
|
-
* 1. Runs `assemble:v2` to merge v2-core + v2-custom
|
|
22
|
-
* 2. Runs `verify` to check core integrity (unless --no-verify)
|
|
23
|
-
* 3. Starts Vite dev server on port 3001 (or --port)
|
|
24
|
-
* 4. Watches v2-custom/ for changes (--watch by default)
|
|
25
|
-
* 5. Fast incremental reassembly on custom code changes
|
|
26
|
-
*
|
|
27
|
-
* **Usage:**
|
|
28
|
-
* ```bash
|
|
29
|
-
* spine dev
|
|
30
|
-
* spine dev --port 3002
|
|
31
|
-
* spine dev --no-verify
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @seeAlso scripts/assemble-v2.sh (assembly script)
|
|
35
|
-
* @seeAlso scripts/verify-integrity.sh (verification script)
|
|
36
|
-
* @seeAlso vite.config.ts (Vite configuration)
|
|
37
|
-
*/
|
|
38
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// CIL[BEGIN chunk_id="dev_module_header_1784071456" type="module_header" identity="module_header" parent="none"]
|
|
15
|
+
// CIL[DOC-MACRO purpose="Import dependencies for dev server CLI"]
|
|
16
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide imports and constants for dev commands"]
|
|
17
|
+
// CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
18
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
|
|
19
|
+
// CIL[DOC-MICRO logic_summary="Imports Command type, child_process, path, and fs modules" notable_decisions="[]"]
|
|
20
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
21
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
22
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
23
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
24
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
25
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
26
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
27
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
28
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
39
29
|
import type { Command } from 'commander'
|
|
40
30
|
import { spawn, execSync } from 'child_process'
|
|
41
31
|
import { resolve, dirname } from 'path'
|
|
@@ -45,9 +35,21 @@ import { watch, existsSync, statSync, readdirSync } from 'fs'
|
|
|
45
35
|
const __filename = fileURLToPath(import.meta.url)
|
|
46
36
|
const __dirname = dirname(__filename)
|
|
47
37
|
const PROJECT_ROOT = resolve(__dirname, '../../../')
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
38
|
+
// CIL[END chunk_id="dev_module_header_1784071456"]
|
|
39
|
+
// CIL[BEGIN chunk_id="dev_registerdevcommands_1784071456" type="function" identity="registerDevCommands" parent="none"]
|
|
40
|
+
// CIL[DOC-MACRO purpose="Register dev command with CLI framework"]
|
|
41
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle dev server startup and file watching"]
|
|
42
|
+
// CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
43
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="dev command registration" errors="process exit on failure" side_effects="starts processes, watches files"]
|
|
44
|
+
// CIL[DOC-MICRO logic_summary="Orchestrates assembly, verification, and Vite server startup" notable_decisions="[]"]
|
|
45
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
46
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
47
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
48
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
49
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
50
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
51
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
52
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
51
53
|
export function registerDevCommands(program: Command) {
|
|
52
54
|
program
|
|
53
55
|
.command('dev')
|
|
@@ -61,7 +63,7 @@ export function registerDevCommands(program: Command) {
|
|
|
61
63
|
console.log('\n🚀 Starting Spine dev server...\n')
|
|
62
64
|
|
|
63
65
|
try {
|
|
64
|
-
|
|
66
|
+
|
|
65
67
|
console.log('📦 Step 1: Assembling v2-core + v2-custom...')
|
|
66
68
|
const assemblyExitCode = await runCommand(
|
|
67
69
|
'bash',
|
|
@@ -75,7 +77,7 @@ export function registerDevCommands(program: Command) {
|
|
|
75
77
|
}
|
|
76
78
|
console.log('✓ Assembly complete\n')
|
|
77
79
|
|
|
78
|
-
|
|
80
|
+
|
|
79
81
|
if (opts.verify !== false) {
|
|
80
82
|
console.log('🔒 Step 2: Verifying core integrity...')
|
|
81
83
|
const verifyExitCode = await runCommand(
|
|
@@ -93,7 +95,7 @@ export function registerDevCommands(program: Command) {
|
|
|
93
95
|
console.log('⏭️ Step 2: Skipping integrity verification (--no-verify)\n')
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
|
|
98
|
+
|
|
97
99
|
console.log(`🌐 Step 3: Starting Vite dev server on port ${opts.port}...`)
|
|
98
100
|
console.log(' (Press Ctrl+C to stop)\n')
|
|
99
101
|
|
|
@@ -111,7 +113,7 @@ export function registerDevCommands(program: Command) {
|
|
|
111
113
|
}
|
|
112
114
|
)
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
|
|
115
117
|
let watcher: ReturnType<typeof watch> | null = null
|
|
116
118
|
if (opts.watch !== false) {
|
|
117
119
|
const watchDelay = parseInt(opts.watchDelay) || 500
|
|
@@ -124,14 +126,14 @@ export function registerDevCommands(program: Command) {
|
|
|
124
126
|
let reassemblyTimeout: NodeJS.Timeout | null = null
|
|
125
127
|
|
|
126
128
|
watcher = watch(customDir, { recursive: true }, (eventType, filename) => {
|
|
127
|
-
|
|
129
|
+
|
|
128
130
|
if (!filename || filename.includes('node_modules') || filename.startsWith('.')) {
|
|
129
131
|
return
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
console.log(`\n📝 Change detected in v2-custom/${filename}`)
|
|
133
135
|
|
|
134
|
-
|
|
136
|
+
|
|
135
137
|
if (reassemblyTimeout) {
|
|
136
138
|
clearTimeout(reassemblyTimeout)
|
|
137
139
|
}
|
|
@@ -162,7 +164,7 @@ export function registerDevCommands(program: Command) {
|
|
|
162
164
|
process.exit(code || 0)
|
|
163
165
|
})
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
|
|
166
168
|
process.on('SIGINT', () => {
|
|
167
169
|
console.log('\n\n🛑 Shutting down dev server...')
|
|
168
170
|
if (watcher) {
|
|
@@ -187,9 +189,21 @@ export function registerDevCommands(program: Command) {
|
|
|
187
189
|
}
|
|
188
190
|
})
|
|
189
191
|
}
|
|
190
|
-
|
|
191
|
-
//
|
|
192
|
-
|
|
192
|
+
// CIL[END chunk_id="dev_registerdevcommands_1784071456"]
|
|
193
|
+
// CIL[BEGIN chunk_id="dev_runcommand_1784071456" type="function" identity="runCommand" parent="none"]
|
|
194
|
+
// CIL[DOC-MACRO purpose="Execute shell command with promise wrapper"]
|
|
195
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Run external processes and return exit code"]
|
|
196
|
+
// CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
197
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="Promise<number>" errors="process spawn errors" side_effects="spawns child process"]
|
|
198
|
+
// CIL[DOC-MICRO logic_summary="Wraps spawn in Promise for async command execution" notable_decisions="[]"]
|
|
199
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
200
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
201
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
202
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
203
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
204
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
205
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
206
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
193
207
|
function runCommand(command: string, args: string[], cwd: string): Promise<number> {
|
|
194
208
|
return new Promise((resolve, reject) => {
|
|
195
209
|
const proc = spawn(command, args, {
|
|
@@ -207,17 +221,27 @@ function runCommand(command: string, args: string[], cwd: string): Promise<numbe
|
|
|
207
221
|
})
|
|
208
222
|
})
|
|
209
223
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
224
|
+
// CIL[END chunk_id="dev_runcommand_1784071456"]
|
|
225
|
+
// CIL[BEGIN chunk_id="dev_fastreassemble_1784071456" type="function" identity="fastReassemble" parent="none"]
|
|
226
|
+
// CIL[DOC-MACRO purpose="Fast reassembly of custom code during dev"]
|
|
227
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Sync custom source and functions to assembled dirs"]
|
|
228
|
+
// CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
229
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="void" errors="file system errors" side_effects="copies files, creates directories"]
|
|
230
|
+
// CIL[DOC-MICRO logic_summary="Uses rsync or manual copy to sync v2-custom changes" notable_decisions="[]"]
|
|
231
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
|
|
232
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
233
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
234
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
235
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
236
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
237
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
238
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
215
239
|
async function fastReassemble(projectRoot: string): Promise<void> {
|
|
216
240
|
const customDir = resolve(projectRoot, 'v2-custom')
|
|
217
241
|
const srcDest = resolve(projectRoot, 'src/v2-assembled')
|
|
218
242
|
const funcsDest = resolve(projectRoot, 'functions')
|
|
219
243
|
|
|
220
|
-
|
|
244
|
+
|
|
221
245
|
let hasRsync = false
|
|
222
246
|
try {
|
|
223
247
|
execSync('which rsync', { stdio: 'pipe' })
|
|
@@ -226,24 +250,24 @@ async function fastReassemble(projectRoot: string): Promise<void> {
|
|
|
226
250
|
hasRsync = false
|
|
227
251
|
}
|
|
228
252
|
|
|
229
|
-
|
|
253
|
+
|
|
230
254
|
const customSrcDir = resolve(customDir, 'src')
|
|
231
255
|
if (existsSync(customSrcDir)) {
|
|
232
256
|
const destDir = srcDest
|
|
233
257
|
|
|
234
258
|
if (hasRsync) {
|
|
235
|
-
|
|
259
|
+
|
|
236
260
|
execSync(
|
|
237
261
|
`rsync -av --delete "${customSrcDir}/" "${destDir}/"`,
|
|
238
262
|
{ stdio: 'pipe', cwd: projectRoot }
|
|
239
263
|
)
|
|
240
264
|
} else {
|
|
241
|
-
|
|
265
|
+
|
|
242
266
|
copyChangedFiles(customSrcDir, destDir)
|
|
243
267
|
}
|
|
244
268
|
}
|
|
245
269
|
|
|
246
|
-
|
|
270
|
+
|
|
247
271
|
const customFuncsDir = resolve(customDir, 'functions')
|
|
248
272
|
if (existsSync(customFuncsDir)) {
|
|
249
273
|
if (hasRsync) {
|
|
@@ -256,7 +280,7 @@ async function fastReassemble(projectRoot: string): Promise<void> {
|
|
|
256
280
|
}
|
|
257
281
|
}
|
|
258
282
|
|
|
259
|
-
|
|
283
|
+
|
|
260
284
|
const spineConfigSrc = resolve(projectRoot, 'spine.config.json')
|
|
261
285
|
const publicDest = resolve(srcDest, 'public')
|
|
262
286
|
if (existsSync(spineConfigSrc)) {
|
|
@@ -275,11 +299,21 @@ async function fastReassemble(projectRoot: string): Promise<void> {
|
|
|
275
299
|
}
|
|
276
300
|
}
|
|
277
301
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
302
|
+
// CIL[END chunk_id="dev_fastreassemble_1784071456"]
|
|
303
|
+
// CIL[BEGIN chunk_id="dev_copychangedfiles_1784071456" type="function" identity="copyChangedFiles" parent="none"]
|
|
304
|
+
// CIL[DOC-MACRO purpose="Recursively copy changed files during reassembly"]
|
|
305
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Copy only modified files to avoid unnecessary work"]
|
|
306
|
+
// CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[]"]
|
|
307
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="void" errors="file system errors" side_effects="copies files, creates directories"]
|
|
308
|
+
// CIL[DOC-MICRO logic_summary="Compares file mtimes and copies only newer files" notable_decisions="[]"]
|
|
309
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
310
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
311
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
312
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
313
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
314
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
315
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
316
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
283
317
|
function copyChangedFiles(src: string, dest: string): void {
|
|
284
318
|
const files = readdirSync(src, { withFileTypes: true })
|
|
285
319
|
|
|
@@ -289,14 +323,14 @@ function copyChangedFiles(src: string, dest: string): void {
|
|
|
289
323
|
|
|
290
324
|
if (entry.isDirectory()) {
|
|
291
325
|
if (!existsSync(destPath)) {
|
|
292
|
-
|
|
326
|
+
|
|
293
327
|
const { mkdirSync } = require('fs')
|
|
294
328
|
mkdirSync(destPath, { recursive: true })
|
|
295
329
|
}
|
|
296
|
-
|
|
330
|
+
|
|
297
331
|
copyChangedFiles(srcPath, destPath)
|
|
298
332
|
} else {
|
|
299
|
-
|
|
333
|
+
|
|
300
334
|
const srcStat = statSync(srcPath)
|
|
301
335
|
let needsCopy = true
|
|
302
336
|
|
|
@@ -312,3 +346,4 @@ function copyChangedFiles(src: string, dest: string): void {
|
|
|
312
346
|
}
|
|
313
347
|
}
|
|
314
348
|
}
|
|
349
|
+
// CIL[END chunk_id="dev_copychangedfiles_1784071456"]
|