@engenty/wizards-runtime 0.0.0-stage → 0.7.6
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 +95 -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 +231 -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/sandbox.js +77 -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 +212 -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 +197 -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 +86 -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 +279 -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/agentos-package.js +73 -0
- package/apps/runtime/dist/sandbox/agentos.js +162 -0
- package/apps/runtime/dist/sandbox/docker.js +45 -0
- package/apps/runtime/dist/sandbox/index.js +52 -0
- package/apps/runtime/dist/sandbox/install.js +122 -0
- package/apps/runtime/dist/sandbox/mastra.js +71 -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 +657 -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-DYgXPagX.js +1 -0
- package/apps/web/dist/assets/ChangelogDialog-BXqBW8j3.js +1 -0
- package/apps/web/dist/assets/ChatView-CK2--tsE.js +10 -0
- package/apps/web/dist/assets/EditorPage-jvcwyXbU.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-CV9uYzbv.js +16 -0
- package/apps/web/dist/assets/NewWizardChannels-BakW5q6s.js +1 -0
- package/apps/web/dist/assets/NewWizardPage-BoA-LJuW.js +7 -0
- package/apps/web/dist/assets/OnboardingPage-DaD1XnOe.js +1 -0
- package/apps/web/dist/assets/ProjectPage-BFgk1DEv.js +1 -0
- package/apps/web/dist/assets/PublicRunner-C9MwEvxy.js +1 -0
- package/apps/web/dist/assets/ReadOnly-DC2Kp7l8.js +1 -0
- package/apps/web/dist/assets/RunDrawer-CY6NZSrI.js +4 -0
- package/apps/web/dist/assets/RunnerView-BT26XgcY.js +1 -0
- package/apps/web/dist/assets/SettingsPage-AFt9IDLt.js +1 -0
- package/apps/web/dist/assets/SetupPage-DtFYAbwJ.js +1 -0
- package/apps/web/dist/assets/SharePage-t2xwNS61.js +1 -0
- package/apps/web/dist/assets/changelog-CATQFxCQ.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-Drw7FMTQ.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,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@engenty/wizards",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"license": "FSL-1.1-MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./plugin": "./dist/plugin/index.js",
|
|
8
|
+
"./plugin/studio": "./dist/plugin/studio.js",
|
|
9
|
+
"./plugin/thread": "./dist/plugin/thread.js"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The studio's assistant between the browser and the runtime: what a page tells it, the tools
|
|
4
|
+
* the browser runs, and the events of a turn. The events are our own, shaped like AG-UI's
|
|
5
|
+
* (docs.ag-ui.com): message and tool-call ids and AG-UI's field names, so a later switch is a
|
|
6
|
+
* rename on both ends.
|
|
7
|
+
*/
|
|
8
|
+
/** A page's snapshot is cut to this many bytes of JSON. */
|
|
9
|
+
export declare const ASSISTANT_PAGE_BYTES: number;
|
|
10
|
+
/** What the page the person writes from shows; it goes up with every message. */
|
|
11
|
+
export declare const assistantPageSchema: z.ZodObject<{
|
|
12
|
+
route: z.ZodString;
|
|
13
|
+
title: z.ZodOptional<z.ZodString>;
|
|
14
|
+
view: z.ZodOptional<z.ZodString>;
|
|
15
|
+
open: z.ZodOptional<z.ZodObject<{
|
|
16
|
+
kind: z.ZodString;
|
|
17
|
+
id: z.ZodOptional<z.ZodString>;
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
selection: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
21
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
22
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
label: z.ZodString;
|
|
25
|
+
value: z.ZodUnknown;
|
|
26
|
+
}, z.core.$strip>>>;
|
|
27
|
+
plugin: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export type AssistantPage = z.infer<typeof assistantPageSchema>;
|
|
30
|
+
/** A tool the browser runs (AG-UI's `Tool`): its arguments as JSON Schema. */
|
|
31
|
+
export declare const browserToolSchema: z.ZodObject<{
|
|
32
|
+
name: z.ZodString;
|
|
33
|
+
description: z.ZodString;
|
|
34
|
+
parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
export type BrowserTool = z.infer<typeof browserToolSchema>;
|
|
37
|
+
/** The browser waits no longer for a tool than this; the runtime neither. */
|
|
38
|
+
export declare const BROWSER_TOOL_TIMEOUT_MS = 60000;
|
|
39
|
+
/** What the browser sends to start a turn (AG-UI's `RunAgentInput`, cut to what we use). */
|
|
40
|
+
export declare const assistantTurnSchema: z.ZodObject<{
|
|
41
|
+
message: z.ZodString;
|
|
42
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
43
|
+
page: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
route: z.ZodString;
|
|
45
|
+
title: z.ZodOptional<z.ZodString>;
|
|
46
|
+
view: z.ZodOptional<z.ZodString>;
|
|
47
|
+
open: z.ZodOptional<z.ZodObject<{
|
|
48
|
+
kind: z.ZodString;
|
|
49
|
+
id: z.ZodOptional<z.ZodString>;
|
|
50
|
+
label: z.ZodString;
|
|
51
|
+
}, z.core.$strip>>;
|
|
52
|
+
selection: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
53
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
54
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
55
|
+
id: z.ZodString;
|
|
56
|
+
label: z.ZodString;
|
|
57
|
+
value: z.ZodUnknown;
|
|
58
|
+
}, z.core.$strip>>>;
|
|
59
|
+
plugin: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>>;
|
|
61
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
62
|
+
name: z.ZodString;
|
|
63
|
+
description: z.ZodString;
|
|
64
|
+
parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
65
|
+
}, z.core.$strip>>>;
|
|
66
|
+
debug: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type AssistantTurn = z.input<typeof assistantTurnSchema>;
|
|
69
|
+
/**
|
|
70
|
+
* A message the person writes while a turn runs (POST /api/studio/assistant/run/:runId/signal):
|
|
71
|
+
* the turn takes it before its next step, or after its answer. `ref` is the browser's id for it.
|
|
72
|
+
*/
|
|
73
|
+
export declare const assistantSignalSchema: z.ZodObject<{
|
|
74
|
+
ref: z.ZodString;
|
|
75
|
+
message: z.ZodString;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
export type AssistantSignal = z.infer<typeof assistantSignalSchema>;
|
|
78
|
+
/** One model step of a turn, in developer mode. */
|
|
79
|
+
export interface AssistantStep {
|
|
80
|
+
/** Counted over the turn, from 1. */
|
|
81
|
+
step: number;
|
|
82
|
+
/** The model the class is bound to, e.g. `anthropic/claude-sonnet-4.6` or `claude:sonnet`. */
|
|
83
|
+
model: string;
|
|
84
|
+
inputTokens: number;
|
|
85
|
+
outputTokens: number;
|
|
86
|
+
cachedInputTokens: number;
|
|
87
|
+
/** From the step's start to its end, tools included. */
|
|
88
|
+
ms: number;
|
|
89
|
+
costUsd: number;
|
|
90
|
+
/** The tools the model called in the step. */
|
|
91
|
+
tools: string[];
|
|
92
|
+
/** The model's context window in tokens, where the catalog knows it. */
|
|
93
|
+
window: number | null;
|
|
94
|
+
}
|
|
95
|
+
/** What a turn sent to the model, in developer mode: its parts and their size. */
|
|
96
|
+
export interface AssistantPrompt {
|
|
97
|
+
model: string;
|
|
98
|
+
system: string;
|
|
99
|
+
/** The turn's own message: earlier chats, the page, the space, what the person wrote. */
|
|
100
|
+
context: string;
|
|
101
|
+
/** The open chat's messages sent along. */
|
|
102
|
+
history: {
|
|
103
|
+
role: "user" | "assistant";
|
|
104
|
+
chars: number;
|
|
105
|
+
}[];
|
|
106
|
+
/** Each tool's description and schema, in characters. */
|
|
107
|
+
tools: {
|
|
108
|
+
name: string;
|
|
109
|
+
chars: number;
|
|
110
|
+
}[];
|
|
111
|
+
}
|
|
112
|
+
/** The events of a turn, by SSE event name. */
|
|
113
|
+
export interface AssistantEvents {
|
|
114
|
+
/**
|
|
115
|
+
* The turn started; `messageId` is the stored message of the person. Messages written meanwhile
|
|
116
|
+
* go to `runId` as signals.
|
|
117
|
+
*/
|
|
118
|
+
run_started: {
|
|
119
|
+
threadId: string;
|
|
120
|
+
runId: string;
|
|
121
|
+
messageId: string;
|
|
122
|
+
};
|
|
123
|
+
text: {
|
|
124
|
+
messageId: string;
|
|
125
|
+
delta: string;
|
|
126
|
+
};
|
|
127
|
+
/** What the assistant does right now, in a few words. */
|
|
128
|
+
activity: {
|
|
129
|
+
label: string;
|
|
130
|
+
};
|
|
131
|
+
tool_call: {
|
|
132
|
+
toolCallId: string;
|
|
133
|
+
toolCallName: string;
|
|
134
|
+
args: unknown;
|
|
135
|
+
};
|
|
136
|
+
tool_result: {
|
|
137
|
+
toolCallId: string;
|
|
138
|
+
content: string;
|
|
139
|
+
};
|
|
140
|
+
/** A plugin's tool returned what its card in the chat draws. */
|
|
141
|
+
card: {
|
|
142
|
+
toolCallId?: string;
|
|
143
|
+
plugin: string;
|
|
144
|
+
tool: string;
|
|
145
|
+
data: unknown;
|
|
146
|
+
};
|
|
147
|
+
/** The space or a plugin's data changed: the page reads its data again. */
|
|
148
|
+
changed: Record<string, never>;
|
|
149
|
+
/**
|
|
150
|
+
* The turn took a message written meanwhile (`ref`, stored as `messageId`). What the answer said
|
|
151
|
+
* before it was stored as `answerId` (null when it had said nothing); the answer goes on after it.
|
|
152
|
+
*/
|
|
153
|
+
signal: {
|
|
154
|
+
ref: string;
|
|
155
|
+
messageId: string;
|
|
156
|
+
content: string;
|
|
157
|
+
answerId: string | null;
|
|
158
|
+
};
|
|
159
|
+
/** Developer mode: what went to the model. */
|
|
160
|
+
prompt: AssistantPrompt;
|
|
161
|
+
/** Developer mode: a model step ended. */
|
|
162
|
+
step: AssistantStep;
|
|
163
|
+
done: {
|
|
164
|
+
messageId: string;
|
|
165
|
+
reply: string;
|
|
166
|
+
changed: boolean;
|
|
167
|
+
};
|
|
168
|
+
error: {
|
|
169
|
+
message: string;
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/** Where the assistant stands on the screen, per person. */
|
|
173
|
+
export declare const ASSISTANT_LAYOUTS: readonly ["bottom", "sidebar", "avatar"];
|
|
174
|
+
export type AssistantLayout = (typeof ASSISTANT_LAYOUTS)[number];
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The studio's assistant between the browser and the runtime: what a page tells it, the tools
|
|
4
|
+
* the browser runs, and the events of a turn. The events are our own, shaped like AG-UI's
|
|
5
|
+
* (docs.ag-ui.com): message and tool-call ids and AG-UI's field names, so a later switch is a
|
|
6
|
+
* rename on both ends.
|
|
7
|
+
*/
|
|
8
|
+
/** A page's snapshot is cut to this many bytes of JSON. */
|
|
9
|
+
export const ASSISTANT_PAGE_BYTES = 16 * 1024;
|
|
10
|
+
/** What the page the person writes from shows; it goes up with every message. */
|
|
11
|
+
export const assistantPageSchema = z.object({
|
|
12
|
+
/** The studio's address: `/shop`, `/space/knowledge`. */
|
|
13
|
+
route: z.string().max(400),
|
|
14
|
+
/** What the top bar's trail says the page is. */
|
|
15
|
+
title: z.string().max(200).optional(),
|
|
16
|
+
/** The section in view: "Display and checkout". */
|
|
17
|
+
view: z.string().max(200).optional(),
|
|
18
|
+
/** An item the page has open. */
|
|
19
|
+
open: z
|
|
20
|
+
.object({
|
|
21
|
+
kind: z.string().max(60),
|
|
22
|
+
id: z.string().max(120).optional(),
|
|
23
|
+
label: z.string().max(200),
|
|
24
|
+
})
|
|
25
|
+
.optional(),
|
|
26
|
+
/** Ids of what the person picked. */
|
|
27
|
+
selection: z.array(z.string().max(120)).max(100).optional(),
|
|
28
|
+
/** A line on what the page holds: "0 products · no source · prices incl. VAT". */
|
|
29
|
+
summary: z.string().max(2000).optional(),
|
|
30
|
+
/** Fields of the page with their values. */
|
|
31
|
+
fields: z
|
|
32
|
+
.array(z.object({ id: z.string().max(120), label: z.string().max(200), value: z.unknown() }))
|
|
33
|
+
.max(60)
|
|
34
|
+
.optional(),
|
|
35
|
+
/** The plugin whose page it is. */
|
|
36
|
+
plugin: z.string().max(60).optional(),
|
|
37
|
+
});
|
|
38
|
+
/** A tool the browser runs (AG-UI's `Tool`): its arguments as JSON Schema. */
|
|
39
|
+
export const browserToolSchema = z.object({
|
|
40
|
+
name: z.string().regex(/^[a-z][a-z0-9_]{1,62}$/),
|
|
41
|
+
description: z.string().max(2000),
|
|
42
|
+
parameters: z.record(z.string(), z.unknown()),
|
|
43
|
+
});
|
|
44
|
+
/** The browser waits no longer for a tool than this; the runtime neither. */
|
|
45
|
+
export const BROWSER_TOOL_TIMEOUT_MS = 60_000;
|
|
46
|
+
/** What the browser sends to start a turn (AG-UI's `RunAgentInput`, cut to what we use). */
|
|
47
|
+
export const assistantTurnSchema = z.object({
|
|
48
|
+
message: z.string().min(1).max(8000),
|
|
49
|
+
/** The space the page shows; its tools need it. */
|
|
50
|
+
projectId: z.string().max(80).optional(),
|
|
51
|
+
page: assistantPageSchema.optional(),
|
|
52
|
+
tools: z.array(browserToolSchema).max(40).default([]),
|
|
53
|
+
/** Developer mode: the turn also sends its prompt and each step (`prompt`, `step`). */
|
|
54
|
+
debug: z.boolean().optional(),
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* A message the person writes while a turn runs (POST /api/studio/assistant/run/:runId/signal):
|
|
58
|
+
* the turn takes it before its next step, or after its answer. `ref` is the browser's id for it.
|
|
59
|
+
*/
|
|
60
|
+
export const assistantSignalSchema = z.object({
|
|
61
|
+
ref: z.string().min(1).max(40),
|
|
62
|
+
message: z.string().min(1).max(8000),
|
|
63
|
+
});
|
|
64
|
+
/** Where the assistant stands on the screen, per person. */
|
|
65
|
+
export const ASSISTANT_LAYOUTS = ["bottom", "sidebar", "avatar"];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { WizardDefinition } from "./definition.js";
|
|
2
|
+
import type { WorkspaceFile } from "./workspace.js";
|
|
3
|
+
/**
|
|
4
|
+
* What changed in a draft since the version people run: the wizard's own settings, each step
|
|
5
|
+
* by its title, the steps' order, the workspace's files. "Änderungen live schalten" lists it.
|
|
6
|
+
*/
|
|
7
|
+
export interface VersionChange {
|
|
8
|
+
kind: "wizard" | "step" | "order" | "file";
|
|
9
|
+
change: "added" | "removed" | "changed";
|
|
10
|
+
/** The step's title or the file's path. */
|
|
11
|
+
name?: string;
|
|
12
|
+
/** What of a changed step or of the wizard itself: the definition's keys (`instructions`, `fields`). */
|
|
13
|
+
parts?: string[];
|
|
14
|
+
}
|
|
15
|
+
/** A version as it runs: its definition and its workspace. */
|
|
16
|
+
interface Version {
|
|
17
|
+
definition: WizardDefinition;
|
|
18
|
+
files: Pick<WorkspaceFile, "path" | "hash">[];
|
|
19
|
+
}
|
|
20
|
+
/** What `after` changes of `before`: the wizard first, then its steps in their new order, then its files. */
|
|
21
|
+
export declare function versionChanges(before: Version, after: Version): VersionChange[];
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
2
|
+
/** The keys whose values differ, in the order the newer one has them. */
|
|
3
|
+
function keysChanged(before, after) {
|
|
4
|
+
const was = before;
|
|
5
|
+
const now = after;
|
|
6
|
+
const keys = [...new Set([...Object.keys(now), ...Object.keys(was)])];
|
|
7
|
+
return keys.filter((k) => !same(was[k], now[k]));
|
|
8
|
+
}
|
|
9
|
+
/** What `after` changes of `before`: the wizard first, then its steps in their new order, then its files. */
|
|
10
|
+
export function versionChanges(before, after) {
|
|
11
|
+
const changes = [];
|
|
12
|
+
const { steps: oldSteps, ...oldWizard } = before.definition;
|
|
13
|
+
const { steps: newSteps, ...newWizard } = after.definition;
|
|
14
|
+
const parts = keysChanged(oldWizard, newWizard);
|
|
15
|
+
if (parts.length) {
|
|
16
|
+
changes.push({ kind: "wizard", change: "changed", parts });
|
|
17
|
+
}
|
|
18
|
+
const old = new Map(oldSteps.map((s) => [s.id, s]));
|
|
19
|
+
const now = new Set(newSteps.map((s) => s.id));
|
|
20
|
+
for (const step of newSteps) {
|
|
21
|
+
const was = old.get(step.id);
|
|
22
|
+
if (!was) {
|
|
23
|
+
changes.push({ kind: "step", change: "added", name: step.title });
|
|
24
|
+
}
|
|
25
|
+
else if (!same(was, step)) {
|
|
26
|
+
changes.push({
|
|
27
|
+
kind: "step",
|
|
28
|
+
change: "changed",
|
|
29
|
+
name: step.title,
|
|
30
|
+
parts: keysChanged(was, step).filter((k) => k !== "id"),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const step of oldSteps) {
|
|
35
|
+
if (!now.has(step.id)) {
|
|
36
|
+
changes.push({ kind: "step", change: "removed", name: step.title });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// The steps both have, in each one's order: a move is one change, however many steps moved.
|
|
40
|
+
const kept = (steps) => steps.map((s) => s.id).filter((id) => old.has(id) && now.has(id));
|
|
41
|
+
if (!same(kept(oldSteps), kept(newSteps))) {
|
|
42
|
+
changes.push({ kind: "order", change: "changed" });
|
|
43
|
+
}
|
|
44
|
+
const oldFiles = new Map(before.files.map((f) => [f.path, f.hash]));
|
|
45
|
+
const newFiles = new Map(after.files.map((f) => [f.path, f.hash]));
|
|
46
|
+
for (const [path, hash] of newFiles) {
|
|
47
|
+
const was = oldFiles.get(path);
|
|
48
|
+
if (was === undefined) {
|
|
49
|
+
changes.push({ kind: "file", change: "added", name: path });
|
|
50
|
+
}
|
|
51
|
+
else if (was !== hash) {
|
|
52
|
+
changes.push({ kind: "file", change: "changed", name: path });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const path of oldFiles.keys()) {
|
|
56
|
+
if (!newFiles.has(path)) {
|
|
57
|
+
changes.push({ kind: "file", change: "removed", name: path });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return changes;
|
|
61
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** Imported connectors as the studio shows them: a service of a project, with its actions. */
|
|
2
|
+
export type ActionGroup = "read" | "write" | "destructive";
|
|
3
|
+
export interface ConnectorActionView {
|
|
4
|
+
id: string;
|
|
5
|
+
summary: string;
|
|
6
|
+
group: ActionGroup;
|
|
7
|
+
}
|
|
8
|
+
export interface ConnectorView {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
domain: string;
|
|
12
|
+
/** Where it comes from: shipped with the product, or imported from a spec or an MCP server. */
|
|
13
|
+
sourceKind: "builtin" | "openapi" | "mcp";
|
|
14
|
+
sourceUrl: string;
|
|
15
|
+
toolPrefix: string;
|
|
16
|
+
/** Whether a person can connect an account right now. */
|
|
17
|
+
usable: boolean;
|
|
18
|
+
/** Built-in OAuth connectors that are not usable: the settings the server still needs. */
|
|
19
|
+
missingSetup: string | null;
|
|
20
|
+
/** How a person connects their account. */
|
|
21
|
+
auth: "none" | "oauth2" | "api_key";
|
|
22
|
+
/** OAuth without client credentials and without self-registration: connecting cannot work yet. */
|
|
23
|
+
needsOAuthClient: boolean;
|
|
24
|
+
/** An MCP server that lists its tools only to a signed-in account: none are known yet. */
|
|
25
|
+
toolsPending: boolean;
|
|
26
|
+
actions: ConnectorActionView[];
|
|
27
|
+
importedAt: string;
|
|
28
|
+
refreshedAt: string | null;
|
|
29
|
+
}
|
|
30
|
+
export interface RegistryHit {
|
|
31
|
+
domain: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
kinds: string[];
|
|
35
|
+
}
|
|
36
|
+
/** One way a registry service can be imported: an OpenAPI spec or an MCP server. */
|
|
37
|
+
export interface RegistrySource {
|
|
38
|
+
sourceKind: "openapi" | "mcp";
|
|
39
|
+
sourceUrl: string;
|
|
40
|
+
name: string | null;
|
|
41
|
+
/** Why this source cannot be imported; null = it can. */
|
|
42
|
+
blocked: string | null;
|
|
43
|
+
auth: string;
|
|
44
|
+
suggestedId: string;
|
|
45
|
+
suggestedToolPrefix: string;
|
|
46
|
+
}
|
|
47
|
+
export interface RegistryService {
|
|
48
|
+
domain: string;
|
|
49
|
+
summary: string | null;
|
|
50
|
+
sources: RegistrySource[];
|
|
51
|
+
/** How to get a credential, in the provider's words. */
|
|
52
|
+
credentials: {
|
|
53
|
+
label: string;
|
|
54
|
+
setup: string | null;
|
|
55
|
+
url: string | null;
|
|
56
|
+
}[];
|
|
57
|
+
}
|
|
58
|
+
export interface SourcePreview {
|
|
59
|
+
title: string | null;
|
|
60
|
+
actions: ConnectorActionView[];
|
|
61
|
+
blockers: string[];
|
|
62
|
+
/** Actions beyond the per-connector cap. */
|
|
63
|
+
dropped: number;
|
|
64
|
+
toolsPending: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface ImportRequest {
|
|
67
|
+
domain: string;
|
|
68
|
+
sourceKind: "openapi" | "mcp";
|
|
69
|
+
sourceUrl: string;
|
|
70
|
+
id: string;
|
|
71
|
+
toolPrefix: string;
|
|
72
|
+
name?: string;
|
|
73
|
+
/** Only these actions; default all. */
|
|
74
|
+
actions?: string[];
|
|
75
|
+
oauthClientId?: string;
|
|
76
|
+
oauthClientSecret?: string;
|
|
77
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Decisions: typed questions over a state, answered by a decision model (System One: TypeSafe's
|
|
4
|
+
* Jev and models of its kind) or, where there is none, by a language model asked for the same
|
|
5
|
+
* answers as structured output. Both ways give the same shapes; only a decision model gives
|
|
6
|
+
* probabilities that mean something.
|
|
7
|
+
*/
|
|
8
|
+
/** Yes or no: P(yes). */
|
|
9
|
+
export interface NoulQuestion {
|
|
10
|
+
type: "noul";
|
|
11
|
+
instructions: string;
|
|
12
|
+
criteria?: {
|
|
13
|
+
true: string;
|
|
14
|
+
false: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/** One of named options, each with what it covers (null: the name says it). */
|
|
18
|
+
export interface ChoiceQuestion {
|
|
19
|
+
type: "choice";
|
|
20
|
+
instructions: string;
|
|
21
|
+
criteria: Record<string, string | null>;
|
|
22
|
+
}
|
|
23
|
+
/** A level on an ordered scale, lowest first. */
|
|
24
|
+
export interface ScoreQuestion {
|
|
25
|
+
type: "score";
|
|
26
|
+
instructions: string;
|
|
27
|
+
criteria: string[];
|
|
28
|
+
}
|
|
29
|
+
export type DecisionQuestion = NoulQuestion | ChoiceQuestion | ScoreQuestion;
|
|
30
|
+
export interface NoulAnswer {
|
|
31
|
+
type: "noul";
|
|
32
|
+
/** P(yes), 0–1. A language model's answer is 1 or 0. */
|
|
33
|
+
noul: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ChoiceAnswer {
|
|
36
|
+
type: "choice";
|
|
37
|
+
choice: string;
|
|
38
|
+
/** Per option; only from a decision model. */
|
|
39
|
+
probabilities?: Record<string, number>;
|
|
40
|
+
confidence?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ScoreAnswer {
|
|
43
|
+
type: "score";
|
|
44
|
+
/** Index of the level, lowest = 0. */
|
|
45
|
+
level: number;
|
|
46
|
+
/** The level's description, as the question lists it. */
|
|
47
|
+
label: string;
|
|
48
|
+
/** Per level index; only from a decision model. */
|
|
49
|
+
probabilities?: Record<string, number>;
|
|
50
|
+
confidence?: number;
|
|
51
|
+
}
|
|
52
|
+
export type DecisionAnswer = NoulAnswer | ChoiceAnswer | ScoreAnswer;
|
|
53
|
+
export type DecisionSource = "systemone" | "llm";
|
|
54
|
+
export interface Decision {
|
|
55
|
+
answers: Record<string, DecisionAnswer>;
|
|
56
|
+
/** Which way answered; with both, the language model filled what the decision model left open. */
|
|
57
|
+
source: DecisionSource;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The answers a System One response gives that fit their questions; a question whose answer is
|
|
61
|
+
* missing or does not fit is left out, for the language model to answer.
|
|
62
|
+
*/
|
|
63
|
+
export declare function readSystemOne(questions: Record<string, DecisionQuestion>, response: unknown): Record<string, DecisionAnswer>;
|
|
64
|
+
/** The questions as one structured-output object a language model fills. */
|
|
65
|
+
export declare function decisionSchema(questions: Record<string, DecisionQuestion>): z.ZodObject<{
|
|
66
|
+
[x: string]: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
/** What a language model filled in, as answers; null when it does not fit. */
|
|
69
|
+
export declare function readObject(questions: Record<string, DecisionQuestion>, object: unknown): Record<string, DecisionAnswer> | null;
|
|
70
|
+
/**
|
|
71
|
+
* How sure the answer is that it picked rightly, as the margin between the winner and the
|
|
72
|
+
* runner-up; null where there are no probabilities (a language model's answer).
|
|
73
|
+
*/
|
|
74
|
+
export declare function marginOf(answer: DecisionAnswer): number | null;
|
|
75
|
+
/** The probability of what was answered: P(yes) for a yes/no, P(pick) otherwise; 1 without. */
|
|
76
|
+
export declare function pOf(answer: DecisionAnswer): number;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Probabilities sum to one within rounding. */
|
|
3
|
+
const SUM_TOLERANCE = 0.02;
|
|
4
|
+
function unit(v) {
|
|
5
|
+
return typeof v === "number" && Number.isFinite(v) && v >= 0 && v <= 1;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A distribution over exactly the offered keys that sums to one, with `pick` on top — so a
|
|
9
|
+
* malformed or cut-off answer never counts. Engenty-pro's validateChoiceAnswer.
|
|
10
|
+
*/
|
|
11
|
+
function validDistribution(probabilities, offered, pick) {
|
|
12
|
+
if (!probabilities || typeof probabilities !== "object") {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const p = probabilities;
|
|
16
|
+
const keys = Object.keys(p);
|
|
17
|
+
if (keys.length !== offered.length || !offered.every((k) => k in p)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
let sum = 0;
|
|
21
|
+
let max = 0;
|
|
22
|
+
for (const k of keys) {
|
|
23
|
+
if (!unit(p[k])) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
sum += p[k];
|
|
27
|
+
max = Math.max(max, p[k]);
|
|
28
|
+
}
|
|
29
|
+
return Math.abs(sum - 1) < SUM_TOLERANCE && p[pick] >= max - 1e-6;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The answers a System One response gives that fit their questions; a question whose answer is
|
|
33
|
+
* missing or does not fit is left out, for the language model to answer.
|
|
34
|
+
*/
|
|
35
|
+
export function readSystemOne(questions, response) {
|
|
36
|
+
const raw = response?.answers ?? {};
|
|
37
|
+
const out = {};
|
|
38
|
+
for (const [name, q] of Object.entries(questions)) {
|
|
39
|
+
const a = raw[name];
|
|
40
|
+
if (!a || typeof a !== "object") {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (q.type === "noul" && a.type === "noul" && unit(a.noul)) {
|
|
44
|
+
out[name] = { type: "noul", noul: a.noul };
|
|
45
|
+
}
|
|
46
|
+
else if (q.type === "choice" && a.type === "choice") {
|
|
47
|
+
const offered = Object.keys(q.criteria);
|
|
48
|
+
if (typeof a.choice === "string" &&
|
|
49
|
+
offered.includes(a.choice) &&
|
|
50
|
+
validDistribution(a.probabilities, offered, a.choice)) {
|
|
51
|
+
out[name] = {
|
|
52
|
+
type: "choice",
|
|
53
|
+
choice: a.choice,
|
|
54
|
+
probabilities: a.probabilities,
|
|
55
|
+
...(unit(a.confidence) ? { confidence: a.confidence } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (q.type === "score" && a.type === "score") {
|
|
60
|
+
const offered = q.criteria.map((_, i) => String(i));
|
|
61
|
+
const probabilities = a.probabilities;
|
|
62
|
+
const top = probabilities
|
|
63
|
+
? Object.entries(probabilities).sort((x, y) => y[1] - x[1])[0]?.[0]
|
|
64
|
+
: undefined;
|
|
65
|
+
if (top !== undefined && validDistribution(probabilities, offered, top)) {
|
|
66
|
+
const level = Number(top);
|
|
67
|
+
out[name] = {
|
|
68
|
+
type: "score",
|
|
69
|
+
level,
|
|
70
|
+
label: q.criteria[level],
|
|
71
|
+
probabilities,
|
|
72
|
+
...(unit(a.confidence) ? { confidence: a.confidence } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
/** The questions as one structured-output object a language model fills. */
|
|
80
|
+
export function decisionSchema(questions) {
|
|
81
|
+
const shape = {};
|
|
82
|
+
for (const [name, q] of Object.entries(questions)) {
|
|
83
|
+
if (q.type === "noul") {
|
|
84
|
+
const hint = q.criteria ? ` (true: ${q.criteria.true}; false: ${q.criteria.false})` : "";
|
|
85
|
+
shape[name] = z.boolean().describe(`${q.instructions}${hint}`);
|
|
86
|
+
}
|
|
87
|
+
else if (q.type === "choice") {
|
|
88
|
+
const options = Object.keys(q.criteria);
|
|
89
|
+
const hints = Object.entries(q.criteria)
|
|
90
|
+
.filter(([, d]) => d)
|
|
91
|
+
.map(([k, d]) => `${k}: ${d}`)
|
|
92
|
+
.join("; ");
|
|
93
|
+
shape[name] = z
|
|
94
|
+
.enum(options)
|
|
95
|
+
.describe(hints ? `${q.instructions} (${hints})` : q.instructions);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
shape[name] = z
|
|
99
|
+
.enum(q.criteria)
|
|
100
|
+
.describe(`${q.instructions} (lowest to highest)`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return z.object(shape);
|
|
104
|
+
}
|
|
105
|
+
/** What a language model filled in, as answers; null when it does not fit. */
|
|
106
|
+
export function readObject(questions, object) {
|
|
107
|
+
if (!object || typeof object !== "object") {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const o = object;
|
|
111
|
+
const out = {};
|
|
112
|
+
for (const [name, q] of Object.entries(questions)) {
|
|
113
|
+
const v = o[name];
|
|
114
|
+
if (q.type === "noul" && typeof v === "boolean") {
|
|
115
|
+
out[name] = { type: "noul", noul: v ? 1 : 0 };
|
|
116
|
+
}
|
|
117
|
+
else if (q.type === "choice" && typeof v === "string" && v in q.criteria) {
|
|
118
|
+
out[name] = { type: "choice", choice: v };
|
|
119
|
+
}
|
|
120
|
+
else if (q.type === "score" && typeof v === "string" && q.criteria.includes(v)) {
|
|
121
|
+
out[name] = { type: "score", level: q.criteria.indexOf(v), label: v };
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* How sure the answer is that it picked rightly, as the margin between the winner and the
|
|
131
|
+
* runner-up; null where there are no probabilities (a language model's answer).
|
|
132
|
+
*/
|
|
133
|
+
export function marginOf(answer) {
|
|
134
|
+
if (answer.type === "noul") {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const p = Object.values(answer.probabilities ?? {}).sort((a, b) => b - a);
|
|
138
|
+
return p.length >= 2 ? p[0] - p[1] : null;
|
|
139
|
+
}
|
|
140
|
+
/** The probability of what was answered: P(yes) for a yes/no, P(pick) otherwise; 1 without. */
|
|
141
|
+
export function pOf(answer) {
|
|
142
|
+
if (answer.type === "noul") {
|
|
143
|
+
return answer.noul;
|
|
144
|
+
}
|
|
145
|
+
const key = answer.type === "choice" ? answer.choice : String(answer.level);
|
|
146
|
+
return answer.probabilities?.[key] ?? 1;
|
|
147
|
+
}
|