{"_id":"@aorizondo/lowcoder-agent-sdk-core","_rev":"4-ccf8166b282c62f44f04c932fcdfa519","name":"@aorizondo/lowcoder-agent-sdk-core","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@aorizondo/lowcoder-agent-sdk-core","version":"0.1.0","keywords":["lowcoder","low-code","sdk","dsl","dashboard","agent","ai","code-generation"],"author":{"name":"Antonio Orizondo Leyva","email":"aorizondoleyva@gmail.com"},"license":"MIT","_id":"@aorizondo/lowcoder-agent-sdk-core@0.1.0","maintainers":[{"name":"aorizondo","email":"aorizondoleyva@gmail.com"}],"homepage":"https://github.com/aorizondo/lowcoder-agent-sdk#readme","bugs":{"url":"https://github.com/aorizondo/lowcoder-agent-sdk/issues"},"dist":{"shasum":"c3c1a4172db518550e9bb9f4d9d2bab9e10d9d07","tarball":"https://registry.npmjs.org/@aorizondo/lowcoder-agent-sdk-core/-/lowcoder-agent-sdk-core-0.1.0.tgz","fileCount":143,"integrity":"sha512-1O8rzRQdxWGwqm6mOXLfIkAsnUtjXIA+N6dEXBBuDpMUwQ5xQ8m8KVwmGAJyoR8eJM3Z7TM64vr7Bhyww8ZwAw==","signatures":[{"sig":"MEQCIFoEjbi9XKTfNoGbdQPt8Nc19YBrQZ+QldwOYLpZk/nOAiBRFe57dBh7on6670oCWBemILM6KX4W99Vj8BF72JgrIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224721},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5017e41c193dfa37ea06f8c81eca82c7bb41a5ee","scripts":{"dev":"tsc -p tsconfig.json --watch","build":"tsc -p tsconfig.json","test:dsl":"node dist/test/basic.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"aorizondo","email":"aorizondoleyva@gmail.com"},"repository":{"url":"git+https://github.com/aorizondo/lowcoder-agent-sdk.git","type":"git","directory":"packages/core"},"_npmVersion":"11.8.0","description":"SDK TypeScript para crear aplicaciones Lowcoder desde código. Convierte llamadas fluent en el JSON DSL correcto que Lowcoder acepta, sin que el usuario tenga que conocer la estructura interna.","directories":{},"_nodeVersion":"24.13.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^20.19.41"},"_npmOperationalInternal":{"tmp":"tmp/lowcoder-agent-sdk-core_0.1.0_1780462334208_0.06057484837547755","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aorizondo/lowcoder-agent-sdk-core","version":"0.2.0","keywords":["lowcoder","low-code","sdk","dsl","dashboard","agent","ai","code-generation"],"author":{"name":"Antonio Orizondo Leyva","email":"aorizondoleyva@gmail.com"},"license":"MIT","_id":"@aorizondo/lowcoder-agent-sdk-core@0.2.0","maintainers":[{"name":"aorizondo","email":"aorizondoleyva@gmail.com"}],"homepage":"https://github.com/aorizondo/lowcoder-agent-sdk#readme","bugs":{"url":"https://github.com/aorizondo/lowcoder-agent-sdk/issues"},"dist":{"shasum":"78ff5f14555f94c9a648c0ddad9eb417b729f304","tarball":"https://registry.npmjs.org/@aorizondo/lowcoder-agent-sdk-core/-/lowcoder-agent-sdk-core-0.2.0.tgz","fileCount":143,"integrity":"sha512-E0hVNbJC9AKn0flxGeoXbM/LUIsTMdSNsyxpkKnSBHUa1VkxNa6c0Gxe93oYPDO0/yV5MJRcfSuhXhd7lNl76A==","signatures":[{"sig":"MEQCIH9bg3U1TGpyj8qpmPo136mLwkdl6P4Xw7FL+PVzKrpxAiBYo6JWNO4Xm8WgPKVhlPJsSaI46gKlXRR3K7qTH0ugPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233443},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5017e41c193dfa37ea06f8c81eca82c7bb41a5ee","scripts":{"dev":"tsc -p tsconfig.json --watch","build":"tsc -p tsconfig.json","test:dsl":"node dist/test/basic.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"aorizondo","email":"aorizondoleyva@gmail.com"},"repository":{"url":"git+https://github.com/aorizondo/lowcoder-agent-sdk.git","type":"git","directory":"packages/core"},"_npmVersion":"11.8.0","description":"SDK TypeScript para crear aplicaciones Lowcoder desde código. Convierte llamadas fluent en el JSON DSL correcto que Lowcoder acepta, sin que el usuario tenga que conocer la estructura interna.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^20.19.41"},"_npmOperationalInternal":{"tmp":"tmp/lowcoder-agent-sdk-core_0.2.0_1780464198800_0.8308103252180215","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aorizondo/lowcoder-agent-sdk-core","version":"0.3.0","keywords":["lowcoder","low-code","sdk","dsl","dashboard","agent","ai","code-generation"],"author":{"name":"Antonio Orizondo Leyva","email":"aorizondoleyva@gmail.com"},"license":"MIT","_id":"@aorizondo/lowcoder-agent-sdk-core@0.3.0","maintainers":[{"name":"aorizondo","email":"aorizondoleyva@gmail.com"}],"homepage":"https://github.com/aorizondo/lowcoder-agent-sdk#readme","bugs":{"url":"https://github.com/aorizondo/lowcoder-agent-sdk/issues"},"dist":{"shasum":"9ec1965831c1b0bec0a8691d70e51a11f04106c2","tarball":"https://registry.npmjs.org/@aorizondo/lowcoder-agent-sdk-core/-/lowcoder-agent-sdk-core-0.3.0.tgz","fileCount":153,"integrity":"sha512-5SgD5cBGp+qREI2pA6OwaXqVUA8ih9iDUjWuQN24ZUXo8ccJqQFGsYL57RzhybINIBVGfOQdC8I3hWt9q1NC2Q==","signatures":[{"sig":"MEYCIQDFuTozvahwM1HFQmmm8CuNaoQEOEdyKxmXZMgWMH6qeAIhAN5xuhJIhVm2vra16Ew1llZzBf0GNIXYnkBnStZfmJcq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312771},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"67c27b9b6c0bbfd9eecf6aa8804a7ff3252c59f2","scripts":{"dev":"tsc -p tsconfig.json --watch","build":"tsc -p tsconfig.json","test:dsl":"node dist/test/basic.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"aorizondo","email":"aorizondoleyva@gmail.com"},"repository":{"url":"git+https://github.com/aorizondo/lowcoder-agent-sdk.git","type":"git","directory":"packages/core"},"_npmVersion":"11.8.0","description":"SDK TypeScript para crear aplicaciones Lowcoder desde código. Convierte llamadas fluent en el JSON DSL correcto que Lowcoder acepta, sin que el usuario tenga que conocer la estructura interna.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^20.19.41"},"_npmOperationalInternal":{"tmp":"tmp/lowcoder-agent-sdk-core_0.3.0_1780467214216_0.9874255250884179","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aorizondo/lowcoder-agent-sdk-core","version":"0.3.1","description":"SDK TypeScript para crear aplicaciones Lowcoder desde código. Convierte llamadas fluent en el JSON DSL correcto que Lowcoder acepta, sin que el usuario tenga que conocer la estructura interna.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","dev":"tsc -p tsconfig.json --watch","prepublishOnly":"npm run build","test:dsl":"node dist/test/basic.js"},"devDependencies":{"@types/node":"^20.19.41","typescript":"^5.9.3"},"keywords":["lowcoder","low-code","sdk","dsl","dashboard","agent","ai","code-generation"],"author":{"name":"Antonio Orizondo Leyva","email":"aorizondoleyva@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aorizondo/lowcoder-agent-sdk.git","directory":"packages/core"},"publishConfig":{"access":"public"},"engines":{"node":">=18"},"gitHead":"6862dd496f3a51d281a569ef2d1e8053e34c839b","_id":"@aorizondo/lowcoder-agent-sdk-core@0.3.1","bugs":{"url":"https://github.com/aorizondo/lowcoder-agent-sdk/issues"},"homepage":"https://github.com/aorizondo/lowcoder-agent-sdk#readme","_nodeVersion":"24.13.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-4B1FkK5ViH6Ba3tzfpSWlzvF6xlMnpgNgjcuElGZe/e9dV15HK8OzSumAVN6IzchP+imS6k6fVf1R/2KQ93Knw==","shasum":"623c4afb40ba7da0977764687100d1ea99819a33","tarball":"https://registry.npmjs.org/@aorizondo/lowcoder-agent-sdk-core/-/lowcoder-agent-sdk-core-0.3.1.tgz","fileCount":153,"unpackedSize":317535,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICG6Lz0DjdVMQPnel7GEUhdrP7KCzvXT5IaKkPsmvxplAiEAtBDUPRLYAhGc3GR50SZyC+MHA+9XufimwMOR+FNvqSo="}]},"_npmUser":{"name":"aorizondo","email":"aorizondoleyva@gmail.com"},"directories":{},"maintainers":[{"name":"aorizondo","email":"aorizondoleyva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lowcoder-agent-sdk-core_0.3.1_1780469033626_0.7491116534724205"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T04:52:14.000Z","modified":"2026-06-03T06:43:53.891Z","0.1.0":"2026-06-03T04:52:14.346Z","0.2.0":"2026-06-03T05:23:18.968Z","0.3.0":"2026-06-03T06:13:34.366Z","0.3.1":"2026-06-03T06:43:53.768Z"},"bugs":{"url":"https://github.com/aorizondo/lowcoder-agent-sdk/issues"},"author":{"name":"Antonio Orizondo Leyva","email":"aorizondoleyva@gmail.com"},"license":"MIT","homepage":"https://github.com/aorizondo/lowcoder-agent-sdk#readme","keywords":["lowcoder","low-code","sdk","dsl","dashboard","agent","ai","code-generation"],"repository":{"type":"git","url":"git+https://github.com/aorizondo/lowcoder-agent-sdk.git","directory":"packages/core"},"description":"SDK TypeScript para crear aplicaciones Lowcoder desde código. Convierte llamadas fluent en el JSON DSL correcto que Lowcoder acepta, sin que el usuario tenga que conocer la estructura interna.","maintainers":[{"name":"aorizondo","email":"aorizondoleyva@gmail.com"}],"readme":"# @aorizondo/lowcoder-agent-sdk-core\n\nSDK TypeScript para crear aplicaciones [Lowcoder](https://github.com/lowcoder-org/lowcoder) desde código en lugar de arrastrar elementos.\n\n## Instalación\n\n```bash\nnpm install @aorizondo/lowcoder-agent-sdk-core\n```\n\n## Uso básico\n\n```typescript\nimport { LowcoderApp, LowcoderClient } from \"@aorizondo/lowcoder-agent-sdk-core\";\n\n// 1. Construir la app\nconst app = new LowcoderApp(\"Mi Dashboard\")\n  .addText(\"title\", { text: \"## Bienvenido\" })\n  .addButton(\"refresh\", { text: \"Cargar\", onClick: \"loadData\" })\n  .addTable(\"table1\", {\n    data: \"{{loadData.data}}\",\n    columns: [\n      { title: \"ID\", dataIndex: \"id\" },\n      { title: \"Nombre\", dataIndex: \"name\" },\n    ],\n  })\n  .addFetchQuery(\"loadData\", {\n    url: \"https://jsonplaceholder.typicode.com/users\",\n    triggerType: \"automatic\",\n  });\n\n// 2. Inspeccionar el DSL generado (sin desplegar)\nconsole.log(app.toJSON());\n\n// 3. Desplegar a una instancia Lowcoder\nconst client = new LowcoderClient({\n  baseUrl: \"https://tu-lowcoder.ejemplo.com\",\n  apiKey: process.env.LOWCODER_API_KEY!,\n});\n// orgId es opcional — se auto-detecta llamando /api/v1/users/me\nconst result = await app.deploy(client);\nconsole.log(`https://tu-lowcoder.ejemplo.com/apps/${result.applicationInfoView.applicationId}/edit`);\n```\n\n## API\n\n### `LowcoderApp`\n\nBuilder fluido para construir el DSL de una app.\n\n#### Componentes (todos retornan `this` para chaining)\n\n| Método | Descripción |\n| --- | --- |\n| `addButton(id, opts)` | Botón con `text`, `onClick` (nombre de query), `disabled`, `loading` |\n| `addInput(id, opts)` | Input de texto con `label`, `placeholder`, `defaultValue` |\n| `addTextArea(id, opts)` | Área de texto multilínea |\n| `addNumberInput(id, opts)` | Input numérico con `min`, `max`, `step` |\n| `addText(id, { text })` | Markdown/HTML estático |\n| `addTable(id, opts)` | Tabla con `data`, `columns`, `pageSize` |\n| `addSelect(id, opts)` | Select con `options: [{label, value}]` |\n| `addMultiSelect(id, opts)` | Multi-select |\n| `addCheckbox(id, opts)` | Checkbox |\n| `addSlider(id, opts)` | Slider con `min/max/step` |\n| `addDivider(id, opts)` | Línea divisoria con `title` opcional |\n| `addImage(id, { src })` | Imagen |\n| `addContainer(id, opts)` | Contenedor |\n| `addCard(id, opts)` | Card con sombra |\n| `addLineChart(id, opts)` | Line chart con `data, xAxisKey, yAxisKeys` |\n| `addBarChart(id, opts)` | Bar chart |\n| `addPieChart(id, opts)` | Pie chart con `labelKey, valueKey, donut?` |\n| `addFunnelChart(id, opts)` | Funnel chart |\n| `addRadarChart(id, opts)` | Radar chart |\n| `addHeatmapChart(id, opts)` | Heatmap |\n| `addGaugeChart(id, opts)` | Gauge con `value, min, max, unit` |\n| `addProgress(id, opts)` | Progress bar lineal |\n| `addProgressCircle(id, opts)` | Progress circular |\n| `addTimer(id, opts)` | Cronómetro / countdown |\n| `addAvatar(id, opts)` | Avatar con `src` o `text` |\n| `addMermaid(id, { diagram })` | Diagrama Mermaid |\n| `addIcon(id, opts)`, `addIconButton(id, opts)` | Iconos |\n| `addLink(id, opts)`, `addFloatingButton(id, opts)` | Links y botones flotantes |\n| `addJsonLottie(id, opts)` | Animación Lottie |\n| `addComponent(id, type, opts)` | **Genérico** — usa cualquier `compType` nativo o de plugin |\n\nCualquier método de componente acepta `at: { x, y, w?, h? }` opcional para layout manual en grid de 24 columnas. Sin `at`, el SDK auto-posiciona con bin-packing.\n\n#### Queries\n\n| Método | Descripción |\n| --- | --- |\n| `addFetchQuery(id, { url, method?, body?, triggerType? })` | **Recomendado** para APIs públicas. Genera JS query con fetch interno, sin necesitar datasource configurado |\n| `addJsQuery(id, { script, triggerType? })` | JS query custom. El script debe `return` una Promise (sin `await` top-level) |\n| `addRestQuery(id, opts)` | REST query (requiere `datasourceId` configurado en la instancia) |\n| `addSqlQuery(id, { sql, datasourceId, dbType? })` | SQL para `mysql`, `postgres`, `mssql` |\n| `addQuery(id, type, opts)` | Genérico para cualquier tipo de datasource |\n\n#### Estado y configuración\n\n| Método | Descripción |\n| --- | --- |\n| `addTempState(name, initialValue)` | Estado temporal accesible vía `{{stateName.value}}` |\n| `withSettings({ description?, category?, gridPaddingX?, ... })` | Configuración general |\n| `withPreload({ script?, css?, libs? })` | JS y CSS globales |\n\n#### Salida\n\n| Método | Descripción |\n| --- | --- |\n| `build()` | Retorna el `LowcoderDSL` (objeto JS) |\n| `toJSON()` | String JSON formateado |\n| `deploy(client, orgId?, { publish?, folderId? })` | Crea la app en Lowcoder via API. `orgId` opcional — auto-detectado del workspace activo si se omite |\n\n### `LowcoderClient`\n\nCliente HTTP para la REST API de Lowcoder.\n\n```typescript\nconst client = new LowcoderClient({\n  baseUrl: \"https://lowcoder.example.com\",\n  apiKey: \"...\",       // O usar email + password\n});\n\n// Apps\nawait client.createApp({ orgId, name, applicationType: 1, editingApplicationDSL });\nawait client.updateApp(appId, dsl);\nawait client.getApp(appId);\nawait client.publishApp(appId);\nawait client.listApps(orgId);\nawait client.deleteApp(appId);\n\n// Usuario y organizaciones (descubrir orgId)\nawait client.getCurrentUser();    // { id, currentOrgId, username, orgAndRoles, ... }\nawait client.getCurrentOrgId();   // \"69b44d7a...\" — el workspace activo\nawait client.listMyOrgs();        // [{ id, name, role, isCurrent }, ...] ordenadas\n```\n\n## Expresiones `{{ }}`\n\nEn cualquier propiedad puedes usar JavaScript entre llaves dobles:\n\n```typescript\n{\n  data: \"{{loadUsers.data}}\",\n  disabled: \"{{!form1.valid}}\",\n  text: \"Hola {{currentUser.name}}\",\n  options: \"{{query.data.map(x => ({label: x.name, value: x.id}))}}\",\n}\n```\n\nLibrerías globales: `dayjs`, `lodash`, `numbro`, `uuid`, `papaparse`.\n\n## Requisitos\n\n- Node.js >= 18\n- Lowcoder >= 2.7.0 (versiones anteriores tienen bug con queries JS — ver [troubleshooting](https://github.com/aorizondo/lowcoder-agent-sdk/blob/main/docs/troubleshooting.md))\n\n## Datasources\n\nEl SDK también permite gestionar datasources (BD, APIs, SaaS) con builder fluido:\n\n```typescript\nimport { datasource } from \"@aorizondo/lowcoder-agent-sdk-core\";\n\nconst req = datasource(\"Prod Postgres\")\n  .postgres({ host: \"...\", database: \"...\", username: \"u\", password: \"p\" })\n  .inOrg(orgId)\n  .build();\n\nconst ds = await client.createDatasource(req);\n\n// Y luego usar el ID en queries:\napp.addSqlQuery(\"loadUsers\", {\n  sql: \"SELECT * FROM users\",\n  datasourceId: ds.id,\n  dbType: \"postgres\",\n});\n```\n\nSoporta: `postgres`, `mysql`, `mariadb`, `mssql`, `oracle`, `clickHouse`, `snowflake`, `mongodb`, `redis`, `es`, `smtp`, `restApi`, `graphql`, `googleSheets`, y **~60 plugins JS** (S3, Slack, Jira, OpenAI, Stripe, etc.) via `.jsPlugin(pluginId, config)`.\n\nVer [docs/datasources.md](https://github.com/aorizondo/lowcoder-agent-sdk/blob/main/docs/datasources.md) para detalles.\n\n## Documentación completa\n\n- [Getting Started](https://github.com/aorizondo/lowcoder-agent-sdk/blob/main/docs/getting-started.md)\n- [SDK Reference](https://github.com/aorizondo/lowcoder-agent-sdk/blob/main/docs/sdk-reference.md)\n- [Datasources](https://github.com/aorizondo/lowcoder-agent-sdk/blob/main/docs/datasources.md)\n- [Ejemplos](https://github.com/aorizondo/lowcoder-agent-sdk/tree/main/examples)\n\n## Licencia\n\nMIT © Antonio Orizondo Leyva\n","readmeFilename":"README.md"}