@engenty/wizards-runtime 0.0.0-stage → 0.7.5
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/LICENSE +110 -0
- package/README.md +214 -2
- package/apps/runtime/dist/agents/architect.js +444 -0
- package/apps/runtime/dist/agents/studio-assistant.js +883 -0
- package/apps/runtime/dist/agents/subscription.js +207 -0
- package/apps/runtime/dist/agents/thought.js +21 -0
- package/apps/runtime/dist/agents/website.js +480 -0
- package/apps/runtime/dist/app.js +359 -0
- package/apps/runtime/dist/apple/wizards-apple +0 -0
- package/apps/runtime/dist/assistant/browser.js +26 -0
- package/apps/runtime/dist/assistant/docs.js +158 -0
- package/apps/runtime/dist/assistant/knows.js +353 -0
- package/apps/runtime/dist/assistant/primer.js +26 -0
- package/apps/runtime/dist/assistant/runs.js +24 -0
- package/apps/runtime/dist/auth/account.js +175 -0
- package/apps/runtime/dist/auth/device.js +112 -0
- package/apps/runtime/dist/auth/index.js +358 -0
- package/apps/runtime/dist/auth/keys.js +55 -0
- package/apps/runtime/dist/auth/local-ticket.js +26 -0
- package/apps/runtime/dist/authoring/example.js +74 -0
- package/apps/runtime/dist/authoring/guide.js +433 -0
- package/apps/runtime/dist/authoring/ops.js +117 -0
- package/apps/runtime/dist/browser/fast/action-space.js +160 -0
- package/apps/runtime/dist/browser/fast/classifier.js +91 -0
- package/apps/runtime/dist/browser/fast/decide.js +171 -0
- package/apps/runtime/dist/browser/fast/driver.js +141 -0
- package/apps/runtime/dist/browser/fast/instructions.js +33 -0
- package/apps/runtime/dist/browser/fast/run.js +249 -0
- package/apps/runtime/dist/browser/fast/span-picker.js +153 -0
- package/apps/runtime/dist/browser/fast/text-helper.js +178 -0
- package/apps/runtime/dist/browser/snapshot.js +335 -0
- package/apps/runtime/dist/cli/account.js +385 -0
- package/apps/runtime/dist/cli/autostart.js +182 -0
- package/apps/runtime/dist/cli/autoupdate.js +221 -0
- package/apps/runtime/dist/cli/clients.js +44 -0
- package/apps/runtime/dist/cli/connect.js +540 -0
- package/apps/runtime/dist/cli/environment.js +93 -0
- package/apps/runtime/dist/cli/exec.js +45 -0
- package/apps/runtime/dist/cli/features.js +50 -0
- package/apps/runtime/dist/cli/home.js +88 -0
- package/apps/runtime/dist/cli/install-env.js +33 -0
- package/apps/runtime/dist/cli/machine.js +107 -0
- package/apps/runtime/dist/cli/main.js +222 -0
- package/apps/runtime/dist/cli/mcp.js +136 -0
- package/apps/runtime/dist/cli/menu.js +202 -0
- package/apps/runtime/dist/cli/processes.js +72 -0
- package/apps/runtime/dist/cli/report.js +66 -0
- package/apps/runtime/dist/cli/setup.js +335 -0
- package/apps/runtime/dist/cli/start.js +276 -0
- package/apps/runtime/dist/cli/status.js +203 -0
- package/apps/runtime/dist/cli/ui.js +59 -0
- package/apps/runtime/dist/cli/uninstall-main.js +20 -0
- package/apps/runtime/dist/cli/uninstall.js +231 -0
- package/apps/runtime/dist/cli/update.js +86 -0
- package/apps/runtime/dist/cli/validate.js +75 -0
- package/apps/runtime/dist/cli/versions.js +123 -0
- package/apps/runtime/dist/connectors/builtin.js +86 -0
- package/apps/runtime/dist/connectors/external.js +409 -0
- package/apps/runtime/dist/connectors/gmail.js +107 -0
- package/apps/runtime/dist/connectors/imap.js +261 -0
- package/apps/runtime/dist/connectors/index.js +325 -0
- package/apps/runtime/dist/connectors/mail.js +72 -0
- package/apps/runtime/dist/connectors/outlook.js +90 -0
- package/apps/runtime/dist/connectors/plugin-connections.js +343 -0
- package/apps/runtime/dist/connectors/via-account.js +65 -0
- package/apps/runtime/dist/credits/credits.js +100 -0
- package/apps/runtime/dist/credits/estimate.js +152 -0
- package/apps/runtime/dist/db/adopt.js +149 -0
- package/apps/runtime/dist/db/client.js +173 -0
- package/apps/runtime/dist/db/control-schema.js +133 -0
- package/apps/runtime/dist/db/migrations/control/0000_last_absorbing_man.sql +47 -0
- package/apps/runtime/dist/db/migrations/control/0001_gorgeous_nicolaos.sql +41 -0
- package/apps/runtime/dist/db/migrations/control/0002_secret_penance.sql +1 -0
- package/apps/runtime/dist/db/migrations/control/0003_nasty_mordo.sql +3 -0
- package/apps/runtime/dist/db/migrations/control/0004_breezy_eddie_brock.sql +6 -0
- package/apps/runtime/dist/db/migrations/control/0005_chilly_oracle.sql +1 -0
- package/apps/runtime/dist/db/migrations/control/0006_sleepy_mojo.sql +1 -0
- package/apps/runtime/dist/db/migrations/control/0007_common_the_hand.sql +15 -0
- package/apps/runtime/dist/db/migrations/control/0008_runner.sql +8 -0
- package/apps/runtime/dist/db/migrations/control/0009_plugin_claim.sql +9 -0
- package/apps/runtime/dist/db/migrations/control/0010_tan_snowbird.sql +6 -0
- package/apps/runtime/dist/db/migrations/control/meta/0000_snapshot.json +311 -0
- package/apps/runtime/dist/db/migrations/control/meta/0001_snapshot.json +599 -0
- package/apps/runtime/dist/db/migrations/control/meta/0002_snapshot.json +607 -0
- package/apps/runtime/dist/db/migrations/control/meta/0003_snapshot.json +311 -0
- package/apps/runtime/dist/db/migrations/control/meta/0004_snapshot.json +350 -0
- package/apps/runtime/dist/db/migrations/control/meta/0005_snapshot.json +358 -0
- package/apps/runtime/dist/db/migrations/control/meta/0006_snapshot.json +365 -0
- package/apps/runtime/dist/db/migrations/control/meta/0007_snapshot.json +460 -0
- package/apps/runtime/dist/db/migrations/control/meta/0008_snapshot.json +505 -0
- package/apps/runtime/dist/db/migrations/control/meta/0009_snapshot.json +561 -0
- package/apps/runtime/dist/db/migrations/control/meta/0010_snapshot.json +600 -0
- package/apps/runtime/dist/db/migrations/control/meta/_journal.json +83 -0
- package/apps/runtime/dist/db/migrations/tenant/0000_eminent_freak.sql +188 -0
- package/apps/runtime/dist/db/migrations/tenant/0001_salty_master_chief.sql +1 -0
- package/apps/runtime/dist/db/migrations/tenant/0002_cloudy_firebird.sql +1 -0
- package/apps/runtime/dist/db/migrations/tenant/0003_brown_warbound.sql +52 -0
- package/apps/runtime/dist/db/migrations/tenant/0004_romantic_nocturne.sql +6 -0
- package/apps/runtime/dist/db/migrations/tenant/0005_reflective_forgotten_one.sql +2 -0
- package/apps/runtime/dist/db/migrations/tenant/0006_hard_war_machine.sql +30 -0
- package/apps/runtime/dist/db/migrations/tenant/0007_space_data.sql +43 -0
- package/apps/runtime/dist/db/migrations/tenant/0008_run_event_note.sql +1 -0
- package/apps/runtime/dist/db/migrations/tenant/0009_knowledge.sql +104 -0
- package/apps/runtime/dist/db/migrations/tenant/0010_plugin_connection.sql +15 -0
- package/apps/runtime/dist/db/migrations/tenant/0011_runners.sql +2 -0
- package/apps/runtime/dist/db/migrations/tenant/0012_assistant_chat.sql +40 -0
- package/apps/runtime/dist/db/migrations/tenant/0013_run_origin.sql +1 -0
- package/apps/runtime/dist/db/migrations/tenant/0014_run_answer.sql +2 -0
- package/apps/runtime/dist/db/migrations/tenant/0015_device_calls.sql +13 -0
- package/apps/runtime/dist/db/migrations/tenant/0016_even_trish_tilby.sql +12 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0000_snapshot.json +1323 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0001_snapshot.json +1330 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0002_snapshot.json +1337 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0003_snapshot.json +1605 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0004_snapshot.json +1645 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0005_snapshot.json +1659 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0006_snapshot.json +1696 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0007_snapshot.json +2012 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0008_snapshot.json +2019 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0009_snapshot.json +2837 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0010_snapshot.json +2942 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0011_snapshot.json +2956 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0012_snapshot.json +3132 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0013_snapshot.json +3139 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0014_snapshot.json +3154 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0015_snapshot.json +3243 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0016_snapshot.json +3326 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/_journal.json +125 -0
- package/apps/runtime/dist/db/schema.js +602 -0
- package/apps/runtime/dist/debug.js +196 -0
- package/apps/runtime/dist/docs/dev/index.md +41 -0
- package/apps/runtime/dist/docs/dev/meta.json +7 -0
- package/apps/runtime/dist/docs/dev/plugins/connections.md +74 -0
- package/apps/runtime/dist/docs/dev/plugins/events.md +89 -0
- package/apps/runtime/dist/docs/dev/plugins/examples.md +101 -0
- package/apps/runtime/dist/docs/dev/plugins/index.md +78 -0
- package/apps/runtime/dist/docs/dev/plugins/layout.md +90 -0
- package/apps/runtime/dist/docs/dev/plugins/meta.json +28 -0
- package/apps/runtime/dist/docs/dev/plugins/quick-start.md +94 -0
- package/apps/runtime/dist/docs/dev/plugins/reference.md +348 -0
- package/apps/runtime/dist/docs/dev/plugins/reloading.md +76 -0
- package/apps/runtime/dist/docs/dev/plugins/routes.md +185 -0
- package/apps/runtime/dist/docs/dev/plugins/runners.md +230 -0
- package/apps/runtime/dist/docs/dev/plugins/server.md +281 -0
- package/apps/runtime/dist/docs/dev/plugins/shipping.md +79 -0
- package/apps/runtime/dist/docs/dev/plugins/space.md +297 -0
- package/apps/runtime/dist/docs/dev/plugins/starters.md +70 -0
- package/apps/runtime/dist/docs/dev/plugins/studio.md +363 -0
- package/apps/runtime/dist/docs/dev/plugins/styling.md +129 -0
- package/apps/runtime/dist/docs/dev/plugins/tables.md +104 -0
- package/apps/runtime/dist/docs/dev/plugins/tools.md +139 -0
- package/apps/runtime/dist/docs/dev/wizard-format.md +125 -0
- package/apps/runtime/dist/docs/meta.json +3 -0
- package/apps/runtime/dist/docs/user/ai-apps.md +112 -0
- package/apps/runtime/dist/docs/user/assistant.md +77 -0
- package/apps/runtime/dist/docs/user/build-a-wizard.md +116 -0
- package/apps/runtime/dist/docs/user/command-line.md +83 -0
- package/apps/runtime/dist/docs/user/connectors.md +90 -0
- package/apps/runtime/dist/docs/user/create-account.md +52 -0
- package/apps/runtime/dist/docs/user/data.md +66 -0
- package/apps/runtime/dist/docs/user/first-start.md +60 -0
- package/apps/runtime/dist/docs/user/index.md +49 -0
- package/apps/runtime/dist/docs/user/install.md +123 -0
- package/apps/runtime/dist/docs/user/local-only.md +42 -0
- package/apps/runtime/dist/docs/user/meta.json +32 -0
- package/apps/runtime/dist/docs/user/models.md +156 -0
- package/apps/runtime/dist/docs/user/plugins.md +71 -0
- package/apps/runtime/dist/docs/user/run.md +98 -0
- package/apps/runtime/dist/docs/user/server.md +52 -0
- package/apps/runtime/dist/docs/user/space.md +126 -0
- package/apps/runtime/dist/docs/user/steps.md +220 -0
- package/apps/runtime/dist/docs/user/test-and-share.md +224 -0
- package/apps/runtime/dist/docs/user/troubleshooting.md +67 -0
- package/apps/runtime/dist/docs/user/wordpress.md +121 -0
- package/apps/runtime/dist/documents/parse.js +246 -0
- package/apps/runtime/dist/engenty/connections-external/build-connector.js +193 -0
- package/apps/runtime/dist/engenty/connections-external/errors.js +11 -0
- package/apps/runtime/dist/engenty/connections-external/import-service.js +270 -0
- package/apps/runtime/dist/engenty/connections-external/importer/classify.js +34 -0
- package/apps/runtime/dist/engenty/connections-external/importer/map-auth.js +185 -0
- package/apps/runtime/dist/engenty/connections-external/importer/normalize-mcp.js +63 -0
- package/apps/runtime/dist/engenty/connections-external/importer/normalize-openapi.js +130 -0
- package/apps/runtime/dist/engenty/connections-external/invoke/http-invoker.js +143 -0
- package/apps/runtime/dist/engenty/connections-external/invoke/mcp-client.js +143 -0
- package/apps/runtime/dist/engenty/connections-external/net/guarded-fetch.js +119 -0
- package/apps/runtime/dist/engenty/connections-external/oauth-dcr.js +88 -0
- package/apps/runtime/dist/engenty/connections-external/registry-client.js +336 -0
- package/apps/runtime/dist/engenty/connections-external/registry-source.js +82 -0
- package/apps/runtime/dist/engenty/connections-external/types.js +7 -0
- package/apps/runtime/dist/engenty/connections-github/connector.js +209 -0
- package/apps/runtime/dist/engenty/connections-google/connectors/calendar.js +381 -0
- package/apps/runtime/dist/engenty/connections-google/connectors/contacts.js +94 -0
- package/apps/runtime/dist/engenty/connections-google/connectors/drive.js +290 -0
- package/apps/runtime/dist/engenty/connections-google/connectors/gmail.js +567 -0
- package/apps/runtime/dist/engenty/connections-google/definitions.js +11 -0
- package/apps/runtime/dist/engenty/connections-google/shared.js +73 -0
- package/apps/runtime/dist/engenty/connections-hubspot/connector.js +140 -0
- package/apps/runtime/dist/engenty/connections-microsoft/action.js +17 -0
- package/apps/runtime/dist/engenty/connections-microsoft/graph.js +114 -0
- package/apps/runtime/dist/engenty/connections-microsoft/onedrive.js +286 -0
- package/apps/runtime/dist/engenty/connections-microsoft/outlook.js +492 -0
- package/apps/runtime/dist/engenty/connections-s3/s3.js +328 -0
- package/apps/runtime/dist/engenty/connections-sdk/files-capability.js +86 -0
- package/apps/runtime/dist/engenty/connections-sdk/oauth2.js +150 -0
- package/apps/runtime/dist/engenty/connections-sdk/registry.js +89 -0
- package/apps/runtime/dist/engenty/connections-sdk/storage-capability.js +84 -0
- package/apps/runtime/dist/engenty/connections-sdk/types.js +30 -0
- package/apps/runtime/dist/engenty/connections-slack/connector.js +360 -0
- package/apps/runtime/dist/engenty/csv-import/csv-matrix.js +178 -0
- package/apps/runtime/dist/engenty/csv-import/import-sources.js +87 -0
- package/apps/runtime/dist/engenty/csv-import/parse-csv.js +129 -0
- package/apps/runtime/dist/engenty/csv-import/serialize-csv.js +20 -0
- package/apps/runtime/dist/engenty/csv-import/types.js +1 -0
- package/apps/runtime/dist/engenty/csv-import/xlsx-workbook.js +159 -0
- package/apps/runtime/dist/engenty/doc-converter/interface.js +9 -0
- package/apps/runtime/dist/engenty/doc-converter/page-break.js +92 -0
- package/apps/runtime/dist/engenty/doc-converter/providers/local/index.js +72 -0
- package/apps/runtime/dist/engenty/document-scanner/schemas/classifier.js +30 -0
- package/apps/runtime/dist/engenty/document-scanner/schemas/index.js +4 -0
- package/apps/runtime/dist/engenty/document-scanner/schemas/invoice.js +73 -0
- package/apps/runtime/dist/engenty/document-scanner/schemas/receipt.js +63 -0
- package/apps/runtime/dist/engenty/document-scanner/schemas/shared.js +40 -0
- package/apps/runtime/dist/engenty/search-index/chunks.js +164 -0
- package/apps/runtime/dist/engenty/search-index/contracts.js +9 -0
- package/apps/runtime/dist/engenty/shims/connections-sdk.js +39 -0
- package/apps/runtime/dist/engenty/shims/plugin-sdk.js +1 -0
- package/apps/runtime/dist/engenty/shims/web-ingest.js +19 -0
- package/apps/runtime/dist/engenty/web-ingest/ssrf.js +277 -0
- package/apps/runtime/dist/engine/asks.js +82 -0
- package/apps/runtime/dist/engine/decide.js +82 -0
- package/apps/runtime/dist/engine/device.js +194 -0
- package/apps/runtime/dist/engine/events.js +128 -0
- package/apps/runtime/dist/engine/input.js +208 -0
- package/apps/runtime/dist/engine/owner.js +32 -0
- package/apps/runtime/dist/engine/prepare.js +90 -0
- package/apps/runtime/dist/engine/push.js +58 -0
- package/apps/runtime/dist/engine/requirements.js +355 -0
- package/apps/runtime/dist/engine/resources.js +198 -0
- package/apps/runtime/dist/engine/runner.js +970 -0
- package/apps/runtime/dist/engine/steps.js +1000 -0
- package/apps/runtime/dist/engine/surface.js +91 -0
- package/apps/runtime/dist/engine/template.js +240 -0
- package/apps/runtime/dist/engine/types.js +4 -0
- package/apps/runtime/dist/env.js +295 -0
- package/apps/runtime/dist/features.js +123 -0
- package/apps/runtime/dist/files/blobs.js +22 -0
- package/apps/runtime/dist/files/objects.js +86 -0
- package/apps/runtime/dist/files/storage.js +120 -0
- package/apps/runtime/dist/files/web-images.js +101 -0
- package/apps/runtime/dist/film/project.js +257 -0
- package/apps/runtime/dist/film/skills.js +91 -0
- package/apps/runtime/dist/film/sounds.js +122 -0
- package/apps/runtime/dist/film/step.js +289 -0
- package/apps/runtime/dist/film/tools.js +99 -0
- package/apps/runtime/dist/geocode.js +58 -0
- package/apps/runtime/dist/harness/antigravity.js +129 -0
- package/apps/runtime/dist/harness/apple.js +270 -0
- package/apps/runtime/dist/harness/claude.js +147 -0
- package/apps/runtime/dist/harness/codex.js +229 -0
- package/apps/runtime/dist/harness/cursor.js +93 -0
- package/apps/runtime/dist/harness/env.js +124 -0
- package/apps/runtime/dist/harness/index.js +95 -0
- package/apps/runtime/dist/harness/model.js +279 -0
- package/apps/runtime/dist/harness/prompt.js +121 -0
- package/apps/runtime/dist/harness/terminal.js +194 -0
- package/apps/runtime/dist/harness/types.js +7 -0
- package/apps/runtime/dist/index.js +113 -0
- package/apps/runtime/dist/limits.js +81 -0
- package/apps/runtime/dist/link-preview.js +60 -0
- package/apps/runtime/dist/log.js +106 -0
- package/apps/runtime/dist/manage.js +249 -0
- package/apps/runtime/dist/mcp/auth.js +161 -0
- package/apps/runtime/dist/mcp/bridge.js +59 -0
- package/apps/runtime/dist/mcp/flow-app.js +97 -0
- package/apps/runtime/dist/mcp/handler.js +54 -0
- package/apps/runtime/dist/mcp/scopes.js +14 -0
- package/apps/runtime/dist/mcp/seen.js +65 -0
- package/apps/runtime/dist/mcp/tools.js +572 -0
- package/apps/runtime/dist/media/conversation.js +167 -0
- package/apps/runtime/dist/media/ffmpeg.js +121 -0
- package/apps/runtime/dist/media/generate.js +120 -0
- package/apps/runtime/dist/media/marking.js +121 -0
- package/apps/runtime/dist/media/transcribe.js +198 -0
- package/apps/runtime/dist/model-errors.js +42 -0
- package/apps/runtime/dist/models.js +1164 -0
- package/apps/runtime/dist/plugin.js +61 -0
- package/apps/runtime/dist/plugins/channels.js +78 -0
- package/apps/runtime/dist/plugins/claims.js +56 -0
- package/apps/runtime/dist/plugins/discovery.js +155 -0
- package/apps/runtime/dist/plugins/events.js +63 -0
- package/apps/runtime/dist/plugins/jobs.js +64 -0
- package/apps/runtime/dist/plugins/loader.js +508 -0
- package/apps/runtime/dist/plugins/migrations.js +69 -0
- package/apps/runtime/dist/plugins/pro-keys.js +34 -0
- package/apps/runtime/dist/plugins/pro-state.js +83 -0
- package/apps/runtime/dist/plugins/pro.js +310 -0
- package/apps/runtime/dist/plugins/public.js +44 -0
- package/apps/runtime/dist/plugins/registry.js +122 -0
- package/apps/runtime/dist/plugins/runs.js +210 -0
- package/apps/runtime/dist/render/browser-path.js +54 -0
- package/apps/runtime/dist/render/chromium.js +98 -0
- package/apps/runtime/dist/render/convert.js +158 -0
- package/apps/runtime/dist/render/downloads.js +299 -0
- package/apps/runtime/dist/render/guard.js +25 -0
- package/apps/runtime/dist/render/shaped.js +137 -0
- package/apps/runtime/dist/routes/api.js +440 -0
- package/apps/runtime/dist/routes/debug.js +42 -0
- package/apps/runtime/dist/routes/delivery.js +90 -0
- package/apps/runtime/dist/routes/internal.js +81 -0
- package/apps/runtime/dist/routes/lang.js +25 -0
- package/apps/runtime/dist/routes/marketplace.js +43 -0
- package/apps/runtime/dist/routes/plugin-public.js +113 -0
- package/apps/runtime/dist/routes/plugins.js +212 -0
- package/apps/runtime/dist/routes/runs.js +1422 -0
- package/apps/runtime/dist/routes/studio.js +1629 -0
- package/apps/runtime/dist/routes/wizard-stream.js +30 -0
- package/apps/runtime/dist/running.js +39 -0
- package/apps/runtime/dist/sandbox/docker.js +75 -0
- package/apps/runtime/dist/sandbox/index.js +23 -0
- package/apps/runtime/dist/sandbox/types.js +1 -0
- package/apps/runtime/dist/secrets/crypto.js +28 -0
- package/apps/runtime/dist/secrets/signing.js +52 -0
- package/apps/runtime/dist/secrets/vault.js +59 -0
- package/apps/runtime/dist/services/access.js +88 -0
- package/apps/runtime/dist/services/api.js +248 -0
- package/apps/runtime/dist/services/architect.js +95 -0
- package/apps/runtime/dist/services/assistant-chats.js +311 -0
- package/apps/runtime/dist/services/brand.js +85 -0
- package/apps/runtime/dist/services/cloud.js +456 -0
- package/apps/runtime/dist/services/draft-events.js +27 -0
- package/apps/runtime/dist/services/engenty-shapes.js +71 -0
- package/apps/runtime/dist/services/errors.js +29 -0
- package/apps/runtime/dist/services/files.js +178 -0
- package/apps/runtime/dist/services/knowledge-model.js +559 -0
- package/apps/runtime/dist/services/knowledge.js +721 -0
- package/apps/runtime/dist/services/links.js +16 -0
- package/apps/runtime/dist/services/marketplace.js +492 -0
- package/apps/runtime/dist/services/onboarding.js +152 -0
- package/apps/runtime/dist/services/package-file.js +82 -0
- package/apps/runtime/dist/services/package.js +170 -0
- package/apps/runtime/dist/services/profile.js +51 -0
- package/apps/runtime/dist/services/project-files.js +439 -0
- package/apps/runtime/dist/services/project-index.js +707 -0
- package/apps/runtime/dist/services/projects.js +387 -0
- package/apps/runtime/dist/services/relevance.js +58 -0
- package/apps/runtime/dist/services/runners.js +178 -0
- package/apps/runtime/dist/services/runs.js +524 -0
- package/apps/runtime/dist/services/shares.js +130 -0
- package/apps/runtime/dist/services/site.js +270 -0
- package/apps/runtime/dist/services/space-categories.js +861 -0
- package/apps/runtime/dist/services/space-data.js +792 -0
- package/apps/runtime/dist/services/space-origin.js +207 -0
- package/apps/runtime/dist/services/spaces.js +656 -0
- package/apps/runtime/dist/services/translations.js +306 -0
- package/apps/runtime/dist/services/widgets.js +34 -0
- package/apps/runtime/dist/services/wizard-icon.js +157 -0
- package/apps/runtime/dist/services/wizards.js +420 -0
- package/apps/runtime/dist/settings.js +16 -0
- package/apps/runtime/dist/store/errors.js +4 -0
- package/apps/runtime/dist/store/index.js +299 -0
- package/apps/runtime/dist/store/shared-lists.js +123 -0
- package/apps/runtime/dist/tenants/control.js +238 -0
- package/apps/runtime/dist/tenants/tenant.js +26 -0
- package/apps/runtime/dist/texts.js +207 -0
- package/apps/runtime/dist/tools/browser.js +703 -0
- package/apps/runtime/dist/tools/connector.js +204 -0
- package/apps/runtime/dist/tools/index.js +291 -0
- package/apps/runtime/dist/tools/mail.js +104 -0
- package/apps/runtime/dist/tools/net-guard.js +170 -0
- package/apps/runtime/dist/tools/pages.js +81 -0
- package/apps/runtime/dist/tools/plugin.js +180 -0
- package/apps/runtime/dist/tools/project.js +154 -0
- package/apps/runtime/dist/tools/shared.js +69 -0
- package/apps/runtime/dist/tools/store.js +238 -0
- package/apps/runtime/dist/update.js +113 -0
- package/apps/runtime/dist/widgets/bundle.js +99 -0
- package/apps/runtime/dist/widgets/render.js +329 -0
- package/apps/runtime/dist/widgets/runtime.js +108 -0
- package/apps/runtime/dist/widgets/script.js +30 -0
- package/apps/runtime/dist/widgets/step.js +223 -0
- package/apps/web/dist/ai-labels/ai-black.svg +20 -0
- package/apps/web/dist/ai-labels/ai-generated-black.svg +31 -0
- package/apps/web/dist/ai-labels/ai-generated-white.svg +32 -0
- package/apps/web/dist/ai-labels/ai-modified-black.svg +30 -0
- package/apps/web/dist/ai-labels/ai-modified-white.svg +31 -0
- package/apps/web/dist/ai-labels/ai-white.svg +21 -0
- package/apps/web/dist/assets/AboutDialog-D4mvc-zu.js +1 -0
- package/apps/web/dist/assets/ChangelogDialog-DLqpJsF6.js +1 -0
- package/apps/web/dist/assets/ChatView-3laypRcE.js +10 -0
- package/apps/web/dist/assets/EditorPage-BalA5U2Y.js +3 -0
- package/apps/web/dist/assets/FlowPreview-CusP7ci9.js +1 -0
- package/apps/web/dist/assets/Harness-BrP-ENHg.css +1 -0
- package/apps/web/dist/assets/Harness-iYLtOLaK.js +16 -0
- package/apps/web/dist/assets/NewWizardChannels-CbwJ9A56.js +1 -0
- package/apps/web/dist/assets/NewWizardPage-BOBYiB9i.js +7 -0
- package/apps/web/dist/assets/OnboardingPage-CUwCiVIr.js +1 -0
- package/apps/web/dist/assets/ProjectPage-Bb16MdYG.js +1 -0
- package/apps/web/dist/assets/PublicRunner-BCt7Q6C-.js +1 -0
- package/apps/web/dist/assets/ReadOnly-kIHX2TEy.js +1 -0
- package/apps/web/dist/assets/RunDrawer-hZ9oeSXu.js +4 -0
- package/apps/web/dist/assets/RunnerView-DUS9fPmx.js +1 -0
- package/apps/web/dist/assets/SettingsPage-BzwR50fi.js +1 -0
- package/apps/web/dist/assets/SetupPage-gAp7rPxp.js +1 -0
- package/apps/web/dist/assets/SharePage-DqZWHva_.js +1 -0
- package/apps/web/dist/assets/changelog-DugmCNSf.js +1 -0
- package/apps/web/dist/assets/engenty-eXZ-EAwd.js +1 -0
- package/apps/web/dist/assets/esm-DXeMu8Lb.js +7 -0
- package/apps/web/dist/assets/fluffy-engenty-ClRou7yu.js +456 -0
- package/apps/web/dist/assets/index-AfUa8xKD.css +1 -0
- package/apps/web/dist/assets/index-C5Sm7tTR.js +14 -0
- package/apps/web/dist/assets/jsx-runtime-BNakU3Ej.js +1 -0
- package/apps/web/dist/assets/lock-R_CfU0Xo.js +1 -0
- package/apps/web/dist/assets/oss-credits-cZ9NUaLZ.js +1 -0
- package/apps/web/dist/assets/pdfmake-Cx9scTbD.js +228 -0
- package/apps/web/dist/assets/phone-CgrIS4_-.js +1 -0
- package/apps/web/dist/assets/preload-helper-CNEI7N0N.js +1 -0
- package/apps/web/dist/assets/qr-scanner-worker.min-CJaXo3yu.js +98 -0
- package/apps/web/dist/assets/qr-scanner.min-C_UI0gH-.js +1 -0
- package/apps/web/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/apps/web/dist/assets/settings-menu-2IMOOlLl.js +1 -0
- package/apps/web/dist/assets/ui-dzGvc3xk.js +137 -0
- package/apps/web/dist/assets/upload-BSuTilFF.js +1 -0
- package/apps/web/dist/assets/vfs_fonts-DllDSYt1.js +1 -0
- package/apps/web/dist/embed.js +266 -0
- package/apps/web/dist/favicon.svg +1 -0
- package/apps/web/dist/icons/apple-touch-icon.png +0 -0
- package/apps/web/dist/icons/icon-192.png +0 -0
- package/apps/web/dist/icons/icon-512.png +0 -0
- package/apps/web/dist/icons/icon-maskable-512.png +0 -0
- package/apps/web/dist/index.html +48 -0
- package/apps/web/dist/install.sh +577 -0
- package/apps/web/dist/manifest.webmanifest +21 -0
- package/apps/web/dist/mcp/flow.html +980 -0
- package/apps/web/dist/sw.js +15 -0
- package/bin/wizards.mjs +288 -0
- package/modules/README.md +15 -0
- package/node_modules/@engenty/wizards/dist/plugin/index.d.ts +1150 -0
- package/node_modules/@engenty/wizards/dist/plugin/index.js +4 -0
- package/node_modules/@engenty/wizards/dist/plugin/studio.d.ts +322 -0
- package/node_modules/@engenty/wizards/dist/plugin/studio.js +4 -0
- package/node_modules/@engenty/wizards/dist/plugin/thread.d.ts +174 -0
- package/node_modules/@engenty/wizards/dist/plugin/thread.js +821 -0
- package/node_modules/@engenty/wizards/package.json +11 -0
- package/node_modules/@engenty-wizards/shared/dist/assistant.d.ts +174 -0
- package/node_modules/@engenty-wizards/shared/dist/assistant.js +65 -0
- package/node_modules/@engenty-wizards/shared/dist/changes.d.ts +22 -0
- package/node_modules/@engenty-wizards/shared/dist/changes.js +61 -0
- package/node_modules/@engenty-wizards/shared/dist/connectors.d.ts +77 -0
- package/node_modules/@engenty-wizards/shared/dist/connectors.js +2 -0
- package/node_modules/@engenty-wizards/shared/dist/decision.d.ts +76 -0
- package/node_modules/@engenty-wizards/shared/dist/decision.js +147 -0
- package/node_modules/@engenty-wizards/shared/dist/definition.d.ts +2922 -0
- package/node_modules/@engenty-wizards/shared/dist/definition.js +1920 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-format.d.ts +5 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-format.js +132 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-value.d.ts +11 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-value.js +209 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns.d.ts +532 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns.js +217 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/index.d.ts +3 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/index.js +3 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-lexical.d.ts +14 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-lexical.js +166 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-rank.d.ts +33 -0
- package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-rank.js +99 -0
- package/node_modules/@engenty-wizards/shared/dist/feature-flags.d.ts +78 -0
- package/node_modules/@engenty-wizards/shared/dist/feature-flags.js +70 -0
- package/node_modules/@engenty-wizards/shared/dist/features.d.ts +41 -0
- package/node_modules/@engenty-wizards/shared/dist/features.js +89 -0
- package/node_modules/@engenty-wizards/shared/dist/fit.d.ts +71 -0
- package/node_modules/@engenty-wizards/shared/dist/fit.js +382 -0
- package/node_modules/@engenty-wizards/shared/dist/json-schema.d.ts +14 -0
- package/node_modules/@engenty-wizards/shared/dist/json-schema.js +66 -0
- package/node_modules/@engenty-wizards/shared/dist/knowledge.d.ts +199 -0
- package/node_modules/@engenty-wizards/shared/dist/knowledge.js +68 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.d.ts +35 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.js +107 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace-search.d.ts +20 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace-search.js +136 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace.d.ts +227 -0
- package/node_modules/@engenty-wizards/shared/dist/marketplace.js +354 -0
- package/node_modules/@engenty-wizards/shared/dist/merge.d.ts +7 -0
- package/node_modules/@engenty-wizards/shared/dist/merge.js +40 -0
- package/node_modules/@engenty-wizards/shared/dist/numbers.d.ts +24 -0
- package/node_modules/@engenty-wizards/shared/dist/numbers.js +54 -0
- package/node_modules/@engenty-wizards/shared/dist/projects.d.ts +224 -0
- package/node_modules/@engenty-wizards/shared/dist/projects.js +319 -0
- package/node_modules/@engenty-wizards/shared/dist/providers.d.ts +101 -0
- package/node_modules/@engenty-wizards/shared/dist/providers.js +390 -0
- package/node_modules/@engenty-wizards/shared/dist/run.d.ts +680 -0
- package/node_modules/@engenty-wizards/shared/dist/run.js +620 -0
- package/node_modules/@engenty-wizards/shared/dist/runner-texts.d.ts +546 -0
- package/node_modules/@engenty-wizards/shared/dist/runner-texts.js +523 -0
- package/node_modules/@engenty-wizards/shared/dist/runners.d.ts +93 -0
- package/node_modules/@engenty-wizards/shared/dist/runners.js +146 -0
- package/node_modules/@engenty-wizards/shared/dist/shape.d.ts +102 -0
- package/node_modules/@engenty-wizards/shared/dist/shape.js +318 -0
- package/node_modules/@engenty-wizards/shared/dist/space-data.d.ts +89 -0
- package/node_modules/@engenty-wizards/shared/dist/space-data.js +47 -0
- package/node_modules/@engenty-wizards/shared/dist/store.d.ts +117 -0
- package/node_modules/@engenty-wizards/shared/dist/store.js +81 -0
- package/node_modules/@engenty-wizards/shared/dist/surface.d.ts +115 -0
- package/node_modules/@engenty-wizards/shared/dist/surface.js +442 -0
- package/node_modules/@engenty-wizards/shared/dist/texts.d.ts +45 -0
- package/node_modules/@engenty-wizards/shared/dist/texts.js +54 -0
- package/node_modules/@engenty-wizards/shared/dist/translation.d.ts +23 -0
- package/node_modules/@engenty-wizards/shared/dist/translation.js +154 -0
- package/node_modules/@engenty-wizards/shared/dist/wizard-package.d.ts +48 -0
- package/node_modules/@engenty-wizards/shared/dist/wizard-package.js +49 -0
- package/node_modules/@engenty-wizards/shared/dist/workspace.d.ts +16 -0
- package/node_modules/@engenty-wizards/shared/dist/workspace.js +51 -0
- package/node_modules/@engenty-wizards/shared/package.json +10 -0
- package/package.json +77 -4
- package/plugin/.claude-plugin/plugin.json +9 -0
- package/plugin/.mcp.json +8 -0
- package/plugin/commands/wizard.md +8 -0
- package/plugin/skills/build-wizard/SKILL.md +27 -0
- package/plugin/skills/use-wizard/SKILL.md +18 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { coerceColumnValue, TableColumnValueError, } from "./engenty/data-tables/index.js";
|
|
2
|
+
export const SPACE_DATA_LIMITS = {
|
|
3
|
+
tables: 200,
|
|
4
|
+
/** Sub-pages count: a law split along its paragraphs is a few thousand. */
|
|
5
|
+
pages: 5000,
|
|
6
|
+
rowsPerTable: 5000,
|
|
7
|
+
pageChars: 200_000,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Cells a person typed, as stored: each value checked against its column. A blank cell is kept
|
|
11
|
+
* empty even where the column is required, so a row can be filled one cell at a time; cells of
|
|
12
|
+
* columns that no longer exist are dropped.
|
|
13
|
+
*/
|
|
14
|
+
export function editCells(columns, current, patch) {
|
|
15
|
+
const byId = new Map(columns.map((c) => [c.id, c]));
|
|
16
|
+
const next = {};
|
|
17
|
+
for (const [id, value] of Object.entries(current)) {
|
|
18
|
+
if (byId.has(id)) {
|
|
19
|
+
next[id] = value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const [id, value] of Object.entries(patch)) {
|
|
23
|
+
const column = byId.get(id);
|
|
24
|
+
if (!column) {
|
|
25
|
+
throw new TableColumnValueError(id, `unknown column "${id}"`);
|
|
26
|
+
}
|
|
27
|
+
next[id] = coerceColumnValue({ ...column, required: false }, value);
|
|
28
|
+
}
|
|
29
|
+
return next;
|
|
30
|
+
}
|
|
31
|
+
/** A column id from its name: a lowercase slug, not one of `taken`. */
|
|
32
|
+
export function columnIdOf(name, taken) {
|
|
33
|
+
const base = name
|
|
34
|
+
.normalize("NFKD")
|
|
35
|
+
.replace(/[̀-ͯ]/g, "")
|
|
36
|
+
.toLowerCase()
|
|
37
|
+
.replace(/[^a-z0-9]+/g, "_")
|
|
38
|
+
.replace(/^_+|_+$/g, "")
|
|
39
|
+
.replace(/^[^a-z]+/, "")
|
|
40
|
+
.slice(0, 48) || "column";
|
|
41
|
+
let id = base;
|
|
42
|
+
let i = 2;
|
|
43
|
+
while (taken.includes(id)) {
|
|
44
|
+
id = `${base}_${i++}`;
|
|
45
|
+
}
|
|
46
|
+
return id;
|
|
47
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { type TableColumn } from "./engenty/data-tables/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* What a wizard keeps between runs for one person: lists (tabular data), files and connected
|
|
4
|
+
* accounts. The wizard definition says which lists and connections exist; the content belongs
|
|
5
|
+
* to the person who ran it.
|
|
6
|
+
*/
|
|
7
|
+
/** A list is an engenty data table: typed columns, rows of cells keyed by column id. */
|
|
8
|
+
export interface ListDef {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
columns: TableColumn[];
|
|
13
|
+
/** Column whose value identifies a row: saving a row with a known key updates it. */
|
|
14
|
+
key?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The rows are gone through one by one in a review: `file` holds the path of a kept file
|
|
17
|
+
* shown beside the row, `status` is a select whose options are the answers (first = open).
|
|
18
|
+
*/
|
|
19
|
+
check?: {
|
|
20
|
+
file?: string;
|
|
21
|
+
status?: string;
|
|
22
|
+
};
|
|
23
|
+
/** Every run reads and writes the same rows; kept as a table of the space, not per person. */
|
|
24
|
+
shared?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ListRow {
|
|
27
|
+
id: string;
|
|
28
|
+
cells: Record<string, unknown>;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface StoreFile {
|
|
32
|
+
path: string;
|
|
33
|
+
mime: string;
|
|
34
|
+
size: number;
|
|
35
|
+
/** Where the file came from, in words: "E-Mail von billing@notion.so, 3.9.2026". */
|
|
36
|
+
source: string | null;
|
|
37
|
+
updatedAt: string;
|
|
38
|
+
}
|
|
39
|
+
export declare const STORE_LIMITS: {
|
|
40
|
+
fileBytes: number;
|
|
41
|
+
totalBytes: number;
|
|
42
|
+
files: number;
|
|
43
|
+
rowsPerList: number;
|
|
44
|
+
};
|
|
45
|
+
/** Kinds of accounts a wizard can ask the person to connect. */
|
|
46
|
+
export declare const CONNECTION_KINDS: readonly ["mail"];
|
|
47
|
+
export type ConnectionKind = (typeof CONNECTION_KINDS)[number];
|
|
48
|
+
/** An account the person connects: a built-in kind, or one of the project's imported connectors. */
|
|
49
|
+
export interface ConnectionDef {
|
|
50
|
+
id: string;
|
|
51
|
+
kind?: ConnectionKind;
|
|
52
|
+
/** Id of an imported connector of the project. */
|
|
53
|
+
connector?: string;
|
|
54
|
+
/** Imported connectors: the actions steps may call. Default: every action that only reads. */
|
|
55
|
+
actions?: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Imported connectors: per action, run it without asking ("allow") or ask the person first
|
|
58
|
+
* ("ask"). Default: reading is allowed, changing asks; deleting always asks.
|
|
59
|
+
*/
|
|
60
|
+
policy?: Record<string, "allow" | "ask">;
|
|
61
|
+
title?: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
}
|
|
64
|
+
/** A connector the person can pick for a connection: an OAuth sign-in or a credentials form. */
|
|
65
|
+
export interface ConnectorOption {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
auth: "oauth2" | "api_key";
|
|
69
|
+
/** `api_key` connectors: the form, in order. */
|
|
70
|
+
fields?: {
|
|
71
|
+
key: string;
|
|
72
|
+
label: string;
|
|
73
|
+
secret?: boolean;
|
|
74
|
+
placeholder?: string;
|
|
75
|
+
required?: boolean;
|
|
76
|
+
}[];
|
|
77
|
+
/** Shown under the form: where to get the values. */
|
|
78
|
+
hint?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface ConnectionView {
|
|
81
|
+
id: string;
|
|
82
|
+
kind: ConnectionKind | null;
|
|
83
|
+
/** The imported connector behind the connection, if it is one. */
|
|
84
|
+
connector: string | null;
|
|
85
|
+
title: string | null;
|
|
86
|
+
description: string | null;
|
|
87
|
+
/** Set when the person has connected an account. */
|
|
88
|
+
account: {
|
|
89
|
+
connector: string;
|
|
90
|
+
label: string;
|
|
91
|
+
connectedAt: string;
|
|
92
|
+
} | null;
|
|
93
|
+
connectors: ConnectorOption[];
|
|
94
|
+
}
|
|
95
|
+
/** One list as a Markdown table of raw cell values — what a model reads. */
|
|
96
|
+
export declare function listAsMarkdown(def: ListDef, rows: ListRow[], limit?: number): string;
|
|
97
|
+
/**
|
|
98
|
+
* When the first row saved now is stamped, in milliseconds: after every row the list already
|
|
99
|
+
* holds, so a list reads in the order its rows came — also when two saves fall in one
|
|
100
|
+
* millisecond. The rows of one save follow it a millisecond apart.
|
|
101
|
+
*/
|
|
102
|
+
export declare function firstRowAt(existing: {
|
|
103
|
+
createdAt: Date;
|
|
104
|
+
}[]): number;
|
|
105
|
+
/** The key a row is matched on: trimmed and lower-cased, so "Notion " and "notion" are one row. */
|
|
106
|
+
export declare function rowKey(def: ListDef, cells: Record<string, unknown>): string | null;
|
|
107
|
+
/** A new row's cells, typed by the list's columns. Throws `TableColumnValueError` on a bad value. */
|
|
108
|
+
export declare function newCells(def: ListDef, input: Record<string, unknown>): Record<string, unknown>;
|
|
109
|
+
/** An existing row's cells with some columns changed; cells of columns the list no longer has are dropped. */
|
|
110
|
+
export declare function patchCells(def: ListDef, current: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown>;
|
|
111
|
+
/**
|
|
112
|
+
* What a person typed into a cell, as the value sent for its column; the runtime still checks it
|
|
113
|
+
* against the column. Blank is null; a number or a duration (in the column's input unit) is read
|
|
114
|
+
* as people write it ("12,5"); a date and time from the browser's picker, in local time, becomes
|
|
115
|
+
* ISO. What cannot be read goes as typed, for the runtime to refuse and name.
|
|
116
|
+
*/
|
|
117
|
+
export declare function cellValue(column: TableColumn, text: string): unknown;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// SPDX-License-Identifier: FSL-1.1-MIT OR MIT
|
|
2
|
+
import { coerceRowValues, mergeRowValues } from "./engenty/data-tables/index.js";
|
|
3
|
+
import { readNumber } from "./numbers.js";
|
|
4
|
+
export const STORE_LIMITS = {
|
|
5
|
+
fileBytes: 15_000_000,
|
|
6
|
+
totalBytes: 200_000_000,
|
|
7
|
+
files: 2000,
|
|
8
|
+
rowsPerList: 5000,
|
|
9
|
+
};
|
|
10
|
+
/** Kinds of accounts a wizard can ask the person to connect. */
|
|
11
|
+
export const CONNECTION_KINDS = ["mail"];
|
|
12
|
+
/** One list as a Markdown table of raw cell values — what a model reads. */
|
|
13
|
+
export function listAsMarkdown(def, rows, limit = 200) {
|
|
14
|
+
if (!rows.length) {
|
|
15
|
+
return "(empty)";
|
|
16
|
+
}
|
|
17
|
+
const cols = def.columns;
|
|
18
|
+
const cell = (v) => v === null || v === undefined
|
|
19
|
+
? ""
|
|
20
|
+
: (Array.isArray(v) ? v.join(", ") : String(v)).replace(/\|/g, "\\|").replace(/\s+/g, " ");
|
|
21
|
+
const head = `| ${cols.map((c) => c.id).join(" | ")} |\n|${cols.map(() => " --- ").join("|")}|`;
|
|
22
|
+
const body = rows
|
|
23
|
+
.slice(0, limit)
|
|
24
|
+
.map((r) => `| ${cols.map((c) => cell(r.cells[c.id])).join(" | ")} |`);
|
|
25
|
+
const more = rows.length > limit ? [`… ${rows.length - limit} more rows`] : [];
|
|
26
|
+
return [head, ...body, ...more].join("\n");
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* When the first row saved now is stamped, in milliseconds: after every row the list already
|
|
30
|
+
* holds, so a list reads in the order its rows came — also when two saves fall in one
|
|
31
|
+
* millisecond. The rows of one save follow it a millisecond apart.
|
|
32
|
+
*/
|
|
33
|
+
export function firstRowAt(existing) {
|
|
34
|
+
return existing.reduce((at, row) => Math.max(at, row.createdAt.getTime() + 1), Date.now());
|
|
35
|
+
}
|
|
36
|
+
/** The key a row is matched on: trimmed and lower-cased, so "Notion " and "notion" are one row. */
|
|
37
|
+
export function rowKey(def, cells) {
|
|
38
|
+
if (!def.key) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const raw = cells[def.key];
|
|
42
|
+
const key = raw === null || raw === undefined ? "" : String(raw).trim().toLowerCase();
|
|
43
|
+
return key || null;
|
|
44
|
+
}
|
|
45
|
+
/** A new row's cells, typed by the list's columns. Throws `TableColumnValueError` on a bad value. */
|
|
46
|
+
export function newCells(def, input) {
|
|
47
|
+
return coerceRowValues(def.columns, input);
|
|
48
|
+
}
|
|
49
|
+
/** An existing row's cells with some columns changed; cells of columns the list no longer has are dropped. */
|
|
50
|
+
export function patchCells(def, current, patch) {
|
|
51
|
+
const known = new Set(def.columns.map((c) => c.id));
|
|
52
|
+
const kept = Object.fromEntries(Object.entries(current).filter(([id]) => known.has(id)));
|
|
53
|
+
return mergeRowValues(def.columns, kept, patch);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* What a person typed into a cell, as the value sent for its column; the runtime still checks it
|
|
57
|
+
* against the column. Blank is null; a number or a duration (in the column's input unit) is read
|
|
58
|
+
* as people write it ("12,5"); a date and time from the browser's picker, in local time, becomes
|
|
59
|
+
* ISO. What cannot be read goes as typed, for the runtime to refuse and name.
|
|
60
|
+
*/
|
|
61
|
+
export function cellValue(column, text) {
|
|
62
|
+
if (text.trim() === "") {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
switch (column.type) {
|
|
66
|
+
case "number":
|
|
67
|
+
case "duration":
|
|
68
|
+
return readNumber(text) ?? text;
|
|
69
|
+
case "boolean":
|
|
70
|
+
return text === "true";
|
|
71
|
+
case "date": {
|
|
72
|
+
if (column.format.kind !== "datetime") {
|
|
73
|
+
return text;
|
|
74
|
+
}
|
|
75
|
+
const at = new Date(text);
|
|
76
|
+
return Number.isNaN(at.getTime()) ? text : at.toISOString();
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
return text;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type ObjectShape } from "./shape.js";
|
|
3
|
+
/**
|
|
4
|
+
* Surfaces: views composed from a small catalog of native components, bound to a run's data and
|
|
5
|
+
* rendered by the runner itself — themed, on phones, no iframe and nothing to pay per run. A
|
|
6
|
+
* surface is data, not code: only catalog components render, so it needs no sandbox. Between the
|
|
7
|
+
* plain table a review shows and a widget, which is free HTML. As engenty-pro's A2UI catalog
|
|
8
|
+
* (`engenty:core/v1`), kept to what a wizard's result needs.
|
|
9
|
+
*
|
|
10
|
+
* A surface is a flat list of components with ids; the one with id "root" is drawn, containers
|
|
11
|
+
* name their children by id. A prop may be a literal or `{ "path": "/json/pointer" }` into the
|
|
12
|
+
* surface's data. A `List`, `Table` or `Group` repeats over an array: inside a repeated row, a
|
|
13
|
+
* path without a leading slash reads the row ("name"), one with a slash the whole data. A path
|
|
14
|
+
* may turn what it reads into words: `map` looks the value up (`{ "true": "im Kühlschrank" }`),
|
|
15
|
+
* `format` sets it into a text ("{} Min").
|
|
16
|
+
*/
|
|
17
|
+
export declare const SURFACE_COMPONENTS: readonly ["Column", "Text", "List", "Row", "DetailGrid", "Badge", "Grid", "Metric", "Table", "Image", "BarChart", "LineChart", "DonutChart", "Actions", "Button", "Tabs", "Card", "Fold", "Group", "Chips", "Checklist", "Steps", "Link", "Callout"];
|
|
18
|
+
export type SurfaceComponentName = (typeof SURFACE_COMPONENTS)[number];
|
|
19
|
+
export declare const SURFACE_ACTIONS: readonly ["regenerate", "open"];
|
|
20
|
+
/** One component: its id, its kind, its children (ids, or a template repeated over an array). */
|
|
21
|
+
export declare const surfaceComponentSchema: z.ZodObject<{
|
|
22
|
+
id: z.ZodString;
|
|
23
|
+
component: z.ZodEnum<{
|
|
24
|
+
Actions: "Actions";
|
|
25
|
+
Badge: "Badge";
|
|
26
|
+
BarChart: "BarChart";
|
|
27
|
+
Button: "Button";
|
|
28
|
+
Callout: "Callout";
|
|
29
|
+
Card: "Card";
|
|
30
|
+
Checklist: "Checklist";
|
|
31
|
+
Chips: "Chips";
|
|
32
|
+
Column: "Column";
|
|
33
|
+
DetailGrid: "DetailGrid";
|
|
34
|
+
DonutChart: "DonutChart";
|
|
35
|
+
Fold: "Fold";
|
|
36
|
+
Grid: "Grid";
|
|
37
|
+
Group: "Group";
|
|
38
|
+
Image: "Image";
|
|
39
|
+
LineChart: "LineChart";
|
|
40
|
+
Link: "Link";
|
|
41
|
+
List: "List";
|
|
42
|
+
Metric: "Metric";
|
|
43
|
+
Row: "Row";
|
|
44
|
+
Steps: "Steps";
|
|
45
|
+
Table: "Table";
|
|
46
|
+
Tabs: "Tabs";
|
|
47
|
+
Text: "Text";
|
|
48
|
+
}>;
|
|
49
|
+
children: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
50
|
+
path: z.ZodString;
|
|
51
|
+
componentId: z.ZodString;
|
|
52
|
+
}, z.core.$strip>]>>;
|
|
53
|
+
}, z.core.$loose>;
|
|
54
|
+
export type SurfaceComponent = z.infer<typeof surfaceComponentSchema>;
|
|
55
|
+
export declare const surfaceComponentsSchema: z.ZodArray<z.ZodObject<{
|
|
56
|
+
id: z.ZodString;
|
|
57
|
+
component: z.ZodEnum<{
|
|
58
|
+
Actions: "Actions";
|
|
59
|
+
Badge: "Badge";
|
|
60
|
+
BarChart: "BarChart";
|
|
61
|
+
Button: "Button";
|
|
62
|
+
Callout: "Callout";
|
|
63
|
+
Card: "Card";
|
|
64
|
+
Checklist: "Checklist";
|
|
65
|
+
Chips: "Chips";
|
|
66
|
+
Column: "Column";
|
|
67
|
+
DetailGrid: "DetailGrid";
|
|
68
|
+
DonutChart: "DonutChart";
|
|
69
|
+
Fold: "Fold";
|
|
70
|
+
Grid: "Grid";
|
|
71
|
+
Group: "Group";
|
|
72
|
+
Image: "Image";
|
|
73
|
+
LineChart: "LineChart";
|
|
74
|
+
Link: "Link";
|
|
75
|
+
List: "List";
|
|
76
|
+
Metric: "Metric";
|
|
77
|
+
Row: "Row";
|
|
78
|
+
Steps: "Steps";
|
|
79
|
+
Table: "Table";
|
|
80
|
+
Tabs: "Tabs";
|
|
81
|
+
Text: "Text";
|
|
82
|
+
}>;
|
|
83
|
+
children: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
84
|
+
path: z.ZodString;
|
|
85
|
+
componentId: z.ZodString;
|
|
86
|
+
}, z.core.$strip>]>>;
|
|
87
|
+
}, z.core.$loose>>;
|
|
88
|
+
/** What a run shows: the components and the data they are bound to. */
|
|
89
|
+
export interface Surface {
|
|
90
|
+
components: SurfaceComponent[];
|
|
91
|
+
data: Record<string, unknown>;
|
|
92
|
+
}
|
|
93
|
+
export interface SurfaceIssue {
|
|
94
|
+
message: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* What can be wrong with a surface: an unknown or missing component, no root, a child that is
|
|
98
|
+
* not there, an id twice, a loop, a prop missing, and — given the data keys a run will provide,
|
|
99
|
+
* or the step's schema — a path into data nothing provides.
|
|
100
|
+
*/
|
|
101
|
+
export declare function validateSurface(raw: unknown, data?: string[] | ObjectShape): SurfaceIssue[];
|
|
102
|
+
/** A JSON pointer into data: "/suppliers/0/name". */
|
|
103
|
+
export declare function pointer(data: unknown, path: string): unknown;
|
|
104
|
+
/**
|
|
105
|
+
* A prop's value: a literal as it is, a path read from the data — or, without a leading slash,
|
|
106
|
+
* from the row a List or Table repeats over.
|
|
107
|
+
*/
|
|
108
|
+
export declare function bound(value: unknown, data: unknown, row?: unknown): unknown;
|
|
109
|
+
/** A value turned into words as its path says: looked up in `map`, set into `format`. */
|
|
110
|
+
export declare function worded(raw: unknown, spec: {
|
|
111
|
+
map?: unknown;
|
|
112
|
+
format?: unknown;
|
|
113
|
+
}): unknown;
|
|
114
|
+
/** What a model needs to compose a surface: the catalog, briefly. */
|
|
115
|
+
export declare const SURFACE_GUIDE = "A surface is a flat JSON array of components; the one with id \"root\" is drawn. Containers list their children by id.\nComponents and props (a prop may be a literal or {\"path\": \"/key/...\"} into the data):\n- Column { children: [ids] } \u2014 vertical stack (use for root); Column and Grid may also repeat one component per entry: children {\"path\", \"componentId\"}\n- Text { text, variant?: \"h3\"|\"h4\"|\"lead\"|\"body\"|\"muted\" } \u2014 \"lead\": the one opening line in the wizard's voice\n- List { children: {\"path\": \"/rows\", \"componentId\": \"<a Row id>\"} } \u2014 one Row per array entry; inside, paths without \"/\" read the entry (\"name\")\n- Row { title, subtitle?, meta?, badge?, image? }\n- DetailGrid { rows: [{ label, value }] } \u2014 label/value facts\n- Badge { label, tone?: \"default\"|\"success\"|\"warning\"|\"accent\" }\n- Grid { children: [ids], columns?: 2|3|4, min?: rem } \u2014 tiles side by side; min: the narrowest a tile gets (14 for cards, so a phone shows one)\n- Metric { label, value, caption? } \u2014 a key figure\n- Table { rows: {\"path\": \"/rows\"}, columns?: [{ key, label }] }\n- Image { src: an asset id or {\"path\": ...}, alt? }\n- BarChart / LineChart { title?, points: [{ label, value }] or {\"path\": ...}, labelKey?, valueKey? }\n- DonutChart { title?, slices: [{ label, value }] or {\"path\": ...}, labelKey?, valueKey? }\n (labelKey / valueKey: the columns of bound rows that hold the label and the number, e.g. \"name\", \"price\")\n- Actions { children: [Button ids] } / Button { label, action: \"regenerate\"|\"open\" }\n- Tabs { tabs: [{ label, count?, child: id }] } \u2014 two to four views of one result; count may bind a list (shows its length)\n- Card { title, eyebrow?, subtitle?, meta?: [values], image?, children?: [ids] } \u2014 one thing: a day, a recipe, an offer\n- Fold { title, open?, children: [ids] } \u2014 details that open on a tap\n- Group { children: {\"path\", \"componentId\"}, by: \"<key>\", order?: [values] } \u2014 entries under a heading per value of a key\n- Chips { items, labelKey?, flagKey?, flag? } \u2014 short things at a glance; flagKey marks some (\"bald\")\n- Checklist { items, labelKey?, detailKey?, noteKey?, noteFormat?, noteMap?, groupKey?, groupOrder?, share? } \u2014 things to get or do; ticks are kept; a yes/no note needs noteMap: {\"true\": \"da\", \"false\": \"einkaufen\"}\n- Steps { items, textKey?, minutesKey? } \u2014 ordered work, numbered, with times\n- Link { title, subtitle?, eyebrow?, meta?, look?: \"row\"|\"card\", items: {\"path\": \"/recipes\"}, key?: \"id\", value: {\"path\": \"recipe_id\"}, view: id } \u2014 opens the entry of items whose key is value in a sheet, drawn by view; title, subtitle and meta read that entry, eyebrow the row the Link sits in\n- Callout { text, title?, tone?: \"tip\"|\"note\"|\"warning\" }\nA path may put its value into words: {\"path\": \"in_fridge\", \"map\": {\"true\": \"da\", \"false\": \"einkaufen\"}}, {\"path\": \"minutes\", \"format\": \"{} Min\"}.\nDesign it like an app, not a report: lead with a headline, the key figure or the chips; one Card per thing, never a Table of things; ordered work is Steps, things to get are a Checklist, sets are grouped by their key. A Table only for figures people compare across columns.\nKeep it small: what the person needs to see first, then the details. Never invent numbers: bind them by path.";
|