feat: Oracle Canvas Component Schema and Qwen 3.6 integration (#31)

Co-authored-by: Sagnik <sagnik7896@gmail.com>
Reviewed-on: sagnik/Project_Velocity#31
This commit is contained in:
2026-04-20 01:43:39 +05:30
parent 57144e1bd3
commit e519339cc9
129 changed files with 625213 additions and 262 deletions

4
app/dist/index.html vendored
View File

@@ -4,8 +4,8 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Velocity WebOS</title>
<script type="module" crossorigin src="./assets/index-Bj2Xa_13.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-W2SBxMnB.css">
<script type="module" crossorigin src="./assets/index-C2Cn6fx_.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-CILgAuxv.css">
</head>
<body>
<div id="root"></div>

View File

@@ -1 +1 @@
{"root":["../../src/app.tsx","../../src/main.tsx","../../src/app/admin/page.tsx","../../src/app/oracle/page.tsx","../../src/components/layout/loginscreen.tsx","../../src/components/layout/notificationcenter.tsx","../../src/components/layout/sidebar.tsx","../../src/components/modules/crm.tsx","../../src/components/modules/catalyst.tsx","../../src/components/modules/catalystmarketingtab.tsx","../../src/components/modules/dashboard.tsx","../../src/components/modules/groundtruthpicker.tsx","../../src/components/modules/inventory.tsx","../../src/components/modules/oracle.tsx","../../src/components/modules/sentinel.tsx","../../src/components/modules/settings.tsx","../../src/components/modules/sentinel/perceptionplayer.tsx","../../src/components/modules/sentinel/sentinellivesession.tsx","../../src/components/oracle/leadinspector.tsx","../../src/components/oracle/pipelineview.tsx","../../src/components/sentinel/journeyriver/inspectorpanel.tsx","../../src/components/sentinel/journeyriver/riverpath.tsx","../../src/components/sentinel/journeyriver/index.tsx","../../src/components/ui/accordion.tsx","../../src/components/ui/alert-dialog.tsx","../../src/components/ui/alert.tsx","../../src/components/ui/aspect-ratio.tsx","../../src/components/ui/avatar.tsx","../../src/components/ui/badge.tsx","../../src/components/ui/breadcrumb.tsx","../../src/components/ui/button-group.tsx","../../src/components/ui/button.tsx","../../src/components/ui/calendar.tsx","../../src/components/ui/card.tsx","../../src/components/ui/carousel.tsx","../../src/components/ui/chart.tsx","../../src/components/ui/checkbox.tsx","../../src/components/ui/collapsible.tsx","../../src/components/ui/command.tsx","../../src/components/ui/context-menu.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/drawer.tsx","../../src/components/ui/dropdown-menu.tsx","../../src/components/ui/empty.tsx","../../src/components/ui/field.tsx","../../src/components/ui/form.tsx","../../src/components/ui/hover-card.tsx","../../src/components/ui/input-group.tsx","../../src/components/ui/input-otp.tsx","../../src/components/ui/input.tsx","../../src/components/ui/item.tsx","../../src/components/ui/kbd.tsx","../../src/components/ui/label.tsx","../../src/components/ui/menubar.tsx","../../src/components/ui/navigation-menu.tsx","../../src/components/ui/pagination.tsx","../../src/components/ui/popover.tsx","../../src/components/ui/progress.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/resizable.tsx","../../src/components/ui/scroll-area.tsx","../../src/components/ui/select.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/sheet.tsx","../../src/components/ui/sidebar.tsx","../../src/components/ui/skeleton.tsx","../../src/components/ui/slider.tsx","../../src/components/ui/sonner.tsx","../../src/components/ui/spinner.tsx","../../src/components/ui/switch.tsx","../../src/components/ui/table.tsx","../../src/components/ui/tabs.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/toggle-group.tsx","../../src/components/ui/toggle.tsx","../../src/components/ui/tooltip.tsx","../../src/hooks/use-mobile.ts","../../src/hooks/usecrmbootstrap.ts","../../src/hooks/usemediapipefacelandmarker.ts","../../src/hooks/usevelocitysocket.ts","../../src/lib/api.ts","../../src/lib/crmapi.ts","../../src/lib/crmmappers.ts","../../src/lib/platformmappers.ts","../../src/lib/utils.ts","../../src/lib/velocityplatformclient.ts","../../src/oracle/components/branchbar.tsx","../../src/oracle/components/canvasviewport.tsx","../../src/oracle/components/componentregistry.tsx","../../src/oracle/components/promptrail.tsx","../../src/oracle/components/rollbackconfirmmodal.tsx","../../src/oracle/components/sharemodal.tsx","../../src/oracle/components/renderers/activitystreamrenderer.tsx","../../src/oracle/components/renderers/barchartrenderer.tsx","../../src/oracle/components/renderers/errornoticerenderer.tsx","../../src/oracle/components/renderers/geomaprenderer.tsx","../../src/oracle/components/renderers/kpitilerenderer.tsx","../../src/oracle/components/renderers/linechartrenderer.tsx","../../src/oracle/components/renderers/pipelineboardrenderer.tsx","../../src/oracle/components/renderers/rendererwrapper.tsx","../../src/oracle/components/renderers/tablerenderer.tsx","../../src/oracle/components/renderers/timelinerenderer.tsx","../../src/oracle/components/review/mergereviewdrawer.tsx","../../src/oracle/hooks/useoracleexecution.ts","../../src/oracle/hooks/useoraclepage.ts","../../src/oracle/lib/oracleapiclient.ts","../../src/oracle/types/canvas.ts","../../src/store/usecurrencystore.ts","../../src/store/usemarketingstore.ts","../../src/store/usestore.ts","../../src/types/crm.ts","../../src/types/crmtypes.ts","../../src/types/index.ts","../../src/utils/curvegenerator.ts","../../src/utils/landmarkpacketencoder.ts"],"version":"5.9.3"}
{"root":["../../src/app.tsx","../../src/main.tsx","../../src/app/admin/page.tsx","../../src/app/oracle/page.tsx","../../src/components/layout/loginscreen.tsx","../../src/components/layout/notificationcenter.tsx","../../src/components/layout/sidebar.tsx","../../src/components/modules/crm.tsx","../../src/components/modules/catalyst.tsx","../../src/components/modules/catalystmarketingtab.tsx","../../src/components/modules/dashboard.tsx","../../src/components/modules/groundtruthpicker.tsx","../../src/components/modules/inventory.tsx","../../src/components/modules/oracle.tsx","../../src/components/modules/sentinel.tsx","../../src/components/modules/settings.tsx","../../src/components/modules/sentinel/perceptionplayer.tsx","../../src/components/modules/sentinel/sentinellivesession.tsx","../../src/components/oracle/leadinspector.tsx","../../src/components/oracle/pipelineview.tsx","../../src/components/sentinel/journeyriver/inspectorpanel.tsx","../../src/components/sentinel/journeyriver/riverpath.tsx","../../src/components/sentinel/journeyriver/index.tsx","../../src/components/ui/accordion.tsx","../../src/components/ui/alert-dialog.tsx","../../src/components/ui/alert.tsx","../../src/components/ui/aspect-ratio.tsx","../../src/components/ui/avatar.tsx","../../src/components/ui/badge.tsx","../../src/components/ui/breadcrumb.tsx","../../src/components/ui/button-group.tsx","../../src/components/ui/button.tsx","../../src/components/ui/calendar.tsx","../../src/components/ui/card.tsx","../../src/components/ui/carousel.tsx","../../src/components/ui/chart.tsx","../../src/components/ui/checkbox.tsx","../../src/components/ui/collapsible.tsx","../../src/components/ui/command.tsx","../../src/components/ui/context-menu.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/drawer.tsx","../../src/components/ui/dropdown-menu.tsx","../../src/components/ui/empty.tsx","../../src/components/ui/field.tsx","../../src/components/ui/form.tsx","../../src/components/ui/hover-card.tsx","../../src/components/ui/input-group.tsx","../../src/components/ui/input-otp.tsx","../../src/components/ui/input.tsx","../../src/components/ui/item.tsx","../../src/components/ui/kbd.tsx","../../src/components/ui/label.tsx","../../src/components/ui/menubar.tsx","../../src/components/ui/navigation-menu.tsx","../../src/components/ui/pagination.tsx","../../src/components/ui/popover.tsx","../../src/components/ui/progress.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/resizable.tsx","../../src/components/ui/scroll-area.tsx","../../src/components/ui/select.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/sheet.tsx","../../src/components/ui/sidebar.tsx","../../src/components/ui/skeleton.tsx","../../src/components/ui/slider.tsx","../../src/components/ui/sonner.tsx","../../src/components/ui/spinner.tsx","../../src/components/ui/switch.tsx","../../src/components/ui/table.tsx","../../src/components/ui/tabs.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/toggle-group.tsx","../../src/components/ui/toggle.tsx","../../src/components/ui/tooltip.tsx","../../src/hooks/use-mobile.ts","../../src/hooks/usecrmbootstrap.ts","../../src/hooks/usemediapipefacelandmarker.ts","../../src/hooks/usevelocitysocket.ts","../../src/lib/api.ts","../../src/lib/crmapi.ts","../../src/lib/crmmappers.ts","../../src/lib/platformmappers.ts","../../src/lib/utils.ts","../../src/lib/velocityplatformclient.ts","../../src/oracle/components/branchbar.tsx","../../src/oracle/components/canvasviewport.tsx","../../src/oracle/components/componentregistry.tsx","../../src/oracle/components/promptrail.tsx","../../src/oracle/components/rollbackconfirmmodal.tsx","../../src/oracle/components/sharemodal.tsx","../../src/oracle/components/renderers/activitystreamrenderer.tsx","../../src/oracle/components/renderers/barchartrenderer.tsx","../../src/oracle/components/renderers/errornoticerenderer.tsx","../../src/oracle/components/renderers/geomaprenderer.tsx","../../src/oracle/components/renderers/kpitilerenderer.tsx","../../src/oracle/components/renderers/linechartrenderer.tsx","../../src/oracle/components/renderers/pipelineboardrenderer.tsx","../../src/oracle/components/renderers/rendererwrapper.tsx","../../src/oracle/components/renderers/tablerenderer.tsx","../../src/oracle/components/renderers/textcanvasrenderer.tsx","../../src/oracle/components/renderers/timelinerenderer.tsx","../../src/oracle/components/review/mergereviewdrawer.tsx","../../src/oracle/hooks/useoracleexecution.ts","../../src/oracle/hooks/useoraclepage.ts","../../src/oracle/lib/oracleapiclient.ts","../../src/oracle/types/canvas.ts","../../src/store/usecurrencystore.ts","../../src/store/usemarketingstore.ts","../../src/store/usestore.ts","../../src/types/crm.ts","../../src/types/crmtypes.ts","../../src/types/index.ts","../../src/utils/curvegenerator.ts","../../src/utils/landmarkpacketencoder.ts"],"version":"5.9.3"}

View File

@@ -1,24 +1,24 @@
"use client";
import {
createSlot
} from "./chunk-5HUACAZ7.js";
import {
useCallbackRef,
useLayoutEffect2
} from "./chunk-J4JAFMOP.js";
import {
createSlot
} from "./chunk-YWBEB5PG.js";
import "./chunk-2VUH7NEY.js";
import {
require_shim
} from "./chunk-TXHHHGR3.js";
} from "./chunk-GRXJTWBV.js";
import "./chunk-HPBHRBIF.js";
import {
require_react_dom
} from "./chunk-YF4B4G2L.js";
} from "./chunk-YLZ34CCM.js";
import {
require_shim
} from "./chunk-642Z5WD3.js";
import {
require_jsx_runtime
} from "./chunk-2YVA4HRZ.js";
} from "./chunk-USXRE7Q2.js";
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__toESM
} from "./chunk-G3PMV62Z.js";

View File

@@ -2,20 +2,20 @@
import {
useCallbackRef,
useLayoutEffect2
} from "./chunk-J4JAFMOP.js";
} from "./chunk-GRXJTWBV.js";
import {
composeRefs,
useComposedRefs
} from "./chunk-2VUH7NEY.js";
} from "./chunk-HPBHRBIF.js";
import {
require_react_dom
} from "./chunk-YF4B4G2L.js";
} from "./chunk-YLZ34CCM.js";
import {
require_jsx_runtime
} from "./chunk-2YVA4HRZ.js";
} from "./chunk-USXRE7Q2.js";
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__toESM
} from "./chunk-G3PMV62Z.js";

File diff suppressed because one or more lines are too long

View File

@@ -3,10 +3,10 @@ import {
Slottable,
createSlot,
createSlottable
} from "./chunk-YWBEB5PG.js";
import "./chunk-2VUH7NEY.js";
import "./chunk-2YVA4HRZ.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-5HUACAZ7.js";
import "./chunk-HPBHRBIF.js";
import "./chunk-USXRE7Q2.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export {
Slot as Root,

View File

@@ -1,12 +1,19 @@
import {
create
} from "./chunk-7GZ4CI6Q.js";
import {
subscribeWithSelector
} from "./chunk-O4L7C4YS.js";
} from "./chunk-XGWIEMTH.js";
import {
create
} from "./chunk-QJTQF54Q.js";
import {
Events
} from "./chunk-OAEA5FZL.js";
import {
require_client
} from "./chunk-2NWYL6R2.js";
import {
_extends
} from "./chunk-H4GSM2WL.js";
import "./chunk-YLZ34CCM.js";
import {
addAfterEffect,
addEffect,
@@ -22,8 +29,8 @@ import {
useInstanceHandle,
useLoader,
useThree
} from "./chunk-5ESDTKMP.js";
import "./chunk-NJ4V5H3P.js";
} from "./chunk-CSHY5MMV.js";
import "./chunk-LTNRPUSL.js";
import {
AddEquation,
AdditiveBlending,
@@ -217,20 +224,13 @@ import {
WebGLRenderer,
WireframeGeometry,
ZeroFactor
} from "./chunk-L3Z576C2.js";
import {
require_client
} from "./chunk-6MXH2QM6.js";
import "./chunk-GUQHL3N7.js";
import {
_extends
} from "./chunk-EQCCHGRT.js";
import "./chunk-TXHHHGR3.js";
import "./chunk-YF4B4G2L.js";
import "./chunk-2YVA4HRZ.js";
} from "./chunk-INS7YHTD.js";
import "./chunk-QURGMCZB.js";
import "./chunk-642Z5WD3.js";
import "./chunk-USXRE7Q2.js";
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__commonJS,
__toESM

File diff suppressed because one or more lines are too long

View File

@@ -28,13 +28,13 @@ import {
useLoader,
useStore,
useThree
} from "./chunk-5ESDTKMP.js";
import "./chunk-NJ4V5H3P.js";
import "./chunk-L3Z576C2.js";
import "./chunk-GUQHL3N7.js";
import "./chunk-TXHHHGR3.js";
import "./chunk-2YVA4HRZ.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-CSHY5MMV.js";
import "./chunk-LTNRPUSL.js";
import "./chunk-INS7YHTD.js";
import "./chunk-QURGMCZB.js";
import "./chunk-642Z5WD3.js";
import "./chunk-USXRE7Q2.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export {
Canvas,

View File

@@ -1,133 +1,133 @@
{
"hash": "4594f192",
"configHash": "1dd3b956",
"lockfileHash": "e8550e82",
"browserHash": "7e7e8c10",
"hash": "9ed426b5",
"configHash": "6a55a817",
"lockfileHash": "cbf147e9",
"browserHash": "a13f5201",
"optimized": {
"react": {
"src": "../../react/index.js",
"file": "react.js",
"fileHash": "bc0c1f26",
"fileHash": "44c1ad00",
"needsInterop": true
},
"react-dom": {
"src": "../../react-dom/index.js",
"file": "react-dom.js",
"fileHash": "36a8d9c0",
"fileHash": "09fbf9a4",
"needsInterop": true
},
"react/jsx-dev-runtime": {
"src": "../../react/jsx-dev-runtime.js",
"file": "react_jsx-dev-runtime.js",
"fileHash": "3d8f6460",
"fileHash": "ce2da90b",
"needsInterop": true
},
"react/jsx-runtime": {
"src": "../../react/jsx-runtime.js",
"file": "react_jsx-runtime.js",
"fileHash": "6f4aca26",
"fileHash": "52be981b",
"needsInterop": true
},
"@radix-ui/react-avatar": {
"src": "../../@radix-ui/react-avatar/dist/index.mjs",
"file": "@radix-ui_react-avatar.js",
"fileHash": "2a702dd2",
"fileHash": "63b564be",
"needsInterop": false
},
"@radix-ui/react-dropdown-menu": {
"src": "../../@radix-ui/react-dropdown-menu/dist/index.mjs",
"file": "@radix-ui_react-dropdown-menu.js",
"fileHash": "a5efb9bf",
"fileHash": "b9686e90",
"needsInterop": false
},
"@radix-ui/react-slot": {
"src": "../../@radix-ui/react-slot/dist/index.mjs",
"file": "@radix-ui_react-slot.js",
"fileHash": "986d9c0d",
"fileHash": "417c3a07",
"needsInterop": false
},
"@react-three/drei": {
"src": "../../@react-three/drei/index.js",
"file": "@react-three_drei.js",
"fileHash": "6cd60875",
"fileHash": "b25127e3",
"needsInterop": false
},
"@react-three/fiber": {
"src": "../../@react-three/fiber/dist/react-three-fiber.esm.js",
"file": "@react-three_fiber.js",
"fileHash": "27a7d4df",
"fileHash": "22a2309e",
"needsInterop": false
},
"class-variance-authority": {
"src": "../../class-variance-authority/dist/index.mjs",
"file": "class-variance-authority.js",
"fileHash": "b0c32b93",
"fileHash": "6e6c6fd0",
"needsInterop": false
},
"clsx": {
"src": "../../clsx/dist/clsx.mjs",
"file": "clsx.js",
"fileHash": "c855e729",
"fileHash": "eb68424d",
"needsInterop": false
},
"framer-motion": {
"src": "../../framer-motion/dist/es/index.mjs",
"file": "framer-motion.js",
"fileHash": "e0841dfa",
"fileHash": "1cbcab3b",
"needsInterop": false
},
"lucide-react": {
"src": "../../lucide-react/dist/esm/lucide-react.js",
"file": "lucide-react.js",
"fileHash": "4d79a586",
"fileHash": "6dded310",
"needsInterop": false
},
"react-dom/client": {
"src": "../../react-dom/client.js",
"file": "react-dom_client.js",
"fileHash": "2e02376b",
"fileHash": "c3a7edc3",
"needsInterop": true
},
"react-router-dom": {
"src": "../../react-router-dom/dist/index.mjs",
"file": "react-router-dom.js",
"fileHash": "bd4cf4c4",
"fileHash": "e91f778e",
"needsInterop": false
},
"recharts": {
"src": "../../recharts/es6/index.js",
"file": "recharts.js",
"fileHash": "b44545db",
"fileHash": "d7f9dad1",
"needsInterop": false
},
"sonner": {
"src": "../../sonner/dist/index.mjs",
"file": "sonner.js",
"fileHash": "02632b99",
"fileHash": "8433c1a9",
"needsInterop": false
},
"tailwind-merge": {
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
"file": "tailwind-merge.js",
"fileHash": "ab22bcc4",
"fileHash": "772f1bbd",
"needsInterop": false
},
"three": {
"src": "../../three/build/three.module.js",
"file": "three.js",
"fileHash": "43012f83",
"fileHash": "490e5c00",
"needsInterop": false
},
"zustand": {
"src": "../../zustand/esm/index.mjs",
"file": "zustand.js",
"fileHash": "dbfba0e2",
"fileHash": "315f8e85",
"needsInterop": false
},
"zustand/middleware": {
"src": "../../zustand/esm/middleware.mjs",
"file": "zustand_middleware.js",
"fileHash": "e524c2dc",
"fileHash": "2563a89b",
"needsInterop": false
}
},
@@ -135,56 +135,56 @@
"hls-Q6LDPZPT": {
"file": "hls-Q6LDPZPT.js"
},
"chunk-U7P2NEEE": {
"file": "chunk-U7P2NEEE.js"
"chunk-XGWIEMTH": {
"file": "chunk-XGWIEMTH.js"
},
"chunk-J4JAFMOP": {
"file": "chunk-J4JAFMOP.js"
},
"chunk-YWBEB5PG": {
"file": "chunk-YWBEB5PG.js"
},
"chunk-2VUH7NEY": {
"file": "chunk-2VUH7NEY.js"
},
"chunk-7GZ4CI6Q": {
"file": "chunk-7GZ4CI6Q.js"
},
"chunk-O4L7C4YS": {
"file": "chunk-O4L7C4YS.js"
"chunk-QJTQF54Q": {
"file": "chunk-QJTQF54Q.js"
},
"chunk-OAEA5FZL": {
"file": "chunk-OAEA5FZL.js"
},
"chunk-5ESDTKMP": {
"file": "chunk-5ESDTKMP.js"
"chunk-2NWYL6R2": {
"file": "chunk-2NWYL6R2.js"
},
"chunk-NJ4V5H3P": {
"file": "chunk-NJ4V5H3P.js"
"chunk-H4GSM2WL": {
"file": "chunk-H4GSM2WL.js"
},
"chunk-L3Z576C2": {
"file": "chunk-L3Z576C2.js"
"chunk-5HUACAZ7": {
"file": "chunk-5HUACAZ7.js"
},
"chunk-6MXH2QM6": {
"file": "chunk-6MXH2QM6.js"
"chunk-GRXJTWBV": {
"file": "chunk-GRXJTWBV.js"
},
"chunk-GUQHL3N7": {
"file": "chunk-GUQHL3N7.js"
"chunk-HPBHRBIF": {
"file": "chunk-HPBHRBIF.js"
},
"chunk-EQCCHGRT": {
"file": "chunk-EQCCHGRT.js"
"chunk-YLZ34CCM": {
"file": "chunk-YLZ34CCM.js"
},
"chunk-TXHHHGR3": {
"file": "chunk-TXHHHGR3.js"
"chunk-CSHY5MMV": {
"file": "chunk-CSHY5MMV.js"
},
"chunk-YF4B4G2L": {
"file": "chunk-YF4B4G2L.js"
"chunk-LTNRPUSL": {
"file": "chunk-LTNRPUSL.js"
},
"chunk-2YVA4HRZ": {
"file": "chunk-2YVA4HRZ.js"
"chunk-INS7YHTD": {
"file": "chunk-INS7YHTD.js"
},
"chunk-WUR7D6NS": {
"file": "chunk-WUR7D6NS.js"
"chunk-QURGMCZB": {
"file": "chunk-QURGMCZB.js"
},
"chunk-642Z5WD3": {
"file": "chunk-642Z5WD3.js"
},
"chunk-USXRE7Q2": {
"file": "chunk-USXRE7Q2.js"
},
"chunk-ZNKPWGXJ": {
"file": "chunk-ZNKPWGXJ.js"
},
"chunk-U7P2NEEE": {
"file": "chunk-U7P2NEEE.js"
},
"chunk-G3PMV62Z": {
"file": "chunk-G3PMV62Z.js"

View File

@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../class-variance-authority/dist/index.mjs"],
"sourcesContent": ["/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n"],
"sourcesContent": ["/**\r\n * Copyright 2022 Joe Bell. All rights reserved.\r\n *\r\n * This file is licensed to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with the\r\n * License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\r\n * License for the specific language governing permissions and limitations under\r\n * the License.\r\n */ import { clsx } from \"clsx\";\r\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\r\nexport const cx = clsx;\r\nexport const cva = (base, config)=>(props)=>{\r\n var _config_compoundVariants;\r\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\r\n const { variants, defaultVariants } = config;\r\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\r\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\r\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\r\n if (variantProp === null) return null;\r\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\r\n return variants[variant][variantKey];\r\n });\r\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\r\n let [key, value] = param;\r\n if (value === undefined) {\r\n return acc;\r\n }\r\n acc[key] = value;\r\n return acc;\r\n }, {});\r\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\r\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\r\n return Object.entries(compoundVariantOptions).every((param)=>{\r\n let [key, value] = param;\r\n return Array.isArray(value) ? value.includes({\r\n ...defaultVariants,\r\n ...propsWithoutUndefined\r\n }[key]) : ({\r\n ...defaultVariants,\r\n ...propsWithoutUndefined\r\n })[key] === value;\r\n }) ? [\r\n ...acc,\r\n cvClass,\r\n cvClassName\r\n ] : acc;\r\n }, []);\r\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\r\n };\r\n\r\n"],
"mappings": ";;;;;;AAeA,IAAM,gBAAgB,CAAC,UAAQ,OAAO,UAAU,YAAY,GAAG,KAAK,KAAK,UAAU,IAAI,MAAM;AACtF,IAAM,KAAK;AACX,IAAM,MAAM,CAAC,MAAM,WAAS,CAAC,UAAQ;AACpC,MAAI;AACJ,OAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,KAAM,QAAO,GAAG,MAAM,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AACvN,QAAM,EAAE,UAAU,gBAAgB,IAAI;AACtC,QAAM,uBAAuB,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,YAAU;AAC9D,UAAM,cAAc,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO;AAC/E,UAAM,qBAAqB,oBAAoB,QAAQ,oBAAoB,SAAS,SAAS,gBAAgB,OAAO;AACpH,QAAI,gBAAgB,KAAM,QAAO;AACjC,UAAM,aAAa,cAAc,WAAW,KAAK,cAAc,kBAAkB;AACjF,WAAO,SAAS,OAAO,EAAE,UAAU;AAAA,EACvC,CAAC;AACD,QAAM,wBAAwB,SAAS,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,UAAQ;AAC9E,QAAI,CAAC,KAAK,KAAK,IAAI;AACnB,QAAI,UAAU,QAAW;AACrB,aAAO;AAAA,IACX;AACA,QAAI,GAAG,IAAI;AACX,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACL,QAAM,+BAA+B,WAAW,QAAQ,WAAW,SAAS,UAAU,2BAA2B,OAAO,sBAAsB,QAAQ,6BAA6B,SAAS,SAAS,yBAAyB,OAAO,CAAC,KAAK,UAAQ;AAC/O,QAAI,EAAE,OAAO,SAAS,WAAW,aAAa,GAAG,uBAAuB,IAAI;AAC5E,WAAO,OAAO,QAAQ,sBAAsB,EAAE,MAAM,CAACA,WAAQ;AACzD,UAAI,CAAC,KAAK,KAAK,IAAIA;AACnB,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS;AAAA,QACzC,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAE,GAAG,CAAC,IAAK;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAG,GAAG,MAAM;AAAA,IAChB,CAAC,IAAI;AAAA,MACD,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ,IAAI;AAAA,EACR,GAAG,CAAC,CAAC;AACL,SAAO,GAAG,MAAM,sBAAsB,8BAA8B,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AAChM;",
"names": ["param"]
}

View File

@@ -1,9 +1,9 @@
import {
require_jsx_runtime
} from "./chunk-2YVA4HRZ.js";
} from "./chunk-USXRE7Q2.js";
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__commonJS,
__export,

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__export,
__toESM

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
import {
require_react_dom
} from "./chunk-YF4B4G2L.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-YLZ34CCM.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export default require_react_dom();

View File

@@ -1,8 +1,8 @@
import {
require_client
} from "./chunk-6MXH2QM6.js";
import "./chunk-GUQHL3N7.js";
import "./chunk-YF4B4G2L.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-2NWYL6R2.js";
import "./chunk-YLZ34CCM.js";
import "./chunk-QURGMCZB.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export default require_client();

View File

@@ -1,5 +1,5 @@
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export default require_react();

View File

@@ -1,6 +1,6 @@
import {
require_react
} from "./chunk-WUR7D6NS.js";
} from "./chunk-ZNKPWGXJ.js";
import {
__commonJS
} from "./chunk-G3PMV62Z.js";

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
import {
require_jsx_runtime
} from "./chunk-2YVA4HRZ.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-USXRE7Q2.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export default require_jsx_runtime();

View File

@@ -1,15 +1,15 @@
import {
_extends
} from "./chunk-H4GSM2WL.js";
import {
require_react_dom
} from "./chunk-YLZ34CCM.js";
import {
require_react
} from "./chunk-ZNKPWGXJ.js";
import {
clsx_default
} from "./chunk-U7P2NEEE.js";
import {
_extends
} from "./chunk-EQCCHGRT.js";
import {
require_react_dom
} from "./chunk-YF4B4G2L.js";
import {
require_react
} from "./chunk-WUR7D6NS.js";
import {
__commonJS,
__export,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -435,7 +435,7 @@ import {
setConsoleFunction,
warn,
warnOnce
} from "./chunk-L3Z576C2.js";
} from "./chunk-INS7YHTD.js";
import "./chunk-G3PMV62Z.js";
export {
ACESFilmicToneMapping,

View File

@@ -1,11 +1,11 @@
import {
create,
useStore
} from "./chunk-7GZ4CI6Q.js";
} from "./chunk-QJTQF54Q.js";
import {
createStore
} from "./chunk-NJ4V5H3P.js";
import "./chunk-WUR7D6NS.js";
} from "./chunk-LTNRPUSL.js";
import "./chunk-ZNKPWGXJ.js";
import "./chunk-G3PMV62Z.js";
export {
create,

View File

@@ -6,7 +6,7 @@ import {
redux,
ssrSafe,
subscribeWithSelector
} from "./chunk-O4L7C4YS.js";
} from "./chunk-XGWIEMTH.js";
import "./chunk-G3PMV62Z.js";
export {
combine,

View File

@@ -10,6 +10,7 @@ import type { CanvasComponent } from '../types/canvas';
import { KpiTileRenderer } from './renderers/KpiTileRenderer';
import { ErrorNoticeRenderer } from './renderers/ErrorNoticeRenderer';
import { TimelineRenderer } from './renderers/TimelineRenderer';
import { TextCanvasRenderer } from './renderers/TextCanvasRenderer';
// ── Lazy renderers (heavier) ──────────────────────────────────────────────────
const BarChartRenderer = lazy(() => import('./renderers/BarChartRenderer').then((m) => ({ default: m.BarChartRenderer })));
@@ -76,6 +77,9 @@ export function ComponentRegistry({ component, ctx }: RegistryRendererProps) {
}
switch (component.type) {
case 'textCanvas':
return <TextCanvasRenderer component={component} ctx={ctx} />;
case 'kpiTile':
return <KpiTileRenderer component={component} ctx={ctx} />;

View File

@@ -0,0 +1,35 @@
import type { CanvasComponent } from '../../types/canvas';
import { RendererWrapper, type ComponentRenderContext } from './RendererWrapper';
interface Props {
component: CanvasComponent;
ctx: ComponentRenderContext;
}
export function TextCanvasRenderer({ component, ctx }: Props) {
const params = component.visualizationParameters as {
content?: string;
};
const content = String(params.content ?? '').trim();
const paragraphs = content
.split(/\n{2,}/)
.map((block) => block.trim())
.filter(Boolean);
return (
<RendererWrapper component={component} ctx={ctx} minHeight={180}>
<div className="flex h-full flex-col gap-3 text-sm leading-7 text-zinc-200">
{paragraphs.length ? (
paragraphs.map((paragraph, index) => (
<p key={`${component.componentId}-${index}`} className="whitespace-pre-wrap text-zinc-300">
{paragraph}
</p>
))
) : (
<p className="text-zinc-500">No planning notes were generated for this prompt.</p>
)}
</div>
</RendererWrapper>
);
}

View File

@@ -16,6 +16,7 @@ export type OracleRole =
| 'platform_admin';
export type ComponentType =
| 'textCanvas'
| 'kpiTile'
| 'barChart'
| 'lineChart'
@@ -34,7 +35,7 @@ export type ComponentLifecycleState = 'draft' | 'active' | 'superseded' | 'archi
export type PrivacyTier = 'standard' | 'restricted' | 'sensitive';
export type SourceType = 'postgres' | 'warehouse' | 'api' | 'materialized_view' | 'derived_dataset';
export type SourceType = 'postgres' | 'warehouse' | 'api' | 'materialized_view' | 'derived_dataset' | 'inline';
export type CachePolicyMode = 'none' | 'ttl' | 'revision_scoped';