@datatechsolutions/ui 2.11.83 → 2.11.84

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.
Files changed (101) hide show
  1. package/dist/astrlabe/index.d.mts +3 -52
  2. package/dist/astrlabe/index.d.ts +3 -52
  3. package/dist/astrlabe/index.js +107 -107
  4. package/dist/astrlabe/index.mjs +4 -4
  5. package/dist/astrlabe/workflow-canvas.js +4 -4
  6. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  7. package/dist/chunk-3T2WGL47.js +44 -0
  8. package/dist/chunk-3T2WGL47.js.map +1 -0
  9. package/dist/{chunk-UVGMKHWH.mjs → chunk-63AL2RN5.mjs} +4 -4
  10. package/dist/{chunk-UVGMKHWH.mjs.map → chunk-63AL2RN5.mjs.map} +1 -1
  11. package/dist/chunk-64G2HBRQ.mjs +481 -0
  12. package/dist/chunk-64G2HBRQ.mjs.map +1 -0
  13. package/dist/{chunk-J3OYJ44D.mjs → chunk-BH2AU3LG.mjs} +3 -3
  14. package/dist/{chunk-J3OYJ44D.mjs.map → chunk-BH2AU3LG.mjs.map} +1 -1
  15. package/dist/chunk-CCRBT7TA.mjs +941 -0
  16. package/dist/chunk-CCRBT7TA.mjs.map +1 -0
  17. package/dist/chunk-CHLJUSXX.mjs +128 -0
  18. package/dist/chunk-CHLJUSXX.mjs.map +1 -0
  19. package/dist/chunk-CXIQWPBH.js +214 -0
  20. package/dist/chunk-CXIQWPBH.js.map +1 -0
  21. package/dist/chunk-EDE36MKE.mjs +412 -0
  22. package/dist/chunk-EDE36MKE.mjs.map +1 -0
  23. package/dist/{chunk-M7P2TQ6X.js → chunk-EFREXNZB.js} +64 -64
  24. package/dist/{chunk-M7P2TQ6X.js.map → chunk-EFREXNZB.js.map} +1 -1
  25. package/dist/chunk-FAGDZEKM.js +23 -0
  26. package/dist/chunk-FAGDZEKM.js.map +1 -0
  27. package/dist/{chunk-TUEYBNWL.js → chunk-GV6WJCEB.js} +3 -3
  28. package/dist/{chunk-TUEYBNWL.js.map → chunk-GV6WJCEB.js.map} +1 -1
  29. package/dist/chunk-HU3EAHFO.mjs +20 -0
  30. package/dist/chunk-HU3EAHFO.mjs.map +1 -0
  31. package/dist/{chunk-LLFU42KC.mjs → chunk-I6WYV2AN.mjs} +3 -3
  32. package/dist/{chunk-LLFU42KC.mjs.map → chunk-I6WYV2AN.mjs.map} +1 -1
  33. package/dist/chunk-JJWFMKZY.js +132 -0
  34. package/dist/chunk-JJWFMKZY.js.map +1 -0
  35. package/dist/{chunk-JFWZHROG.js → chunk-L6FVIWAJ.js} +128 -128
  36. package/dist/{chunk-JFWZHROG.js.map → chunk-L6FVIWAJ.js.map} +1 -1
  37. package/dist/chunk-MNQEZL7B.mjs +210 -0
  38. package/dist/chunk-MNQEZL7B.mjs.map +1 -0
  39. package/dist/chunk-SGJ24J2Q.js +943 -0
  40. package/dist/chunk-SGJ24J2Q.js.map +1 -0
  41. package/dist/chunk-SW6TVAIJ.js +418 -0
  42. package/dist/chunk-SW6TVAIJ.js.map +1 -0
  43. package/dist/chunk-SYNVNTLJ.mjs +20 -0
  44. package/dist/chunk-SYNVNTLJ.mjs.map +1 -0
  45. package/dist/chunk-UQXVCVAN.mjs +41 -0
  46. package/dist/chunk-UQXVCVAN.mjs.map +1 -0
  47. package/dist/chunk-WGELLCOZ.js +22 -0
  48. package/dist/chunk-WGELLCOZ.js.map +1 -0
  49. package/dist/chunk-YXPHJ2BQ.js +541 -0
  50. package/dist/chunk-YXPHJ2BQ.js.map +1 -0
  51. package/dist/index.d.mts +3 -47
  52. package/dist/index.d.ts +3 -47
  53. package/dist/index.js +765 -765
  54. package/dist/index.mjs +2 -2
  55. package/dist/navigation-BiWVffAN.d.mts +49 -0
  56. package/dist/navigation-BiWVffAN.d.ts +49 -0
  57. package/dist/platform/agents-workspace.d.mts +19 -0
  58. package/dist/platform/agents-workspace.d.ts +19 -0
  59. package/dist/platform/agents-workspace.js +26 -0
  60. package/dist/platform/agents-workspace.js.map +1 -0
  61. package/dist/platform/agents-workspace.mjs +17 -0
  62. package/dist/platform/agents-workspace.mjs.map +1 -0
  63. package/dist/platform/app-shell.d.mts +58 -0
  64. package/dist/platform/app-shell.d.ts +58 -0
  65. package/dist/platform/app-shell.js +17 -0
  66. package/dist/platform/app-shell.js.map +1 -0
  67. package/dist/platform/app-shell.mjs +8 -0
  68. package/dist/platform/app-shell.mjs.map +1 -0
  69. package/dist/platform/index.d.mts +100 -3
  70. package/dist/platform/index.d.ts +100 -3
  71. package/dist/platform/index.js +499 -28
  72. package/dist/platform/index.js.map +1 -1
  73. package/dist/platform/index.mjs +472 -27
  74. package/dist/platform/index.mjs.map +1 -1
  75. package/dist/platform/pages/index.d.mts +243 -82
  76. package/dist/platform/pages/index.d.ts +243 -82
  77. package/dist/platform/pages/index.js +886 -614
  78. package/dist/platform/pages/index.js.map +1 -1
  79. package/dist/platform/pages/index.mjs +756 -511
  80. package/dist/platform/pages/index.mjs.map +1 -1
  81. package/dist/platform/utils/index.js +18 -56
  82. package/dist/platform/utils/index.js.map +1 -1
  83. package/dist/platform/utils/index.mjs +3 -53
  84. package/dist/platform/utils/index.mjs.map +1 -1
  85. package/dist/platform/workflow-api-client.d.mts +6 -0
  86. package/dist/platform/workflow-api-client.d.ts +6 -0
  87. package/dist/platform/workflow-api-client.js +246 -0
  88. package/dist/platform/workflow-api-client.js.map +1 -0
  89. package/dist/platform/workflow-api-client.mjs +5 -0
  90. package/dist/platform/workflow-api-client.mjs.map +1 -0
  91. package/dist/platform/workflow-canvas-shell.d.mts +18 -0
  92. package/dist/platform/workflow-canvas-shell.d.ts +18 -0
  93. package/dist/platform/workflow-canvas-shell.js +20 -0
  94. package/dist/platform/workflow-canvas-shell.js.map +1 -0
  95. package/dist/platform/workflow-canvas-shell.mjs +11 -0
  96. package/dist/platform/workflow-canvas-shell.mjs.map +1 -0
  97. package/dist/{rule-form-F5jBOeqk.d.mts → rule-form-BYJzyork.d.mts} +50 -1
  98. package/dist/{rule-form-F5jBOeqk.d.ts → rule-form-BYJzyork.d.ts} +50 -1
  99. package/dist/workflow-api-client-C8gPn_D1.d.mts +386 -0
  100. package/dist/workflow-api-client-Dy1Ph8W-.d.ts +386 -0
  101. package/package.json +21 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/pages/datasource-modal.tsx"],"names":["CircleStackIcon","ServerStackIcon","CloudIcon","ClockIcon","ShareIcon","KeyIcon","MagnifyingGlassIcon","jsxs","jsx","useState","Fragment","FormInput","ArrowLeftIcon","FormGrid","Button","CheckCircleIcon","XCircleIcon","GlassModal"],"mappings":"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","file":"chunk-SW6TVAIJ.js","sourcesContent":["import { useState, type FormEvent, type ReactNode } from 'react'\nimport {\n CircleStackIcon,\n ServerStackIcon,\n CloudIcon,\n ClockIcon,\n ShareIcon,\n KeyIcon,\n MagnifyingGlassIcon,\n ArrowLeftIcon,\n CheckCircleIcon,\n XCircleIcon,\n} from '@heroicons/react/24/outline'\nimport {\n GlassModal,\n FormGrid,\n FormInput,\n FormSelect,\n Button,\n} from '@ui/index'\n\n/* ─── Dialect catalog ─── */\n\ntype DialectCategory = {\n id: string\n labelKey: string\n icon: React.ComponentType<{ className?: string }>\n gradient: string\n dialects: DialectOption[]\n}\n\ntype DialectOption = {\n value: string\n label: string\n defaultPort?: number\n /** 'standard' = host/port/db, 'connection-string' = single URL, 'cloud' = project/dataset/key */\n formType: 'standard' | 'connection-string' | 'cloud-bigquery' | 'cloud-snowflake' | 'cloud-key' | 'vector-key'\n}\n\nconst DIALECT_CATEGORIES: DialectCategory[] = [\n {\n id: 'relational',\n labelKey: 'categoryRelational',\n icon: CircleStackIcon,\n gradient: 'from-blue-500 to-indigo-600',\n dialects: [\n { value: 'postgres', label: 'PostgreSQL', defaultPort: 5432, formType: 'standard' },\n { value: 'mysql', label: 'MySQL', defaultPort: 3306, formType: 'standard' },\n { value: 'mariadb', label: 'MariaDB', defaultPort: 3306, formType: 'standard' },\n { value: 'mssql', label: 'SQL Server', defaultPort: 1433, formType: 'standard' },\n { value: 'oracle', label: 'Oracle', defaultPort: 1521, formType: 'standard' },\n { value: 'db2', label: 'IBM Db2', defaultPort: 50000, formType: 'standard' },\n { value: 'cockroachdb', label: 'CockroachDB', defaultPort: 26257, formType: 'standard' },\n { value: 'timescaledb', label: 'TimescaleDB', defaultPort: 5432, formType: 'standard' },\n { value: 'sqlite', label: 'SQLite', formType: 'connection-string' },\n { value: 'duckdb', label: 'DuckDB', formType: 'connection-string' },\n ],\n },\n {\n id: 'nosql',\n labelKey: 'categoryNoSql',\n icon: ServerStackIcon,\n gradient: 'from-emerald-500 to-teal-600',\n dialects: [\n { value: 'mongodb', label: 'MongoDB', defaultPort: 27017, formType: 'connection-string' },\n { value: 'cassandra', label: 'Cassandra', defaultPort: 9042, formType: 'standard' },\n { value: 'scylladb', label: 'ScyllaDB', defaultPort: 9042, formType: 'standard' },\n { value: 'dynamodb', label: 'DynamoDB', formType: 'cloud-key' },\n { value: 'cosmosdb', label: 'CosmosDB', formType: 'connection-string' },\n { value: 'arangodb', label: 'ArangoDB', defaultPort: 8529, formType: 'standard' },\n ],\n },\n {\n id: 'warehouse',\n labelKey: 'categoryWarehouse',\n icon: CloudIcon,\n gradient: 'from-purple-500 to-violet-600',\n dialects: [\n { value: 'bigquery', label: 'BigQuery', formType: 'cloud-bigquery' },\n { value: 'snowflake', label: 'Snowflake', formType: 'cloud-snowflake' },\n { value: 'clickhouse', label: 'ClickHouse', defaultPort: 8123, formType: 'standard' },\n ],\n },\n {\n id: 'timeseries',\n labelKey: 'categoryTimeSeries',\n icon: ClockIcon,\n gradient: 'from-sky-500 to-cyan-600',\n dialects: [\n { value: 'influxdb', label: 'InfluxDB', formType: 'cloud-key' },\n { value: 'timestream', label: 'Timestream', formType: 'cloud-key' },\n ],\n },\n {\n id: 'graph',\n labelKey: 'categoryGraph',\n icon: ShareIcon,\n gradient: 'from-pink-500 to-rose-600',\n dialects: [\n { value: 'neo4j', label: 'Neo4j', defaultPort: 7687, formType: 'standard' },\n { value: 'neptune', label: 'Neptune', formType: 'connection-string' },\n ],\n },\n {\n id: 'keyvalue',\n labelKey: 'categoryKeyValue',\n icon: KeyIcon,\n gradient: 'from-red-500 to-orange-600',\n dialects: [\n { value: 'redis', label: 'Redis', defaultPort: 6379, formType: 'standard' },\n ],\n },\n {\n id: 'search',\n labelKey: 'categorySearch',\n icon: MagnifyingGlassIcon,\n gradient: 'from-amber-500 to-yellow-600',\n dialects: [\n { value: 'elasticsearch', label: 'Elasticsearch', defaultPort: 9200, formType: 'standard' },\n { value: 'opensearch', label: 'OpenSearch', defaultPort: 9200, formType: 'standard' },\n { value: 'pinecone', label: 'Pinecone', formType: 'vector-key' },\n { value: 'qdrant', label: 'Qdrant', defaultPort: 6333, formType: 'standard' },\n { value: 'weaviate', label: 'Weaviate', defaultPort: 8080, formType: 'standard' },\n { value: 'milvus', label: 'Milvus', defaultPort: 19530, formType: 'standard' },\n { value: 'chromadb', label: 'ChromaDB', defaultPort: 8000, formType: 'standard' },\n ],\n },\n]\n\nfunction findDialect(value: string): DialectOption | undefined {\n for (const category of DIALECT_CATEGORIES) {\n const found = category.dialects.find((d) => d.value === value)\n if (found) return found\n }\n return undefined\n}\n\nfunction findCategory(dialectValue: string): DialectCategory | undefined {\n return DIALECT_CATEGORIES.find((c) => c.dialects.some((d) => d.value === dialectValue))\n}\n\n/* ─── Types ─── */\n\nexport type DatasourceFormData = {\n name: string\n dialect: string\n host?: string\n port?: number\n database?: string\n username?: string\n password?: string\n schema?: string\n ssl?: boolean\n readOnly?: boolean\n connectionString?: string\n projectId?: string\n dataset?: string\n keyFile?: string\n account?: string\n warehouse?: string\n region?: string\n bucket?: string\n token?: string\n apiKey?: string\n environment?: string\n index?: string\n url?: string\n /** Whitelist of tables the engine is allowed to query. Empty/undef =\n * allow every table the credential can see. */\n allowedTables?: string[]\n /** Columns the engine MUST NOT surface to workflows. Applied at the\n * driver layer — trying to SELECT a blocked column still fails. */\n blockedColumns?: string[]\n /** Max concurrent connections in the org's cached pool (default 5). */\n maxPoolSize?: number\n /** Query/connect timeout in ms (default 5000). */\n timeoutMs?: number\n}\n\ntype Labels = Record<string, string>\n\nexport type DatasourceFormModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\n/* ─── Step 1: Category + dialect picker ─── */\n\nfunction DialectPicker({\n labels,\n onSelect,\n}: {\n labels: Labels\n onSelect: (dialect: string) => void\n}) {\n return (\n <div className=\"space-y-6\">\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">{labels.stepSelectType}</p>\n {DIALECT_CATEGORIES.map((category) => (\n <div key={category.id}>\n <div className=\"mb-2 flex items-center gap-2\">\n <div className={`flex h-7 w-7 items-center justify-center rounded-lg bg-gradient-to-br ${category.gradient}`}>\n <category.icon className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"text-sm font-semibold text-gray-700 dark:text-gray-200\">\n {labels[category.labelKey] ?? category.id}\n </span>\n </div>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-3\">\n {category.dialects.map((dialect) => (\n <button\n key={dialect.value}\n type=\"button\"\n onClick={() => onSelect(dialect.value)}\n className=\"group flex items-center gap-2 rounded-xl border border-gray-200/60 bg-white/60 px-3 py-2.5 text-left text-sm font-medium text-gray-700 transition-all hover:border-amber-400/60 hover:bg-amber-50/50 hover:text-amber-700 active:scale-[0.97] dark:border-white/10 dark:bg-white/5 dark:text-gray-300 dark:hover:border-amber-400/40 dark:hover:bg-amber-500/10 dark:hover:text-amber-300\"\n >\n <CircleStackIcon className=\"h-4 w-4 shrink-0 text-gray-400 transition-colors group-hover:text-amber-500 dark:text-gray-500\" />\n {dialect.label}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/* ─── Step 2: Connection form ─── */\n\nfunction ConnectionForm({\n dialect,\n labels,\n onBack,\n onSubmit,\n}: {\n dialect: DialectOption\n labels: Labels\n onBack: () => void\n onSubmit: (data: DatasourceFormData) => void\n}) {\n const [testStatus, setTestStatus] = useState<'idle' | 'testing' | 'success' | 'failed'>('idle')\n const category = findCategory(dialect.value)\n\n function handleSubmit(event: FormEvent) {\n event.preventDefault()\n const formData = new FormData(event.currentTarget as HTMLFormElement)\n const data: DatasourceFormData = {\n name: String(formData.get('name') ?? '').trim(),\n dialect: dialect.value,\n }\n\n // Collect all possible fields\n for (const key of ['host', 'database', 'username', 'password', 'schema', 'connectionString', 'projectId', 'dataset', 'keyFile', 'account', 'warehouse', 'region', 'bucket', 'token', 'apiKey', 'environment', 'index', 'url'] as const) {\n const val = String(formData.get(key) ?? '').trim()\n if (val) (data as Record<string, unknown>)[key] = val\n }\n\n const port = String(formData.get('port') ?? '').trim()\n if (port) data.port = Number(port)\n\n data.ssl = formData.get('ssl') === 'on'\n data.readOnly = formData.get('readOnly') === 'on'\n\n // Advanced — pool size, timeout, allowlist/blocklist\n const maxPoolSize = String(formData.get('maxPoolSize') ?? '').trim()\n if (maxPoolSize) {\n const parsed = Number(maxPoolSize)\n if (Number.isFinite(parsed) && parsed > 0) data.maxPoolSize = parsed\n }\n const timeoutMs = String(formData.get('timeoutMs') ?? '').trim()\n if (timeoutMs) {\n const parsed = Number(timeoutMs)\n if (Number.isFinite(parsed) && parsed > 0) data.timeoutMs = parsed\n }\n const allowedTables = splitList(String(formData.get('allowedTables') ?? ''))\n if (allowedTables.length > 0) data.allowedTables = allowedTables\n const blockedColumns = splitList(String(formData.get('blockedColumns') ?? ''))\n if (blockedColumns.length > 0) data.blockedColumns = blockedColumns\n\n onSubmit(data)\n }\n\n function handleTestConnection() {\n setTestStatus('testing')\n // Simulate test connection — real implementation would call API\n setTimeout(() => {\n setTestStatus('success')\n setTimeout(() => setTestStatus('idle'), 3000)\n }, 1500)\n }\n\n function renderFields(): ReactNode {\n switch (dialect.formType) {\n case 'standard':\n return (\n <>\n <FormInput name=\"host\" label={labels.fieldHost} placeholder={labels.fieldHostPlaceholder} required />\n <FormInput name=\"port\" label={labels.fieldPort} type=\"number\" defaultValue={dialect.defaultPort} />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'connection-string':\n return (\n <div className=\"col-span-full\">\n <FormInput name=\"connectionString\" label={labels.fieldConnectionString} placeholder={labels.fieldConnectionStringPlaceholder} required />\n </div>\n )\n\n case 'cloud-bigquery':\n return (\n <>\n <FormInput name=\"projectId\" label={labels.fieldProjectId} placeholder={labels.fieldProjectIdPlaceholder} required />\n <FormInput name=\"dataset\" label={labels.fieldDataset} placeholder={labels.fieldDatasetPlaceholder} required />\n <div className=\"col-span-full\">\n <FormInput name=\"keyFile\" label={labels.fieldKeyFile} placeholder={labels.fieldKeyFilePlaceholder} />\n </div>\n </>\n )\n\n case 'cloud-snowflake':\n return (\n <>\n <FormInput name=\"account\" label={labels.fieldAccount} placeholder={labels.fieldAccountPlaceholder} required />\n <FormInput name=\"warehouse\" label={labels.fieldWarehouse} placeholder={labels.fieldWarehousePlaceholder} required />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} required />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'cloud-key':\n return (\n <>\n <FormInput name=\"region\" label={labels.fieldRegion} placeholder={labels.fieldRegionPlaceholder} required />\n <FormInput name=\"token\" label={labels.fieldToken} type=\"password\" placeholder={labels.fieldTokenPlaceholder} required />\n <FormInput name=\"bucket\" label={labels.fieldBucket} placeholder={labels.fieldBucketPlaceholder} />\n </>\n )\n\n case 'vector-key':\n return (\n <>\n <FormInput name=\"apiKey\" label={labels.fieldApiKey} type=\"password\" placeholder={labels.fieldApiKeyPlaceholder} required />\n <FormInput name=\"environment\" label={labels.fieldEnvironment} placeholder={labels.fieldEnvironmentPlaceholder} required />\n <FormInput name=\"index\" label={labels.fieldIndex} placeholder={labels.fieldIndexPlaceholder} />\n </>\n )\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n {/* Back button + dialect badge */}\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={onBack}\n className=\"flex h-8 w-8 items-center justify-center rounded-lg text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-white/10 dark:hover:text-gray-300\"\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n </button>\n <div className=\"flex items-center gap-2\">\n <div className={`flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br ${category?.gradient ?? 'from-gray-400 to-gray-500'}`}>\n {category ? <category.icon className=\"h-4 w-4 text-white\" /> : <CircleStackIcon className=\"h-4 w-4 text-white\" />}\n </div>\n <div>\n <span className=\"text-sm font-semibold text-gray-900 dark:text-white\">{dialect.label}</span>\n <span className=\"ml-2 text-xs text-gray-400\">{labels[category?.labelKey ?? ''] ?? ''}</span>\n </div>\n </div>\n </div>\n\n {/* Name field — always present */}\n <FormInput name=\"name\" label={labels.fieldName} placeholder={labels.fieldNamePlaceholder} required />\n\n {/* Dynamic fields per dialect form type */}\n <FormGrid>\n {renderFields()}\n </FormGrid>\n\n {/* Toggles */}\n <div className=\"flex flex-wrap items-center gap-6 pt-2\">\n <label className=\"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300\">\n <input\n type=\"checkbox\"\n name=\"ssl\"\n defaultChecked\n className=\"h-4 w-4 rounded border-gray-300 text-amber-600 focus:ring-amber-500 dark:border-gray-600 dark:bg-gray-800\"\n />\n {labels.fieldSsl}\n </label>\n <label className=\"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300\">\n <input\n type=\"checkbox\"\n name=\"readOnly\"\n defaultChecked\n className=\"h-4 w-4 rounded border-gray-300 text-amber-600 focus:ring-amber-500 dark:border-gray-600 dark:bg-gray-800\"\n />\n {labels.fieldReadOnly}\n </label>\n </div>\n <p className=\"text-xs text-gray-400 dark:text-gray-500\">{labels.fieldReadOnlyHelp}</p>\n\n {/* Advanced — pool, timeout, table/column governance. Collapsed by\n default because the defaults (pool=5, timeout=5s, no allow/block)\n are correct for almost every datasource. Shown when an admin\n needs to lock down a specific table or raise the timeout for\n a slow analytic warehouse. */}\n <details className=\"rounded-xl border border-gray-200/60 bg-white/40 p-3 dark:border-white/10 dark:bg-white/5\">\n <summary className=\"cursor-pointer text-sm font-medium text-gray-700 dark:text-gray-300\">\n {labels.advancedToggle ?? 'Governance & performance'}\n </summary>\n <div className=\"mt-3 space-y-3\">\n <FormGrid>\n <FormInput\n name=\"maxPoolSize\"\n label={labels.fieldMaxPoolSize ?? 'Max pool size'}\n type=\"number\"\n min={1}\n max={100}\n placeholder=\"5\"\n />\n <FormInput\n name=\"timeoutMs\"\n label={labels.fieldTimeoutMs ?? 'Timeout (ms)'}\n type=\"number\"\n min={100}\n placeholder=\"5000\"\n />\n </FormGrid>\n <FormInput\n name=\"allowedTables\"\n label={labels.fieldAllowedTables ?? 'Allowed tables (comma-separated)'}\n placeholder=\"stations, current_prices, competitor_prices\"\n />\n <p className=\"text-xs text-gray-400 dark:text-gray-500\">\n {labels.fieldAllowedTablesHelp\n ?? 'Leave blank to allow every table the credential can see. Otherwise only the listed tables are queryable from workflows.'}\n </p>\n <FormInput\n name=\"blockedColumns\"\n label={labels.fieldBlockedColumns ?? 'Blocked columns (comma-separated)'}\n placeholder=\"customers.ssn, employees.salary\"\n />\n <p className=\"text-xs text-gray-400 dark:text-gray-500\">\n {labels.fieldBlockedColumnsHelp\n ?? 'Columns the driver must never surface, even if referenced by a workflow. Use table.column notation for specificity.'}\n </p>\n </div>\n </details>\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 border-t border-gray-200/60 pt-5 dark:border-white/10\">\n <Button\n type=\"button\"\n size=\"sm\"\n color=\"zinc\"\n onClick={handleTestConnection}\n disabled={testStatus === 'testing'}\n >\n {testStatus === 'testing' ? labels.testing : labels.testConnection}\n </Button>\n\n {testStatus === 'success' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-emerald-600 dark:text-emerald-400\">\n <CheckCircleIcon className=\"h-4 w-4\" />\n {labels.connectionSuccess}\n </span>\n )}\n {testStatus === 'failed' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-red-600 dark:text-red-400\">\n <XCircleIcon className=\"h-4 w-4\" />\n {labels.connectionFailed}\n </span>\n )}\n\n <div className=\"flex-1\" />\n\n <Button type=\"submit\" size=\"sm\" color=\"amber\">\n {labels.save}\n </Button>\n </div>\n </form>\n )\n}\n\n/* ─── Form Modal ─── */\n\nexport function DatasourceFormModal({ open, onClose, labels, onSave }: DatasourceFormModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\n/* ─── Modal (for /datasources page) ─── */\n\nexport type DatasourceModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\nexport function DatasourceModal({ open, onClose, labels, onSave }: DatasourceModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\nexport { DIALECT_CATEGORIES, findDialect, findCategory }\n\nfunction splitList(raw: string): string[] {\n return raw\n .split(',')\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0)\n}\n"]}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ // src/platform/utils/lambda-endpoint.ts
3
+ var trimTrailingSlash = (value) => value.replace(/\/$/, "");
4
+ function getLambdaApiBase() {
5
+ const directBase = import.meta.env.VITE_LAMBDA_CLIENT_BASE;
6
+ if (directBase && directBase.trim().length > 0) return trimTrailingSlash(directBase);
7
+ const gatewayBase = import.meta.env.VITE_API_GATEWAY_URL;
8
+ if (gatewayBase && gatewayBase.trim().length > 0) return trimTrailingSlash(gatewayBase);
9
+ throw new Error(
10
+ "Missing workflow API base URL. Set VITE_LAMBDA_CLIENT_BASE or VITE_API_GATEWAY_URL."
11
+ );
12
+ }
13
+ function buildLambdaApiUrl(path) {
14
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
15
+ return `${getLambdaApiBase()}${normalizedPath}`;
16
+ }
17
+
18
+ export { buildLambdaApiUrl, getLambdaApiBase };
19
+ //# sourceMappingURL=chunk-SYNVNTLJ.mjs.map
20
+ //# sourceMappingURL=chunk-SYNVNTLJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/utils/lambda-endpoint.ts"],"names":[],"mappings":";AAEA,IAAM,oBAAoB,CAAC,KAAA,KAA0B,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA;AAErE,SAAS,gBAAA,GAA2B;AACzC,EAAA,MAAM,UAAA,GAAa,YAAY,GAAA,CAAI,uBAAA;AACnC,EAAA,IAAI,UAAA,IAAc,WAAW,IAAA,EAAK,CAAE,SAAS,CAAA,EAAG,OAAO,kBAAkB,UAAU,CAAA;AAEnF,EAAA,MAAM,WAAA,GAAc,YAAY,GAAA,CAAI,oBAAA;AACpC,EAAA,IAAI,WAAA,IAAe,YAAY,IAAA,EAAK,CAAE,SAAS,CAAA,EAAG,OAAO,kBAAkB,WAAW,CAAA;AAEtF,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF;AAEO,SAAS,kBAAkB,IAAA,EAAsB;AACtD,EAAA,MAAM,iBAAiB,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,GAAI,IAAA,GAAO,IAAI,IAAI,CAAA,CAAA;AAC7D,EAAA,OAAO,CAAA,EAAG,gBAAA,EAAkB,CAAA,EAAG,cAAc,CAAA,CAAA;AAC/C","file":"chunk-SYNVNTLJ.mjs","sourcesContent":["/// <reference types=\"vite/client\" />\n\nconst trimTrailingSlash = (value: string): string => value.replace(/\\/$/, '')\n\nexport function getLambdaApiBase(): string {\n const directBase = import.meta.env.VITE_LAMBDA_CLIENT_BASE\n if (directBase && directBase.trim().length > 0) return trimTrailingSlash(directBase)\n\n const gatewayBase = import.meta.env.VITE_API_GATEWAY_URL\n if (gatewayBase && gatewayBase.trim().length > 0) return trimTrailingSlash(gatewayBase)\n\n throw new Error(\n 'Missing workflow API base URL. Set VITE_LAMBDA_CLIENT_BASE or VITE_API_GATEWAY_URL.'\n )\n}\n\nexport function buildLambdaApiUrl(path: string): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n return `${getLambdaApiBase()}${normalizedPath}`\n}\n"]}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ // src/platform/utils/workflow-graph-adapter.ts
3
+ function assertEntityConfig(node) {
4
+ if (node.type !== "entity") return node;
5
+ const config = node.data.config;
6
+ if (!config || config.type !== "entity") {
7
+ throw new Error(`Entity node ${node.id} is missing entity config`);
8
+ }
9
+ const entityConfig = config;
10
+ if (!entityConfig.entityMasterId || entityConfig.entityMasterId.trim().length === 0) {
11
+ throw new Error(`Entity node ${node.id} is missing required entityMasterId`);
12
+ }
13
+ return node;
14
+ }
15
+ function adaptWorkflowGraphToUi(graph) {
16
+ const nodes = graph.nodes.map((node) => assertEntityConfig(node));
17
+ return {
18
+ nodes,
19
+ edges: graph.edges,
20
+ viewport: graph.viewport
21
+ };
22
+ }
23
+
24
+ // src/platform/utils/format-duration.ts
25
+ function formatDurationMs(ms) {
26
+ if (ms === null || ms === void 0 || Number.isNaN(ms)) return "\u2014";
27
+ if (ms < 0) return "\u2014";
28
+ if (ms < 1e3) return `${Math.round(ms)}ms`;
29
+ const totalSeconds = ms / 1e3;
30
+ if (totalSeconds < 60) return `${totalSeconds.toFixed(totalSeconds < 10 ? 2 : 1)}s`;
31
+ const minutes = Math.floor(totalSeconds / 60);
32
+ const seconds = Math.round(totalSeconds - minutes * 60);
33
+ if (minutes < 60) return seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
34
+ const hours = Math.floor(minutes / 60);
35
+ const remainingMinutes = minutes - hours * 60;
36
+ return remainingMinutes === 0 ? `${hours}h` : `${hours}h ${remainingMinutes}m`;
37
+ }
38
+
39
+ export { adaptWorkflowGraphToUi, formatDurationMs };
40
+ //# sourceMappingURL=chunk-UQXVCVAN.mjs.map
41
+ //# sourceMappingURL=chunk-UQXVCVAN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/utils/workflow-graph-adapter.ts","../src/platform/utils/format-duration.ts"],"names":[],"mappings":";AAOA,SAAS,mBAAmB,IAAA,EAAsC;AAChE,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA;AAEnC,EAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACvC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,IAAA,CAAK,EAAE,CAAA,yBAAA,CAA2B,CAAA;AAAA,EACnE;AAEA,EAAA,MAAM,YAAA,GAAe,MAAA;AACrB,EAAA,IAAI,CAAC,aAAa,cAAA,IAAkB,YAAA,CAAa,eAAe,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG;AACnF,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,IAAA,CAAK,EAAE,CAAA,mCAAA,CAAqC,CAAA;AAAA,EAC7E;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,uBAAuB,KAAA,EAA6C;AAClF,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,kBAAA,CAAmB,IAAiC,CAAC,CAAA;AAC7F,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,UAAU,KAAA,CAAM;AAAA,GAClB;AACF;;;AC7BO,SAAS,iBAAiB,EAAA,EAAuC;AACtE,EAAA,IAAI,EAAA,KAAO,QAAQ,EAAA,KAAO,MAAA,IAAa,OAAO,KAAA,CAAM,EAAE,GAAG,OAAO,QAAA;AAChE,EAAA,IAAI,EAAA,GAAK,GAAG,OAAO,QAAA;AACnB,EAAA,IAAI,KAAK,GAAA,EAAO,OAAO,GAAG,IAAA,CAAK,KAAA,CAAM,EAAE,CAAC,CAAA,EAAA,CAAA;AAExC,EAAA,MAAM,eAAe,EAAA,GAAK,GAAA;AAC1B,EAAA,IAAI,YAAA,GAAe,EAAA,EAAI,OAAO,CAAA,EAAG,YAAA,CAAa,QAAQ,YAAA,GAAe,EAAA,GAAK,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,CAAA;AAEhF,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,EAAE,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,UAAU,EAAE,CAAA;AACtD,EAAA,IAAI,OAAA,GAAU,EAAA,EAAI,OAAO,OAAA,KAAY,CAAA,GAAI,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA,GAAM,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,CAAA;AAE/E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA;AACrC,EAAA,MAAM,gBAAA,GAAmB,UAAU,KAAA,GAAQ,EAAA;AAC3C,EAAA,OAAO,gBAAA,KAAqB,IAAI,CAAA,EAAG,KAAK,MAAM,CAAA,EAAG,KAAK,KAAK,gBAAgB,CAAA,CAAA,CAAA;AAC7E","file":"chunk-UQXVCVAN.mjs","sourcesContent":["import type { WorkflowGraph as SharedWorkflowGraph } from '@datatechsolutions/shared-domain/ports/workflow'\nimport type {\n WorkflowGraph as UiWorkflowGraph,\n WorkflowNode as UiWorkflowNode,\n EntityNodeConfig as UiEntityNodeConfig,\n} from '../../astrlabe/contracts'\n\nfunction assertEntityConfig(node: UiWorkflowNode): UiWorkflowNode {\n if (node.type !== 'entity') return node\n\n const config = node.data.config\n if (!config || config.type !== 'entity') {\n throw new Error(`Entity node ${node.id} is missing entity config`)\n }\n\n const entityConfig = config as UiEntityNodeConfig\n if (!entityConfig.entityMasterId || entityConfig.entityMasterId.trim().length === 0) {\n throw new Error(`Entity node ${node.id} is missing required entityMasterId`)\n }\n\n return node\n}\n\nexport function adaptWorkflowGraphToUi(graph: SharedWorkflowGraph): UiWorkflowGraph {\n const nodes = graph.nodes.map((node) => assertEntityConfig(node as unknown as UiWorkflowNode))\n return {\n nodes,\n edges: graph.edges as UiWorkflowGraph['edges'],\n viewport: graph.viewport as UiWorkflowGraph['viewport'],\n }\n}\n","/** Formats a millisecond count as a short, human-readable duration string. */\nexport function formatDurationMs(ms: number | null | undefined): string {\n if (ms === null || ms === undefined || Number.isNaN(ms)) return '—'\n if (ms < 0) return '—'\n if (ms < 1_000) return `${Math.round(ms)}ms`\n\n const totalSeconds = ms / 1_000\n if (totalSeconds < 60) return `${totalSeconds.toFixed(totalSeconds < 10 ? 2 : 1)}s`\n\n const minutes = Math.floor(totalSeconds / 60)\n const seconds = Math.round(totalSeconds - minutes * 60)\n if (minutes < 60) return seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`\n\n const hours = Math.floor(minutes / 60)\n const remainingMinutes = minutes - hours * 60\n return remainingMinutes === 0 ? `${hours}h` : `${hours}h ${remainingMinutes}m`\n}\n"]}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkEFREXNZB_js = require('./chunk-EFREXNZB.js');
5
+ var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function WorkflowCanvasShell({ graph, messages }) {
9
+ const locale = chunkYXN2K77G_js.useLocale();
10
+ return /* @__PURE__ */ jsxRuntime.jsx(
11
+ chunkEFREXNZB_js.Workspace,
12
+ {
13
+ initialGraph: graph,
14
+ locale,
15
+ ...messages ? { messages } : {}
16
+ }
17
+ );
18
+ }
19
+
20
+ exports.WorkflowCanvasShell = WorkflowCanvasShell;
21
+ //# sourceMappingURL=chunk-WGELLCOZ.js.map
22
+ //# sourceMappingURL=chunk-WGELLCOZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":["useLocale","jsx","Workspace"],"mappings":";;;;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAASA,0BAAA,EAAU;AACzB,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-WGELLCOZ.js","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}