@vm0/cli 9.238.4 → 9.238.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/{agent-DY657IHK.js → agent-KS3ULPSZ.js} +5 -5
- package/{banking-WZ5ZXNHW.js → banking-2B3GDOIE.js} +3 -3
- package/bill.generated-5FJHQPXY.js +16 -0
- package/bill.generated-5FJHQPXY.js.map +1 -0
- package/bill.generated-HYFQCA2Q.js +16 -0
- package/bill.generated-HYFQCA2Q.js.map +1 -0
- package/{chat-ORHRUMSC.js → chat-HP7XYF7H.js} +4 -4
- package/{chunk-APIZB5CD.js → chunk-EJBHYDGP.js} +4 -4
- package/{chunk-XVW5RA46.js → chunk-GIACTMOF.js} +2 -2
- package/{chunk-GA7UX3FL.js → chunk-H4Y7JDZB.js} +535 -42
- package/chunk-H4Y7JDZB.js.map +1 -0
- package/{chunk-Z4SU5SW5.js → chunk-OCOHCUE3.js} +804 -224
- package/chunk-OCOHCUE3.js.map +1 -0
- package/{chunk-JH5O3APS.js → chunk-T3XOMNS6.js} +3 -3
- package/{chunk-ZRG2A3OV.js → chunk-TEJZT6KB.js} +4 -4
- package/{chunk-6TXV6T6G.js → chunk-UHVWYX44.js} +2 -2
- package/{chunk-CYF7PHDS.js → chunk-VC7E6IA7.js} +2 -2
- package/{chunk-CYF7PHDS.js.map → chunk-VC7E6IA7.js.map} +1 -1
- package/{chunk-EH4MVCB3.js → chunk-VUER2HGS.js} +2 -2
- package/{chunk-MZTSDUUX.js → chunk-YQ5ZYQN3.js} +2 -2
- package/{computer-use-NKBLGFEQ.js → computer-use-6GZVM5S6.js} +3 -3
- package/{connector-7AIQZYTK.js → connector-SFMD6HBQ.js} +4 -4
- package/copper.generated-PZRA3BV7.js +16 -0
- package/copper.generated-PZRA3BV7.js.map +1 -0
- package/copper.generated-UBWQDA5K.js +16 -0
- package/copper.generated-UBWQDA5K.js.map +1 -0
- package/{credit-TIOONK33.js → credit-B465R4TF.js} +4 -4
- package/datadog.generated-S4YB2V57.js +16 -0
- package/datadog.generated-S4YB2V57.js.map +1 -0
- package/datadog.generated-Z3O2DYLP.js +16 -0
- package/datadog.generated-Z3O2DYLP.js.map +1 -0
- package/{developer-support-IM7P3PNY.js → developer-support-6GM2UW5P.js} +3 -3
- package/{doctor-UG5O6IF2.js → doctor-Z3HFRIKJ.js} +82 -10
- package/doctor-Z3HFRIKJ.js.map +1 -0
- package/expensify.generated-G2ZGBKBQ.js +16 -0
- package/expensify.generated-G2ZGBKBQ.js.map +1 -0
- package/expensify.generated-OHAW3AHP.js +16 -0
- package/expensify.generated-OHAW3AHP.js.map +1 -0
- package/{generate-FFZOGVVZ.js → generate-37CJMAVG.js} +4 -4
- package/{github-B4A2NYZE.js → github-6CSR7332.js} +3 -3
- package/{goal-MQVOVTDO.js → goal-XURMW5OS.js} +3 -3
- package/{host-OP2HJH6Y.js → host-EVFNV5BX.js} +3 -3
- package/index.js +13 -13
- package/{logs-CA6HKKD7.js → logs-DR7ZTWBK.js} +6 -6
- package/{maps-IR4XLNKS.js → maps-IAVJJMRT.js} +3 -3
- package/{memory-KRW4WNNT.js → memory-X765S3ZI.js} +3 -3
- package/{model-N4ZX7CTX.js → model-ZYVNUG47.js} +4 -4
- package/{model-provider-U4P563EL.js → model-provider-SZIIRXS3.js} +4 -4
- package/netsuite.generated-3NXSZOXT.js +16 -0
- package/netsuite.generated-3NXSZOXT.js.map +1 -0
- package/netsuite.generated-XV3WXA4I.js +16 -0
- package/netsuite.generated-XV3WXA4I.js.map +1 -0
- package/{org-IESFCHFN.js → org-GBDLJZSE.js} +3 -3
- package/package.json +1 -1
- package/paypal.generated-MDKROCJG.js +16 -0
- package/paypal.generated-MDKROCJG.js.map +1 -0
- package/paypal.generated-YZYYL7HX.js +16 -0
- package/paypal.generated-YZYYL7HX.js.map +1 -0
- package/{phone-EBV43OF4.js → phone-KA4NZFQC.js} +3 -3
- package/{preference-ZBNLMRLI.js → preference-TEMJHA73.js} +3 -3
- package/ramp.generated-GDRLFPGX.js +16 -0
- package/ramp.generated-GDRLFPGX.js.map +1 -0
- package/ramp.generated-RJKZQLIG.js +16 -0
- package/ramp.generated-RJKZQLIG.js.map +1 -0
- package/{relationship-TP2F7LLQ.js → relationship-OXV2SPNL.js} +3 -3
- package/{resource-OTHN2AGX.js → resource-2WREU3GR.js} +3 -3
- package/{search-4JZ5XQIQ.js → search-V5V5IHY7.js} +6 -6
- package/{secret-73Y3IETU.js → secret-LIAHG47P.js} +3 -3
- package/{slack-5NXJ5HF5.js → slack-BUOXO2HU.js} +3 -3
- package/{teams-DXT4NI2S.js → teams-G7TYHRJB.js} +3 -3
- package/{telegram-DRWWXQNJ.js → telegram-DEHNZSEN.js} +3 -3
- package/{variable-LP5GN2VJ.js → variable-RMYF6NVZ.js} +3 -3
- package/{video-TNA6D37U.js → video-XEYMVSIU.js} +2 -2
- package/{web-KNGVOG6B.js → web-4REDKON3.js} +3 -3
- package/{whoami-O7ZRGGC7.js → whoami-66W7DPQX.js} +5 -5
- package/workday.generated-4MPT7O3V.js +16 -0
- package/workday.generated-4MPT7O3V.js.map +1 -0
- package/workday.generated-AHL44LEE.js +16 -0
- package/workday.generated-AHL44LEE.js.map +1 -0
- package/{workflow-FYC7N3RU.js → workflow-PBJVC6HV.js} +3 -3
- package/zero.js +34 -34
- package/chunk-GA7UX3FL.js.map +0 -1
- package/chunk-Z4SU5SW5.js.map +0 -1
- package/doctor-UG5O6IF2.js.map +0 -1
- /package/{agent-DY657IHK.js.map → agent-KS3ULPSZ.js.map} +0 -0
- /package/{banking-WZ5ZXNHW.js.map → banking-2B3GDOIE.js.map} +0 -0
- /package/{chat-ORHRUMSC.js.map → chat-HP7XYF7H.js.map} +0 -0
- /package/{chunk-APIZB5CD.js.map → chunk-EJBHYDGP.js.map} +0 -0
- /package/{chunk-XVW5RA46.js.map → chunk-GIACTMOF.js.map} +0 -0
- /package/{chunk-JH5O3APS.js.map → chunk-T3XOMNS6.js.map} +0 -0
- /package/{chunk-ZRG2A3OV.js.map → chunk-TEJZT6KB.js.map} +0 -0
- /package/{chunk-6TXV6T6G.js.map → chunk-UHVWYX44.js.map} +0 -0
- /package/{chunk-EH4MVCB3.js.map → chunk-VUER2HGS.js.map} +0 -0
- /package/{chunk-MZTSDUUX.js.map → chunk-YQ5ZYQN3.js.map} +0 -0
- /package/{computer-use-NKBLGFEQ.js.map → computer-use-6GZVM5S6.js.map} +0 -0
- /package/{connector-7AIQZYTK.js.map → connector-SFMD6HBQ.js.map} +0 -0
- /package/{credit-TIOONK33.js.map → credit-B465R4TF.js.map} +0 -0
- /package/{developer-support-IM7P3PNY.js.map → developer-support-6GM2UW5P.js.map} +0 -0
- /package/{generate-FFZOGVVZ.js.map → generate-37CJMAVG.js.map} +0 -0
- /package/{github-B4A2NYZE.js.map → github-6CSR7332.js.map} +0 -0
- /package/{goal-MQVOVTDO.js.map → goal-XURMW5OS.js.map} +0 -0
- /package/{host-OP2HJH6Y.js.map → host-EVFNV5BX.js.map} +0 -0
- /package/{logs-CA6HKKD7.js.map → logs-DR7ZTWBK.js.map} +0 -0
- /package/{maps-IR4XLNKS.js.map → maps-IAVJJMRT.js.map} +0 -0
- /package/{memory-KRW4WNNT.js.map → memory-X765S3ZI.js.map} +0 -0
- /package/{model-N4ZX7CTX.js.map → model-ZYVNUG47.js.map} +0 -0
- /package/{model-provider-U4P563EL.js.map → model-provider-SZIIRXS3.js.map} +0 -0
- /package/{org-IESFCHFN.js.map → org-GBDLJZSE.js.map} +0 -0
- /package/{phone-EBV43OF4.js.map → phone-KA4NZFQC.js.map} +0 -0
- /package/{preference-ZBNLMRLI.js.map → preference-TEMJHA73.js.map} +0 -0
- /package/{relationship-TP2F7LLQ.js.map → relationship-OXV2SPNL.js.map} +0 -0
- /package/{resource-OTHN2AGX.js.map → resource-2WREU3GR.js.map} +0 -0
- /package/{search-4JZ5XQIQ.js.map → search-V5V5IHY7.js.map} +0 -0
- /package/{secret-73Y3IETU.js.map → secret-LIAHG47P.js.map} +0 -0
- /package/{slack-5NXJ5HF5.js.map → slack-BUOXO2HU.js.map} +0 -0
- /package/{teams-DXT4NI2S.js.map → teams-G7TYHRJB.js.map} +0 -0
- /package/{telegram-DRWWXQNJ.js.map → telegram-DEHNZSEN.js.map} +0 -0
- /package/{variable-LP5GN2VJ.js.map → variable-RMYF6NVZ.js.map} +0 -0
- /package/{video-TNA6D37U.js.map → video-XEYMVSIU.js.map} +0 -0
- /package/{web-KNGVOG6B.js.map → web-4REDKON3.js.map} +0 -0
- /package/{whoami-O7ZRGGC7.js.map → whoami-66W7DPQX.js.map} +0 -0
- /package/{workflow-FYC7N3RU.js.map → workflow-PBJVC6HV.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/visit.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/log.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/errors.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/public-api.js","../../../node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/dist/index.js","../../../node_modules/.pnpm/dotenv@17.3.1/node_modules/dotenv/package.json","../../../node_modules/.pnpm/dotenv@17.3.1/node_modules/dotenv/lib/main.js","../../../packages/core/src/frameworks.ts","../src/lib/events/event-stream-normalizer.ts","../src/lib/events/event-parser-factory.ts","../../../packages/core/src/index.ts","../../../packages/core/src/variable-expander.ts","../../../packages/core/src/usage-source-bucket.ts","../../../packages/core/src/presentation-template-items.ts","../../../packages/core/src/illustration-template-items.ts","../../../packages/core/src/video-template-items.ts","../../../packages/core/src/workflow-template-items.ts","../../../packages/core/src/r2-image-transform.ts","../../../packages/core/src/contracts/index.ts","../../../packages/api-contracts/src/contracts/index.ts","../../../packages/api-contracts/src/contracts/build-info.ts","../../../packages/api-contracts/src/contracts/health.ts","../../../packages/api-contracts/src/contracts/desktop-auth.ts","../../../packages/api-contracts/src/contracts/zero-user-model-preference.ts","../../../packages/api-contracts/src/contracts/presentation-images.ts","../../../packages/api-contracts/src/contracts/test-telegram-dispatch-probe.ts","../../../packages/api-contracts/src/contracts/test-teams-dispatch-probe.ts","../../../packages/api-contracts/src/contracts/zero-email.ts","../../../packages/api-contracts/src/contracts/internal-callbacks-shared.ts","../../../packages/api-contracts/src/contracts/auth.ts","../../../packages/api-contracts/src/contracts/user-export.ts","../../../packages/api-contracts/src/contracts/email-unsubscribe.ts","../../../packages/api-contracts/src/contracts/connectors-type-callback.ts","../../../packages/api-contracts/src/contracts/test-oauth-provider-authorize.ts","../../../packages/api-contracts/src/contracts/test-oauth-provider-echo.ts","../../../packages/api-contracts/src/contracts/test-oauth-provider-token.ts","../../../packages/api-contracts/src/contracts/test-oauth-provider-device-auth.ts","../../../packages/api-contracts/src/contracts/test-oauth-provider-userinfo.ts","../../../packages/api-contracts/src/contracts/test-computer-use-state.ts","../../../packages/api-contracts/src/contracts/test-runtime-state.ts","../../../packages/api-contracts/src/contracts/test-zero-agent-state.ts","../../../packages/api-contracts/src/contracts/test-model-provider-state.ts","../../../packages/api-contracts/src/contracts/test-usage-insight-state.ts","../../../packages/api-contracts/src/contracts/test-cron-cleanup-sandboxes-state.ts","../../../packages/api-contracts/src/contracts/test-slack-dispatch-probe.ts","../../../packages/api-contracts/src/contracts/test-slack-state.ts","../../../packages/api-contracts/src/contracts/test-slack-mock.ts","../../../packages/api-contracts/src/contracts/test-telegram-mock.ts","../../../packages/api-contracts/src/contracts/test-teams-mock.ts","../../../packages/api-contracts/src/contracts/test-teams-state.ts","../../../packages/api-contracts/src/contracts/test-telegram-state.ts","../../../packages/api-contracts/src/contracts/cron.ts","../../../packages/api-contracts/src/contracts/chat-threads-v1.ts","../../../packages/api-contracts/src/contracts/device-token.ts","../../../packages/api-contracts/src/contracts/audio-transcriptions-v1.ts","../../../packages/api-contracts/src/contracts/realtime.ts","../../../packages/connectors/src/firewall-expander.ts","../../../packages/api-contracts/src/contracts/zero-feature-switches.ts","../../../packages/api-contracts/src/contracts/onboarding.ts","../../../packages/api-contracts/src/contracts/skills.ts","../../../packages/api-contracts/src/contracts/zero-connector-permission-deny.ts","../../../packages/api-contracts/src/contracts/zero-connector-check.ts","../../../packages/api-contracts/src/contracts/zero-codex-device-auth.ts","../../../packages/api-contracts/src/contracts/zero-claude-code-device-auth.ts","../../../packages/api-contracts/src/contracts/zero-org-logo.ts","../../../packages/api-contracts/src/contracts/zero-composes.ts","../../../packages/api-contracts/src/contracts/zero-personal-model-providers.ts","../../../packages/api-contracts/src/contracts/zero-memory-dev-refresh.ts","../../../packages/api-contracts/src/contracts/api-keys.ts","../../../packages/api-contracts/src/contracts/integrations-github.ts","../../../packages/api-contracts/src/contracts/github-oauth.ts","../../../packages/api-contracts/src/contracts/zero-usage.ts","../../../packages/api-contracts/src/contracts/zero-usage-record.ts","../../../packages/api-contracts/src/contracts/zero-usage-daily.ts","../../../packages/api-contracts/src/contracts/zero-usage-insight.ts","../../../packages/api-contracts/src/contracts/usage.ts","../../../packages/api-contracts/src/contracts/zero-team.ts","../../../packages/api-contracts/src/contracts/zero-integrations-slack.ts","../../../packages/api-contracts/src/contracts/zero-slack-connect.ts","../../../packages/api-contracts/src/contracts/zero-slack-commands.ts","../../../packages/api-contracts/src/contracts/zero-slack-events.ts","../../../packages/api-contracts/src/contracts/zero-teams-bot.ts","../../../packages/api-contracts/src/contracts/zero-teams-connect.ts","../../../packages/api-contracts/src/contracts/zero-teams-browser-connect.ts","../../../packages/api-contracts/src/contracts/zero-teams-oauth.ts","../../../packages/api-contracts/src/contracts/zero-slack-interactive.ts","../../../packages/api-contracts/src/contracts/zero-slack-browser-connect.ts","../../../packages/api-contracts/src/contracts/zero-slack-oauth.ts","../../../packages/api-contracts/src/contracts/zero-slack-channels.ts","../../../packages/api-contracts/src/contracts/zero-queue-position.ts","../../../packages/api-contracts/src/contracts/zero-report-error.ts","../../../packages/api-contracts/src/contracts/zero-insights.ts","../../../packages/api-contracts/src/contracts/push-subscriptions.ts","../../../packages/api-contracts/src/contracts/zero-image-io-generate.ts","../../../packages/api-contracts/src/contracts/zero-built-in-generation.ts","../../../packages/api-contracts/src/contracts/zero-image-io-interpret-marks.ts","../../../packages/api-contracts/src/contracts/zero-image-share-x.ts","../../../packages/api-contracts/src/contracts/zero-banking.ts","../../../packages/api-contracts/src/contracts/zero-maps.ts","../../../packages/api-contracts/src/contracts/zero-video-io-generate.ts","../../../packages/api-contracts/src/contracts/zero-voice-io-quota.ts","../../../packages/api-contracts/src/contracts/zero-voice-io-speech.ts","../../../packages/api-contracts/src/contracts/zero-voice-io-stt.ts","../../../packages/api-contracts/src/contracts/zero-uploads.ts","../../../packages/api-contracts/src/contracts/zero-integrations-telegram.ts","../../../packages/api-contracts/src/contracts/zero-integrations-agentphone.ts","../../../packages/core/src/org-reference.ts","../../../packages/core/src/version-id.ts","../../../packages/core/src/storage-names.ts","../../../packages/core/src/github-url.ts","../../../packages/core/src/feature-switch-key.ts","../../../packages/core/src/feature-switch.ts","../../../packages/core/src/identity-hash.ts","../../../packages/core/src/staff-org.ts","../../../packages/core/src/skill-frontmatter.ts","../../../packages/core/src/instructions-frontmatter.ts","../../../packages/core/src/timezone.ts","../../../packages/core/src/model-display-name.ts","../../../packages/core/src/log-utils.ts","../../../packages/core/src/zero-workflow-skill.ts","../src/lib/events/claude-event-parser.ts","../src/lib/events/codex-event-parser.ts","../src/lib/utils/time-format.ts","../src/lib/events/event-renderer.ts","../src/lib/events/tool-formatters.ts","../src/commands/run/shared.ts","../src/lib/utils/time-parser.ts","../src/lib/utils/log-pagination.ts","../src/lib/utils/search-query.ts"],"sourcesContent":["'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trailingComma: false,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\\n'));\n if (i < items.length - 1) {\n str += ',';\n }\n else if (ctx.options.trailingComma) {\n if (ctx.options.lineWidth > 0) {\n reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +\n (str.length + 2) >\n ctx.options.lineWidth);\n }\n if (reqNewline) {\n str += ',';\n }\n }\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n try {\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n }\n catch (error) {\n // Almost certainly here due to a stack overflow\n const message = error instanceof Error ? error.message : String(error);\n onError(token, 'RESOURCE_EXHAUSTION', message);\n }\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n isSrcToken = false;\n }\n }\n node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","{\n \"name\": \"dotenv\",\n \"version\": \"17.3.1\",\n \"description\": \"Loads environment variables from .env file\",\n \"main\": \"lib/main.js\",\n \"types\": \"lib/main.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/main.d.ts\",\n \"require\": \"./lib/main.js\",\n \"default\": \"./lib/main.js\"\n },\n \"./config\": \"./config.js\",\n \"./config.js\": \"./config.js\",\n \"./lib/env-options\": \"./lib/env-options.js\",\n \"./lib/env-options.js\": \"./lib/env-options.js\",\n \"./lib/cli-options\": \"./lib/cli-options.js\",\n \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n \"lint\": \"standard\",\n \"pretest\": \"npm run lint && npm run dts-check\",\n \"test\": \"tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000\",\n \"test:coverage\": \"tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov\",\n \"prerelease\": \"npm test\",\n \"release\": \"standard-version\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/motdotla/dotenv.git\"\n },\n \"homepage\": \"https://github.com/motdotla/dotenv#readme\",\n \"funding\": \"https://dotenvx.com\",\n \"keywords\": [\n \"dotenv\",\n \"env\",\n \".env\",\n \"environment\",\n \"variables\",\n \"config\",\n \"settings\"\n ],\n \"readmeFilename\": \"README.md\",\n \"license\": \"BSD-2-Clause\",\n \"devDependencies\": {\n \"@types/node\": \"^18.11.3\",\n \"decache\": \"^4.6.2\",\n \"sinon\": \"^14.0.1\",\n \"standard\": \"^17.0.0\",\n \"standard-version\": \"^9.5.0\",\n \"tap\": \"^19.2.0\",\n \"typescript\": \"^4.8.4\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"browser\": {\n \"fs\": false\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\n// Array of tips to display randomly\nconst TIPS = [\n '🔐 encrypt with Dotenvx: https://dotenvx.com',\n '🔐 prevent committing .env to code: https://dotenvx.com/precommit',\n '🔐 prevent building .env in docker: https://dotenvx.com/prebuild',\n '🤖 agentic secret storage: https://dotenvx.com/as2',\n '⚡️ secrets for agents: https://dotenvx.com/as2',\n '🛡️ auth for agents: https://vestauth.com',\n '🛠️ run anywhere with `dotenvx run -- yourcommand`',\n '⚙️ specify custom .env file path with { path: \\'/custom/path/.env\\' }',\n '⚙️ enable debug logging with { debug: true }',\n '⚙️ override existing env vars with { override: true }',\n '⚙️ suppress all logs with { quiet: true }',\n '⚙️ write to custom object with { processEnv: myObject }',\n '⚙️ load multiple .env files with { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('Loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injecting env (${keysCount}) from ${shortPaths.join(',')} ${dim(`-- tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","/**\n * Framework utilities\n *\n * Defines supported agent frameworks and validation functions.\n */\n\n/**\n * Supported framework identifiers\n */\nexport const SUPPORTED_FRAMEWORKS = [\"claude-code\", \"codex\"] as const;\n\nexport type SupportedFramework = (typeof SUPPORTED_FRAMEWORKS)[number];\n\n/**\n * Check if a framework is supported\n */\nexport function isSupportedFramework(\n framework: string | undefined,\n): framework is SupportedFramework {\n if (!framework) return false;\n return SUPPORTED_FRAMEWORKS.includes(framework as SupportedFramework);\n}\n\n/**\n * Assert that a framework is supported, throwing an error if not\n *\n * @param framework - The framework to validate\n * @param context - Optional context for the error message (e.g., function name)\n * @throws Error if framework is not supported\n */\nexport function assertSupportedFramework(\n framework: string | undefined,\n context?: string,\n): asserts framework is SupportedFramework {\n if (!isSupportedFramework(framework)) {\n const contextMsg = context ? ` in ${context}` : \"\";\n throw new Error(\n `Unsupported framework \"${framework}\"${contextMsg}. Supported frameworks: ${SUPPORTED_FRAMEWORKS.join(\", \")}`,\n );\n }\n}\n\n/**\n * Get a validated framework, defaulting to claude-code if undefined\n *\n * Use this for functions where undefined framework should default to claude-code.\n * Throws an error for unknown frameworks.\n *\n * @param framework - The framework to validate (undefined defaults to claude-code)\n * @returns The validated framework\n * @throws Error if framework is defined but not supported\n */\nexport function getValidatedFramework(\n framework: string | undefined,\n): SupportedFramework {\n if (framework === undefined) {\n return \"claude-code\";\n }\n assertSupportedFramework(framework);\n return framework;\n}\n\n/**\n * Framework display names for UI\n */\nconst FRAMEWORK_DISPLAY_NAMES: Record<SupportedFramework, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n};\n\n/**\n * Get the display name for a framework\n *\n * @param framework - The framework identifier\n * @returns The human-readable display name\n * @throws Error if framework is not supported\n */\nexport function getFrameworkDisplayName(framework: string): string {\n assertSupportedFramework(framework);\n return FRAMEWORK_DISPLAY_NAMES[framework];\n}\n\n/**\n * Canonical instructions filename for each framework.\n */\nconst FRAMEWORK_INSTRUCTIONS_FILENAMES: Record<SupportedFramework, string> = {\n \"claude-code\": \"CLAUDE.md\",\n codex: \"AGENTS.md\",\n};\n\n/**\n * Get the canonical instructions filename for a framework\n *\n * Each framework expects instructions at a specific filename:\n * - claude-code: CLAUDE.md (read from ~/.claude/)\n * - codex: AGENTS.md (read from ~/.codex/)\n *\n * Used by CLI (upload) and web API (read) to ensure a symmetric contract.\n *\n * @param framework - The framework name (undefined defaults to claude-code)\n * @returns The canonical filename for instructions\n * @throws Error if framework is defined but not supported\n */\nexport function getInstructionsFilename(framework?: string): string {\n const validated = getValidatedFramework(framework);\n return FRAMEWORK_INSTRUCTIONS_FILENAMES[validated];\n}\n","import type { ParsedEvent } from \"./claude-event-parser\";\nimport { parseEvent } from \"./event-parser-factory\";\n\nfunction asRecord(rawEvent: unknown): Record<string, unknown> | null {\n if (!rawEvent || typeof rawEvent !== \"object\") {\n return null;\n }\n return rawEvent as Record<string, unknown>;\n}\n\nfunction getEventType(\n rawEvent: Record<string, unknown> | null,\n): string | undefined {\n const eventType = rawEvent?.type;\n return typeof eventType === \"string\" ? eventType : undefined;\n}\n\nfunction stringData(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction isFailureResult(event: ParsedEvent | null): event is ParsedEvent {\n return event?.type === \"result\" && event.data.success === false;\n}\n\nfunction isTopLevelCodexError(\n eventType: string | undefined,\n parsed: ParsedEvent | null,\n): boolean {\n return eventType === \"error\" && isFailureResult(parsed);\n}\n\nfunction isTerminalCodexFailure(\n eventType: string | undefined,\n parsed: ParsedEvent | null,\n): parsed is ParsedEvent {\n if (!isFailureResult(parsed)) {\n return false;\n }\n return eventType === \"turn.failed\" || eventType === \"turn.completed\";\n}\n\nfunction getParsedTurnId(event: ParsedEvent): string | undefined {\n return stringData(event.data.turnId);\n}\n\nfunction getResultText(event: ParsedEvent): string | undefined {\n return stringData(event.data.result);\n}\n\nfunction combineDistinctMessages(\n first: string | undefined,\n second: string | undefined,\n): string | undefined {\n const messages: string[] = [];\n for (const message of [first, second]) {\n if (!message) {\n continue;\n }\n const containingIndex = messages.findIndex((existing) => {\n return existing === message || existing.includes(message);\n });\n if (containingIndex !== -1) {\n continue;\n }\n\n const containedIndex = messages.findIndex((existing) => {\n return message.includes(existing);\n });\n if (containedIndex !== -1) {\n messages[containedIndex] = message;\n continue;\n }\n\n messages.push(message);\n }\n return messages.length > 0 ? messages.join(\"\\n\") : undefined;\n}\n\nfunction attachFramework(\n parsed: ParsedEvent | null,\n framework: string | undefined,\n): ParsedEvent | null {\n if (!parsed || !framework || parsed.data.framework !== undefined) {\n return parsed;\n }\n return {\n ...parsed,\n data: {\n ...parsed.data,\n framework,\n },\n };\n}\n\n/**\n * Preserves single-event parser behavior while applying stream-aware\n * presentation fixes that require one-event lookahead.\n */\nexport class EventStreamNormalizer {\n private pendingCodexError: ParsedEvent | null = null;\n\n process(\n rawEvent: unknown,\n framework?: string,\n timestamp?: Date,\n ): ParsedEvent[] {\n const isCodex = framework === \"codex\";\n const rawRecord = asRecord(rawEvent);\n const eventType = getEventType(rawRecord);\n const parsed = attachFramework(\n rawRecord ? parseEvent(rawRecord, framework) : null,\n framework,\n );\n if (parsed && timestamp) {\n parsed.timestamp = timestamp;\n }\n\n if (!isCodex) {\n const output = this.flush();\n if (parsed) {\n output.push(parsed);\n }\n return output;\n }\n\n if (isTopLevelCodexError(eventType, parsed)) {\n const output = this.flush();\n this.pendingCodexError = parsed;\n return output;\n }\n\n if (isTerminalCodexFailure(eventType, parsed)) {\n if (this.pendingCodexError) {\n const pendingTurnId = getParsedTurnId(this.pendingCodexError);\n const terminalTurnId = getParsedTurnId(parsed);\n const shouldCollapse =\n !pendingTurnId ||\n (terminalTurnId !== undefined && pendingTurnId === terminalTurnId);\n\n if (shouldCollapse) {\n const mergedResult = combineDistinctMessages(\n getResultText(this.pendingCodexError),\n getResultText(parsed),\n );\n this.pendingCodexError = null;\n return [\n {\n ...parsed,\n data: {\n ...parsed.data,\n ...(mergedResult ? { result: mergedResult } : {}),\n },\n },\n ];\n }\n\n const output = this.flush();\n output.push(parsed);\n return output;\n }\n\n this.pendingCodexError = null;\n return [parsed];\n }\n\n if (!parsed) {\n return [];\n }\n\n const output = this.flush();\n output.push(parsed);\n return output;\n }\n\n flush(): ParsedEvent[] {\n if (!this.pendingCodexError) {\n return [];\n }\n const output = [this.pendingCodexError];\n this.pendingCodexError = null;\n return output;\n }\n}\n","/**\n * Factory for creating the appropriate event parser based on framework.\n */\n\nimport { getValidatedFramework } from \"@vm0/core\";\nimport { ClaudeEventParser, type ParsedEvent } from \"./claude-event-parser\";\nimport { CodexEventParser } from \"./codex-event-parser\";\n\n/**\n * Parse a raw JSONL event using the parser for the given framework.\n * Defaults to claude-code when framework is undefined.\n *\n * @param rawEvent The raw event payload from the API\n * @param framework Framework identifier from the events response\n * @returns Parsed event or null if not parseable\n * @throws Error if framework is defined but not supported\n */\nexport function parseEvent(\n rawEvent: Record<string, unknown>,\n framework?: string,\n): ParsedEvent | null {\n const validated = getValidatedFramework(framework);\n if (validated === \"codex\") {\n return CodexEventParser.parse(rawEvent);\n }\n return ClaudeEventParser.parse(rawEvent);\n}\n","// Core package exports\nexport {\n extractVariableReferencesFromString,\n extractVariableReferences,\n expandVariablesInString,\n expandVariables,\n validateRequiredVariables,\n groupVariablesBySource,\n extractAndGroupVariables,\n formatMissingVariables,\n type VariableReference,\n type VariableSources,\n type ExpansionResult,\n} from \"./variable-expander\";\nexport {\n triggerSourceToBucket,\n SOURCE_BUCKET_COLORS,\n type SourceBucket,\n} from \"./usage-source-bucket\";\nexport {\n PRESENTATION_TEMPLATE_PICKER_ITEMS,\n type PresentationTemplateItem,\n} from \"./presentation-template-items\";\nexport {\n ILLUSTRATION_ASSET_BASE,\n illustrationAssetUrl,\n ILLUSTRATION_STYLES,\n ILLUSTRATION_TEMPLATE_ITEMS,\n type IllustrationStyle,\n type IllustrationTemplateItem,\n} from \"./illustration-template-items\";\nexport {\n VIDEO_TEMPLATE_ITEMS,\n findVideoTemplateItem,\n type VideoTemplateItem,\n} from \"./video-template-items\";\nexport {\n WEBSITE_TEMPLATE_ITEMS,\n findWebsiteTemplateItem,\n type WebsiteTemplateItem,\n} from \"./website-template-items\";\nexport {\n WORKFLOW_TEMPLATE_CATEGORIES,\n WORKFLOW_TEMPLATE_ITEMS,\n findWorkflowTemplateItem,\n type WorkflowTemplateItem,\n} from \"./workflow-template-items\";\nexport {\n r2ImageTransformUrl,\n type R2ImageTransformOptions,\n} from \"./r2-image-transform\";\nexport {\n initContract,\n apiErrorSchema,\n ApiError,\n createErrorResponse,\n RUN_ERROR_GUIDANCE,\n composesMainContract,\n composesByIdContract,\n composesVersionsContract,\n AGENT_NAME_REGEX,\n agentNameSchema,\n volumeConfigSchema,\n artifactConfigSchema,\n artifactsArraySchema,\n agentDefinitionSchema,\n agentComposeContentSchema,\n agentComposeApiContentSchema,\n composeResponseSchema,\n composeListItemSchema,\n ZERO_CAPABILITIES,\n ZERO_CAPABILITY_META,\n runsMainContract,\n runsByIdContract,\n runsCancelContract,\n runEventsContract,\n runSystemLogContract,\n runMetricsContract,\n runAgentEventsContract,\n runNetworkLogsContract,\n logsSearchContract,\n ALL_RUN_STATUSES,\n runStatusSchema,\n unifiedRunRequestSchema,\n createRunResponseSchema,\n getRunResponseSchema,\n runListItemSchema,\n runsListResponseSchema,\n cancelRunResponseSchema,\n runEventSchema,\n runResultSchema,\n runStateSchema,\n eventsResponseSchema,\n telemetryMetricSchema,\n systemLogResponseSchema,\n metricsResponseSchema,\n agentEventsResponseSchema,\n networkLogEntrySchema,\n networkLogsResponseSchema,\n searchResultSchema,\n logsSearchResponseSchema,\n runsQueueContract,\n queueEntrySchema,\n runningTaskSchema,\n concurrencyInfoSchema,\n queueResponseSchema,\n storagesContract,\n storageTypeSchema,\n uploadStorageResponseSchema,\n MAX_FILE_SIZE_BYTES,\n fileEntryWithHashSchema,\n storageChangesSchema,\n presignedUploadSchema,\n storagesPrepareContract,\n storagesCommitContract,\n storagesDownloadContract,\n storagesListContract,\n sandboxReuseResultSchema,\n webhookEventsContract,\n webhookCompleteContract,\n webhookCheckpointsContract,\n webhookCheckpointsPrepareHistoryContract,\n webhookHeartbeatContract,\n webhookStoragesContract,\n webhookStoragesIncrementalContract,\n webhookTelemetryContract,\n webhookStoragesPrepareContract,\n webhookStoragesCommitContract,\n webhookUsageEventContract,\n cliAuthDeviceContract,\n cliAuthTokenContract,\n cliAuthOrgContract,\n authContract,\n userExportContract,\n cronCleanupSandboxesContract,\n cleanupResultSchema,\n cleanupResponseSchema,\n orgDefaultAgentContract,\n orgSlugSchema,\n orgResponseSchema,\n updateOrgRequestSchema,\n orgTierSchema,\n secretNameSchema,\n secretTypeSchema,\n secretResponseSchema,\n secretListResponseSchema,\n setSecretRequestSchema,\n variableNameSchema,\n variableResponseSchema,\n variableListResponseSchema,\n setVariableRequestSchema,\n modelProviderTypeSchema,\n modelProviderFrameworkSchema,\n modelProviderResponseSchema,\n modelProviderListResponseSchema,\n upsertModelProviderRequestSchema,\n upsertModelProviderResponseSchema,\n supportedRunModelSchema,\n modelProviderCredentialScopeSchema,\n MODEL_PROVIDER_TYPES,\n SUPPORTED_RUN_MODELS,\n getFrameworkForType,\n getSecretNameForType,\n getModelProviderEnvBindings,\n getModels,\n getDefaultModel,\n hasModelSelection,\n allowsCustomModel,\n getCustomModelPlaceholder,\n getDefaultOrgModelPolicySeed,\n getProviderBaseUrl,\n areProvidersCompatible,\n getCanonicalModelDisplayName,\n getProvidersForModel,\n getProviderRuntimeModel,\n isModelSupportedByProvider,\n isSupportedRunModel,\n normalizeRunModelId,\n getSelectableProviderTypes,\n hasAuthMethods,\n getAuthMethodsForType,\n getDefaultAuthMethod,\n getSecretsForAuthMethod,\n getSecretNamesForAuthMethod,\n MODEL_PROVIDER_FIREWALL_CONFIGS,\n getModelProviderFirewall,\n VM0_ORG_SLUG,\n VM0_MODEL_TO_PROVIDER,\n getVm0ConcreteProviderType,\n getVm0Vendor,\n getVm0ApiModel,\n getVm0VisibleModels,\n sessionsByIdContract,\n checkpointsByIdContract,\n sessionResponseSchema,\n checkpointResponseSchema,\n agentComposeSnapshotSchema,\n volumeVersionsSnapshotSchema,\n chatThreadsContract,\n chatThreadByIdContract,\n chatThreadDraftContract,\n chatThreadMarkReadContract,\n chatThreadMarkAgentReadContract,\n chatThreadComputerUseHostContract,\n chatMessagesContract,\n chatThreadMessagesContract,\n chatSearchContract,\n chatThreadDetailSchema,\n chatThreadDraftSchema,\n generationTemplateRequestSchema,\n pagedChatMessageSchema,\n summaryEntrySchema,\n persistedAttachmentSchema,\n attachFileSchema,\n resolvedAttachFileSchema,\n chatThreadV1GetContract,\n chatThreadV1MessagesContract,\n chatThreadV1SendContract,\n chatThreadV1Schema,\n chatMessageV1Schema,\n audioTranscriptionsV1Contract,\n audioTranscriptionV1Schema,\n runnersPollContract,\n runnersJobClaimContract,\n runnersHeartbeatContract,\n heartbeatBodySchema,\n runnerGroupSchema,\n jobSchema,\n executionContextSchema,\n storedExecutionContextSchema,\n secretConnectorMetadataSchema,\n secretConnectorMetadataMapSchema,\n storageEntrySchema,\n DEFAULT_PROFILE,\n artifactEntrySchema,\n storageManifestSchema,\n resumeSessionSchema,\n runnerRealtimeTokenContract,\n platformRealtimeTokenContract,\n logsListContract,\n logsByIdContract,\n logStatusSchema,\n logEntrySchema,\n paginationSchema,\n logsListResponseSchema,\n artifactSchema,\n logDetailSchema,\n triggerSourceSchema,\n connectorTypeSchema,\n CONNECTOR_TYPES,\n getConnectorOwnedSecretNames,\n getConnectorEnvBindingEntries,\n connectorResponseConnectionStatusSchema,\n connectorResponseSchema,\n connectorListResponseSchema,\n scopeDiffResponseSchema,\n parseBasicAuthTemplates,\n replaceBasicAuthTemplates,\n extractSecretNamesFromApis,\n firewallPermissionSchema,\n firewallApiSchema,\n firewallSchema,\n firewallsSchema,\n executionFirewallBuiltinEntrySchema,\n executionFirewallInlineEntrySchema,\n executionFirewallEntrySchema,\n executionFirewallsSchema,\n firewallConfigSchema,\n firewallPolicyValueSchema,\n firewallPoliciesSchema,\n firewallPolicySchema,\n networkPolicySchema,\n networkPoliciesSchema,\n hasBaseUrlParams,\n hasBaseUrlVars,\n resolveFirewallBaseUrlVars,\n validateBaseUrl,\n type FirewallTemplateReferenceNamespace,\n type FirewallTemplateReferences,\n type BasicAuthTemplateArg,\n type BasicAuthTemplateMatch,\n collectAndValidatePermissions,\n validateRule,\n matchFirewallPath,\n findMatchingPermissions,\n userPreferencesResponseSchema,\n updateUserPreferencesRequestSchema,\n sendModeSchema,\n featureSwitchesResponseSchema,\n updateFeatureSwitchesRequestSchema,\n orgListItemSchema,\n orgListResponseSchema,\n orgRoleSchema,\n orgMemberSchema,\n orgPendingInvitationSchema,\n orgMembershipRequestSchema,\n orgMembersResponseSchema,\n inviteOrgMemberRequestSchema,\n removeOrgMemberRequestSchema,\n updateOrgMemberRoleRequestSchema,\n revokeInvitationRequestSchema,\n membershipRequestActionSchema,\n orgMessageResponseSchema,\n onboardingStatusContract,\n onboardingSetupContract,\n onboardingCompleteContract,\n onboardingStatusResponseSchema,\n skillFrontmatterSchema,\n zeroAgentsMainContract,\n zeroAgentsByIdContract,\n zeroAgentInstructionsContract,\n zeroAgentDraftContract,\n zeroAgentResponseSchema,\n zeroAgentRequestSchema,\n zeroAgentMetadataRequestSchema,\n zeroAgentInstructionsResponseSchema,\n zeroAgentInstructionsRequestSchema,\n zeroAgentDraftResponseSchema,\n zeroAgentDraftRequestSchema,\n zeroWorkflowVisibilitySchema,\n zeroWorkflowNameSchema,\n workflowFileEntrySchema,\n workflowFileMetadataSchema,\n zeroWorkflowTriggerKindSchema,\n zeroWorkflowScheduleTypeSchema,\n zeroWorkflowScheduleSchema,\n zeroWorkflowTriggerSummarySchema,\n zeroWorkflowSummarySchema,\n zeroWorkflowDetailResponseSchema,\n zeroWorkflowListResponseSchema,\n zeroWorkflowCreateRequestSchema,\n zeroWorkflowUpdateRequestSchema,\n zeroWorkflowCopyRequestSchema,\n zeroWorkflowRunResponseSchema,\n zeroWorkflowsCollectionContract,\n zeroWorkflowsDetailContract,\n zeroWorkflowVisibilityContract,\n zeroUserConnectorsContract,\n userConnectorEnabledTypesSchema,\n zeroConnectorsMainContract,\n zeroConnectorsByTypeContract,\n zeroConnectorScopeDiffContract,\n zeroConnectorManualGrantContract,\n zeroConnectorNoAuthGrantContract,\n zeroConnectorsSearchContract,\n zeroOrgContract,\n zeroOrgLeaveContract,\n zeroOrgDeleteContract,\n zeroOrgListContract,\n zeroOrgMembersContract,\n zeroOrgInviteContract,\n zeroOrgMembershipRequestsContract,\n zeroComposesListContract,\n zeroRunsMainContract,\n zeroRunsByIdContract,\n zeroRunsCancelContract,\n zeroRunsQueueContract,\n zeroRunAgentEventsContract,\n zeroRunContextContract,\n zeroRunNetworkLogsContract,\n zeroRunRunnerContract,\n zeroLogsSearchContract,\n zeroModelProvidersMainContract,\n zeroModelProvidersByTypeContract,\n zeroUserPreferencesContract,\n zeroFeatureSwitchesContract,\n zeroSecretsContract,\n zeroSecretsByNameContract,\n zeroVariablesContract,\n zeroVariablesByNameContract,\n apiKeysContract,\n apiKeysByIdContract,\n apiKeyItemSchema,\n apiKeyListResponseSchema,\n createApiKeyRequestSchema,\n createApiKeyResponseSchema,\n zeroCustomConnectorsContract,\n zeroCustomConnectorByIdContract,\n zeroCustomConnectorSecretContract,\n customConnectorResponseSchema,\n customConnectorListResponseSchema,\n createCustomConnectorBodySchema,\n setCustomConnectorSecretBodySchema,\n patchCustomConnectorBodySchema,\n zeroAgentCustomConnectorsContract,\n agentCustomConnectorEnabledIdsSchema,\n integrationsSlackMessageContract,\n integrationsSlackUploadInitContract,\n integrationsSlackUploadCompleteContract,\n zeroBillingStatusContract,\n zeroBillingCheckoutContract,\n zeroBillingPortalContract,\n zeroBillingAutoRechargeContract,\n zeroBillingInvoicesContract,\n zeroBillingDowngradeContract,\n zeroBillingRedeemContract,\n zeroUsageMembersContract,\n zeroUsageRunsContract,\n zeroUsageInsightContract,\n zeroTeamContract,\n teamComposeItemSchema,\n zeroIntegrationsSlackContract,\n slackOrgStatusSchema,\n zeroSlackConnectContract,\n zeroSlackBrowserConnectContract,\n zeroSlackBrowserConnectQuerySchema,\n zeroSlackOauthContract,\n zeroSlackOauthInstallQuerySchema,\n zeroSlackOauthConnectQuerySchema,\n zeroSlackOauthCallbackQuerySchema,\n zeroSlackChannelsContract,\n slackChannelSchema,\n zeroQueuePositionContract,\n zeroDeveloperSupportContract,\n developerSupportBodySchema,\n consentCodeResponseSchema,\n submitResponseSchema,\n zeroReportErrorContract,\n reportErrorBodySchema,\n reportErrorResponseSchema,\n zeroComputerUseAuditEventsContract,\n zeroComputerUseAuthorizationRequestsContract,\n zeroComputerUseCommandContract,\n zeroComputerUseHeartbeatContract,\n zeroComputerUseHostCommandsContract,\n zeroComputerUseHostsContract,\n zeroComputerUseWriteCommandContract,\n zeroInsightsContract,\n zeroInsightsRangeContract,\n pushSubscriptionsContract,\n zeroVoiceIoQuotaContract,\n audioInputQuotaResponseSchema,\n zeroUploadsContract,\n zeroHostContract,\n zeroIntegrationsTelegramContract,\n type ApiErrorKey,\n type ApiErrorResponse,\n type ComposesMainContract,\n type ComposesByIdContract,\n type ComposesVersionsContract,\n type ZeroCapability,\n type ZeroCapabilityMeta,\n type ZeroHostContract,\n type HostedSitePrepareRequest,\n type HostedSitePrepareResponse,\n type HostedSiteCompleteResponse,\n type ComposeResponse,\n type ComposeListItem,\n type ArtifactConfig,\n type RunsMainContract,\n type RunsByIdContract,\n type RunsCancelContract,\n type RunEventsContract,\n type RunSystemLogContract,\n type RunMetricsContract,\n type RunAgentEventsContract,\n type RunNetworkLogsContract,\n type LogsSearchContract,\n type RunStatus,\n type RunResult,\n type RunState,\n type RunEvent,\n type CreateRunResponse,\n type GetRunResponse,\n type RunListItem,\n type RunsListResponse,\n type CancelRunResponse,\n type EventsResponse,\n type TelemetryMetric,\n type SystemLogResponse,\n type MetricsResponse,\n type AgentEventsResponse,\n type NetworkLogEntry,\n type AxiomNetworkEvent,\n type NetworkLogsResponse,\n type SearchResult,\n type LogsSearchResponse,\n type RunsQueueContract,\n type QueueEntry,\n type RunningTask,\n type ConcurrencyInfo,\n type QueueResponse,\n type StoragesContract,\n type StoragesPrepareContract,\n type StoragesCommitContract,\n type StoragesDownloadContract,\n type StoragesListContract,\n type SandboxReuseResult,\n type WebhookEventsContract,\n type WebhookCompleteContract,\n type WebhookCheckpointsContract,\n type WebhookCheckpointsPrepareHistoryContract,\n type WebhookHeartbeatContract,\n type WebhookStoragesContract,\n type WebhookStoragesIncrementalContract,\n type WebhookTelemetryContract,\n type WebhookStoragesPrepareContract,\n type WebhookStoragesCommitContract,\n type WebhookUsageEventContract,\n type CliAuthDeviceContract,\n type CliAuthTokenContract,\n type CliAuthOrgContract,\n type AuthContract,\n type CronCleanupSandboxesContract,\n type OrgDefaultAgentContract,\n type OrgResponse,\n type UpdateOrgRequest,\n type OrgTier,\n type SecretResponse,\n type SecretListResponse,\n type SetSecretRequest,\n type SecretType,\n type VariableResponse,\n type VariableListResponse,\n type SetVariableRequest,\n type ModelProviderType,\n type ModelProviderFramework,\n type ModelProviderEnvBindings,\n type ModelProviderResponse,\n type ModelProviderListResponse,\n type UpsertModelProviderRequest,\n type UpsertModelProviderResponse,\n type SupportedRunModel,\n type ModelProviderCredentialScope,\n type DefaultOrgModelPolicySeed,\n type SecretFieldConfig,\n type AuthMethodConfig,\n type SessionsByIdContract,\n type CheckpointsByIdContract,\n type SessionResponse,\n type CheckpointResponse,\n type AgentComposeSnapshot,\n type VolumeVersionsSnapshot,\n type GenerationTemplateRequest,\n type SummaryEntry,\n type ChatThreadsContract,\n type ChatThreadByIdContract,\n type ChatThreadDraftContract,\n type ChatThreadMarkReadContract,\n type ChatMessagesContract,\n type ChatThreadMessagesContract,\n type ChatSearchContract,\n type ChatSearchResponse,\n type ChatSearchResult,\n type ChatSearchMessage,\n type ChatThreadDetail,\n type ChatThreadDraft,\n type PagedChatMessage,\n type PersistedAttachment,\n type AttachFile,\n type ResolvedAttachFile,\n type ChatThreadV1GetContract,\n type ChatThreadV1MessagesContract,\n type ChatThreadV1SendContract,\n type ChatThreadV1,\n type ChatMessageV1,\n type AudioTranscriptionsV1Contract,\n type AudioTranscriptionV1,\n type RunnersPollContract,\n type RunnersJobClaimContract,\n type RunnersHeartbeatContract,\n type Job,\n type ExecutionContext,\n type StoredExecutionContext,\n type SecretConnectorMetadata,\n type StorageEntry,\n type ArtifactEntry,\n type StorageManifest,\n type ResumeSession,\n type RunnerRealtimeTokenContract,\n type PlatformRealtimeTokenContract,\n type LogsListContract,\n type LogsByIdContract,\n type LogStatus,\n type LogEntry,\n type Pagination,\n type LogsListResponse,\n type Artifact,\n type LogDetail,\n type TriggerSource,\n type LogsFilters,\n type ConnectorType,\n type AuthGrantConnectorType,\n type ConnectorConfig,\n type ConnectorEnvBindings,\n type ConnectorAuthMethodConfig,\n type ConnectorAuthMethodId,\n type ScopeDiff,\n type ScopeDiffResponse,\n type ConnectorResponseConnectionStatus,\n type ConnectorResponse,\n type ConnectorListResponse,\n type FirewallConfig,\n type ExpandedFirewallConfig,\n type FirewallApi,\n type Firewall,\n type Firewalls,\n type ExecutionFirewallBuiltinEntry,\n type ExecutionFirewallInlineEntry,\n type ExecutionFirewallEntry,\n type ExecutionFirewalls,\n type FirewallPolicyValue,\n type FirewallPolicy,\n type FirewallPolicies,\n type NetworkPolicy,\n type NetworkPolicies,\n type UserPreferencesResponse,\n type UpdateUserPreferencesRequest,\n type SendMode,\n type FeatureSwitchesResponse,\n type UpdateFeatureSwitchesRequest,\n type OrgListItem,\n type OrgListResponse,\n type OrgRole,\n type OrgMember,\n type OrgPendingInvitation,\n type OrgMembershipRequest,\n type OrgMembersResponse,\n type InviteOrgMemberRequest,\n type RemoveOrgMemberRequest,\n type UpdateOrgMemberRoleRequest,\n type RevokeInvitationRequest,\n type MembershipRequestAction,\n type OrgMessageResponse,\n type OnboardingStatusContract,\n type OnboardingSetupContract,\n type OnboardingStatusResponse,\n type ZeroAgentsMainContract,\n type ZeroAgentsByIdContract,\n type ZeroAgentInstructionsContract,\n type ZeroAgentResponse,\n type ZeroAgentRequest,\n type ZeroAgentMetadataRequest,\n type ZeroAgentInstructionsResponse,\n type ZeroAgentInstructionsRequest,\n type ZeroWorkflowVisibility,\n type WorkflowFileEntry,\n type WorkflowFileMetadata,\n type ZeroWorkflowTriggerKind,\n type ZeroWorkflowScheduleType,\n type ZeroWorkflowSchedule,\n type ZeroWorkflowTriggerSummary,\n type ZeroWorkflowSummary,\n type ZeroWorkflowDetailResponse,\n type ZeroWorkflowCreateRequest,\n type ZeroWorkflowUpdateRequest,\n type ZeroWorkflowsCollectionContract,\n type ZeroWorkflowsDetailContract,\n type ZeroWorkflowVisibilityContract,\n type UserConnectorEnabledTypes,\n type ZeroUserConnectorsContract,\n type ConnectorSearchAuthMethod,\n type ZeroConnectorsMainContract,\n type ZeroConnectorsByTypeContract,\n type ZeroConnectorScopeDiffContract,\n type ZeroConnectorsSearchContract,\n type ZeroOrgContract,\n type ZeroOrgLeaveContract,\n type ZeroOrgDeleteContract,\n type ZeroOrgListContract,\n type ZeroOrgMembersContract,\n type ZeroOrgInviteContract,\n type ZeroOrgMembershipRequestsContract,\n type ZeroComposesListContract,\n type ZeroRunsMainContract,\n type ZeroRunsByIdContract,\n type ZeroRunsCancelContract,\n type ZeroRunsQueueContract,\n type ZeroRunAgentEventsContract,\n type ZeroRunContextContract,\n type ZeroRunNetworkLogsContract,\n type ZeroRunRunnerContract,\n type ZeroLogsSearchContract,\n type RunContextResponse,\n type RunRunnerResponse,\n type ZeroModelProvidersMainContract,\n type ZeroModelProvidersByTypeContract,\n type ZeroUserPreferencesContract,\n type ZeroFeatureSwitchesContract,\n type ZeroSecretsContract,\n type ZeroSecretsByNameContract,\n type ZeroVariablesContract,\n type ZeroVariablesByNameContract,\n type ApiKeysContract,\n type ApiKeysByIdContract,\n type ApiKeyItem,\n type ApiKeyListResponse,\n type CreateApiKeyRequest,\n type CreateApiKeyResponse,\n type ZeroCustomConnectorsContract,\n type ZeroCustomConnectorByIdContract,\n type ZeroCustomConnectorSecretContract,\n type CustomConnectorResponse,\n type CreateCustomConnectorBody,\n type PatchCustomConnectorBody,\n type AgentCustomConnectorEnabledIds,\n type ZeroAgentCustomConnectorsContract,\n type IntegrationsSlackMessageContract,\n type SendSlackMessageBody,\n type SendSlackMessageResponse,\n type SlackUploadInitBody,\n type SlackUploadInitResponse,\n type SlackUploadCompleteBody,\n type SlackUploadCompleteResponse,\n type ZeroBillingStatusContract,\n type ZeroBillingCheckoutContract,\n type ZeroBillingPortalContract,\n type ZeroBillingAutoRechargeContract,\n type ZeroBillingInvoicesContract,\n type ZeroBillingDowngradeContract,\n type ZeroBillingRedeemContract,\n type BillingStatusResponse,\n type AutoRechargeConfig,\n type CheckoutResponse,\n type PortalResponse,\n type BillingInvoice,\n type BillingInvoicesResponse,\n type DowngradeResponse,\n type RedeemRequest,\n type RedeemResponse,\n type ZeroUsageMembersContract,\n type MemberUsage,\n type UsageMembersResponse,\n type ZeroUsageRunsContract,\n type UsageRun,\n type UsageRunsResponse,\n type ZeroUsageInsightContract,\n type UsageInsightResponse,\n type UsageInsightBucket,\n type UsageInsightAutomationRow,\n type UsageInsightChatRow,\n type ZeroTeamContract,\n type TeamComposeItem,\n type ZeroIntegrationsSlackContract,\n type SlackOrgStatus,\n type ZeroSlackConnectContract,\n type ZeroSlackBrowserConnectContract,\n type ZeroSlackBrowserConnectQuery,\n type ZeroSlackOauthContract,\n type ZeroSlackOauthInstallQuery,\n type ZeroSlackOauthConnectQuery,\n type ZeroSlackOauthCallbackQuery,\n type ZeroSlackChannelsContract,\n type SlackChannel,\n type ZeroQueuePositionContract,\n type ZeroDeveloperSupportContract,\n type ZeroReportErrorContract,\n type ComputerUseAuditEvent,\n type ComputerUseAuditEventListResponse,\n type ComputerUseAuthorizationRequestApplyResponse,\n type ComputerUseAuthorizationRequestCreateResponse,\n type ComputerUseAuthorizationRequestResponse,\n type ComputerUseAuthorizationSource,\n type ComputerUseCommandCreateResponse,\n type ComputerUseCommandError,\n type ComputerUseCommandKind,\n type ComputerUseCommandResponse,\n type ComputerUseCommandResult,\n type ComputerUseCommandStatus,\n type ComputerUseHost,\n type ComputerUseHostDeleteResponse,\n type ComputerUseHostListResponse,\n type ComputerUseReadCommandKind,\n type ComputerUseWriteCommandKind,\n type ZeroComputerUseAuditEventsContract,\n type ZeroComputerUseAuthorizationRequestsContract,\n type ZeroComputerUseCommandContract,\n type ZeroComputerUseHeartbeatContract,\n type ZeroComputerUseHostCommandsContract,\n type ZeroComputerUseHostsContract,\n type ZeroComputerUseWriteCommandContract,\n type ZeroInsightsContract,\n type ZeroInsightsRangeContract,\n type InsightsResponse,\n type InsightsRangeResponse,\n type DayInsight,\n type PushSubscriptionsContract,\n type ZeroVoiceIoQuotaContract,\n type AudioInputQuotaResponse,\n type ZeroUploadsContract,\n type UploadPrepareResponse,\n type ZeroIntegrationsTelegramContract,\n type TelegramBot,\n type TelegramBotStatus,\n type TelegramListResponse,\n type TelegramLinkStatusResponse,\n} from \"./contracts\";\nexport {\n isValidSystemTag,\n resolveSystemImageToE2b,\n isLegacySystemTemplate,\n getLegacySystemTemplateWarning,\n SYSTEM_IMAGE_CLAUDE_CODE,\n SYSTEM_IMAGES,\n SYSTEM_VALID_TAGS,\n type SystemValidTag,\n} from \"./org-reference\";\nexport {\n formatVersionIdForDisplay,\n isValidVersionPrefix,\n VERSION_ID_LENGTH,\n VERSION_ID_DISPLAY_LENGTH,\n MIN_VERSION_PREFIX_LENGTH,\n} from \"./version-id\";\nexport {\n getInstructionsStorageName,\n getSkillStorageName,\n getCustomSkillStorageName,\n VOLUME_ORG_USER_ID,\n SYSTEM_ORG_ID,\n} from \"./storage-names\";\nexport {\n parseGitHubTreeUrl,\n getSkillNameFromPath,\n parseGitHubUrl,\n resolveSkillRef,\n DEFAULT_SKILLS_OWNER,\n DEFAULT_SKILLS_REPO,\n DEFAULT_SKILLS_BRANCH,\n type ParsedGitHubTreeUrl,\n type ParsedGitHubUrl,\n} from \"./github-url\";\nexport {\n isSupportedFramework,\n assertSupportedFramework,\n getValidatedFramework,\n getFrameworkDisplayName,\n getInstructionsFilename,\n SUPPORTED_FRAMEWORKS,\n type SupportedFramework,\n} from \"./frameworks\";\nexport { FeatureSwitchKey } from \"./feature-switch-key\";\nexport {\n getAllFeatureStates,\n filterUserOverridableFeatureSwitchOverrides,\n getFeatureSwitchDescriptions,\n getFeatureSwitchMetadata,\n getUserOverridableFeatureSwitchKeys,\n isFeatureEnabled,\n isUserOverridableFeatureSwitch,\n type FeatureSwitch,\n type FeatureSwitchContext,\n type FeatureSwitchMetadata,\n} from \"./feature-switch\";\nexport { isStaffOrg } from \"./staff-org\";\nexport {\n parseSkillFrontmatter,\n type SkillFrontmatter,\n} from \"./skill-frontmatter\";\nexport { stripMetadataFrontmatter } from \"./instructions-frontmatter\";\nexport {\n getGmtOffset,\n hasExplicitDateTimeOffset,\n isValidTimeZone,\n parseScheduledAtTime,\n type ScheduledAtTimeParseErrorCode,\n type ScheduledAtTimeParseResult,\n} from \"./timezone\";\nexport { getModelDisplayName } from \"./model-display-name\";\nexport { formatMessage, serializeError, extractFields } from \"./log-utils\";\n\nexport * from \"./zero-workflow-skill\";\n","/**\n * Unified variable expansion for agent compose configurations\n * Supports ${{ vars.xxx }} and ${{ secrets.xxx }} syntax\n * Note: ${{ env.xxx }} is parsed but not currently used (reserved for future)\n */\n\n/**\n * Variable reference with source and name\n */\nexport interface VariableReference {\n source: \"env\" | \"vars\" | \"secrets\";\n name: string;\n}\n\n/**\n * Sources for variable expansion\n */\nexport interface VariableSources {\n env?: Record<string, string | undefined>;\n vars?: Record<string, string>;\n secrets?: Record<string, string>;\n}\n\n/**\n * Result of variable expansion\n */\nexport interface ExpansionResult<T> {\n result: T;\n missingVars: VariableReference[];\n}\n\n/**\n * Regex pattern for ${{ source.name }} syntax\n * Matches: ${{ env.VAR }}, ${{ vars.foo }}, ${{ secrets.key }}\n */\nconst VARIABLE_PATTERN =\n /\\$\\{\\{\\s*(env|vars|secrets)\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\n\n/**\n * Extract all variable references from a string\n * @param value - String that may contain variable references\n * @returns Array of variable references found\n */\nexport function extractVariableReferencesFromString(\n value: string,\n): VariableReference[] {\n const refs: VariableReference[] = [];\n const matches = value.matchAll(VARIABLE_PATTERN);\n\n for (const match of matches) {\n const source = match[1] as \"env\" | \"vars\" | \"secrets\";\n const name = match[2]!;\n refs.push({ source, name });\n }\n\n return refs;\n}\n\n/**\n * Extract all variable references from an object recursively\n * @param obj - Object that may contain variable references in string values\n * @returns Array of unique variable references\n */\nexport function extractVariableReferences(obj: unknown): VariableReference[] {\n const refs: VariableReference[] = [];\n const seen = new Set<string>();\n\n function scan(value: unknown): void {\n if (typeof value === \"string\") {\n const stringRefs = extractVariableReferencesFromString(value);\n for (const ref of stringRefs) {\n const key = `${ref.source}.${ref.name}`;\n if (!seen.has(key)) {\n seen.add(key);\n refs.push(ref);\n }\n }\n } else if (Array.isArray(value)) {\n for (const item of value) {\n scan(item);\n }\n } else if (value !== null && typeof value === \"object\") {\n for (const val of Object.values(value)) {\n scan(val);\n }\n }\n }\n\n scan(obj);\n return refs;\n}\n\n/**\n * Expand variables in a string using provided sources\n * @param value - String that may contain variable references\n * @param sources - Sources for variable values\n * @returns Expansion result with resolved string and missing variables\n */\nexport function expandVariablesInString(\n value: string,\n sources: VariableSources,\n): ExpansionResult<string> {\n const missingVars: VariableReference[] = [];\n const seenMissing = new Set<string>();\n\n const result = value.replace(VARIABLE_PATTERN, (fullMatch, source, name) => {\n const typedSource = source as \"env\" | \"vars\" | \"secrets\";\n const resolved = sources[typedSource]?.[name];\n\n if (resolved === undefined) {\n const key = `${typedSource}.${name}`;\n if (!seenMissing.has(key)) {\n seenMissing.add(key);\n missingVars.push({ source: typedSource, name });\n }\n return fullMatch;\n }\n\n return resolved;\n });\n\n return { result, missingVars };\n}\n\n/**\n * Recursively expand variables in an object\n * @param obj - Object that may contain variable references in string values\n * @param sources - Sources for variable values\n * @returns Expansion result with resolved object and missing variables\n */\nexport function expandVariables<T>(\n obj: T,\n sources: VariableSources,\n): ExpansionResult<T> {\n const allMissingVars: VariableReference[] = [];\n const seenMissing = new Set<string>();\n\n function expand(value: unknown): unknown {\n if (typeof value === \"string\") {\n const { result, missingVars } = expandVariablesInString(value, sources);\n for (const missing of missingVars) {\n const key = `${missing.source}.${missing.name}`;\n if (!seenMissing.has(key)) {\n seenMissing.add(key);\n allMissingVars.push(missing);\n }\n }\n return result;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n return expand(item);\n });\n }\n\n if (value !== null && typeof value === \"object\") {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = expand(val);\n }\n return result;\n }\n\n return value;\n }\n\n const result = expand(obj) as T;\n return { result, missingVars: allMissingVars };\n}\n\n/**\n * Validate that all required variables have values in sources\n * @param refs - Array of variable references to validate\n * @param sources - Sources for variable values\n * @returns Array of missing variable references\n */\nexport function validateRequiredVariables(\n refs: VariableReference[],\n sources: VariableSources,\n): VariableReference[] {\n const missing: VariableReference[] = [];\n\n for (const ref of refs) {\n const resolved = sources[ref.source]?.[ref.name];\n if (resolved === undefined) {\n missing.push(ref);\n }\n }\n\n return missing;\n}\n\n/**\n * Group variable references by source\n * @param refs - Array of variable references\n * @returns Object with arrays grouped by source\n */\nexport function groupVariablesBySource(refs: VariableReference[]): {\n env: VariableReference[];\n vars: VariableReference[];\n secrets: VariableReference[];\n} {\n const groups = {\n env: [] as VariableReference[],\n vars: [] as VariableReference[],\n secrets: [] as VariableReference[],\n };\n\n for (const ref of refs) {\n groups[ref.source].push(ref);\n }\n\n return groups;\n}\n\n/**\n * Extract all variable references from an object and group them by source.\n * Convenience wrapper combining extractVariableReferences + groupVariablesBySource.\n *\n * @example\n * ```ts\n * const env = {\n * API_KEY: \"${{ secrets.OPENAI_KEY }}\",\n * REGION: \"${{ vars.AWS_REGION }}\",\n * STATIC: \"hello\",\n * };\n * const grouped = extractAndGroupVariables(env);\n * // grouped.secrets => [{ source: \"secrets\", name: \"OPENAI_KEY\" }]\n * // grouped.vars => [{ source: \"vars\", name: \"AWS_REGION\" }]\n * // grouped.env => []\n * ```\n */\nexport function extractAndGroupVariables(obj: unknown): {\n env: VariableReference[];\n vars: VariableReference[];\n secrets: VariableReference[];\n} {\n return groupVariablesBySource(extractVariableReferences(obj));\n}\n\n/**\n * Format missing variables for error messages\n * @param missing - Array of missing variable references\n * @returns Formatted error message\n */\nexport function formatMissingVariables(missing: VariableReference[]): string {\n const grouped = groupVariablesBySource(missing);\n const messages: string[] = [];\n\n if (grouped.env.length > 0) {\n const names = grouped.env\n .map((r) => {\n return r.name;\n })\n .join(\", \");\n messages.push(`Environment variables: ${names}`);\n }\n\n if (grouped.vars.length > 0) {\n const names = grouped.vars\n .map((r) => {\n return r.name;\n })\n .join(\", \");\n messages.push(`CLI variables (--vars): ${names}`);\n }\n\n if (grouped.secrets.length > 0) {\n const names = grouped.secrets\n .map((r) => {\n return r.name;\n })\n .join(\", \");\n messages.push(`Secrets: ${names}`);\n }\n\n return messages.join(\"\\n\");\n}\n","import type { TriggerSource } from \"@vm0/api-contracts/contracts/logs\";\n\n/**\n * Source bucket for per-user usage insight grouping.\n * Maps TriggerSource values to one of 5 display buckets.\n */\nexport type SourceBucket = \"chat\" | \"slack\" | \"email\" | \"automation\" | \"others\";\n\n/**\n * Map a TriggerSource (or null for deleted runs) to a display bucket.\n * This is the authoritative mapping used by both the SQL CASE expression\n * and the client-side chart legend — single source of truth.\n */\nexport function triggerSourceToBucket(\n source: TriggerSource | null,\n): SourceBucket {\n switch (source) {\n case \"web\":\n return \"chat\";\n case \"slack\":\n return \"slack\";\n case \"email\":\n return \"email\";\n case \"automation\":\n return \"automation\";\n default:\n // telegram, github, cli, agent, phone, agentphone, null\n return \"others\";\n }\n}\n\n/**\n * Fixed hex colors for source buckets in the insight chart.\n */\nexport const SOURCE_BUCKET_COLORS: Record<SourceBucket, string> = {\n chat: \"hsl(var(--primary))\",\n slack: \"#4ade80\",\n email: \"#f59e0b\",\n automation: \"#8b5cf6\",\n others: \"hsl(var(--muted-foreground))\",\n};\n","export interface PresentationTemplateItem {\n readonly slug: string;\n readonly title: string;\n readonly prompt: string;\n readonly embedUrl: string;\n readonly previewImage: string;\n readonly previewImages: readonly string[];\n readonly slideCount?: number;\n readonly cardPreviewImage?: string;\n readonly cardPreviewImagesByTheme?: Readonly<Record<string, string>>;\n readonly previewHtmls?: readonly string[];\n readonly colorSystemId?: string;\n readonly templateId: string;\n}\n\nexport const PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_THEMES = [\n \"prism\",\n \"carnival\",\n \"pop-art\",\n \"warm-sand\",\n \"bauhaus-primary\",\n \"nordic-frost\",\n \"forest-editorial\",\n \"coral-studio\",\n \"slate-corporate\",\n \"terracotta-clay\",\n \"berry-pop\",\n \"citrus-fresh\",\n \"mauve-dusk\",\n \"mono-ink\",\n \"sunset-maroon\",\n \"mint-tech\",\n \"midnight-mono\",\n \"ocean-deep\",\n \"gold-luxe\",\n] as const;\n\nconst PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES = {\n \"playful-launch-presentation\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e516bfce-08dd-44c2-aeef-a7cab1ffb1f1/template-card-presentation-playful-launch-presentation-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e96ec7bc-bc0c-432f-a617-69aac96dbd76/template-card-presentation-playful-launch-presentation-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/df5b4d27-0018-422a-9d16-e36969f5bc6a/template-card-presentation-playful-launch-presentation-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/42b9f430-fe8f-4d16-a49e-45f99ae8a059/template-card-presentation-playful-launch-presentation-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/01f032ec-30dd-41de-9d1f-405eb27cc308/template-card-presentation-playful-launch-presentation-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/46686b18-0e43-4563-a73a-f05bb4966084/template-card-presentation-playful-launch-presentation-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ef757d22-ea0e-4581-9592-cf113c4216f0/template-card-presentation-playful-launch-presentation-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/711f48e7-d9fd-499d-9731-d40810c38492/template-card-presentation-playful-launch-presentation-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62d80ba3-b008-44f5-bf04-4eb5a7893191/template-card-presentation-playful-launch-presentation-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/af1a6390-86b2-4800-8bc5-f1764ffbeb94/template-card-presentation-playful-launch-presentation-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/380de217-d30a-45af-8a12-b81a0a002cfd/template-card-presentation-playful-launch-presentation-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c7c72f5e-8d28-4a49-a5c3-ea41e57c8c19/template-card-presentation-playful-launch-presentation-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/277b8cba-0a28-491b-b957-27362b8e902e/template-card-presentation-playful-launch-presentation-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/da108e93-faed-4d55-a992-a8b2e3347a66/template-card-presentation-playful-launch-presentation-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2fef9c56-6730-42ea-a037-f9dd52cd1f74/template-card-presentation-playful-launch-presentation-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f86ce9c2-8127-4903-847d-c9941986f3f1/template-card-presentation-playful-launch-presentation-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3e9e3fbc-8ab6-466e-bd23-6cfaf6c4f471/template-card-presentation-playful-launch-presentation-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/21ab7eb6-f409-4143-8402-71e70b8cdbf0/template-card-presentation-playful-launch-presentation-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6d5be839-0844-4632-95e7-c8307b994a81/template-card-presentation-playful-launch-presentation-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"botane-organic-deck\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9e19e33e-6c1a-4e3d-bb5d-9de1b154a61b/template-card-presentation-botane-organic-deck-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d923c670-256d-427f-b720-dfa03f523090/template-card-presentation-botane-organic-deck-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9470f2f5-191f-4245-9494-c64b0f5e2acc/template-card-presentation-botane-organic-deck-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/65e100da-419a-4cbf-99dd-90ccbb1e6bd0/template-card-presentation-botane-organic-deck-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/99920d9a-a837-4554-9ed6-0c45371b2fea/template-card-presentation-botane-organic-deck-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ee0b8ab9-1801-4a87-8973-f01da391273b/template-card-presentation-botane-organic-deck-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d8679bb0-8b89-496c-8e85-9b95308fe79e/template-card-presentation-botane-organic-deck-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b2bfb2e7-4418-4f6a-933e-8924885e3da2/template-card-presentation-botane-organic-deck-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e13c87d6-ecb6-4e0b-a32a-25d3d70aab45/template-card-presentation-botane-organic-deck-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1e936869-7aee-453e-b5c5-fd9792bdca5d/template-card-presentation-botane-organic-deck-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b5a371cd-1972-42df-b6b9-afb23c10d321/template-card-presentation-botane-organic-deck-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62e8e14d-5d40-43c8-ace5-e2cfa4447bc5/template-card-presentation-botane-organic-deck-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/59ac5cad-a182-4fe1-bf5f-84011d92caa7/template-card-presentation-botane-organic-deck-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/816202cb-5e4d-4e0a-a988-71e9861f0675/template-card-presentation-botane-organic-deck-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/50a496c0-cefc-4800-a926-54603b064d49/template-card-presentation-botane-organic-deck-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4e9cb042-170c-4bb0-ae27-1170e665d696/template-card-presentation-botane-organic-deck-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5e5588e4-28c0-49f3-8b41-a3051e7efcb2/template-card-presentation-botane-organic-deck-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/68275cfe-5d08-4347-8515-933c543daf98/template-card-presentation-botane-organic-deck-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e515fa02-9789-476e-a0fa-9888864563cb/template-card-presentation-botane-organic-deck-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"business-data-presentation\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7422d136-aeba-4fb9-b2d2-001f6022ad7d/template-card-presentation-business-data-presentation-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/802d61cd-44c3-462b-8065-eb34f1c81fff/template-card-presentation-business-data-presentation-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9af0a230-679d-4b98-89d1-1634f3505dd3/template-card-presentation-business-data-presentation-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/36d944ce-548c-48ac-8d20-ef9789854cc9/template-card-presentation-business-data-presentation-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1b0a0751-3157-423d-8359-11fa404c1388/template-card-presentation-business-data-presentation-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/69524f5b-e966-42fd-a2b2-f66cd73765d6/template-card-presentation-business-data-presentation-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0bde4d93-1886-4c93-bcf1-063a1e69a86c/template-card-presentation-business-data-presentation-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fd2284ea-0f30-4d15-8cde-63ae0edd3c0a/template-card-presentation-business-data-presentation-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/594f59da-1ae0-42e3-ac01-97af7f7ec88a/template-card-presentation-business-data-presentation-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/791304f7-952e-4862-8209-2dd8e6735253/template-card-presentation-business-data-presentation-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/93c20663-bbf8-4ae2-b587-0dc4a7c75292/template-card-presentation-business-data-presentation-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/914e3fb7-d6c3-4bec-90b2-52b510e63c5e/template-card-presentation-business-data-presentation-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/05dceaff-f3bd-4557-ac30-e7eda5443475/template-card-presentation-business-data-presentation-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f82b2e6f-56de-486e-a05e-b13f3fa7617e/template-card-presentation-business-data-presentation-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6d1c69b9-89ac-4d53-aedc-53d71987d190/template-card-presentation-business-data-presentation-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/06cccce3-0c62-4883-a6e1-6f53642b8267/template-card-presentation-business-data-presentation-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/be635b63-8ffc-43b6-b050-8327a57951bb/template-card-presentation-business-data-presentation-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/611b9af1-b28f-4bb1-9b59-0828081fee2d/template-card-presentation-business-data-presentation-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bc89eaa4-71f4-4ea1-ac89-2b2fb8ba0d75/template-card-presentation-business-data-presentation-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"crayon-learning-deck\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/573d3324-9c37-4766-85da-a1028b067558/template-card-presentation-crayon-learning-deck-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5db0e73c-4312-4bcf-8b60-9094d2aafeac/template-card-presentation-crayon-learning-deck-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7485a80b-eea3-46a4-a2be-507990a38b5f/template-card-presentation-crayon-learning-deck-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7d6e15cb-91d9-4d72-8754-baa6ddb8085a/template-card-presentation-crayon-learning-deck-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/94734712-0cc3-4b4c-9003-84af1a2514af/template-card-presentation-crayon-learning-deck-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/007f3750-d7d9-4ac2-aa1c-62e384f320c3/template-card-presentation-crayon-learning-deck-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/56596bbb-dd78-4005-9f59-d95d8ae8f740/template-card-presentation-crayon-learning-deck-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d033dbf6-7795-4657-ba57-036d54613ba6/template-card-presentation-crayon-learning-deck-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f0f6c062-7004-4827-8278-8bcf0ac60c7c/template-card-presentation-crayon-learning-deck-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1ac6347b-85f4-4309-b900-dc7b1938c899/template-card-presentation-crayon-learning-deck-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b86464ef-6475-4d6c-a35c-b6f6a192864a/template-card-presentation-crayon-learning-deck-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c9747d98-4680-471e-8bda-d17a7e781f32/template-card-presentation-crayon-learning-deck-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bac65be5-5285-4b74-bd74-ac7c3625e62b/template-card-presentation-crayon-learning-deck-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/db4d73de-6ac9-4976-93f0-83003d2ca127/template-card-presentation-crayon-learning-deck-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/329b2c3a-443e-4300-9325-7fd9bcfc78e1/template-card-presentation-crayon-learning-deck-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8f780748-e093-46d8-9ed5-014b5638d4ee/template-card-presentation-crayon-learning-deck-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4df5908d-e971-4a00-b109-e148d8f1b9c9/template-card-presentation-crayon-learning-deck-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/78ab4a40-cace-424a-bf00-9856cbefc208/template-card-presentation-crayon-learning-deck-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1e153a66-0c52-4986-a09f-33d0eafd4f3e/template-card-presentation-crayon-learning-deck-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"creative-agency-presentation\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f40c998e-8046-487c-9bbd-6de2cfcdc7c8/template-card-presentation-creative-agency-presentation-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9ffc824b-516f-4187-b353-d3422b2d7436/template-card-presentation-creative-agency-presentation-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d69583c5-773a-4b29-8319-040858da2451/template-card-presentation-creative-agency-presentation-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/87fb4345-ec2d-42ee-940f-b1b447fdf660/template-card-presentation-creative-agency-presentation-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/caf31c90-310b-4565-afbc-56417821d89b/template-card-presentation-creative-agency-presentation-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8969312f-2959-4d7f-9d20-8a8e7086246d/template-card-presentation-creative-agency-presentation-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f5cc7730-ea22-4c98-840c-97f24eb3c605/template-card-presentation-creative-agency-presentation-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9186e9b5-54e6-4074-a218-13dab23a9407/template-card-presentation-creative-agency-presentation-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/756ca741-5821-4d80-96eb-19d4c0e32676/template-card-presentation-creative-agency-presentation-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9a7a0379-0c46-4bc0-b0f4-68d58955b615/template-card-presentation-creative-agency-presentation-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9b5f41e4-ac6c-4196-8758-1bc3b8b3fc60/template-card-presentation-creative-agency-presentation-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d178524d-c2ab-4f0d-89dd-39164f3928a5/template-card-presentation-creative-agency-presentation-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bd33d969-516d-4de3-9341-959a917a7fa7/template-card-presentation-creative-agency-presentation-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bbd6d782-d1d5-4fe5-9953-c96f8185e9be/template-card-presentation-creative-agency-presentation-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/94c2b0dd-f91a-45d7-a6e7-11d802ab23f9/template-card-presentation-creative-agency-presentation-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ce8fbeb8-7147-45d0-87c3-8369a6431d21/template-card-presentation-creative-agency-presentation-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7996a715-00f6-4e49-b7dd-1c8544917fa6/template-card-presentation-creative-agency-presentation-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c9f67da1-e05f-4db2-aee2-d4346bdff8ca/template-card-presentation-creative-agency-presentation-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9cfb560f-a59a-4284-8f7d-97cf101a77fb/template-card-presentation-creative-agency-presentation-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"data-report-presentation\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f8aa6480-16c2-4c20-8921-d1f9374a5583/template-card-presentation-data-report-presentation-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/77be1b72-eb93-40a3-8092-5f00d4773cf3/template-card-presentation-data-report-presentation-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6bea2f09-6981-48b9-96d2-32dc7c041c33/template-card-presentation-data-report-presentation-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/edb92e56-ec4f-4c68-9504-eab5a1c0d229/template-card-presentation-data-report-presentation-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5c2dbc64-ac8d-4227-b77a-54e438c945b2/template-card-presentation-data-report-presentation-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2103179a-6531-4d74-a783-f2a53d96db1c/template-card-presentation-data-report-presentation-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a6b0b5a2-ffe4-4cd4-ac0a-5248771f58da/template-card-presentation-data-report-presentation-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e3fde814-becf-4201-80de-c15ad28b9877/template-card-presentation-data-report-presentation-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/afc0eb94-05bb-45fe-8941-13345a43b530/template-card-presentation-data-report-presentation-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/627a0a57-4331-45c1-b85b-753748d32a49/template-card-presentation-data-report-presentation-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e444ffa3-fbbe-46be-8bce-b82eb05185f0/template-card-presentation-data-report-presentation-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c0657808-bbe4-421c-a539-73f29a88a9c9/template-card-presentation-data-report-presentation-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/777500cb-5c20-4ad4-80f1-b03fbabfafd9/template-card-presentation-data-report-presentation-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/75e4fd23-7e64-4a46-bf48-b56fe40d1e04/template-card-presentation-data-report-presentation-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/85e0270e-b8e0-4549-9361-9e809621fbc7/template-card-presentation-data-report-presentation-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9dddacc9-045a-4f59-9953-373f08fdbc33/template-card-presentation-data-report-presentation-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9b92dcbc-44b4-4b5d-ab9d-eea720a40f64/template-card-presentation-data-report-presentation-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/99b8df33-52d3-4f4e-8449-bb3c3cbdc1cc/template-card-presentation-data-report-presentation-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/17a13840-f70b-48c4-8ac7-9b541a4a034f/template-card-presentation-data-report-presentation-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"editorial-magazine-deck\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1551e99d-7620-49ec-bf1e-b578632a0358/template-card-presentation-editorial-magazine-deck-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/903c73a7-8b68-4f2d-8fde-b913b016ecf4/template-card-presentation-editorial-magazine-deck-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e549b9eb-9b2e-476a-88d1-ca7bb0d8667f/template-card-presentation-editorial-magazine-deck-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a020ced3-6b94-408c-9936-3f9addd6a386/template-card-presentation-editorial-magazine-deck-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/547d59dd-2c5d-4d67-b0dd-bc23d288ceb6/template-card-presentation-editorial-magazine-deck-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/41c954ab-40d3-450b-8224-12d8072e0a5f/template-card-presentation-editorial-magazine-deck-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c7bf667b-c28e-41c9-8b3d-a05ecf28fd70/template-card-presentation-editorial-magazine-deck-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/32334be2-ab20-43f8-87b8-28a31777cacc/template-card-presentation-editorial-magazine-deck-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/12b85e98-ea95-4bb7-81d3-406560a37cd5/template-card-presentation-editorial-magazine-deck-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b81decad-3717-4619-8f34-4cb9eae5c56d/template-card-presentation-editorial-magazine-deck-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/53d77993-878f-4a9f-a1fc-6739794660b6/template-card-presentation-editorial-magazine-deck-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/23fe637e-8bff-40f0-a9ec-1aff2cb3063a/template-card-presentation-editorial-magazine-deck-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7e9a2615-eafb-4fbe-91be-1c50192cb42c/template-card-presentation-editorial-magazine-deck-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6f725279-a3b0-4d30-b20f-4782d6301ec3/template-card-presentation-editorial-magazine-deck-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d8ce4a9-5ecb-4220-af1b-ab4d020dbd6c/template-card-presentation-editorial-magazine-deck-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8d1782b7-7ffe-46f2-9959-1401f8925f0b/template-card-presentation-editorial-magazine-deck-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0f906828-9f9a-4511-b402-8eeaf76150eb/template-card-presentation-editorial-magazine-deck-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/edccdf1a-affc-426c-8477-b86947032d70/template-card-presentation-editorial-magazine-deck-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3ed37006-a3a0-4347-adae-74ab5551972c/template-card-presentation-editorial-magazine-deck-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"landing-consulting-deck\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f98d416d-0c26-4442-a72f-f960321c0bca/template-card-presentation-landing-consulting-deck-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4273d3e4-08de-4a0a-b1d4-03f620310ac5/template-card-presentation-landing-consulting-deck-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b2d0970e-cdbe-406f-ae44-a544dc2058c9/template-card-presentation-landing-consulting-deck-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/41e46ea8-24f6-496e-834a-ea1f192024d7/template-card-presentation-landing-consulting-deck-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c38f2446-4972-408b-8aa2-b870aac00c8c/template-card-presentation-landing-consulting-deck-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/54caa4f0-4db9-49ed-b94f-29610ee39844/template-card-presentation-landing-consulting-deck-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/915bfc6d-5fb8-48dd-8183-86794fc51680/template-card-presentation-landing-consulting-deck-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9805a606-0587-471d-9429-d9326dcfd31d/template-card-presentation-landing-consulting-deck-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/60db33cd-70cf-4d07-bd4a-5746b3fed10f/template-card-presentation-landing-consulting-deck-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/99eafab2-1abc-4841-a3fb-f3625ee29546/template-card-presentation-landing-consulting-deck-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e24adc64-24d6-4a8d-9b64-cfed4face42e/template-card-presentation-landing-consulting-deck-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7f9ded5-98b3-4636-8c14-3aafb0ceb5b3/template-card-presentation-landing-consulting-deck-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c2dc239f-52da-4468-9a55-82c7df87ebc5/template-card-presentation-landing-consulting-deck-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7f94ec43-c3c4-4044-a5f9-84006d39fdbd/template-card-presentation-landing-consulting-deck-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/25479deb-9d31-4170-8827-77136e3c1d99/template-card-presentation-landing-consulting-deck-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d94f2dae-e7d0-4d4f-a513-b2e89b9c61a6/template-card-presentation-landing-consulting-deck-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e5ffec05-27f0-49c6-942e-1000cc95f818/template-card-presentation-landing-consulting-deck-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dfbaabfd-287f-4dfe-a48e-003e9da5db0f/template-card-presentation-landing-consulting-deck-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/85a5bd66-c044-4898-8c33-e64b874acaf1/template-card-presentation-landing-consulting-deck-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"lumina-creative-studio\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a92421d1-e4b5-4485-94b8-ba503d4dc8f5/template-card-presentation-lumina-creative-studio-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0ed47289-d3ce-4e60-b6dd-642090cc5130/template-card-presentation-lumina-creative-studio-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/78ce10cb-cb36-4c11-b8c7-e5ad59ef0249/template-card-presentation-lumina-creative-studio-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9958589a-2a37-46ee-bda8-fcd671b5be84/template-card-presentation-lumina-creative-studio-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3ef8c102-83e2-4690-800a-ecdca149d84a/template-card-presentation-lumina-creative-studio-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f865d013-fa34-43ad-9552-0cbc3ffdfad2/template-card-presentation-lumina-creative-studio-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ca187a3a-e808-4eb3-9e34-e41856d52377/template-card-presentation-lumina-creative-studio-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/00c5d13f-9458-4d87-9ae6-637e896ebe62/template-card-presentation-lumina-creative-studio-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9de8dc58-dada-4807-bb42-9ddd2a67631d/template-card-presentation-lumina-creative-studio-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d6224e63-2243-4fae-946a-53ee478ee818/template-card-presentation-lumina-creative-studio-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/991d9715-1fda-40bc-81ca-e1a0b6d53b34/template-card-presentation-lumina-creative-studio-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d1b7289-aef4-404f-b00b-1471c29c6907/template-card-presentation-lumina-creative-studio-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a7bfe0e9-3871-41f3-9e13-eb0c5cd81893/template-card-presentation-lumina-creative-studio-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3dc4e053-5613-4212-af8b-5f3454188e9f/template-card-presentation-lumina-creative-studio-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/21a22d38-ae77-4ff0-b7cb-8eeddf03efc7/template-card-presentation-lumina-creative-studio-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c89fa05a-f56a-48bb-b022-947fc09604e0/template-card-presentation-lumina-creative-studio-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7546735-b333-4dc8-a5f0-469043794f1e/template-card-presentation-lumina-creative-studio-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2d4f6e59-80ed-492e-8763-6ce2bbf32796/template-card-presentation-lumina-creative-studio-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2e043033-bda0-44ed-acd6-2d5eacd54104/template-card-presentation-lumina-creative-studio-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"mosaic-geometric-pitch\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/75c14836-a2b8-4f8a-b191-485317971dd9/template-card-presentation-mosaic-geometric-pitch-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9f6d4b35-3bc5-45be-aca3-18f6ec21530f/template-card-presentation-mosaic-geometric-pitch-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/014a0d17-b78a-48e7-b5cf-62d221204996/template-card-presentation-mosaic-geometric-pitch-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/14a7405a-25fe-4fe6-a05e-37e00fe78b2c/template-card-presentation-mosaic-geometric-pitch-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/20a6c016-082d-40c1-af47-a1a61c2f9e24/template-card-presentation-mosaic-geometric-pitch-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/125f9f28-64ec-4ec7-861b-7f508de7e1cf/template-card-presentation-mosaic-geometric-pitch-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8c545c12-fa00-4928-9d10-03cb3aaa99c2/template-card-presentation-mosaic-geometric-pitch-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a7f73d59-ea59-4b2f-a5b9-0482ddeed21e/template-card-presentation-mosaic-geometric-pitch-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/564b4bf7-ea19-4dd0-b320-2696db573aa9/template-card-presentation-mosaic-geometric-pitch-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/47350842-757c-4c4c-bf0f-ca8b14a3248a/template-card-presentation-mosaic-geometric-pitch-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/736c1ca8-0cd7-4832-87af-26ab7368252c/template-card-presentation-mosaic-geometric-pitch-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b2a98f28-8e60-4125-be6d-55b57fb69761/template-card-presentation-mosaic-geometric-pitch-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0d8eb614-f292-4992-b54e-917b35107446/template-card-presentation-mosaic-geometric-pitch-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e17df1f3-5530-4049-88d0-7c1287c0919f/template-card-presentation-mosaic-geometric-pitch-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4303dc0c-a8d6-45dc-80c0-18cbd993646f/template-card-presentation-mosaic-geometric-pitch-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/41557a1c-924f-4004-82e2-96689a341470/template-card-presentation-mosaic-geometric-pitch-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/91c4c7ec-bc83-4279-8d17-7bc918c83cc3/template-card-presentation-mosaic-geometric-pitch-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f3a8270e-5b43-4dac-b1af-4594b8093a7c/template-card-presentation-mosaic-geometric-pitch-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d889c78b-afae-494c-b912-8fd4fc79407d/template-card-presentation-mosaic-geometric-pitch-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"playful-pop-deck\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/824ca947-243b-468d-b2f2-cca11ac2fc21/template-card-presentation-playful-pop-deck-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7fd0063f-1782-41e7-beb6-8348b49b2854/template-card-presentation-playful-pop-deck-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9de5f4ed-f828-43ba-9817-059006bfae14/template-card-presentation-playful-pop-deck-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/35cd8145-7eb0-48f7-a125-031a9fb306d1/template-card-presentation-playful-pop-deck-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8b43ed5f-49c6-4b02-a363-04df4f63fffb/template-card-presentation-playful-pop-deck-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3cee34f8-ea65-4d88-8640-63e642d07115/template-card-presentation-playful-pop-deck-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ff194e5b-df8c-49ae-9b85-f17b9015b73f/template-card-presentation-playful-pop-deck-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/982e5b49-3ed8-474e-8c36-448bcd4a6e80/template-card-presentation-playful-pop-deck-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b27357bd-7424-41c6-bdf9-6b45af2f8976/template-card-presentation-playful-pop-deck-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/60ae9b9e-a4b6-4c7f-8890-98f838386af2/template-card-presentation-playful-pop-deck-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/38a1e94b-de28-4ec7-ad53-22d0f8fccfb6/template-card-presentation-playful-pop-deck-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b0d43553-5c35-44fa-b34b-c3ea8617a09a/template-card-presentation-playful-pop-deck-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9e0f8f22-3078-4aec-bb6d-f759adc31524/template-card-presentation-playful-pop-deck-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/51d0681e-cbf3-4dcd-9072-359c8770c92b/template-card-presentation-playful-pop-deck-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/14ba252c-5e1a-4f2f-abcb-d62849b96ffd/template-card-presentation-playful-pop-deck-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7e8c4886-9433-4336-92e6-8a518f3135dd/template-card-presentation-playful-pop-deck-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9fcb63ea-85cd-4347-8ad9-488d9a9db0d7/template-card-presentation-playful-pop-deck-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/18fa6a6b-faee-4f8f-bdf0-733d0580bf6e/template-card-presentation-playful-pop-deck-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c7eb7646-65ae-463b-903e-4766f0721d70/template-card-presentation-playful-pop-deck-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"bloom-pitch\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/35347eab-989d-46da-8cd4-6846e9e18ae9/template-card-presentation-bloom-pitch-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/230f3210-598c-40da-8fad-7d9542b81a4c/template-card-presentation-bloom-pitch-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/14a9175b-eef4-4e7d-bb60-460320f9218a/template-card-presentation-bloom-pitch-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/25c375ca-29a9-46a2-83f4-9c6fe1bbbd4f/template-card-presentation-bloom-pitch-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/301f42f0-6951-4a4d-ae7d-492698cc9258/template-card-presentation-bloom-pitch-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/33f0825f-7ee7-440b-963b-fa0d530d33fc/template-card-presentation-bloom-pitch-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/af105437-5b40-4aa4-a89c-d82af48c0f7e/template-card-presentation-bloom-pitch-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/31ca5d00-5892-4066-b86b-4ab0cb9a152f/template-card-presentation-bloom-pitch-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/905769f2-adc4-49d0-b4a5-d53a13b4dd2a/template-card-presentation-bloom-pitch-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3a3324ce-31ee-4e27-9185-18af861e8a64/template-card-presentation-bloom-pitch-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/14ece89e-3cac-428a-afb8-a693a7eb6edf/template-card-presentation-bloom-pitch-berry-pop-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/54187934-28bb-45f9-99b2-85a87b393b68/template-card-presentation-bloom-pitch-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bcbfde4e-8e65-4ac1-acf3-ee3f3af1c0bf/template-card-presentation-bloom-pitch-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cc225486-a2bd-4914-8bff-490178ac69ad/template-card-presentation-bloom-pitch-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a37df412-a08f-4a4f-9aa6-95fad92954e3/template-card-presentation-bloom-pitch-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4276aab6-90fe-4ea8-8672-be653e59e062/template-card-presentation-bloom-pitch-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/207bbb3b-70a3-41ad-9680-4f80dd6c6d34/template-card-presentation-bloom-pitch-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c07c402d-9dfc-4ccc-8eea-383fab53775c/template-card-presentation-bloom-pitch-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/99ca85e7-744d-4082-9cab-c0d274b1337d/template-card-presentation-bloom-pitch-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"blueprint-academy\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7d2e08a0-439f-46fe-a441-e39747de1212/template-card-presentation-blueprint-academy-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ba862728-b489-4bb4-8f6b-2afb5be91001/template-card-presentation-blueprint-academy-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/efc7d153-29e9-4180-bff0-1c6fe42bf5e5/template-card-presentation-blueprint-academy-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fac3c5c7-e87f-4482-9214-afbc37ee6135/template-card-presentation-blueprint-academy-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/beeee408-82cf-4965-bafe-2db5fb8602bd/template-card-presentation-blueprint-academy-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3557bad1-2e19-4284-a263-eece873a07f8/template-card-presentation-blueprint-academy-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/96d87e06-aaaa-4b46-8547-1876f8f1c8a3/template-card-presentation-blueprint-academy-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b6f8be0a-2ebc-4060-a6cb-f68a7640a514/template-card-presentation-blueprint-academy-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/599907b0-e101-4f73-93e6-14ed149d561a/template-card-presentation-blueprint-academy-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/87e2f57f-584c-46e4-b51c-a5549fd597c7/template-card-presentation-blueprint-academy-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e2cd5cf4-ab78-4b96-8013-aea034087622/template-card-presentation-blueprint-academy-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9814e9c7-1b58-40a5-a341-e6dbc8a8be9f/template-card-presentation-blueprint-academy-berry-pop-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/93bb8ccf-477e-4859-9a80-4117664d2bf4/template-card-presentation-blueprint-academy-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/69e3e91b-eaa4-417c-9ad4-10c19e78a72c/template-card-presentation-blueprint-academy-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a2b24f7b-ef4d-489d-a35e-42440a60417b/template-card-presentation-blueprint-academy-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/27b26028-107d-4574-975f-876a97580e15/template-card-presentation-blueprint-academy-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a54294df-1162-47c8-9734-4e63fe3e2de8/template-card-presentation-blueprint-academy-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/11516e2b-644e-45be-b302-22482daa4578/template-card-presentation-blueprint-academy-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/277df515-a377-4689-8821-69cef46faa34/template-card-presentation-blueprint-academy-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n meridian: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/de20bbf9-8e3a-4559-b973-8e5e8257a3ee/template-card-presentation-meridian-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b567ed2a-93ce-491e-a57b-3695030d15de/template-card-presentation-meridian-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0cda265e-dc6f-4155-a574-03738317ae25/template-card-presentation-meridian-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/77928d19-c357-4879-a4c4-4dcf73fa80fd/template-card-presentation-meridian-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2294bc61-1f38-42f0-82d4-3161e63a6a81/template-card-presentation-meridian-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/139debec-2762-4f12-8b51-e6c81f6bed91/template-card-presentation-meridian-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fd11cdd5-c52f-4944-a735-ac54a60788e5/template-card-presentation-meridian-forest-editorial-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9f44f1a6-8e86-48fd-9322-5e7f60cc2f9a/template-card-presentation-meridian-slate-corporate-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/766756ad-9abb-42a9-acd2-8b8d983bc001/template-card-presentation-meridian-coral-studio-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/093a5d56-c399-43a8-97eb-caa988f76a11/template-card-presentation-meridian-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/49f1dccc-8b0e-488c-813e-69db266bb7cb/template-card-presentation-meridian-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0fcac9c7-b1e4-472f-9595-5b1969f69e8f/template-card-presentation-meridian-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9896d112-e859-494e-9750-d0126af2873d/template-card-presentation-meridian-berry-pop-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/acbbf029-1f2a-420f-b9fc-5c3e9eadc9a5/template-card-presentation-meridian-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3bd1b7ec-6a88-4b4b-9622-4c844255b971/template-card-presentation-meridian-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/23eb2ed6-fc1f-4070-8b0d-693376592de6/template-card-presentation-meridian-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8c38bdf2-674d-4d1c-8d58-4cb69607dfcb/template-card-presentation-meridian-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5749c58a-6c4b-4b32-903f-7be7ae4a89c2/template-card-presentation-meridian-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/023b2be2-a37e-4c1c-8d88-19cea31a0cbc/template-card-presentation-meridian-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"neo-brutalism\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e5a46773-05fd-4924-91f2-b8c902d84958/template-card-presentation-neo-brutalism-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d9c04806-8fbf-41c1-a669-e793522204d8/template-card-presentation-neo-brutalism-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/97ab3f21-3105-4fb9-b0e0-264d9865eef2/template-card-presentation-neo-brutalism-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/58accc81-eacc-4f8f-b02a-35b5d2acb742/template-card-presentation-neo-brutalism-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c73c3b1a-0e68-4740-af75-614118574683/template-card-presentation-neo-brutalism-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9e3ddc73-36ad-4640-97c6-6420e3df5860/template-card-presentation-neo-brutalism-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/611711cc-b79f-4d02-a8e6-1ef2803797ff/template-card-presentation-neo-brutalism-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1ce685e3-8f30-4f73-870a-5c33eb50c934/template-card-presentation-neo-brutalism-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6ed0fe45-5cb1-4b5a-81a2-2cef5df8c765/template-card-presentation-neo-brutalism-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/079cb4aa-bec0-43ff-875b-4ffffa467901/template-card-presentation-neo-brutalism-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/96eb10dc-0658-43e0-88a9-4892d07d9f26/template-card-presentation-neo-brutalism-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cd3e83ce-91f3-4149-b9ad-422d00579433/template-card-presentation-neo-brutalism-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e76f1c4f-5ef7-474a-951c-0b7a4ef2898d/template-card-presentation-neo-brutalism-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2e682f70-2dab-41cb-b8d5-cbcc663bcf5b/template-card-presentation-neo-brutalism-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b8928393-4a58-4f9e-bc6b-3096c6fe51b4/template-card-presentation-neo-brutalism-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/379b03c0-17da-4aee-b790-1b516c9436ed/template-card-presentation-neo-brutalism-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3e5b2200-2a4d-4dbf-9c7a-ed69ba9dbc3b/template-card-presentation-neo-brutalism-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3a2141a4-f0fb-4610-8035-f17cd7562f5e/template-card-presentation-neo-brutalism-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7f029831-8e6d-49ce-9bb4-3879d78a2bdc/template-card-presentation-neo-brutalism-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n nocturne: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/47060ac2-2255-491b-822e-17e4879e8bb3/template-card-presentation-nocturne-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/86e393ee-3e0c-4a96-b15c-af1a6bf6421a/template-card-presentation-nocturne-carnival-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6c55154a-a225-4239-8c4e-c3e2f8963597/template-card-presentation-nocturne-warm-sand-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2c1d697a-5a5b-4745-8786-d4a200907259/template-card-presentation-nocturne-pop-art-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0ad83df4-0749-4516-a917-fe8a0a246989/template-card-presentation-nocturne-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fb54e933-d3c0-48ec-83ce-4878acc674ea/template-card-presentation-nocturne-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c5188fd6-2cf8-4967-a527-a73455608ef6/template-card-presentation-nocturne-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/32dea48f-97b4-44fc-a32c-dbd30335e67d/template-card-presentation-nocturne-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d60f2752-79e9-46d0-9f98-39f109529a2b/template-card-presentation-nocturne-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/193a67b0-1084-4b4d-a68f-ebd83cff3595/template-card-presentation-nocturne-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bab7e049-8f49-4cbf-9084-77576c755218/template-card-presentation-nocturne-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b7c2717f-cdf3-46af-8ffc-86a54d3cafd7/template-card-presentation-nocturne-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/696367c1-aee5-4c34-bc24-bdba10917111/template-card-presentation-nocturne-mono-ink-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2e5415a3-27e7-4320-97db-bc5d9d684fc8/template-card-presentation-nocturne-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/28abedd2-b9e0-447f-a445-f0daa2235fae/template-card-presentation-nocturne-mint-tech-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b84c2859-8c0e-4e9b-b997-d9ff24162e01/template-card-presentation-nocturne-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b994d5c8-9601-4108-a80b-ed4cb88b3c18/template-card-presentation-nocturne-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9192f3e7-4ae4-4bf7-ac54-03d64834ce95/template-card-presentation-nocturne-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ec854c97-62c3-4bdd-b820-cdf62fafa5ef/template-card-presentation-nocturne-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"pixel-glitch\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/481b2398-8cbe-436b-a54d-6b277cb5c444/template-card-presentation-pixel-glitch-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2480dd7a-16ca-41e7-9308-731a0a8ed3bf/template-card-presentation-pixel-glitch-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/522d8149-0bba-4cb3-87df-234d8e7c8119/template-card-presentation-pixel-glitch-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fd49cd12-5fa9-41af-ac99-0a6a7553b89f/template-card-presentation-pixel-glitch-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ee6cc1a9-a8a7-4a66-9876-2d227c5a5a22/template-card-presentation-pixel-glitch-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/51b7c1f4-6d8c-46d7-ab49-93562b316198/template-card-presentation-pixel-glitch-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/80d95fa9-436b-42ea-b8e0-910d498d55e6/template-card-presentation-pixel-glitch-forest-editorial-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d18066ad-5876-46a4-9e2b-beabc6a38c87/template-card-presentation-pixel-glitch-slate-corporate-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/55e56b20-bef1-4d48-a84e-b1cafe758639/template-card-presentation-pixel-glitch-coral-studio-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/30a04cf3-a8c1-40ee-810c-20f743888c55/template-card-presentation-pixel-glitch-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7337562e-a8ba-4fbb-8eb7-84d23d57ca8e/template-card-presentation-pixel-glitch-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/12b12048-c8e3-4db3-bb41-3a1cd52f36b4/template-card-presentation-pixel-glitch-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/89a13e2b-b065-4b37-bd7a-275fe81b0063/template-card-presentation-pixel-glitch-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/70351076-1fbd-4767-b21d-ee2948ce1655/template-card-presentation-pixel-glitch-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ade9a11c-3b04-4a50-95e3-c30850eca22f/template-card-presentation-pixel-glitch-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c85b5845-b940-477c-b612-7f3a6c8ee25f/template-card-presentation-pixel-glitch-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2b38c57a-09d3-4edf-84f1-4280b35e2c2b/template-card-presentation-pixel-glitch-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/75243e50-5478-4b14-8d4b-9162ab26b63c/template-card-presentation-pixel-glitch-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2e62a49a-5dda-4e37-b785-97627cda9db4/template-card-presentation-pixel-glitch-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n prospectus: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ee78696e-9a29-4988-b414-119e5bef18cf/template-card-presentation-prospectus-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c7621b28-8739-48e5-9d09-ef31bbad67c4/template-card-presentation-prospectus-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/911ce6d0-c609-4104-80ad-ff804f6432c8/template-card-presentation-prospectus-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/681e8f71-ab41-433a-8fb5-2bc2c6524d68/template-card-presentation-prospectus-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3d281372-94d7-494b-96a0-69d4d693fae1/template-card-presentation-prospectus-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/609ca9f6-6807-42f8-af02-64ec9abc699e/template-card-presentation-prospectus-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6f753c56-9598-4605-afde-b526761176c9/template-card-presentation-prospectus-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d2239e3-ce16-4072-83cd-9f64ecf01e29/template-card-presentation-prospectus-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/35b01a49-0f92-482d-b930-edde0cfdeea1/template-card-presentation-prospectus-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7851aeb9-6adf-413e-97ce-d4159dcfaa75/template-card-presentation-prospectus-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a3b54886-3891-4b92-b54d-ceeec40b9816/template-card-presentation-prospectus-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d9b28cff-3f80-4ade-81b5-1fb198f9a268/template-card-presentation-prospectus-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c4d91151-4df8-418e-8ed4-0ca7e3f90028/template-card-presentation-prospectus-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e4d0c1fb-042f-4a67-93dd-318dd219e1d8/template-card-presentation-prospectus-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5915d9b5-c2d8-4fe2-996b-486fd21cad27/template-card-presentation-prospectus-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a8b70c7d-c3f1-435f-9df9-7cc48a65b015/template-card-presentation-prospectus-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7a37e9f5-42de-43aa-8273-df89a7821464/template-card-presentation-prospectus-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/93c4d241-247d-45cc-ad8a-6dd8d66ee18b/template-card-presentation-prospectus-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/aeda0b75-44aa-4baf-bf45-c279aba63e81/template-card-presentation-prospectus-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n schoolhouse: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fd1bebe9-bc2b-4773-a437-969e5d820b43/template-card-presentation-schoolhouse-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/081c0721-fccd-4281-aae8-a690db56ce39/template-card-presentation-schoolhouse-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1dabfea2-d93a-4cac-b18e-71c75385a768/template-card-presentation-schoolhouse-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/43b0eb05-5efa-4e98-a342-776aec5ccf1e/template-card-presentation-schoolhouse-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d65c960e-2dce-4f6a-b8c8-c5b270df41c3/template-card-presentation-schoolhouse-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/eecf7cf5-bd26-435b-bbc9-b9e9fddf8f86/template-card-presentation-schoolhouse-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/821c23f9-46c4-4e6f-888c-80ff15250b7c/template-card-presentation-schoolhouse-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4fc14c67-2280-4430-803b-a0046cfc09cf/template-card-presentation-schoolhouse-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0d3047af-44ce-4f4c-92c9-463e9ba21b2f/template-card-presentation-schoolhouse-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/711a7c8e-dac2-459d-b751-0a016ee3763d/template-card-presentation-schoolhouse-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bedee58f-4988-441a-b207-f894f03add4d/template-card-presentation-schoolhouse-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e9301948-d620-4dee-a76b-ab2ebf228148/template-card-presentation-schoolhouse-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f91d627a-644e-4872-90b3-6abd4b7fd209/template-card-presentation-schoolhouse-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c0e50c3b-9e48-47d5-978f-5115d0094303/template-card-presentation-schoolhouse-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/50648f87-8f18-4646-ae36-2fd212e19158/template-card-presentation-schoolhouse-mono-ink-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2780816a-434d-4203-b80a-67ebd79aa025/template-card-presentation-schoolhouse-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d20120c-2920-4148-ad42-bdcfb4b799f1/template-card-presentation-schoolhouse-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a43eebaa-911f-4c1a-823e-af4a6f797c91/template-card-presentation-schoolhouse-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/be9c0717-742d-4d41-a4e8-ead241124b6d/template-card-presentation-schoolhouse-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"sticker-scrapbook\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ca5c4a1c-eb36-4462-a6e8-e64453798c5b/template-card-presentation-sticker-scrapbook-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/336e9804-41cf-41d5-a2e3-ae127205f700/template-card-presentation-sticker-scrapbook-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b43c91a7-dbc3-442f-9319-6d3d8c9dbddf/template-card-presentation-sticker-scrapbook-pop-art-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9cf18292-0ae1-4c00-bf36-552e44468ee2/template-card-presentation-sticker-scrapbook-nordic-frost-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0eebc10c-16d4-4722-8483-157fbf4dc864/template-card-presentation-sticker-scrapbook-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a020f7d4-0cab-466e-a344-5fbe832cf476/template-card-presentation-sticker-scrapbook-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/210ea3dd-4298-468f-bef2-896f8dc20948/template-card-presentation-sticker-scrapbook-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ab4ac022-0454-4c23-bcaa-a4258a2646aa/template-card-presentation-sticker-scrapbook-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9fed234f-eb63-4296-915f-1de54528a1ff/template-card-presentation-sticker-scrapbook-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f3197cd0-0b7b-4fa6-aca1-7f4dc363084c/template-card-presentation-sticker-scrapbook-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/092bd74d-0b60-49b8-88d9-7a73241bf6cc/template-card-presentation-sticker-scrapbook-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/07656a02-12dc-49fc-a328-25a7d11ed13e/template-card-presentation-sticker-scrapbook-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2d8b7b45-129b-4ace-a528-b4381f42175b/template-card-presentation-sticker-scrapbook-mono-ink-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/44e915f1-5fbc-4129-bc03-444be1beca68/template-card-presentation-sticker-scrapbook-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/72e91eab-542d-45f6-9cef-5989ab861fcc/template-card-presentation-sticker-scrapbook-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/75efce92-326a-44cf-b027-d5d265b087b1/template-card-presentation-sticker-scrapbook-mint-tech-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4bd6781b-bd7f-459f-8e58-d76f33e96854/template-card-presentation-sticker-scrapbook-ocean-deep-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2cae903b-0044-4255-9441-9b4e7d28c2eb/template-card-presentation-sticker-scrapbook-midnight-mono-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a21b891a-76f7-4195-83dc-d4fbc363ae82/template-card-presentation-sticker-scrapbook-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n strata: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/72a43438-0e3d-40af-95b3-5134e5dc3b4d/template-card-presentation-strata-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/67855d35-f892-49ce-a53f-a73e65c2ada5/template-card-presentation-strata-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/58623674-39cf-4535-817b-6bf57e0c0a01/template-card-presentation-strata-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7d0ac85f-5d2d-4cb7-9390-38b8aea3da41/template-card-presentation-strata-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/18fad345-bc9e-4c43-974a-1103ee1f065e/template-card-presentation-strata-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8a74e1a5-869d-49de-8871-479322a0d539/template-card-presentation-strata-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ee51749d-c417-4ca1-b556-28176166d86d/template-card-presentation-strata-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c6577050-4bdb-447d-bb0b-ce19a56fdb25/template-card-presentation-strata-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/11168bfc-57b8-49ce-8d9a-a38ecbe899d9/template-card-presentation-strata-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/861353d6-7c4c-45df-aec0-9ef4103694cd/template-card-presentation-strata-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4f82d9b5-65e1-4af5-8abe-cb1bfc3394d3/template-card-presentation-strata-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/661a2367-2d7c-4f46-8235-2a940c22234d/template-card-presentation-strata-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f8e12ed4-25f0-4c99-85a4-931aa56096c3/template-card-presentation-strata-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1726673d-8581-42d0-a088-16c88ab396be/template-card-presentation-strata-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/80f52012-f15e-4c0e-85c7-a66255fad20f/template-card-presentation-strata-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ae36aa15-edbd-4c21-8c52-e67e0006ab37/template-card-presentation-strata-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7e96a8c7-e056-4eb6-a3d4-3b210fc0526c/template-card-presentation-strata-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/76dbc0dd-0eef-47f2-96ae-d1581cb056bf/template-card-presentation-strata-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3d200d78-790c-4f75-863a-b164433363dd/template-card-presentation-strata-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n \"taped-consulting\": {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cc1fa0b4-4a80-4080-aa29-2e5e88fcedc1/template-card-presentation-taped-consulting-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/29a9f491-e529-4e25-a0fe-8bbad6292b5f/template-card-presentation-taped-consulting-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0962b3db-ebff-409d-84d9-280f9d776c67/template-card-presentation-taped-consulting-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a6e000f4-9495-4004-a4be-431fe3c2b1b7/template-card-presentation-taped-consulting-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/08e71cc7-b76d-465c-af0d-663f05f4e5d1/template-card-presentation-taped-consulting-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/eb1e00ad-835c-4dff-88c5-fca88e4b88c3/template-card-presentation-taped-consulting-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ffee95a5-e561-419c-ac27-fdef4495d732/template-card-presentation-taped-consulting-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7ccb111a-d790-4545-bc77-e19a0b0042bb/template-card-presentation-taped-consulting-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0ca89f7a-bd0f-4085-b7dc-d70e0558fcb6/template-card-presentation-taped-consulting-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/37298c0c-3ecf-4d39-93b7-f01c0e156b4e/template-card-presentation-taped-consulting-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d3b185af-6b45-437a-af60-ab671ceab6eb/template-card-presentation-taped-consulting-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f586c683-ae54-4ff3-9ed8-24e989f7fe8b/template-card-presentation-taped-consulting-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7aa6b6b7-2039-40d6-8d59-edbf4442ecc6/template-card-presentation-taped-consulting-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2984e4fe-83c7-4a4a-9dd0-a49a9dcb2a5e/template-card-presentation-taped-consulting-mono-ink-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/72b5c577-251d-48c1-a429-096328ac8598/template-card-presentation-taped-consulting-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b77bd363-c309-47f8-b226-074cbbbc233d/template-card-presentation-taped-consulting-mint-tech-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fdb68a30-f335-49ad-bedb-fa7d8c61117b/template-card-presentation-taped-consulting-midnight-mono-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d4d3a17f-3a9d-4de0-b6ea-dcba7b86b5d7/template-card-presentation-taped-consulting-ocean-deep-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0a2d990b-8368-4b46-8c3b-47ddb5dc9f04/template-card-presentation-taped-consulting-gold-luxe-iframe-viewport-480x270.jpg\",\n },\n vantage: {\n prism:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/536ace67-54c4-4bf2-a53e-1ff0f0062ffd/template-card-presentation-vantage-prism-iframe-viewport-480x270.jpg\",\n carnival:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fb021ec7-f6a0-4124-b096-d9ae2173e01d/template-card-presentation-vantage-carnival-iframe-viewport-480x270.jpg\",\n \"pop-art\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9df78d40-4ad9-4f07-ab09-b90dea758b19/template-card-presentation-vantage-pop-art-iframe-viewport-480x270.jpg\",\n \"warm-sand\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9a3372b6-4b7a-4bc7-85f3-172e16b8d370/template-card-presentation-vantage-warm-sand-iframe-viewport-480x270.jpg\",\n \"bauhaus-primary\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a67fd082-0300-48a2-8e06-76914aa59a34/template-card-presentation-vantage-bauhaus-primary-iframe-viewport-480x270.jpg\",\n \"nordic-frost\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b1da8e2b-e23a-41dc-8aca-c36a66676b44/template-card-presentation-vantage-nordic-frost-iframe-viewport-480x270.jpg\",\n \"forest-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/66af2f92-353b-4d27-a12a-765e1186655e/template-card-presentation-vantage-forest-editorial-iframe-viewport-480x270.jpg\",\n \"coral-studio\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/39c3bbd2-49e9-4254-847a-353aabd6b1ed/template-card-presentation-vantage-coral-studio-iframe-viewport-480x270.jpg\",\n \"slate-corporate\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/71e1059c-b040-4a6d-a7eb-0ae10b57e41e/template-card-presentation-vantage-slate-corporate-iframe-viewport-480x270.jpg\",\n \"terracotta-clay\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/70232c94-4890-4dea-9e86-3d480b62f83a/template-card-presentation-vantage-terracotta-clay-iframe-viewport-480x270.jpg\",\n \"berry-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2471901a-80ed-4006-81cd-432b6a1fe4f6/template-card-presentation-vantage-berry-pop-iframe-viewport-480x270.jpg\",\n \"citrus-fresh\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2067e8c2-1d63-4764-8327-8b31a9313ba7/template-card-presentation-vantage-citrus-fresh-iframe-viewport-480x270.jpg\",\n \"mauve-dusk\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/87ebbe2c-2877-4133-8a5d-385b81a3068e/template-card-presentation-vantage-mauve-dusk-iframe-viewport-480x270.jpg\",\n \"mono-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1466a7a7-fb13-44db-8687-9c99d282dd8e/template-card-presentation-vantage-mono-ink-iframe-viewport-480x270.jpg\",\n \"mint-tech\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f46edc1b-d119-4098-9b72-739227219258/template-card-presentation-vantage-mint-tech-iframe-viewport-480x270.jpg\",\n \"sunset-maroon\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fc40f686-cf2a-41b4-b5d9-02568b6c25a4/template-card-presentation-vantage-sunset-maroon-iframe-viewport-480x270.jpg\",\n \"midnight-mono\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d1ee4993-9f2d-417e-a517-1db4fe580e21/template-card-presentation-vantage-midnight-mono-iframe-viewport-480x270.jpg\",\n \"gold-luxe\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/583606ad-eaed-472e-8495-03c57b778db4/template-card-presentation-vantage-gold-luxe-iframe-viewport-480x270.jpg\",\n \"ocean-deep\":\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fbcc6ed8-6881-44d9-aedc-9478b6cd3eb8/template-card-presentation-vantage-ocean-deep-iframe-viewport-480x270.jpg\",\n },\n} as const satisfies Readonly<\n Record<\n string,\n Readonly<\n Record<\n (typeof PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_THEMES)[number],\n string\n >\n >\n >\n>;\n\nconst BOTANE_ORGANIC_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/64d1a85a-9347-48fb-860b-073180385b66/botane-organic-deck.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a43f103f-e4b3-40b0-a326-c37a2240e6b5/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/576f05a7-2d2c-4963-876b-6eda1fe8f93e/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/12a44151-de3a-465d-9631-df029387a922/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cc6d6522-6f49-4dd0-a122-903a2251f014/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2195f286-6e9e-4171-9240-90c03924b898/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/889dd3cf-913c-4f79-99fc-c57f4346cef5/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b1116116-80a5-4d4c-bd74-43a66bed970b/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3d0f5b82-cb4d-4b5a-8c7b-de8941758cf8/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7a5835b1-9545-46e1-ac8b-4d33de6fca14/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/72162ad3-7cda-4eb8-9bc3-9a986c06e120/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/68e2256e-3872-45b5-bcc6-a7cedf6d3e8f/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2a7fd3d2-562f-4b49-8854-562b13fa7fbc/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ba0a9ade-6eba-4a63-8772-976b30ab17cf/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7da6a51c-4a78-4e50-9cbc-899879e72875/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst PLAYFUL_LAUNCH_CDN_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/774bdd46-ca62-40b5-b56b-95fd2ff2d302/playful-launch-presentation.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dbb11b25-20e0-433e-94d5-9a094667d5a7/aplocoto-slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d6a0800b-729e-4399-ba74-e3d56b4e9b00/aplocoto-slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/67781114-f6ff-45fd-bb74-bf65df1b75e9/aplocoto-slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9860a2f5-512a-4f0c-a215-33ad6153ee66/aplocoto-slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7c884040-00c0-4237-8560-44a78c9bc9df/aplocoto-slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/90905547-8551-46ee-91fe-cdf364a0a415/aplocoto-slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/13260433-b222-4561-a62f-273f2c275f4c/aplocoto-slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f88b5182-4312-49a7-bd1c-3814405d5205/aplocoto-slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/060dafd9-d147-4a42-89dc-4b22fa92e880/aplocoto-slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d104d1c5-c038-40b0-b7e2-078a9f93c062/aplocoto-slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d51c10d0-fdba-41b3-b88f-1d4e118c7368/aplocoto-slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7e3ca86-846e-44f9-8eb0-637699168192/aplocoto-slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ecc39ab1-0a68-4da5-9cf4-20b1e0b2eeb0/aplocoto-slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f403f161-f63c-427f-ae15-401ede2672d9/aplocoto-slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst BUSINESS_DATA_CDN_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9aa42296-a49e-4128-a80a-e920637b1506/business-data-presentation.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/04a3765b-ef6a-4bbb-8ae4-b116941760cf/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1919e6e0-2adf-4727-825d-3470568733e7/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62d71bc2-9359-4a41-bde6-da6e4d9d0fd0/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d587627-8f20-4aed-ad2b-0593f58c22d9/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b16f1790-05be-4a49-85cd-3417c51376c9/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/de3b1bca-c6bf-4f45-ba6e-898ebb51c8ca/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f1fdaf81-3914-4882-89c1-eb2da901dfd8/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/982833de-dd95-4560-81b5-8b006d7fe3c7/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/15fbcdfa-fc5c-48a8-aa4b-4ea88550b1e2/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4a29b39a-97d0-4c26-892a-85e808f0a21f/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/056c9f76-3ee0-4990-a445-72044cc84a66/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a1a1fc29-4682-484e-b5eb-2e09c5b0c8d3/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7817bac4-9ecd-4e00-a532-d6ba2816c322/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/37616a8a-7386-49f2-8e18-198a2a234d4a/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\n// Batch presentation resources migrated from Google Drive to private R2.\nconst CRAYON_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c4d3f251-c143-4cb7-86f5-97042123ef90/crayon-learning-deck.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8183eea0-8016-4680-82b8-8ad3a3b5ada2/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/356c7e99-4895-44e1-a56d-d53dfb0d722e/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f81f04ee-f164-4d0b-abd2-1bec62637036/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2aace698-e937-4c5c-83b7-43b4ea6aa193/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/db411e40-59c5-4428-b2fd-dc71846bbf32/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4cea2af8-cd7b-4446-a895-03e151591e9a/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1e500a83-2644-49b6-a7a7-dabb10025344/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a6c157ad-644f-4dd8-be84-c04ad53e8eba/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/abadaabc-a366-40b7-8cad-17e302e24cea/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/810651dd-7c4e-4115-a9b4-8eb4e804e669/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/52fac853-0a29-4215-951d-2d9780720119/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/32876cfe-2e5e-4807-b308-06a9b617ac36/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6db8270e-31fb-4df6-9d8f-495dced6c2ed/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d82049a8-dbb6-4425-9043-058720a335a6/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst CRAYON_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/351717b6-5c48-42c5-a349-d8a815bc229f/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c4116423-38ef-48d9-9728-695bf265e510/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2cb2711a-0638-4673-a47b-69a51116e21d/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/32f3a867-b29d-4b0e-ba32-073167892556/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7e49363-33ae-48c6-998a-f911e51bf340/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0c005465-e491-4d84-915c-efc892bf6030/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3baf78ed-8cec-4da1-9734-3a8ca51a1d6c/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/803373ba-fa20-4ebd-84ad-cb73f4e10dcd/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/27ef439c-3dc2-49d2-b5ca-de98d20f2ca6/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c498a285-2d3f-4c76-9ebb-d26ad42f677c/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b79a2ac4-ef78-4a3c-b47e-6f1310756b7c/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e8dac0bc-f2a2-440c-ade3-c979d34b7459/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3f6c4cae-cac2-4cf1-93d8-d2d4609cad8e/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0742c906-1dcb-4bec-80e3-f0e5387e727d/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d13fd530-4917-4378-8e2b-8c0befd96119/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst CREATIVE_AGENCY_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6494f661-c935-4ab2-9181-600097bde23b/creative-agency-presentation.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a1883f03-854f-4f31-9da5-5d1f80179ea9/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/261165ff-ded6-4662-9b1a-62df42b234b0/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a2e4e44e-1a6d-491f-903c-4e2188023d3c/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/39871f71-1392-4911-8771-f22b715d7a9e/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f8b8651e-de6b-4adb-a733-c92dc0f859e6/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1d3342e3-e91f-48df-8302-1931423f7de6/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/70e13d5b-d9df-4e39-a257-ded24b0fd2f8/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8280b48a-4c05-4022-ae9c-8b5073562b53/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/efe70b44-2eaf-4094-8404-a2238e101d42/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6bc29f83-9a2f-4f9a-bf63-b7d30acc6941/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c6ca5fe0-1def-4eb2-a5fe-2e31fc60dac7/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7557bbcc-8502-43eb-8d91-fa2b8035e15d/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/07fa40fd-5c73-4913-9ed2-a248e3e56865/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62403bf8-6aac-40af-b279-95239dc20139/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst CREATIVE_AGENCY_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/440dde23-496f-4e4c-9b78-226deda76c4c/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/80de0f45-96af-4131-8cc8-9f6a058efe96/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5acb529d-e17a-4b7b-b418-1dc49f50bc53/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ebc56020-ec50-4125-8467-f6361648687b/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/20d61d5a-a7d2-4cf5-a7ba-2d507e8df1d8/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8a89a5f5-af1c-4b64-941d-59fd55904c43/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/152b7fb4-5619-4344-a714-0a29434f082c/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/aa8de55e-a778-4a24-b530-9c76bcb85991/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/afe9346a-de0f-4141-9434-e5bda6f09efe/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/995f23c4-bda7-4f8c-80bb-cd5e4eda3f57/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/de3d07df-083a-4218-8c86-fcff79251a47/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a21f6ee8-f967-4415-9825-27c08a28cc09/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f25909ac-88d6-48eb-859c-488d5bbacd9f/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1bea8f97-d0e5-4240-bae5-c3bbe5cd5ba2/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/188bdf52-0a5b-466a-8417-b8920e35fb5a/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst DATA_REPORT_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/26958aa5-8823-484f-8bce-6f60a8663a72/data-report-presentation.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/efa3e160-e608-4658-9395-9a4139899038/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/edd27584-ef9f-4611-b8ab-59e3ac7247ad/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a505694f-8511-45bb-94bd-0095b75e6028/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/77cb14b3-aec9-4694-9a12-880eb0a11fc6/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/02dffc66-0883-45bc-9567-a063368619b5/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c11f15e4-e164-4803-9d39-9b787e1b35c5/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6c426018-8ec4-43c6-8998-4b1ae1aff6d1/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/19fceff3-2317-4e84-9918-600a66bf375a/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/401c3f73-810b-4ebc-a448-7d9bd5ecc882/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8b97bb9b-667a-4596-bbf6-fba2c55eca5f/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dc80199e-4b44-4602-8b4b-6af9d65f1845/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/95a0c217-421f-4a57-97db-700b076eed1a/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8e7c176a-7997-4b5d-9773-68cf0b307c8e/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a0269c99-9d1b-44e2-b49a-0980820b3b90/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst DATA_REPORT_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/16310322-2d80-4142-a5f5-7bcff8c3eed0/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/be665757-c3d0-4091-b957-9b2090d6523d/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/38b3ce82-7212-44d1-a5ae-a9477ce5e086/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/90d4ca26-8f11-413d-a9d5-611c3dfb7971/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b08266e5-92fe-45c8-82bd-a02a1921e780/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e958c1d0-9674-4149-94e5-23a6b78b7151/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/99d8ebd7-fdc7-427a-a000-a24675b1a730/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/04fc9197-1543-487c-82eb-0560cde0c17d/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f979bae9-63ad-49fb-81f1-f4149e244fe0/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/eb896ae1-adf1-4681-948d-564c73a6ac82/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/479c66d1-7999-43ef-a24c-e18399053105/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5e9763c0-7dfb-495c-af1d-9cf25bcfcb4c/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a9f6fc70-1099-461a-be6b-a4bbabce5f4a/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/be6017d7-be11-436c-b67a-050ebee5fdb7/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/41099f41-7548-4a11-beb5-cebde83df691/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst EDITORIAL_MAGAZINE_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/adf552b2-53ed-4282-b08c-2359f3b124ff/editorial-magazine-deck.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/63b4c9a6-7f1a-4f49-af9b-dd93d9d9138a/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b7dc0361-f59a-4fdb-b350-f18bc99a422e/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4718eb4d-7672-4194-9710-f980a5e9d4a1/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/26bc2e44-8975-48d2-a659-0364f148c835/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3b3e8dab-8f75-4773-a467-043e5525b491/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/646d057e-f8d8-48e1-862e-db4095c2af28/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/506d1159-c15f-4b63-ad09-3ab538036099/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9618e2b2-425e-43c3-9399-6c89ea8ab458/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5008900e-ebc8-4355-b07e-995624af5a52/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0a84ce72-1816-4f5e-8e17-9d9ed3f7d7a4/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9e80c360-a1ef-45d4-a0f2-fd18c1ce8f2a/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/172f784b-3502-485f-9ab4-e4714afa7b22/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2897a88f-0b4c-4892-bb32-eb4545cc3acc/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c453a78d-8109-423b-ae0e-278123d38239/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst EDITORIAL_MAGAZINE_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/539b64b7-ba42-4f62-a54f-1427b2afddb3/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b1a544b4-a4a1-4292-ba63-61843a14c5b3/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d4880c62-7c63-4696-b80a-2bed0108a988/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/84ddea62-a1eb-425f-8b09-450f104aa3a5/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/02425e87-5b9f-4680-bc3d-2c58c7d2adc1/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/85d7e4f9-31bc-4ba8-9b21-11be2342d135/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/58c58583-41fb-4d78-be75-1c905a8776f1/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/15c39a3c-05e0-41e5-b5b8-71ae03377232/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a9decabb-f920-46b6-a5f9-a5ec3d12b962/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62965071-8c8d-4b14-970c-3e7903c85195/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8d81c8d4-c1d4-49e1-b9cf-60ee42b1c225/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1539da62-2481-4dfc-8b5b-5ca6118bc1f3/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/326ebe33-8072-4a14-af18-70ec77f59360/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b45db466-6e73-418e-9e65-f86a3c17be8b/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/512d2421-0d60-44ed-81b1-29620a93ed5c/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst LANDING_CONSULTING_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fb94c9f1-8ab7-46cc-a08a-693e40337f06/landing-consulting-deck.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ca96e383-1431-466c-8c3e-9fc13a91d2c5/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5a8a9671-68bd-4d07-9fb5-078bdb0199a6/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/710c14c7-3dc6-4b10-b8d8-27fc4df2a0b0/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0eda445b-ed1d-4922-8a9e-ae8e39ff06e8/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e9e61546-3e5d-4307-ad97-7b5ddf92a960/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8646d1e2-4d3c-43c4-970a-df36476eec9c/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8dada9ca-9908-42c9-a010-ce42e431f108/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/73fc1ea3-e10b-4151-b0fe-e2cdf4ec7e4c/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/39f3b5b2-5cc9-409b-affd-f861460f1b8c/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3f241aa1-5cad-4030-a00b-cb6402390704/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a79c9f31-d9cd-40c3-8cca-907599ee2a9a/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/622ee524-2f19-44a0-9613-26036f4474e4/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e38718d5-1059-4df4-a322-e9d73369c57e/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a5f1fff4-18f9-4eaa-860c-c9ce8b57922d/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst LANDING_CONSULTING_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b02b4e7a-861d-4db3-af6f-a6e1f492a805/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/512dda48-57e2-4264-aba7-21500b56e38c/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a15f57d1-fbad-4a2a-ae3b-e02f97eef373/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/45047a7b-242c-4cda-a8d1-98471d8bd8e7/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a138a120-8d27-4bfe-8e9b-2dee7e8398ad/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8a2d4e51-7515-442b-9ff6-8ea1d74cbaed/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a0d46684-2831-4653-80af-34e0e6492da7/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c43fff61-c6a6-4524-a222-9ccbfb25e82e/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7016072-aada-44f8-93cf-15c2cf0bbcf9/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f4b22edf-cf10-4f7c-acbe-fbe5dab95f08/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/100de24b-6e80-40c7-864c-2dece1e3fcef/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/135a102e-1f28-4fc3-8d26-f57bc93ce1f9/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d5e42744-3bbc-4e85-9f6a-dae697986214/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4507a7cb-ac95-4363-96bb-03def14afbe3/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9b54f283-b5de-4d49-a525-d3ad1b2304e8/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst LUMINA_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a9c9d0c7-726c-4013-802d-cde1feefd058/lumina-creative-studio.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/592fe965-5a74-4366-b8b9-e58605dcc16e/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fb9df939-ec5a-4949-980d-7300eee0def4/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dc1afd19-e772-4e27-baa0-5b0790b7b056/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/abfe04fb-2f9e-42bd-b7da-9613676dee09/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/71b059b8-e4b3-4aea-9210-10c0f321f827/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c91c081d-70a1-4a73-b7f9-2f2cce4c309f/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/065462c6-ed5f-499a-adb8-fec17c468cb7/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9733dd6f-9aa3-440b-88c4-cfcb61676035/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7dbb64c1-0a07-4b36-b96f-b1a460503f68/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/06a117bf-ca82-4a80-a282-3836a8079994/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ddbcb419-6eba-41d6-aa30-0677352a042c/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/40783c03-36a1-40a7-91e4-f974d9aa8a58/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8a7c8c68-12e8-4500-ae37-5b7db7d782c7/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a913f8f3-3aa4-47d6-b29b-fe39de18ebaa/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst LUMINA_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/77b00b14-0909-4e10-afea-3c39ae74db73/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/01faf670-8355-43f4-bd87-a283eff2500b/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/1721d052-b4d9-4c8e-be68-b9d433dcc504/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/995dc4b4-929d-4788-9f42-6da9e37c7ffd/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c20a8bfb-4b85-4407-abc7-ac8b5e04f13d/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4c6d6b98-8f11-4afe-8d44-1d07f0fc52f6/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2f236399-80f4-48d9-aa92-9f5c4fb2d161/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e02a7dc9-1fe7-454b-82ea-5968d10d5d73/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5373c442-9cb4-4245-99c0-270fe449880c/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e3234608-ff95-4de6-84b4-50f077062609/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7779e5ca-9759-470c-abe2-3d9aa7e68e5c/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9e45d5c9-9b2d-4b28-95ad-965a8566d48b/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/009219ba-4047-4e84-87d7-9d1295728751/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/da94d8b8-375e-413f-91c0-8b84f631744e/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5c3ad467-780a-4a59-b95c-26379e13e598/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst MOSAIC_GEOMETRIC_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0491adb1-f2a3-47d3-8075-509e036e913d/mosaic-geometric-pitch.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/22fd98ad-7ca0-4b08-8e9e-383da4ccbb49/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a04cac03-384e-4e05-95a2-d345e95e1141/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5e3518b8-5077-467a-a2d5-612f754c8535/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cdbb1d16-dd0f-46a4-b43e-0963a4f2e7c3/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0c2632ed-2313-4286-9921-aa39e9472371/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cd4b3cbe-5287-4a8a-ae18-107f3bfd2419/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/279d368b-4772-460f-9fe6-aea782745e70/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/92acc27f-60fe-42e7-8960-8c95b3921986/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dd46a4b5-cff3-42a5-b39a-0add674c20c0/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0eca7af8-e188-4001-88d3-99b47fd49c2b/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c29e6151-c5c1-401a-9263-2949209e2a70/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f7132349-afea-44aa-8294-ca0e35a44210/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/847e4eb8-6f15-4b18-9133-eb48da0a0e30/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5355056e-e86d-4a65-afa3-9e3be0d05a32/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst MOSAIC_GEOMETRIC_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/58a4dec5-db7a-4e03-835e-e49637dba964/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/62d75fe7-4224-4943-a765-f558ab426bce/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b4482261-179a-4ca0-8a00-0186a51fcc1c/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/af249477-c261-41cd-86d4-8e1aba376a32/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e7f1da55-2c8c-4858-aa13-33ab42d216ba/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/2992c1ee-84db-4ab5-b251-a317a160de66/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/35e0c6f8-f96e-4c67-8375-62ce1c47178f/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/61a88e05-442b-4b25-9488-2f5e2df4dcf8/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/140aac80-54d7-46bb-af05-40121cc85f0a/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/60b1ad5d-631b-42fc-8b29-bedf3b4e2a6c/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3c3fd19a-8087-4177-bdd9-e7dde6109a2f/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0cc9cb46-0019-4d45-a33d-5fff36c2a754/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/29123d43-c90a-48e4-9d1d-f1657f396a34/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/23284bc3-078b-4cd2-a3e2-f207605e6ad1/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ac616f61-f1bc-44af-8862-c219f7f74bfe/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst PLAYFUL_POP_PREVIEW_IMAGES = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3b6e8fbf-15f4-46cc-a2a6-8d3ef33d9d32/playful-pop-deck.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/083b8e2c-ea0a-434b-93c9-69d129ed242c/slide-02.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/9d957db7-4449-4fe9-8adb-6eff201b0fcc/slide-03.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/25afe786-d2c6-4d49-acbc-d8c60fce5fb4/slide-04.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b2c5cf99-65ec-49f1-861e-0a80905ae5e5/slide-05.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/e6a1d840-de51-4aec-a773-e3e8abe1ec1e/slide-06.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dd4589bb-563e-44cf-bc26-f11b7db3a20c/slide-07.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/8a34076e-f629-4da3-a25b-68cf705cc788/slide-08.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/06757c76-66fb-4b6d-ac26-a6e0b50f9cd5/slide-09.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/60f90bbb-bdb0-4f17-9258-4e52e8e41d91/slide-10.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/17941998-dab8-48ee-bda2-f6d6a502ff98/slide-11.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/7cbb4445-e1ae-4876-8ac8-39d8bbb79df3/slide-12.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/82b45a46-b5f3-4a97-a480-e07cadac0a96/slide-13.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/85672b12-bd99-4748-9b56-ec39aae695f5/slide-14.png\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/805bd601-9e99-40b1-a66a-34251c70c787/slide-15.png\",\n] as const satisfies readonly [string, ...string[]];\n\nconst PLAYFUL_POP_PREVIEW_HTMLS = [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/098f0ce4-c773-4479-ad85-221c9114881a/slide-01.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/009db4d7-19f9-4266-a08d-2eb827678fde/slide-02.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a143dba3-9e72-44c5-a105-0e5228125a1c/slide-03.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b541db0e-322e-4604-9b13-ff117b5fcf7f/slide-04.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/3fa2f420-248a-4679-b76e-fb620fd67868/slide-05.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/859a88eb-5f9c-469b-b6c7-5987fe9e92f0/slide-06.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/23b1ec6d-ba39-41a6-923f-7c125c530f08/slide-07.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b469c7a6-5151-488d-a59f-e38e091e376d/slide-08.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/46c96f07-8232-44fd-932e-e0a6e6abc0a0/slide-09.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/465fb0cb-18ff-4284-a184-d6a7cc8aa49c/slide-10.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a72c8c6c-c5d5-4fac-95bd-f299102d344e/slide-11.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/27203fae-eb0e-49eb-8077-e69f7a888382/slide-12.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/bde44218-8dfd-418e-863a-f6e99808b2b3/slide-13.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f84b61fc-4775-4ee3-ab28-fa9762b602fe/slide-14.html\",\n \"https://static.vm0.io/vm0/artifact-templates/presentation/c3eaf388-6b9f-49b6-90af-ce27eedb87e2/slide-15.html\",\n] as const satisfies readonly [string, ...string[]];\n\nconst PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES = {\n \"bloom-pitch\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4124c01a-a6c7-484c-9e22-8dd4d62a6c6c/bloom-pitch.png\",\n ],\n \"blueprint-academy\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ffa9f511-0e01-4191-99a6-3d6621b99661/blueprint-academy.png\",\n ],\n meridian: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/189d2344-ca5f-4dbf-86ce-04b1567c062f/meridian.png\",\n ],\n \"neo-brutalism\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/a184e26a-c514-434e-9467-a19b2af1e979/neo-brutalism.png\",\n ],\n nocturne: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fb660157-e71e-4064-8a96-0c707c7e6a1f/nocturne.png\",\n ],\n \"pixel-glitch\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dfcbf20f-9341-4f3f-a93d-4df159f6c4fd/pixel-glitch.png\",\n ],\n prospectus: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/5aad7d6c-4ca1-4041-985c-27674403c382/prospectus.png\",\n ],\n schoolhouse: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/b8cdd8b6-122d-461a-8dc4-d17a73ad09e5/schoolhouse.png\",\n ],\n \"sticker-scrapbook\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4a6c9374-be17-40f9-83e9-acd7d6461efc/sticker-scrapbook.png\",\n ],\n strata: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f931d6b1-c44e-442a-bcd4-c23f60888a7d/strata.png\",\n ],\n \"taped-consulting\": [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/fbf6d3b5-9a96-46a4-9fe6-6874b1bb5b63/taped-consulting.png\",\n ],\n vantage: [\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6d1aea99-3215-41b6-9994-6a4613d64524/vantage.png\",\n ],\n} as const satisfies Readonly<Record<string, readonly [string, ...string[]]>>;\n\nexport const PRESENTATION_TEMPLATE_PICKER_ITEMS: readonly PresentationTemplateItem[] =\n [\n {\n slug: \"playful-launch-presentation\",\n title: \"Playful launch\",\n prompt:\n \"/gen presentation, create a 15-slide launch deck for SproutPop, a playful habit-building app for remote teams introducing a shared 30-day wellness challenge. Present it to people and culture leaders with cover, agenda, launch story, audience pain points, product vision, feature tour, rollout timeline, activation moments, team, early metrics, testimonials, pricing, and next steps. Make it saturated, joyful, idea-led, and structured.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/daf7c2d1-5195-4c09-ad4b-8d85778fc104/playful-launch-presentation.html\",\n previewImage: PLAYFUL_LAUNCH_CDN_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"playful-launch-presentation\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"playful-launch-presentation\"\n ][\"carnival\"],\n previewImages: PLAYFUL_LAUNCH_CDN_PREVIEW_IMAGES,\n slideCount: 15,\n colorSystemId: \"color-system:carnival\",\n templateId: \"template:html-ppt-playful-launch\",\n },\n {\n slug: \"botane-organic-deck\",\n title: \"Botane organic\",\n prompt:\n \"/gen presentation, create a 15-slide brand story deck for Moss & Moon, a coastal wellness retreat launching a seasonal herb garden, tea bar, and slow-living membership program. Present it to hospitality partners with cover, agenda, origin story, guest philosophy, retreat spaces, treatment menu, garden-to-table process, photography gallery, sustainability metrics, member testimonials, packages, and contact. Make it calm, editorial, rounded, and organic.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/0babab92-7ad9-414e-b44f-7a060ed48bcc/botane-organic-deck.html\",\n previewImage: BOTANE_ORGANIC_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"botane-organic-deck\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"botane-organic-deck\"][\n \"mauve-dusk\"\n ],\n previewImages: BOTANE_ORGANIC_PREVIEW_IMAGES,\n slideCount: 15,\n colorSystemId: \"color-system:mauve-dusk\",\n templateId: \"template:html-ppt-botane-organic\",\n },\n {\n slug: \"business-data-presentation\",\n title: \"Business data\",\n prompt:\n \"/gen presentation, create a 15-slide executive data readout for HarborCart, an omnichannel grocery retailer reviewing 2026 growth, loyalty behavior, basket mix, and store-to-delivery conversion. Present it to the leadership team with cover, agenda, business context, KPI scorecard, regional segments, channel comparison, customer cohorts, operational drivers, forecast, strategic bets, risks, recommendations, and appendix contact. Make it number-first, chart-led, confident, modern, and readable.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/95648bba-2a52-497e-b1b8-9cdd0cab9d93/business-data-presentation.html\",\n previewImage: BUSINESS_DATA_CDN_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"business-data-presentation\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"business-data-presentation\"\n ][\"berry-pop\"],\n previewImages: BUSINESS_DATA_CDN_PREVIEW_IMAGES,\n slideCount: 15,\n colorSystemId: \"color-system:berry-pop\",\n templateId: \"template:html-ppt-business-data\",\n },\n {\n slug: \"crayon-learning-deck\",\n title: \"Crayon learning\",\n prompt:\n \"/gen presentation, create a 15-slide parent-night deck for Rainbow Lab, a summer art-and-science camp where kids build storybooks, cardboard cities, and tiny robots. Present it to families with cover, agenda, camp promise, learning goals, weekly themes, instructor team, sample day, workshop stations, student gallery, safety plan, progress metrics, parent quotes, pricing, and registration steps. Make it bright, rounded, joyful, and crayon-like.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/63af1d38-51e8-493e-b975-1728f4f796da/crayon-learning-deck.html\",\n previewImage: CRAYON_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"crayon-learning-deck\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"crayon-learning-deck\"\n ][\"prism\"],\n previewImages: CRAYON_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: CRAYON_PREVIEW_HTMLS,\n colorSystemId: \"color-system:prism\",\n templateId: \"template:html-ppt-crayon\",\n },\n {\n slug: \"creative-agency-presentation\",\n title: \"Creative agency\",\n prompt:\n \"/gen presentation, create a 15-slide rebrand pitch for Northstar Studio proposing a new identity, website, and launch campaign for a boutique hotel group expanding into three coastal cities. Present it to the client board with cover, agenda, brand challenge, strategic insight, creative direction, visual territories, service scope, project process, case-study gallery, launch roadmap, impact metrics, client quotes, investment, and contact. Make it minimal, editorial, sharp, and agency-grade.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/527ad859-e0dd-4cfd-90a4-09e5030b71e1/creative-agency-presentation.html\",\n previewImage: CREATIVE_AGENCY_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"creative-agency-presentation\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"creative-agency-presentation\"\n ][\"coral-studio\"],\n previewImages: CREATIVE_AGENCY_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: CREATIVE_AGENCY_PREVIEW_HTMLS,\n colorSystemId: \"color-system:coral-studio\",\n templateId: \"template:html-ppt-creative-agency\",\n },\n {\n slug: \"data-report-presentation\",\n title: \"Data report\",\n prompt:\n \"/gen presentation, create a 15-slide research findings deck for MetroPulse, a city mobility study comparing bike-share, buses, rideshare, and commuter rail across 12 neighborhoods. Present it to urban planning stakeholders with cover, contents, study context, methodology, demand trends, neighborhood segments, mode comparison, peak-hour bottlenecks, equity impact, emissions estimate, 12-month forecast, recommendations, summary, and contact. Make it chart-led, sharp, vivid, and number-first.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/920c6119-1833-4902-bda9-327af1bd8f7f/data-report-presentation.html\",\n previewImage: DATA_REPORT_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"data-report-presentation\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"data-report-presentation\"\n ][\"prism\"],\n previewImages: DATA_REPORT_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: DATA_REPORT_PREVIEW_HTMLS,\n colorSystemId: \"color-system:prism\",\n templateId: \"template:html-ppt-data-report\",\n },\n {\n slug: \"editorial-magazine-deck\",\n title: \"Editorial magazine\",\n prompt:\n \"/gen presentation, create a 15-slide media kit for Field Notes Quarterly, an independent culture magazine pitching its autumn issue on craft, travel, food, and design to premium sponsors. Include cover, editor letter, issue theme, audience profile, editorial departments, contributor roster, feature previews, photography gallery, distribution plan, partnership formats, audience metrics, sponsor examples, rate card, production timeline, and contact. Make it restrained, paper-forward, serif, and magazine-like.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/85360bd6-8b80-43ba-9c9c-001b7d96f205/editorial-magazine-deck.html\",\n previewImage: EDITORIAL_MAGAZINE_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"editorial-magazine-deck\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"editorial-magazine-deck\"\n ][\"warm-sand\"],\n previewImages: EDITORIAL_MAGAZINE_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: EDITORIAL_MAGAZINE_PREVIEW_HTMLS,\n colorSystemId: \"color-system:warm-sand\",\n templateId: \"template:html-ppt-editorial-magazine\",\n },\n {\n slug: \"landing-consulting-deck\",\n title: \"Landing consulting\",\n prompt:\n \"/gen presentation, create a 15-slide growth proposal for ScaleBridge advising a B2B fintech SaaS team on reducing onboarding drop-off and improving trial-to-paid conversion. Present it to the revenue leadership team with cover, agenda, opportunity size, diagnosis, desired outcomes, engagement model, workstreams, sprint process, benchmark gallery, proof metrics, client testimonials, pricing tiers, decision timeline, and contact. Make it landing-page-like, sharp, high-contrast, and conversion-oriented.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/998aed16-60a1-4d84-b60e-1ab093de8fa6/landing-consulting-deck.html\",\n previewImage: LANDING_CONSULTING_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"landing-consulting-deck\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"landing-consulting-deck\"\n ][\"pop-art\"],\n previewImages: LANDING_CONSULTING_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: LANDING_CONSULTING_PREVIEW_HTMLS,\n colorSystemId: \"color-system:pop-art\",\n templateId: \"template:html-ppt-landing-consulting\",\n },\n {\n slug: \"lumina-creative-studio\",\n title: \"Lumina creative studio\",\n prompt:\n \"/gen presentation, create a 15-slide portfolio deck for LensLab Studio, a photography and motion team pitching a beauty brand's global campaign shoot across studio sets, street casting, and social cutdowns. Include cover, agenda, studio point of view, campaign concept, team, production services, creative process, location plan, image gallery, motion deliverables, campaign metrics, client quotes, package options, and contact. Make it bold, sticker-tagged, sharp, and creative-studio oriented.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/08fe05a2-a7dd-4355-822d-14fb6a0987b3/lumina-creative-studio.html\",\n previewImage: LUMINA_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"lumina-creative-studio\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"lumina-creative-studio\"\n ][\"prism\"],\n previewImages: LUMINA_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: LUMINA_PREVIEW_HTMLS,\n colorSystemId: \"color-system:prism\",\n templateId: \"template:html-ppt-lumina\",\n },\n {\n slug: \"mosaic-geometric-pitch\",\n title: \"Mosaic geometric pitch\",\n prompt:\n \"/gen presentation, create a 15-slide modular identity pitch for CivicLink, a new transit app unifying buses, bikes, scooters, and commuter rail under one visual system. Present it to city innovation leaders with cover, agenda, brand problem, design principles, logo grid, color and icon system, app moments, rollout process, station signage gallery, accessibility impact, pilot metrics, stakeholder quotes, implementation budget, and contact. Make it bold, modular, Bauhaus-geometric, and colourful.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/65f0f224-4bf0-4b11-9f3e-ddb1a11b1ec3/mosaic-geometric-pitch.html\",\n previewImage: MOSAIC_GEOMETRIC_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"mosaic-geometric-pitch\"\n ],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\n \"mosaic-geometric-pitch\"\n ][\"carnival\"],\n previewImages: MOSAIC_GEOMETRIC_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: MOSAIC_GEOMETRIC_PREVIEW_HTMLS,\n colorSystemId: \"color-system:carnival\",\n templateId: \"template:html-ppt-mosaic-geometric\",\n },\n {\n slug: \"playful-pop-deck\",\n title: \"Playful pop\",\n prompt:\n \"/gen presentation, create a 15-slide campus launch deck for FizzPop, a sparkling tea brand planning a colorful back-to-school sampling tour, creator challenge, and limited-edition flavor drop. Present it to retail and student ambassador partners with cover, agenda, brand world, audience insight, campaign idea, flavor lineup, activation map, event flow, content plan, gallery, reach metrics, partner testimonials, budget, and contact. Make it neon, bouncy, rounded, and pop-art playful.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/6b2f388a-119f-4ecc-8638-5cc309779b67/playful-pop-deck.html\",\n previewImage: PLAYFUL_POP_PREVIEW_IMAGES[0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"playful-pop-deck\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"playful-pop-deck\"][\n \"pop-art\"\n ],\n previewImages: PLAYFUL_POP_PREVIEW_IMAGES,\n slideCount: 15,\n previewHtmls: PLAYFUL_POP_PREVIEW_HTMLS,\n colorSystemId: \"color-system:pop-art\",\n templateId: \"template:html-ppt-playful-pop\",\n },\n\n {\n slug: \"bloom-pitch\",\n title: \"Bloom pitch\",\n prompt:\n \"/gen presentation, create a 15-slide investor pitch for PetalLoop, a climate-friendly flower delivery marketplace raising a seed round. Include cover, agenda, market shift, customer problem, solution, product flow, traction, business model, go-to-market, competitive position, roadmap, team, financial plan, ask, and next steps. Make it playful, optimistic, organic, and investor-ready.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/d29707fb-9b85-44bc-be55-cf3cf082f68d/bloom-pitch.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"bloom-pitch\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"bloom-pitch\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"bloom-pitch\"][\n \"carnival\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"bloom-pitch\"],\n slideCount: 15,\n colorSystemId: \"color-system:carnival\",\n templateId: \"template:html-ppt-bloom-pitch\",\n },\n {\n slug: \"blueprint-academy\",\n title: \"Blueprint academy\",\n prompt:\n \"/gen presentation, create a 15-slide curriculum proposal for Northline Academy launching an applied AI certificate for working professionals. Present it to academic leadership with cover, agenda, program context, learner needs, curriculum map, module sequence, faculty team, classroom experience, assessment model, outcomes, partnerships, enrollment plan, budget, and next steps. Make it academic, structured, blueprint-like, and credible.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f64cd670-7565-483f-b872-117a18c0c414/blueprint-academy.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"blueprint-academy\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"blueprint-academy\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"blueprint-academy\"][\n \"forest-editorial\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"blueprint-academy\"],\n slideCount: 15,\n colorSystemId: \"color-system:forest-editorial\",\n templateId: \"template:html-ppt-blueprint-academy\",\n },\n {\n slug: \"meridian\",\n title: \"Meridian\",\n prompt:\n \"/gen presentation, create a 15-slide agency capabilities deck for Meridian Works, a data strategy studio helping enterprise teams modernize analytics operations. Present it to a prospective client executive team with cover, agenda, market context, client challenges, service model, team, process, case studies, measurement plan, operating rhythm, timeline, commercial model, and contact. Make it professional, sharp, data-led, and executive-ready.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/58cc240d-7d84-49a7-92ba-57eea4168730/meridian.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"meridian\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"meridian\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"meridian\"][\n \"slate-corporate\"\n ],\n previewImages: PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"meridian\"],\n slideCount: 15,\n colorSystemId: \"color-system:slate-corporate\",\n templateId: \"template:html-ppt-meridian\",\n },\n {\n slug: \"neo-brutalism\",\n title: \"Neo brutalism\",\n prompt:\n \"/gen presentation, create a 15-slide founder pitch for BlockForge, a developer tooling startup launching a collaborative build system. Present it to early-stage investors with cover, agenda, problem, product, technical edge, market, traction, customer proof, business model, go-to-market, competition, roadmap, team, funding ask, and next steps. Make it bold, direct, high-contrast, and brutalist.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/4d8a4052-b43d-498a-81cc-b4c743103ff2/neo-brutalism.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"neo-brutalism\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"neo-brutalism\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"neo-brutalism\"][\n \"mono-ink\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"neo-brutalism\"],\n slideCount: 15,\n colorSystemId: \"color-system:mono-ink\",\n templateId: \"template:html-ppt-neo-brutalism\",\n },\n {\n slug: \"nocturne\",\n title: \"Nocturne\",\n prompt:\n \"/gen presentation, create a 15-slide annual keynote for NightOps Cloud reviewing reliability, infrastructure scale, and the roadmap for autonomous operations. Present it to technical customers with cover, agenda, state of the platform, usage growth, reliability metrics, architecture, product updates, customer stories, roadmap, ecosystem, pricing changes, and closing call to action. Make it dark, data-rich, polished, and keynote-ready.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/dd4ecb89-b6b1-4ed0-bfca-4ebf3db3a664/nocturne.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"nocturne\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"nocturne\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"nocturne\"][\n \"midnight-mono\"\n ],\n previewImages: PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"nocturne\"],\n slideCount: 15,\n colorSystemId: \"color-system:midnight-mono\",\n templateId: \"template:html-ppt-nocturne\",\n },\n {\n slug: \"pixel-glitch\",\n title: \"Pixel glitch\",\n prompt:\n \"/gen presentation, create a 15-slide creative studio deck for Arcade Signal pitching a retro-futurist campaign for an indie game launch. Present it to the publisher team with cover, agenda, audience insight, campaign concept, visual world, channel plan, creator program, launch timeline, asset gallery, performance targets, budget, team, and next steps. Make it pixelated, energetic, digital, and sharp.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/274e4cc3-d811-40a1-a091-526db9a62734/pixel-glitch.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"pixel-glitch\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"pixel-glitch\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"pixel-glitch\"][\n \"bauhaus-primary\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"pixel-glitch\"],\n slideCount: 15,\n colorSystemId: \"color-system:bauhaus-primary\",\n templateId: \"template:html-ppt-pixel-glitch\",\n },\n {\n slug: \"prospectus\",\n title: \"Prospectus\",\n prompt:\n \"/gen presentation, create a 15-slide business plan for Atlas Harbor, a B2B logistics platform expanding into regional fulfillment. Present it to strategic partners with cover, agenda, market context, customer problem, solution, operating model, product experience, growth plan, financial model, implementation roadmap, risks, team, partnership terms, and next steps. Make it corporate, polished, structured, and proposal-ready.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/64a9b8c5-f89d-4379-998c-9da755f7ca62/prospectus.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"prospectus\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"prospectus\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"prospectus\"][\n \"slate-corporate\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"prospectus\"],\n slideCount: 15,\n colorSystemId: \"color-system:slate-corporate\",\n templateId: \"template:html-ppt-prospectus\",\n },\n {\n slug: \"schoolhouse\",\n title: \"Schoolhouse\",\n prompt:\n \"/gen presentation, create a 15-slide community education deck for Maple Hall launching a weekend skills program for families and local makers. Present it to city partners with cover, agenda, mission, audience needs, program tracks, sample day, instructor team, venue plan, safety approach, outcomes, testimonials, membership tiers, budget, and registration steps. Make it warm, retro, classroom-inspired, and approachable.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/cb03f77b-982d-4708-8781-2a0ab450a4fb/schoolhouse.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"schoolhouse\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"schoolhouse\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"schoolhouse\"][\n \"bauhaus-primary\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"schoolhouse\"],\n slideCount: 15,\n colorSystemId: \"color-system:bauhaus-primary\",\n templateId: \"template:html-ppt-schoolhouse\",\n },\n {\n slug: \"sticker-scrapbook\",\n title: \"Sticker scrapbook\",\n prompt:\n \"/gen presentation, create a 15-slide brand collaboration deck for Patch Party, a youth culture festival launching sponsor activations, creator booths, and collectible merch. Present it to brand partners with cover, agenda, audience story, event concept, activation zones, creator plan, media moments, sponsor packages, timeline, reach metrics, testimonials, budget, and contact. Make it vibrant, scrapbook-like, sticker-heavy, and celebratory.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/f15ccce7-90f1-4773-b4c8-c7eaf903ce76/sticker-scrapbook.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"sticker-scrapbook\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"sticker-scrapbook\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"sticker-scrapbook\"][\n \"prism\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"sticker-scrapbook\"],\n slideCount: 15,\n colorSystemId: \"color-system:prism\",\n templateId: \"template:html-ppt-sticker-scrapbook\",\n },\n {\n slug: \"strata\",\n title: \"Strata\",\n prompt:\n \"/gen presentation, create a 15-slide agency proposal for Strata Studio helping a fintech brand redesign its onboarding and lifecycle communications. Present it to the client leadership team with cover, agenda, business challenge, strategic principles, design direction, service scope, sprint process, sample work, measurement plan, timeline, investment, team, and next steps. Make it Swiss-minimal, precise, editorial, and agency-grade.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/040ddb5c-6819-436a-bd3a-87cb5de2be0e/strata.html\",\n previewImage: PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"strata\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"strata\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"strata\"][\"mono-ink\"],\n previewImages: PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"strata\"],\n slideCount: 15,\n colorSystemId: \"color-system:mono-ink\",\n templateId: \"template:html-ppt-strata\",\n },\n {\n slug: \"taped-consulting\",\n title: \"Taped consulting\",\n prompt:\n \"/gen presentation, create a 15-slide transformation proposal for Clearpath Advisory helping a healthcare network improve patient intake operations. Present it to operations executives with cover, agenda, current-state diagnosis, opportunity, engagement model, workstreams, field research, process redesign, timeline, proof metrics, testimonials, pricing, and next steps. Make it consulting-focused, tactile, polished, and persuasive.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/ffa53ff0-36b0-4bd1-b44a-4c2d8d66aaa6/taped-consulting.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"taped-consulting\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"taped-consulting\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"taped-consulting\"][\n \"slate-corporate\"\n ],\n previewImages:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"taped-consulting\"],\n slideCount: 15,\n colorSystemId: \"color-system:slate-corporate\",\n templateId: \"template:html-ppt-taped-consulting\",\n },\n {\n slug: \"vantage\",\n title: \"Vantage\",\n prompt:\n \"/gen presentation, create a 15-slide business proposal for Vantage Partners helping a robotics manufacturer launch a new service program. Present it to enterprise buyers with cover, agenda, market context, buyer pain points, proposed solution, service model, operating plan, proof metrics, roadmap, commercials, implementation timeline, team, and close. Make it business-focused, confident, structured, and modern.\",\n embedUrl:\n \"https://static.vm0.io/vm0/artifact-templates/presentation/acada4b0-952c-4354-a382-56dcf49bb7e9/vantage.html\",\n previewImage:\n PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"vantage\"][0],\n cardPreviewImagesByTheme:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"vantage\"],\n cardPreviewImage:\n PRESENTATION_TEMPLATE_PICKER_CARD_PREVIEW_IMAGES[\"vantage\"][\n \"slate-corporate\"\n ],\n previewImages: PRESENTATION_TEMPLATE_REFERENCE_PREVIEW_IMAGES[\"vantage\"],\n slideCount: 15,\n colorSystemId: \"color-system:slate-corporate\",\n templateId: \"template:html-ppt-vantage\",\n },\n ];\n","export const ILLUSTRATION_ASSET_BASE =\n \"https://static.vm0.io/vm0/artifact-templates/illustration/assets\";\n\n/**\n * Maps each illustration asset's logical path (e.g. `images/<file>` or\n * `refs/<slug>/<file>`) to its object path under {@link ILLUSTRATION_ASSET_BASE}\n * on the static asset mirror. Static objects keep their content-addressed\n * object path, so the logical path cannot be derived from the URL; resolve with\n * {@link illustrationAssetUrl}.\n */\nconst ILLUSTRATION_ASSET_PATHS: Record<string, string> = {\n \"images/cozy-parlor.jpg\":\n \"d6892556-c737-4b2d-96e2-8011cb89e73b/cozy-parlor.jpg\",\n \"images/crowd-ink.png\": \"61a6e547-8dcd-4a70-9c08-436721562ce9/crowd-ink.png\",\n \"images/editorial-flatfolk.png\":\n \"5ccf0d60-b59e-4fe8-8388-1cdb8c5e57d9/editorial-flatfolk.png\",\n \"images/endpaper.png\": \"0712c960-8336-4ef5-b6bf-9a6bea30ee6a/endpaper.png\",\n \"images/flat-poster.png\":\n \"6e67ff2b-bafb-4ae8-b9f5-ac810e156cad/flat-poster.png\",\n \"images/folk-muse.png\": \"ab19110c-bdca-4342-b4ea-81bc9da7f992/folk-muse.png\",\n \"images/folk-storybook.png\":\n \"8a061600-29d3-4c1b-a7f8-ed534bb068bb/folk-storybook.png\",\n \"images/grain-poster.png\":\n \"b782b0a8-8fc4-4f1a-a5d9-fc8be7cd5eae/grain-poster.png\",\n \"images/grainy-duotone.png\":\n \"94e6a6bf-545a-4579-b1ab-672d9ebaadf0/grainy-duotone.png\",\n \"images/iberian-vignette.png\":\n \"d7c62c13-7ed0-4e7b-9fbb-b35edfd7f610/iberian-vignette.png\",\n \"images/ink-mascot.png\":\n \"3a32149b-beed-468a-ab95-d7c66161b056/ink-mascot.png\",\n \"images/ink-storefront.png\":\n \"dedb5189-f068-4648-a2c4-b970a04becbb/ink-storefront.png\",\n \"images/inkdab.png\": \"52f4536c-8bcb-459a-bd9e-db122b587c5a/inkdab.png\",\n \"images/inkstomp.png\": \"b4374019-26c4-43dc-ac72-738119dd8aed/inkstomp.png\",\n \"images/iso-scene.png\": \"a5584c98-8d92-43f7-a3ce-36d3a50dee70/iso-scene.png\",\n \"images/jade-blockprint.png\":\n \"01de3009-d39e-4ae5-92e0-9ebab0b67f7b/jade-blockprint.png\",\n \"images/light-pop-portrait.png\":\n \"9380ec74-934d-4a30-a7c4-6b331141ba68/light-pop-portrait.png\",\n \"images/loose-contour.png\":\n \"39072bd9-f829-461c-ba9b-df09d0a6536a/loose-contour.png\",\n \"images/mellow-pop.png\":\n \"3b032b04-9fa0-4833-a77f-4d583f076cfc/mellow-pop.png\",\n \"images/mosaic-still-life.png\":\n \"1c9ac1aa-3b52-4278-a0b5-c9a0b0420fc9/mosaic-still-life.png\",\n \"images/notion-illustration.png\":\n \"d99d73e6-55f3-48d8-8382-f1f780839f2f/notion-illustration.png\",\n \"images/op-ed-cover.png\":\n \"627e3b90-fdb3-4b2a-a082-0106ebf2f4a0/op-ed-cover.png\",\n \"images/painterly-botanical.png\":\n \"d6c7d725-194d-4014-b016-adb6f222ce2a/painterly-botanical.png\",\n \"images/papernook.png\": \"7c5403b8-66b8-4767-bf9e-741994fd2d52/papernook.png\",\n \"images/postcard-illustration.png\":\n \"ee24ef09-ae82-4dac-b6a0-cf0506498936/postcard-illustration.png\",\n \"images/riso-relic.png\":\n \"e7fa57b9-c322-4caa-8dd7-cea841a63c1e/riso-relic.png\",\n \"images/shadow-pop.png\":\n \"66da8950-89fe-43d4-afdb-07d12e196718/shadow-pop.png\",\n \"images/soft-vector.png\":\n \"f4ef44c0-0bf6-441f-aacc-ad5d90240719/soft-vector.png\",\n \"images/sticker-sheet.png\":\n \"a4dcdc0b-a08a-4996-bc13-d7c1a6e4beb2/sticker-sheet.png\",\n \"images/sunlit-gouache.png\":\n \"e1479a4d-be2b-4aeb-bfac-5db0fc5d5b88/sunlit-gouache.png\",\n \"images/tiny-wanderer.jpg\":\n \"d500f1d8-f427-40af-a281-c470c4c3067c/tiny-wanderer.jpg\",\n \"refs/cozy-parlor/ref-frog-letters.jpg\":\n \"03982053-3118-403a-88db-7888b76dca20/ref-frog-letters.jpg\",\n \"refs/cozy-parlor/ref-hedgehog-records.jpg\":\n \"2467a4e3-7ae7-4fa7-8afd-94816ef138f7/ref-hedgehog-records.jpg\",\n \"refs/cozy-parlor/ref-mouse-baker.jpg\":\n \"ea8c05d3-5b8f-4f15-9df6-b9a922e39fcd/ref-mouse-baker.jpg\",\n \"refs/cozy-parlor/ref-otter-painter.jpg\":\n \"b6436d4e-6b77-4ca4-8b34-018ad82c543b/ref-otter-painter.jpg\",\n \"refs/crowd-ink/anchor.png\":\n \"d7c41a80-d95e-46f2-b4df-40a6fbd51881/anchor.png\",\n \"refs/crowd-ink/sample-cafe.png\":\n \"a6b49737-91a2-404c-bb3a-74acb588efd8/sample-cafe.png\",\n \"refs/crowd-ink/sample-office.png\":\n \"524fd8ba-66eb-4da8-8c82-a184affe3960/sample-office.png\",\n \"refs/crowd-ink/sample-picnic.png\":\n \"3ed9f72f-fb70-433f-9b58-675eb592767e/sample-picnic.png\",\n \"refs/crowd-ink/sample-subway.png\":\n \"5614f816-0524-437f-a5f8-4966cec2929b/sample-subway.png\",\n \"refs/editorial-flatfolk/ref-alpine.png\":\n \"34acbd1a-8633-478c-ac6c-a4cee0a26324/ref-alpine.png\",\n \"refs/editorial-flatfolk/ref-harbor.png\":\n \"0e91e2f6-2147-4b33-a034-2efb3d834cf4/ref-harbor.png\",\n \"refs/editorial-flatfolk/ref-park.png\":\n \"d1e7603c-66ad-4f42-94b4-d3eff6660061/ref-park.png\",\n \"refs/endpaper/ref-butter-birds-l3.png\":\n \"ce707dcb-7a69-46d2-be8f-2e78d6eaded7/ref-butter-birds-l3.png\",\n \"refs/endpaper/ref-cobalt-sea-l3.png\":\n \"4f98961a-643a-4bea-bafd-6f4ed24cb71f/ref-cobalt-sea-l3.png\",\n \"refs/endpaper/ref-mossy-teal-cats-l2.png\":\n \"e78941dc-c179-44e7-b118-2d7c1b5cf214/ref-mossy-teal-cats-l2.png\",\n \"refs/endpaper/ref-plum-foxes-l2.png\":\n \"f06ba5e9-5ef0-4274-be56-dcc8995ec103/ref-plum-foxes-l2.png\",\n \"refs/endpaper/ref-slate-houseplants-l2.png\":\n \"4ab546ed-7fbf-4888-add3-9d6aac92d7d0/ref-slate-houseplants-l2.png\",\n \"refs/flat-poster/ref-lightbulb-sky-thinkbigger.png\":\n \"cbd54115-c2c3-492d-aefc-dfcd2954e3b7/ref-lightbulb-sky-thinkbigger.png\",\n \"refs/flat-poster/ref-magnifier-mustard-lookcloser.png\":\n \"af37f430-5bde-40a8-8d81-8733eb3462c9/ref-magnifier-mustard-lookcloser.png\",\n \"refs/flat-poster/ref-mountain-rose-reachhigher.png\":\n \"e4842d84-8c94-4e67-a0b0-d1b49841f609/ref-mountain-rose-reachhigher.png\",\n \"refs/flat-poster/ref-robot-yellow-aiteammate.png\":\n \"dbcd0941-0066-4ce1-92b9-f59477d72a05/ref-robot-yellow-aiteammate.png\",\n \"refs/flat-poster/ref-rocket-coral-shipfaster.png\":\n \"58b8a1f3-0ab2-4937-a7b3-8b3c4f14ae22/ref-rocket-coral-shipfaster.png\",\n \"refs/flat-poster/ref-shield-sage-alwayson.png\":\n \"ac81f77b-9e0a-427b-830b-f6769899b9bc/ref-shield-sage-alwayson.png\",\n \"refs/flat-poster/ref-teacup-lavender-takeabeat.png\":\n \"4074e795-dde6-4a2d-a47c-454f2e497f31/ref-teacup-lavender-takeabeat.png\",\n \"refs/folk-muse/ref-canonical.png\":\n \"ae0b2abc-a73f-4ebb-a3f1-74aece4a3819/ref-canonical.png\",\n \"refs/folk-muse/ref-sunset-dove.png\":\n \"7ecd9aef-7ae1-46cc-a883-f1966ad11357/ref-sunset-dove.png\",\n \"refs/folk-muse/ref-tropical-butterfly.png\":\n \"4738899c-de7c-43b9-8e02-58ff668abfb2/ref-tropical-butterfly.png\",\n \"refs/folk-muse/ref-winter-cat.png\":\n \"d2d649cf-06f4-4572-8789-7fc543660507/ref-winter-cat.png\",\n \"refs/folk-storybook/ref-chill-tussle.jpg\":\n \"db4d4ae6-2e10-4b8e-86c6-8fdc2d9d45dc/ref-chill-tussle.jpg\",\n \"refs/folk-storybook/ref-puzzle.jpg\":\n \"6825058e-9a8b-465d-9b59-3d4bd36349b9/ref-puzzle.jpg\",\n \"refs/folk-storybook/ref-reading-nook.jpg\":\n \"045ba54a-8a7e-452f-9b5a-96fa727bd46a/ref-reading-nook.jpg\",\n \"refs/grain-poster/ref-bench-sunsetcoral-l2-pair.png\":\n \"303ce995-e8a0-4916-8aff-af2a269af9be/ref-bench-sunsetcoral-l2-pair.png\",\n \"refs/grain-poster/ref-cafe-cooldawn-l2-solo.png\":\n \"a356e5b4-5aa4-47e1-bb03-63c7c939db3d/ref-cafe-cooldawn-l2-solo.png\",\n \"refs/grain-poster/ref-dogwalker-forestgreen-l1-solo.png\":\n \"a24cfc2d-072e-4045-9d9b-7cd103e144c1/ref-dogwalker-forestgreen-l1-solo.png\",\n \"refs/grain-poster/ref-guitar-twilight-l1-solo.png\":\n \"fe1fcd12-afd8-4199-8b6b-39e307160f10/ref-guitar-twilight-l1-solo.png\",\n \"refs/grain-poster/ref-skateboard-cooldawn-l1-solo.png\":\n \"06e37fc6-9a6a-467d-b4b5-88abafd95fb6/ref-skateboard-cooldawn-l1-solo.png\",\n \"refs/grain-poster/ref-sunhat-sunsetcoral-l1-solo.png\":\n \"e97eda11-aeb5-4f97-8e21-b7368fe78b32/ref-sunhat-sunsetcoral-l1-solo.png\",\n \"refs/grain-poster/ref-twilightdesk-twilight-l3-solo.png\":\n \"fd69b40d-b616-48e9-88e1-20fa75d098f8/ref-twilightdesk-twilight-l3-solo.png\",\n \"refs/grainy-duotone/ref-balloons-navy-peach-l3.png\":\n \"d02b846f-2c93-44b6-a5bb-aa92a38d187d/ref-balloons-navy-peach-l3.png\",\n \"refs/grainy-duotone/ref-ladder-burgundy-pink-l2.png\":\n \"ff9caf48-1ce2-4d0e-b0b4-7a182c29e05f/ref-ladder-burgundy-pink-l2.png\",\n \"refs/grainy-duotone/ref-launch-pennant-1.png\":\n \"80cc238d-e265-4572-821e-55de056f86b8/ref-launch-pennant-1.png\",\n \"refs/grainy-duotone/ref-launch-pennant-2.png\":\n \"455c76d4-6bde-48ab-b09b-ee515820842c/ref-launch-pennant-2.png\",\n \"refs/grainy-duotone/ref-launch-pennant-3.png\":\n \"d1f61bf6-ca9d-47da-99f0-ecca26e98e60/ref-launch-pennant-3.png\",\n \"refs/grainy-duotone/ref-magnifier-lavender-mustard-l2.png\":\n \"4014cc28-4c70-40ce-b064-273110d755d0/ref-magnifier-lavender-mustard-l2.png\",\n \"refs/grainy-duotone/ref-sprout-sage-coral-l1.png\":\n \"45bc11dd-e170-4648-9da1-9b857b9ba580/ref-sprout-sage-coral-l1.png\",\n \"refs/iberian-vignette/ref-l1-manana.png\":\n \"f2468abc-cc1f-400e-904f-51c347d6d6a9/ref-l1-manana.png\",\n \"refs/iberian-vignette/ref-l2-cafe.png\":\n \"62dae763-a448-4633-a8db-5f0dcf7275d7/ref-l2-cafe.png\",\n \"refs/iberian-vignette/ref-l2-ritmo.png\":\n \"11a11d62-1c25-4878-960f-516c50000f3c/ref-l2-ritmo.png\",\n \"refs/iberian-vignette/ref-l3-familia.png\":\n \"2a924927-8fdc-4206-a248-c58f8f62005f/ref-l3-familia.png\",\n \"refs/ink-mascot/ref-branding-mint.png\":\n \"a16903ff-ba02-40d9-b31e-2d71982dbe5e/ref-branding-mint.png\",\n \"refs/ink-mascot/ref-content-terracotta.png\":\n \"45a3afef-123f-4814-96b5-bedb5d6c19e5/ref-content-terracotta.png\",\n \"refs/ink-mascot/ref-conversion-sage.png\":\n \"fe2841d0-3be1-4a1e-8a70-8352a070ef92/ref-conversion-sage.png\",\n \"refs/ink-mascot/ref-email-lavender.png\":\n \"6f4ad9da-9af3-4b70-a811-518817cbc03e/ref-email-lavender.png\",\n \"refs/ink-mascot/ref-growth-forest.png\":\n \"10f34cdf-de0d-4c1f-acaf-cd9c25c17a27/ref-growth-forest.png\",\n \"refs/ink-mascot/ref-launch-tangerine.png\":\n \"75f29fd8-4ac4-446f-8ba6-e48edb82473d/ref-launch-tangerine.png\",\n \"refs/ink-mascot/ref-loyalty-plum.png\":\n \"4c9f2530-1efe-4026-a9ce-8213f27c987b/ref-loyalty-plum.png\",\n \"refs/ink-mascot/ref-seo-coral.png\":\n \"5c75119b-da55-4528-8ff7-53bc7616bfc4/ref-seo-coral.png\",\n \"refs/ink-storefront/ref-l1-lupo.png\":\n \"6723fa07-1951-428e-a961-6ea5f8498776/ref-l1-lupo.png\",\n \"refs/ink-storefront/ref-l1-petit-pain.png\":\n \"0990f996-ca32-4c1e-b086-cf66d6d35ea6/ref-l1-petit-pain.png\",\n \"refs/ink-storefront/ref-l2-fleur-fern.png\":\n \"4638ab2a-7540-4938-9342-6a96785c39b6/ref-l2-fleur-fern.png\",\n \"refs/inkdab/ref-brainstorm-butter-cream-rich.png\":\n \"69b51b63-6f35-4065-94f5-b6399f42e779/ref-brainstorm-butter-cream-rich.png\",\n \"refs/inkdab/ref-calling-blue-light.png\":\n \"74316ebe-505d-4dc0-94a6-f0c0280fd934/ref-calling-blue-light.png\",\n \"refs/inkdab/ref-handoff-dusty-pink.png\":\n \"52911b07-baf9-4777-82c6-1b723ae8daae/ref-handoff-dusty-pink.png\",\n \"refs/inkdab/ref-pitch-blue.png\":\n \"308fbe8e-051b-414a-9be3-40dd5174fc3e/ref-pitch-blue.png\",\n \"refs/inkdab/ref-reading-lavender-rich.png\":\n \"7a9351df-62fe-410d-8938-572742ab1fbe/ref-reading-lavender-rich.png\",\n \"refs/inkstomp/ref-climb-climb.png\":\n \"bd18e3ee-5f17-47b1-885d-71c9a4eb8770/ref-climb-climb.png\",\n \"refs/inkstomp/ref-crunchy-cricket.png\":\n \"a04f61d7-56fb-4213-b587-501d23bf0cea/ref-crunchy-cricket.png\",\n \"refs/inkstomp/ref-greasy-griddle.png\":\n \"5d49301d-3dc6-4298-8dea-1c1129ebdeef/ref-greasy-griddle.png\",\n \"refs/inkstomp/ref-jolly-jalapeno.png\":\n \"dabaab5f-d480-4dd5-aa12-59c29185062f/ref-jolly-jalapeno.png\",\n \"refs/inkstomp/ref-pocket-plum.png\":\n \"280e2782-50b4-42d7-8d64-8e17c63d8ef9/ref-pocket-plum.png\",\n \"refs/inkstomp/ref-quiet-quitter.png\":\n \"928239cf-52a1-41f3-a01c-d19ba0f9d628/ref-quiet-quitter.png\",\n \"refs/inkstomp/ref-rocket-roach.png\":\n \"2b7b8ce1-5cc3-42c6-b699-b73a12172b24/ref-rocket-roach.png\",\n \"refs/inkstomp/ref-turbo-tofu.png\":\n \"5ee79599-3e9f-466c-904a-695b37abe14f/ref-turbo-tofu.png\",\n \"refs/iso-scene/blue-city-construction.png\":\n \"0ba14b24-74fa-4953-98ec-1bf0d6326705/blue-city-construction.png\",\n \"refs/iso-scene/coral-hanging-garden.png\":\n \"eff3b4d8-1279-4540-a23c-72ab74ff60a7/coral-hanging-garden.png\",\n \"refs/iso-scene/sky-castle.png\":\n \"1604e46a-2bf9-4664-85c1-9991f634901d/sky-castle.png\",\n \"refs/iso-scene/yellow-floating-island-park.png\":\n \"3ebb7c87-5411-41ea-89cd-8a49cc676dec/yellow-floating-island-park.png\",\n \"refs/jade-blockprint/ref-cobalt-ship-l2.png\":\n \"105b7927-8114-4537-b3eb-6b5afed28751/ref-cobalt-ship-l2.png\",\n \"refs/jade-blockprint/ref-coral-turntable-l1.png\":\n \"7f049e9f-351f-4e57-923a-80fadf320d47/ref-coral-turntable-l1.png\",\n \"refs/jade-blockprint/ref-mustard-monstera-l1.png\":\n \"b73af11f-17c5-4392-9c0d-3f065ab3a7cd/ref-mustard-monstera-l1.png\",\n \"refs/jade-blockprint/ref-rose-perfume-l2.png\":\n \"5af0b018-e607-4a78-9c20-bedadbe2a562/ref-rose-perfume-l2.png\",\n \"refs/jade-blockprint/ref-sage-sprout-l1.png\":\n \"a1ce6abf-3823-4b00-9fbd-f03b0a1f338f/ref-sage-sprout-l1.png\",\n \"refs/jade-blockprint/ref-sage-teapot-l1.png\":\n \"7622f65a-6ef2-4a80-af36-df929b0bcc07/ref-sage-teapot-l1.png\",\n \"refs/jade-blockprint/ref-slate-pen-notebook-l2.png\":\n \"0e62d94c-93ef-4d3a-93c0-8740107c844a/ref-slate-pen-notebook-l2.png\",\n \"refs/jade-blockprint/ref-terracotta-pitcher-l2.png\":\n \"686886ff-a72b-447a-8027-d9fb396438be/ref-terracotta-pitcher-l2.png\",\n \"refs/light-pop-portrait/ref-laughing-girl-braids-magenta.png\":\n \"d5e3be91-b682-417c-b2fa-a2d9d7930d29/ref-laughing-girl-braids-magenta.png\",\n \"refs/light-pop-portrait/ref-sleepy-girl-bunny-peach.png\":\n \"50061e64-b43f-4a80-84ff-08460b997db3/ref-sleepy-girl-bunny-peach.png\",\n \"refs/light-pop-portrait/ref-sly-boy-popsicle-lavender.png\":\n \"40347905-7f67-48a5-b52c-5b1f0c140c97/ref-sly-boy-popsicle-lavender.png\",\n \"refs/light-pop-portrait/ref-surprised-boy-frog-mint.png\":\n \"8838de52-83fa-417f-b0ed-958086792f8c/ref-surprised-boy-frog-mint.png\",\n \"refs/light-pop-portrait/ref-yellowhat-mushroom-cobalt.png\":\n \"d1046fdb-418f-4c98-9308-bb96f0063bb0/ref-yellowhat-mushroom-cobalt.png\",\n \"refs/light-pop-portrait/ref-zen-kid-bird-teal.png\":\n \"4de21e05-47b8-4b5e-8385-993d616fb1dc/ref-zen-kid-bird-teal.png\",\n \"refs/loose-contour/ref-l1-mustard-hand.png\":\n \"e0ef3f95-d7db-4034-97e3-63fbf4586e42/ref-l1-mustard-hand.png\",\n \"refs/loose-contour/ref-l2-blue-laptop.png\":\n \"ff8a4838-974e-497c-91a5-2ce6d9fe61f6/ref-l2-blue-laptop.png\",\n \"refs/loose-contour/ref-l2-coral-envelope.png\":\n \"11f1cd73-7771-4963-a33c-eaf37528f413/ref-l2-coral-envelope.png\",\n \"refs/loose-contour/ref-l2-coral-twohands.png\":\n \"803e3715-c86f-4390-a1e0-a600acaf9b2e/ref-l2-coral-twohands.png\",\n \"refs/loose-contour/ref-l3-balanced-vignette.png\":\n \"970da081-2817-491b-91e9-faa2ce18e73b/ref-l3-balanced-vignette.png\",\n \"refs/mellow-pop/ref-coral-leaf-hug.png\":\n \"2d04dac1-6c3d-4d28-a369-846373695eb7/ref-coral-leaf-hug.png\",\n \"refs/mellow-pop/ref-coral-lilypad-path-l3.png\":\n \"fc588265-b9ca-43fc-8672-65351701b410/ref-coral-lilypad-path-l3.png\",\n \"refs/mellow-pop/ref-indigo-sticky-moon-l3.png\":\n \"37c75806-951a-411c-8fe9-e20b2988b5ca/ref-indigo-sticky-moon-l3.png\",\n \"refs/mellow-pop/ref-lavender-shell-soundwaves-l3.png\":\n \"fc512536-b370-4af7-906a-4e590aacaa0a/ref-lavender-shell-soundwaves-l3.png\",\n \"refs/mellow-pop/ref-lavender-tulip-l2.png\":\n \"8e8ac32f-ca81-43ac-839c-4d6ae72036de/ref-lavender-tulip-l2.png\",\n \"refs/mellow-pop/ref-mint-open-book-l2.png\":\n \"487d5b3c-ef63-4e5f-8af1-3d4a849a9091/ref-mint-open-book-l2.png\",\n \"refs/mellow-pop/ref-periwinkle-phone-l1.png\":\n \"215178df-bca9-4c99-8451-5a5f53e279c4/ref-periwinkle-phone-l1.png\",\n \"refs/mellow-pop/ref-yellow-garden-butterflies-l3.png\":\n \"7e71b281-eb87-4bfe-bb96-cf0a3f66d33a/ref-yellow-garden-butterflies-l3.png\",\n \"refs/mellow-pop/ref-yellow-lightbulb-l1.png\":\n \"89e40858-4023-4210-b222-413a2717511d/ref-yellow-lightbulb-l1.png\",\n \"refs/mosaic-still-life/ref-art-studio.jpg\":\n \"86d48554-7ce6-420f-9cf1-27767d7d6767/ref-art-studio.jpg\",\n \"refs/mosaic-still-life/ref-autumn-cottage.jpg\":\n \"9d129b9b-dd84-40d1-b387-2effe4f6a8bc/ref-autumn-cottage.jpg\",\n \"refs/mosaic-still-life/ref-beach-picnic.jpg\":\n \"4afcc2db-c81b-42f0-94db-37b40b2aa786/ref-beach-picnic.jpg\",\n \"refs/mosaic-still-life/ref-kitchen.jpg\":\n \"f642e532-972e-4ed2-94bc-66754fa2da95/ref-kitchen.jpg\",\n \"refs/mosaic-still-life/ref-mediterranean.jpg\":\n \"87cee726-b222-42c8-b23d-b9e33742f2a9/ref-mediterranean.jpg\",\n \"refs/mosaic-still-life/ref-moonlit-garden.jpg\":\n \"76f45eab-66be-4f51-816c-34e1494dce46/ref-moonlit-garden.jpg\",\n \"refs/mosaic-still-life/ref-reading-nook.jpg\":\n \"2d9fb866-3b5e-47e4-8f45-28210ef3fd7d/ref-reading-nook.jpg\",\n \"refs/mosaic-still-life/ref-workshop.jpg\":\n \"ee358efe-c9f9-44eb-bfb3-d8d7f14ed1c4/ref-workshop.jpg\",\n \"refs/notion-illustration/ref-candle-lighting.png\":\n \"31fbcae8-98a6-4f9d-aec1-0fa4c0103e6e/ref-candle-lighting.png\",\n \"refs/notion-illustration/ref-evening-sketching.png\":\n \"6a34c410-d6c3-41ec-aea2-961fa51ddb10/ref-evening-sketching.png\",\n \"refs/notion-illustration/ref-evening-stretch.png\":\n \"c74fffa1-bc09-4ad8-91d2-180f2d1bc71a/ref-evening-stretch.png\",\n \"refs/notion-illustration/ref-pouring-tea.png\":\n \"17788881-068a-42a4-af93-62cbc5667275/ref-pouring-tea.png\",\n \"refs/notion-illustration/ref-reading-windowseat.png\":\n \"07127865-ed13-4a04-99e9-b2cbfc89e25f/ref-reading-windowseat.png\",\n \"refs/op-ed-cover/ref-mind-eye-contact.png\":\n \"f4728ea8-436c-44be-8aa9-296bc3b57334/ref-mind-eye-contact.png\",\n \"refs/op-ed-cover/ref-pastrami-full-volume.png\":\n \"216c9ad3-9d9e-4a16-82b7-0e879a5033f3/ref-pastrami-full-volume.png\",\n \"refs/op-ed-cover/ref-slowest-bowl.png\":\n \"4a65356c-2b0d-4256-a09c-9075aba644cf/ref-slowest-bowl.png\",\n \"refs/painterly-botanical/ref-child-wildflower-sage.png\":\n \"881e47a0-602f-48ca-9c2e-1423795745db/ref-child-wildflower-sage.png\",\n \"refs/painterly-botanical/ref-curled-up-peach-coral.png\":\n \"15aad0c4-3a85-4cbb-ba74-095d806760a5/ref-curled-up-peach-coral.png\",\n \"refs/painterly-botanical/ref-from-behind-sepia.png\":\n \"f9d7bbdc-5449-4d7d-a0c3-5dfd337bd6c5/ref-from-behind-sepia.png\",\n \"refs/painterly-botanical/ref-lotus-dusty-blue.png\":\n \"b4acaf29-4193-4e1f-acd4-397458b230df/ref-lotus-dusty-blue.png\",\n \"refs/painterly-botanical/ref-magnolia-emerald-ivory.png\":\n \"c5da2dff-3352-4da8-951d-eca639fb1569/ref-magnolia-emerald-ivory.png\",\n \"refs/painterly-botanical/ref-sunflower-sand.png\":\n \"4f0860dc-19fe-4497-97c4-72f1cdffa1b1/ref-sunflower-sand.png\",\n \"refs/painterly-botanical/ref-wisteria-lavender.png\":\n \"d080f0d3-f9da-431b-ba83-88eadba89d1b/ref-wisteria-lavender.png\",\n \"refs/painterly-botanical/ref-young-man-monstera.png\":\n \"ecf33b75-1068-4be9-9064-b14a48042320/ref-young-man-monstera.png\",\n \"refs/papernook/ref-anchor.png\":\n \"abb8aa87-304f-42bd-a9e5-8bf3817d6a69/ref-anchor.png\",\n \"refs/papernook/ref-barista.png\":\n \"17ce8e66-15b0-4ac0-bced-45b73a75dcc1/ref-barista.png\",\n \"refs/papernook/ref-engineer.png\":\n \"6ca628ba-4c7e-40fc-82d4-5c128f91f65d/ref-engineer.png\",\n \"refs/papernook/ref-meditation.png\":\n \"e3a39662-1710-4aa1-b805-598bc8d890d1/ref-meditation.png\",\n \"refs/papernook/ref-researcher.png\":\n \"a99ec11e-f707-497a-bebb-63cdb4c4a30f/ref-researcher.png\",\n \"refs/postcard-illustration/ref-sensoji.png\":\n \"c253d888-dc7a-4640-8383-79bef9343f23/ref-sensoji.png\",\n \"refs/postcard-illustration/ref-shibuya.png\":\n \"42971230-1487-4f61-af41-ba0c9a64c70e/ref-shibuya.png\",\n \"refs/riso-relic/ref-alarm-clock-tomato-wakeup.png\":\n \"c021c710-677b-4673-a1ee-ab168b8eb668/ref-alarm-clock-tomato-wakeup.png\",\n \"refs/riso-relic/ref-boombox-magenta-playloud.png\":\n \"8382e4e9-6e75-4fe4-8b6d-0fb7fad6e3a1/ref-boombox-magenta-playloud.png\",\n \"refs/riso-relic/ref-cassette-violet-mixtape.png\":\n \"78c5f7f2-f9bc-45c6-b917-67313c3b2f74/ref-cassette-violet-mixtape.png\",\n \"refs/riso-relic/ref-polaroid-sky-saycheese.png\":\n \"a24b583b-a545-4473-8a3e-23f301571e5c/ref-polaroid-sky-saycheese.png\",\n \"refs/riso-relic/ref-rotary-phone-mustard-ringring.png\":\n \"442b660f-ba80-47db-a98c-8322d7be2294/ref-rotary-phone-mustard-ringring.png\",\n \"refs/shadow-pop/ref-berry-record-l1.png\":\n \"634c126f-b21f-4d61-a97f-583bd5d0226c/ref-berry-record-l1.png\",\n \"refs/shadow-pop/ref-citrus-coffee-l3.png\":\n \"a4bc8084-ed7a-4acd-8ee7-949db18db919/ref-citrus-coffee-l3.png\",\n \"refs/shadow-pop/ref-citrus-suitcase-l3-transparent.png\":\n \"07a92c62-6133-4757-98ca-277c1f72184a/ref-citrus-suitcase-l3-transparent.png\",\n \"refs/shadow-pop/ref-default-mail-l2.png\":\n \"e02fe878-5702-4a68-8b4c-82acaba3a8b2/ref-default-mail-l2.png\",\n \"refs/shadow-pop/ref-tropical-plant-l2.png\":\n \"9ebb37dd-3500-4af0-9688-fe5a1901b4b5/ref-tropical-plant-l2.png\",\n \"refs/soft-vector/ref-bike-lime.png\":\n \"22708177-11bf-487c-b7d2-27f58f1523c9/ref-bike-lime.png\",\n \"refs/soft-vector/ref-desk-violet.png\":\n \"db4c7752-d7de-4b90-ad1e-caa00b3a348f/ref-desk-violet.png\",\n \"refs/soft-vector/ref-mug-mustard.png\":\n \"dc49674a-dfc3-42e5-a7a5-15a1d5c5758e/ref-mug-mustard.png\",\n \"refs/sticker-sheet/ref-desk.jpg\":\n \"3f7e4ef5-4b6b-44ed-8705-1aaf04f5a22a/ref-desk.jpg\",\n \"refs/sticker-sheet/ref-kitchen.jpg\":\n \"725ad48d-831a-4f6b-9fc0-a6a8b419610d/ref-kitchen.jpg\",\n \"refs/sticker-sheet/ref-plants.jpg\":\n \"37971d40-21b9-4427-b4cf-e139aa462783/ref-plants.jpg\",\n \"refs/sticker-sheet/ref-travel.jpg\":\n \"dc8fb342-a90a-4511-8954-1598b175e34a/ref-travel.jpg\",\n \"refs/sunlit-gouache/ref-bookshop-interior.jpg\":\n \"bb2f13d1-f849-4a5c-a493-524bc0eda5c2/ref-bookshop-interior.jpg\",\n \"refs/sunlit-gouache/ref-cafe-terrace.jpg\":\n \"5ccf8eca-3f37-4598-ae00-045e4ed7532c/ref-cafe-terrace.jpg\",\n \"refs/sunlit-gouache/ref-market-arcade.jpg\":\n \"0739d94c-0b6e-465c-9f53-9cc9a74296ec/ref-market-arcade.jpg\",\n \"refs/sunlit-gouache/ref-temple-courtyard.jpg\":\n \"d03acdc5-8bd5-41d0-8574-801fbbbb4af4/ref-temple-courtyard.jpg\",\n \"refs/sunlit-gouache/ref-tram-stop.jpg\":\n \"33e80135-0bca-4f22-9682-60a3803f5939/ref-tram-stop.jpg\",\n \"refs/tiny-wanderer/varA.jpg\":\n \"d27f7982-f692-4724-9a68-f0c796b9d271/varA.jpg\",\n \"refs/tiny-wanderer/varB.jpg\":\n \"7807e3f5-0239-4996-ba14-90e434c6e124/varB.jpg\",\n \"refs/tiny-wanderer/varC.jpg\":\n \"695a67ad-099c-4262-ab36-bacebc37e8c1/varC.jpg\",\n \"refs/tiny-wanderer/varD.jpg\":\n \"11f9046a-4245-4988-a6e7-93545f69c1db/varD.jpg\",\n};\n\n/** Resolve an illustration asset's logical path to its full CDN URL. */\nexport function illustrationAssetUrl(path: string): string {\n const objectPath = ILLUSTRATION_ASSET_PATHS[path];\n if (!objectPath) {\n throw new Error(`Unknown illustration asset path: ${path}`);\n }\n return `${ILLUSTRATION_ASSET_BASE}/${objectPath}`;\n}\n\nexport interface IllustrationStyle {\n slug: string;\n title: string;\n image: string;\n /** Optional path under ASSET_BASE used as the card cover, e.g. \"refs/<slug>/<file>\". */\n cover?: string;\n sample: string;\n width: number;\n height: number;\n refs: readonly string[];\n}\n\nexport const ILLUSTRATION_STYLES: readonly IllustrationStyle[] = [\n {\n slug: \"ink-storefront\",\n title: \"Ink Storefront\",\n image: \"ink-storefront.png\",\n cover: \"refs/ink-storefront/ref-l1-lupo.png\",\n sample: \"ref-l1-lupo.png\",\n width: 1024,\n height: 1536,\n refs: [\"ref-l1-lupo.png\", \"ref-l1-petit-pain.png\", \"ref-l2-fleur-fern.png\"],\n },\n {\n slug: \"tiny-wanderer\",\n title: \"Tiny Wanderer\",\n image: \"tiny-wanderer.jpg\",\n cover: \"refs/tiny-wanderer/varA.jpg\",\n sample: \"varA.jpg\",\n width: 512,\n height: 768,\n refs: [\"varA.jpg\", \"varB.jpg\", \"varC.jpg\", \"varD.jpg\"],\n },\n {\n slug: \"crowd-ink\",\n title: \"Crowd Ink\",\n image: \"crowd-ink.png\",\n cover: \"refs/crowd-ink/anchor.png\",\n sample: \"anchor.png\",\n width: 1536,\n height: 1024,\n refs: [\n \"anchor.png\",\n \"sample-cafe.png\",\n \"sample-office.png\",\n \"sample-picnic.png\",\n \"sample-subway.png\",\n ],\n },\n {\n slug: \"cozy-parlor\",\n title: \"Cozy Parlor\",\n image: \"cozy-parlor.jpg\",\n cover: \"refs/cozy-parlor/ref-otter-painter.jpg\",\n sample: \"ref-otter-painter.jpg\",\n width: 512,\n height: 768,\n refs: [\n \"ref-frog-letters.jpg\",\n \"ref-hedgehog-records.jpg\",\n \"ref-mouse-baker.jpg\",\n \"ref-otter-painter.jpg\",\n ],\n },\n {\n slug: \"iberian-vignette\",\n title: \"Iberian Vignette\",\n image: \"iberian-vignette.png\",\n cover: \"refs/iberian-vignette/ref-l1-manana.png\",\n sample: \"ref-l1-manana.png\",\n width: 848,\n height: 1264,\n refs: [\n \"ref-l1-manana.png\",\n \"ref-l2-cafe.png\",\n \"ref-l2-ritmo.png\",\n \"ref-l3-familia.png\",\n ],\n },\n {\n slug: \"shadow-pop\",\n title: \"Shadow Pop\",\n image: \"shadow-pop.png\",\n cover: \"refs/shadow-pop/ref-default-mail-l2.png\",\n sample: \"ref-default-mail-l2.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"ref-berry-record-l1.png\",\n \"ref-citrus-coffee-l3.png\",\n \"ref-citrus-suitcase-l3-transparent.png\",\n \"ref-default-mail-l2.png\",\n \"ref-tropical-plant-l2.png\",\n ],\n },\n {\n slug: \"jade-blockprint\",\n title: \"Jade Blockprint\",\n image: \"jade-blockprint.png\",\n cover: \"refs/jade-blockprint/ref-sage-sprout-l1.png\",\n sample: \"ref-sage-sprout-l1.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"ref-cobalt-ship-l2.png\",\n \"ref-coral-turntable-l1.png\",\n \"ref-mustard-monstera-l1.png\",\n \"ref-rose-perfume-l2.png\",\n \"ref-sage-sprout-l1.png\",\n \"ref-sage-teapot-l1.png\",\n \"ref-slate-pen-notebook-l2.png\",\n \"ref-terracotta-pitcher-l2.png\",\n ],\n },\n {\n slug: \"loose-contour\",\n title: \"Loose Contour\",\n image: \"loose-contour.png\",\n sample: \"ref-l3-balanced-vignette.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"ref-l1-mustard-hand.png\",\n \"ref-l2-blue-laptop.png\",\n \"ref-l2-coral-envelope.png\",\n \"ref-l2-coral-twohands.png\",\n \"ref-l3-balanced-vignette.png\",\n ],\n },\n {\n slug: \"soft-vector\",\n title: \"Soft Vector\",\n image: \"soft-vector.png\",\n cover: \"refs/soft-vector/ref-bike-lime.png\",\n sample: \"ref-desk-violet.png\",\n width: 1024,\n height: 1024,\n refs: [\"ref-bike-lime.png\", \"ref-desk-violet.png\", \"ref-mug-mustard.png\"],\n },\n {\n slug: \"grain-poster\",\n title: \"Grain Poster\",\n image: \"grain-poster.png\",\n sample: \"ref-twilightdesk-twilight-l3-solo.png\",\n width: 704,\n height: 1472,\n refs: [\n \"ref-bench-sunsetcoral-l2-pair.png\",\n \"ref-cafe-cooldawn-l2-solo.png\",\n \"ref-dogwalker-forestgreen-l1-solo.png\",\n \"ref-guitar-twilight-l1-solo.png\",\n \"ref-skateboard-cooldawn-l1-solo.png\",\n \"ref-sunhat-sunsetcoral-l1-solo.png\",\n \"ref-twilightdesk-twilight-l3-solo.png\",\n ],\n },\n {\n slug: \"sunlit-gouache\",\n title: \"Sunlit Gouache\",\n image: \"sunlit-gouache.png\",\n sample: \"ref-bookshop-interior.jpg\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-bookshop-interior.jpg\",\n \"ref-cafe-terrace.jpg\",\n \"ref-market-arcade.jpg\",\n \"ref-temple-courtyard.jpg\",\n \"ref-tram-stop.jpg\",\n ],\n },\n {\n slug: \"folk-muse\",\n title: \"Folk Muse\",\n image: \"folk-muse.png\",\n sample: \"ref-canonical.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-canonical.png\",\n \"ref-sunset-dove.png\",\n \"ref-tropical-butterfly.png\",\n \"ref-winter-cat.png\",\n ],\n },\n {\n slug: \"light-pop-portrait\",\n title: \"Light Pop Portrait\",\n image: \"light-pop-portrait.png\",\n sample: \"ref-sleepy-girl-bunny-peach.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"ref-laughing-girl-braids-magenta.png\",\n \"ref-sleepy-girl-bunny-peach.png\",\n \"ref-sly-boy-popsicle-lavender.png\",\n \"ref-surprised-boy-frog-mint.png\",\n \"ref-yellowhat-mushroom-cobalt.png\",\n \"ref-zen-kid-bird-teal.png\",\n ],\n },\n {\n slug: \"postcard-illustration\",\n title: \"Postcard Illustration\",\n image: \"postcard-illustration.png\",\n sample: \"ref-sensoji.png\",\n width: 1024,\n height: 1536,\n refs: [\"ref-sensoji.png\", \"ref-shibuya.png\"],\n },\n {\n slug: \"mosaic-still-life\",\n title: \"Mosaic Still Life\",\n image: \"mosaic-still-life.png\",\n sample: \"ref-reading-nook.jpg\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-art-studio.jpg\",\n \"ref-autumn-cottage.jpg\",\n \"ref-beach-picnic.jpg\",\n \"ref-kitchen.jpg\",\n \"ref-mediterranean.jpg\",\n \"ref-moonlit-garden.jpg\",\n \"ref-reading-nook.jpg\",\n \"ref-workshop.jpg\",\n ],\n },\n {\n slug: \"painterly-botanical\",\n title: \"Painterly Botanical\",\n image: \"painterly-botanical.png\",\n sample: \"ref-wisteria-lavender.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-child-wildflower-sage.png\",\n \"ref-curled-up-peach-coral.png\",\n \"ref-from-behind-sepia.png\",\n \"ref-lotus-dusty-blue.png\",\n \"ref-magnolia-emerald-ivory.png\",\n \"ref-sunflower-sand.png\",\n \"ref-wisteria-lavender.png\",\n \"ref-young-man-monstera.png\",\n ],\n },\n {\n slug: \"op-ed-cover\",\n title: \"Op-Ed Cover\",\n image: \"op-ed-cover.png\",\n sample: \"ref-slowest-bowl.png\",\n width: 896,\n height: 1152,\n refs: [\n \"ref-mind-eye-contact.png\",\n \"ref-pastrami-full-volume.png\",\n \"ref-slowest-bowl.png\",\n ],\n },\n {\n slug: \"endpaper\",\n title: \"Endpaper\",\n image: \"endpaper.png\",\n sample: \"ref-mossy-teal-cats-l2.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-butter-birds-l3.png\",\n \"ref-cobalt-sea-l3.png\",\n \"ref-mossy-teal-cats-l2.png\",\n \"ref-plum-foxes-l2.png\",\n \"ref-slate-houseplants-l2.png\",\n ],\n },\n {\n slug: \"inkstomp\",\n title: \"Inkstomp\",\n image: \"inkstomp.png\",\n sample: \"ref-quiet-quitter.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-climb-climb.png\",\n \"ref-crunchy-cricket.png\",\n \"ref-greasy-griddle.png\",\n \"ref-jolly-jalapeno.png\",\n \"ref-pocket-plum.png\",\n \"ref-quiet-quitter.png\",\n \"ref-rocket-roach.png\",\n \"ref-turbo-tofu.png\",\n ],\n },\n {\n slug: \"mellow-pop\",\n title: \"Mellow Pop\",\n image: \"mellow-pop.png\",\n sample: \"ref-mint-open-book-l2.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-coral-leaf-hug.png\",\n \"ref-coral-lilypad-path-l3.png\",\n \"ref-indigo-sticky-moon-l3.png\",\n \"ref-lavender-shell-soundwaves-l3.png\",\n \"ref-lavender-tulip-l2.png\",\n \"ref-mint-open-book-l2.png\",\n \"ref-periwinkle-phone-l1.png\",\n \"ref-yellow-garden-butterflies-l3.png\",\n \"ref-yellow-lightbulb-l1.png\",\n ],\n },\n {\n slug: \"papernook\",\n title: \"Papernook\",\n image: \"papernook.png\",\n sample: \"ref-researcher.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-anchor.png\",\n \"ref-barista.png\",\n \"ref-engineer.png\",\n \"ref-meditation.png\",\n \"ref-researcher.png\",\n ],\n },\n {\n slug: \"ink-mascot\",\n title: \"Ink Mascot\",\n image: \"ink-mascot.png\",\n sample: \"ref-content-terracotta.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-branding-mint.png\",\n \"ref-content-terracotta.png\",\n \"ref-conversion-sage.png\",\n \"ref-email-lavender.png\",\n \"ref-growth-forest.png\",\n \"ref-launch-tangerine.png\",\n \"ref-loyalty-plum.png\",\n \"ref-seo-coral.png\",\n ],\n },\n {\n slug: \"riso-relic\",\n title: \"Riso Relic\",\n image: \"riso-relic.png\",\n sample: \"ref-rotary-phone-mustard-ringring.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-alarm-clock-tomato-wakeup.png\",\n \"ref-boombox-magenta-playloud.png\",\n \"ref-cassette-violet-mixtape.png\",\n \"ref-polaroid-sky-saycheese.png\",\n \"ref-rotary-phone-mustard-ringring.png\",\n ],\n },\n {\n slug: \"editorial-flatfolk\",\n title: \"Editorial Flatfolk\",\n image: \"editorial-flatfolk.png\",\n sample: \"ref-harbor.png\",\n width: 1024,\n height: 1024,\n refs: [\"ref-alpine.png\", \"ref-harbor.png\", \"ref-park.png\"],\n },\n {\n slug: \"flat-poster\",\n title: \"Flat Poster\",\n image: \"flat-poster.png\",\n sample: \"ref-teacup-lavender-takeabeat.png\",\n width: 1024,\n height: 1536,\n refs: [\n \"ref-lightbulb-sky-thinkbigger.png\",\n \"ref-magnifier-mustard-lookcloser.png\",\n \"ref-mountain-rose-reachhigher.png\",\n \"ref-robot-yellow-aiteammate.png\",\n \"ref-rocket-coral-shipfaster.png\",\n \"ref-shield-sage-alwayson.png\",\n \"ref-teacup-lavender-takeabeat.png\",\n ],\n },\n {\n slug: \"grainy-duotone\",\n title: \"Grainy Duotone\",\n image: \"grainy-duotone.png\",\n sample: \"ref-magnifier-lavender-mustard-l2.png\",\n width: 1056,\n height: 992,\n refs: [\n \"ref-balloons-navy-peach-l3.png\",\n \"ref-ladder-burgundy-pink-l2.png\",\n \"ref-launch-pennant-1.png\",\n \"ref-launch-pennant-2.png\",\n \"ref-launch-pennant-3.png\",\n \"ref-magnifier-lavender-mustard-l2.png\",\n \"ref-sprout-sage-coral-l1.png\",\n ],\n },\n {\n slug: \"sticker-sheet\",\n title: \"Sticker Sheet\",\n image: \"sticker-sheet.png\",\n sample: \"ref-desk.jpg\",\n width: 848,\n height: 1264,\n refs: [\n \"ref-desk.jpg\",\n \"ref-kitchen.jpg\",\n \"ref-plants.jpg\",\n \"ref-travel.jpg\",\n ],\n },\n {\n slug: \"folk-storybook\",\n title: \"Folk Storybook\",\n image: \"folk-storybook.png\",\n sample: \"ref-reading-nook.jpg\",\n width: 1024,\n height: 1024,\n refs: [\"ref-chill-tussle.jpg\", \"ref-puzzle.jpg\", \"ref-reading-nook.jpg\"],\n },\n {\n slug: \"inkdab\",\n title: \"Inkdab\",\n image: \"inkdab.png\",\n sample: \"ref-reading-lavender-rich.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"ref-brainstorm-butter-cream-rich.png\",\n \"ref-calling-blue-light.png\",\n \"ref-handoff-dusty-pink.png\",\n \"ref-pitch-blue.png\",\n \"ref-reading-lavender-rich.png\",\n ],\n },\n {\n slug: \"iso-scene\",\n title: \"Iso Scene\",\n image: \"iso-scene.png\",\n sample: \"blue-city-construction.png\",\n width: 1024,\n height: 1024,\n refs: [\n \"blue-city-construction.png\",\n \"coral-hanging-garden.png\",\n \"sky-castle.png\",\n \"yellow-floating-island-park.png\",\n ],\n },\n {\n slug: \"notion-illustration\",\n title: \"Notion Illustration\",\n image: \"notion-illustration.png\",\n sample: \"ref-reading-windowseat.png\",\n width: 1088,\n height: 960,\n refs: [\n \"ref-candle-lighting.png\",\n \"ref-evening-sketching.png\",\n \"ref-evening-stretch.png\",\n \"ref-pouring-tea.png\",\n \"ref-reading-windowseat.png\",\n ],\n },\n];\n\nconst ILLUSTRATION_TEMPLATE_CARD_PREVIEW_IMAGES: Readonly<\n Record<string, string>\n> = {\n \"ink-storefront\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/d3633cfc-bb66-4cf1-9a9b-0c2ac53f12e4/template-card-illustration-ink-storefront-512.jpg\",\n \"tiny-wanderer\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/139cd332-fe89-4326-aa8f-f7052b745bdf/template-card-illustration-tiny-wanderer-512.jpg\",\n \"crowd-ink\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/c4a91b62-96b1-42d2-bf87-30065da6e5b9/template-card-illustration-crowd-ink-512.jpg\",\n \"cozy-parlor\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/aa7daace-8fa8-4319-a31a-bb55c8804382/template-card-illustration-cozy-parlor-512.jpg\",\n \"iberian-vignette\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/952a2f34-9148-49d4-8640-0fd9b6cbdf20/template-card-illustration-iberian-vignette-512.jpg\",\n \"shadow-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/1ee7e63c-d7fd-4755-a22a-d5be45237afc/template-card-illustration-shadow-pop-512.jpg\",\n \"jade-blockprint\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/e4d790c1-c249-4dc0-8820-1366caaa3546/template-card-illustration-jade-blockprint-512.jpg\",\n \"loose-contour\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/fcfc3279-938d-4a5a-842d-c82bd19e96fa/template-card-illustration-loose-contour-512.jpg\",\n \"soft-vector\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/a3b7eab7-7db1-4630-a441-98a1b3ab7b3e/template-card-illustration-soft-vector-512.jpg\",\n \"grain-poster\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/696913c7-8743-4033-95ea-203ba6faf294/template-card-illustration-grain-poster-512.jpg\",\n \"sunlit-gouache\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/ed2d0fe9-5f5c-4aae-bb46-faf132215426/template-card-illustration-sunlit-gouache-512.jpg\",\n \"folk-muse\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/17eddd70-ef01-4d39-8d70-a0a0393b6eb8/template-card-illustration-folk-muse-512.jpg\",\n \"light-pop-portrait\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/0ec684e9-2e98-4905-9a25-a32c1de06f22/template-card-illustration-light-pop-portrait-512.jpg\",\n \"postcard-illustration\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/221efbba-3ed6-4d86-be6e-e6cf6c3d5d57/template-card-illustration-postcard-illustration-512.jpg\",\n \"mosaic-still-life\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/20c33b1f-66aa-4ceb-89cd-10458e93a086/template-card-illustration-mosaic-still-life-512.jpg\",\n \"painterly-botanical\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/e054f277-e76c-429e-b88f-a205e8728375/template-card-illustration-painterly-botanical-512.jpg\",\n \"op-ed-cover\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/6f93b734-20f9-4704-9d32-a5a1229b94a1/template-card-illustration-op-ed-cover-512.jpg\",\n endpaper:\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/8e17040a-a5f7-4184-b473-04b55546cbd0/template-card-illustration-endpaper-512.jpg\",\n inkstomp:\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/3f873461-5166-43f8-86d9-25d1d6e7cc1f/template-card-illustration-inkstomp-512.jpg\",\n \"mellow-pop\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/16e05916-3e40-4890-a9a8-5ee968427305/template-card-illustration-mellow-pop-512.jpg\",\n papernook:\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/fb7b6c2f-0a5c-4e87-93f9-74a0bdc1533d/template-card-illustration-papernook-512.jpg\",\n \"ink-mascot\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/13ad3bce-e719-4fa9-93a4-0e44c744091c/template-card-illustration-ink-mascot-512.jpg\",\n \"riso-relic\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/a1b7f915-b993-4faa-a37e-d870bc8918ab/template-card-illustration-riso-relic-512.jpg\",\n \"editorial-flatfolk\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/f37b65f3-9db8-4b57-b500-b686596649cf/template-card-illustration-editorial-flatfolk-512.jpg\",\n \"flat-poster\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/88738b99-22b1-4e3b-8660-a0291c3e8e86/template-card-illustration-flat-poster-512.jpg\",\n \"grainy-duotone\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/ce3fc7c4-55fe-4edf-8d9a-6b65554ab2bd/template-card-illustration-grainy-duotone-512.jpg\",\n \"sticker-sheet\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/cc1b556a-afe3-4410-a46a-74431de1c976/template-card-illustration-sticker-sheet-512.jpg\",\n \"folk-storybook\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/003c7de6-4409-46ec-b6c7-53005e877c7b/template-card-illustration-folk-storybook-512.jpg\",\n inkdab:\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/b0f5c0e3-c827-4008-8eee-26b5117051be/template-card-illustration-inkdab-512.jpg\",\n \"iso-scene\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/2d9fe8aa-637a-4364-b035-cc42052da270/template-card-illustration-iso-scene-512.jpg\",\n \"notion-illustration\":\n \"https://static.vm0.io/vm0/artifact-templates/illustration/card-previews/c1faa987-4b22-4594-80ab-0a2335bc6698/template-card-illustration-notion-illustration-512.jpg\",\n};\n\nexport interface IllustrationTemplateItem {\n readonly slug: string;\n readonly title: string;\n readonly illustrationStyleId: string;\n readonly previewImage: string;\n readonly previewImages: readonly string[];\n readonly cardPreviewImage?: string;\n readonly variationCount: number;\n /** Intrinsic pixel dimensions of the style's reference frame, used to reserve\n * the card's aspect ratio so the full illustration renders without cropping,\n * letterboxing, or layout shift. */\n readonly width: number;\n readonly height: number;\n readonly tag: \"illustration\";\n}\n\nfunction illustrationPreviewImage(style: IllustrationStyle): string {\n const cover = style.cover ?? `images/${style.image}`;\n return illustrationAssetUrl(cover);\n}\n\nfunction illustrationTemplateCardPreviewImage(\n style: IllustrationStyle,\n): string {\n const cardPreviewImage =\n ILLUSTRATION_TEMPLATE_CARD_PREVIEW_IMAGES[style.slug];\n if (!cardPreviewImage) {\n throw new Error(\n `Missing illustration template card preview image: ${style.slug}`,\n );\n }\n return cardPreviewImage;\n}\n\nexport const ILLUSTRATION_TEMPLATE_ITEMS: readonly IllustrationTemplateItem[] =\n ILLUSTRATION_STYLES.map((style) => {\n return {\n slug: style.slug,\n title: style.title,\n illustrationStyleId: `image-style:${style.slug}`,\n previewImage: illustrationPreviewImage(style),\n cardPreviewImage: illustrationTemplateCardPreviewImage(style),\n previewImages: style.refs.map((ref) => {\n return illustrationAssetUrl(`refs/${style.slug}/${ref}`);\n }),\n variationCount: style.refs.length,\n width: style.width,\n height: style.height,\n tag: \"illustration\",\n };\n });\n","import {\n findVideoTemplate,\n listVideoTemplates,\n type VideoTemplateRegistryEntry,\n} from \"./resource-registry\";\n\nexport interface VideoTemplateItem {\n readonly id: string;\n readonly slug: string;\n readonly title: string;\n readonly description: string;\n readonly previewImage: string;\n readonly cardPreviewImage?: string;\n readonly previewVideo: string;\n readonly previewWebm: string;\n readonly sourcePath: string;\n}\n\nconst VIDEO_TEMPLATE_PREVIEW_IMAGES: Readonly<Record<string, string>> = {\n \"chinese-ink-art\":\n \"https://static.vm0.io/vm0/artifact-templates/video/35a45e0a-095f-476c-9586-840b3e591947/thumbnail-chinese-ink-art.jpg\",\n \"cyberpunk-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/b870f6c1-95a8-4ab6-aa0d-a125cb57dd3e/thumbnail-cyberpunk-anime.jpg\",\n \"epic-grandeur\":\n \"https://static.vm0.io/vm0/artifact-templates/video/2c0eb943-f65a-4225-beaa-78246f7c4a1b/thumbnail-imax-epic-cinematic.jpg\",\n \"fashion-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/video/31026908-c354-4cb5-a51b-8ac8e12ac910/thumbnail-fashion-editorial.jpg\",\n \"gourmet-documentary\":\n \"https://static.vm0.io/vm0/artifact-templates/video/30ab1733-bec0-4ddb-9e15-8f707377af7b/thumbnail-gourmet-documentary.jpg\",\n \"hand-drawn-fantasy-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/ad08022e-5b28-4e80-a67f-cbe5d27cbc03/thumbnail-hand-drawn-fantasy-anime.jpg\",\n \"japanese-wabi-sabi\":\n \"https://static.vm0.io/vm0/artifact-templates/video/a7a69fe3-9e6c-48fd-af55-62c8a57a0371/thumbnail-japanese-wabi-sabi.jpg\",\n \"luxury-product\":\n \"https://static.vm0.io/vm0/artifact-templates/video/016fd6d1-05d9-4709-a7d8-0799409fa1d9/thumbnail-luxury-watch-product.jpg\",\n \"shortform-viral\":\n \"https://static.vm0.io/vm0/artifact-templates/video/40ab801f-16bc-4e29-8370-6b10cd394e30/thumbnail-shortform-viral.jpg\",\n \"sports-performance-ad\":\n \"https://static.vm0.io/vm0/artifact-templates/video/5a95669a-b86c-4817-9d82-250da7509b54/thumbnail-athletic-motivation.jpg\",\n};\n\nconst VIDEO_TEMPLATE_CARD_PREVIEW_IMAGES: Readonly<Record<string, string>> = {\n \"epic-grandeur\":\n \"https://static.vm0.io/vm0/artifact-templates/video/9ad13726-9151-4c68-b89d-afbe90c949bb/template-card-video-epic-grandeur-480x270.jpg\",\n \"gourmet-documentary\":\n \"https://static.vm0.io/vm0/artifact-templates/video/37cffe87-de56-4a53-bddc-b8f43f97b260/template-card-video-gourmet-documentary-480x270.jpg\",\n \"luxury-product\":\n \"https://static.vm0.io/vm0/artifact-templates/video/9726e1d9-f08e-4a94-b823-2b1f89bc382d/template-card-video-luxury-product-480x270.jpg\",\n \"shortform-viral\":\n \"https://static.vm0.io/vm0/artifact-templates/video/2d798f24-325f-4185-9a01-28b3faa3950f/template-card-video-shortform-viral-480x270.jpg\",\n \"fashion-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/video/fa629d39-bf4f-433c-ad87-7385aa05700b/template-card-video-fashion-editorial-480x270.jpg\",\n \"sports-performance-ad\":\n \"https://static.vm0.io/vm0/artifact-templates/video/91cf5878-1b6f-468c-82e1-4d59a99fccae/template-card-video-sports-performance-ad-480x270.jpg\",\n \"japanese-wabi-sabi\":\n \"https://static.vm0.io/vm0/artifact-templates/video/07d4529e-d9ed-43dd-bf13-c2f6ac253476/template-card-video-japanese-wabi-sabi-480x270.jpg\",\n \"hand-drawn-fantasy-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/82204005-e01a-47de-9120-e533e992b290/template-card-video-hand-drawn-fantasy-anime-480x270.jpg\",\n \"cyberpunk-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/1d690a29-2be1-404b-9698-638f18685513/template-card-video-cyberpunk-anime-480x270.jpg\",\n \"chinese-ink-art\":\n \"https://static.vm0.io/vm0/artifact-templates/video/0bad21ee-4b92-4ea0-ad15-5453573aad7b/template-card-video-chinese-ink-art-480x270.jpg\",\n};\n\nconst VIDEO_TEMPLATE_PREVIEW_VIDEOS: Readonly<Record<string, string>> = {\n \"chinese-ink-art\":\n \"https://static.vm0.io/vm0/artifact-templates/video/8314b0ae-6051-4daa-b789-51bec466ba66/video-8314b0ae.mp4\",\n \"cyberpunk-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/e1cfe984-3bfc-4ba1-acb3-9b40b7b76771/video-e1cfe984.mp4\",\n \"epic-grandeur\":\n \"https://static.vm0.io/vm0/artifact-templates/video/df99de74-8eea-420c-86d1-c104ba5ba6b6/video-df99de74.mp4\",\n \"fashion-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/video/8bf8b826-2517-435b-8882-7f071c683e46/video-8bf8b826.mp4\",\n \"gourmet-documentary\":\n \"https://static.vm0.io/vm0/artifact-templates/video/3f0dd8d7-bfc3-4443-9b95-b58faf0d4f64/video-3f0dd8d7.mp4\",\n \"hand-drawn-fantasy-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/da7c7c2d-3383-4796-8e83-b0e112127387/video-da7c7c2d.mp4\",\n \"japanese-wabi-sabi\":\n \"https://static.vm0.io/vm0/artifact-templates/video/72b754cf-f76d-4fa9-9015-ab5082b49608/video-72b754cf.mp4\",\n \"luxury-product\":\n \"https://static.vm0.io/vm0/artifact-templates/video/9e20abbb-a630-4523-857f-8350eba2ea4f/video-9e20abbb.mp4\",\n \"shortform-viral\":\n \"https://static.vm0.io/vm0/artifact-templates/video/4bac1319-dba7-47a0-bc1b-4d1e932f71fd/video-4bac1319.mp4\",\n \"sports-performance-ad\":\n \"https://static.vm0.io/vm0/artifact-templates/video/104ad36a-4d0c-472b-8416-d04cc2f06e75/video-104ad36a.mp4\",\n};\n\nconst VIDEO_TEMPLATE_PREVIEW_WEBMS: Readonly<Record<string, string>> = {\n \"chinese-ink-art\":\n \"https://static.vm0.io/vm0/artifact-templates/video/b18f8d3e-22c9-468f-817e-2046d134fcf6/chinese-ink-art.webm\",\n \"cyberpunk-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/cf8ab683-7c7e-4cfd-b9f2-44eec893407e/cyberpunk-anime.webm\",\n \"epic-grandeur\":\n \"https://static.vm0.io/vm0/artifact-templates/video/e8b67299-f944-4942-a727-931026dea2a0/epic-grandeur.webm\",\n \"fashion-editorial\":\n \"https://static.vm0.io/vm0/artifact-templates/video/51e93c96-03be-4d5a-a66c-b90ec6c52111/fashion-editorial.webm\",\n \"gourmet-documentary\":\n \"https://static.vm0.io/vm0/artifact-templates/video/3b39aeed-30be-4e79-8a6a-23ffd76fca86/gourmet-documentary.webm\",\n \"hand-drawn-fantasy-anime\":\n \"https://static.vm0.io/vm0/artifact-templates/video/42f6fb38-6544-4e42-ba4d-5dd352da9051/hand-drawn-fantasy-anime.webm\",\n \"japanese-wabi-sabi\":\n \"https://static.vm0.io/vm0/artifact-templates/video/22d6c8cb-b7f0-40f7-9c5f-022e578a060b/japanese-wabi-sabi.webm\",\n \"luxury-product\":\n \"https://static.vm0.io/vm0/artifact-templates/video/1ad1c730-d146-4bf5-9936-dea198c593ec/luxury-product.webm\",\n \"shortform-viral\":\n \"https://static.vm0.io/vm0/artifact-templates/video/0b1dbbb8-782e-451d-87e9-6652f60116bf/shortform-viral.webm\",\n \"sports-performance-ad\":\n \"https://static.vm0.io/vm0/artifact-templates/video/a6dab950-dddc-4116-9bc3-624265b35c12/sports-performance-ad.webm\",\n};\n\nfunction videoTemplateSlug(entry: VideoTemplateRegistryEntry): string {\n return entry.id.replace(/^video-template:/u, \"\");\n}\n\nfunction toVideoTemplateItem(\n entry: VideoTemplateRegistryEntry,\n): VideoTemplateItem {\n const slug = videoTemplateSlug(entry);\n const previewImage = VIDEO_TEMPLATE_PREVIEW_IMAGES[slug];\n if (!previewImage) {\n throw new Error(`Missing video template preview image: ${entry.id}`);\n }\n const cardPreviewImage = VIDEO_TEMPLATE_CARD_PREVIEW_IMAGES[slug];\n if (!cardPreviewImage) {\n throw new Error(`Missing video template card preview image: ${entry.id}`);\n }\n const previewVideo = VIDEO_TEMPLATE_PREVIEW_VIDEOS[slug];\n if (!previewVideo) {\n throw new Error(`Missing video template preview video: ${entry.id}`);\n }\n const previewWebm = VIDEO_TEMPLATE_PREVIEW_WEBMS[slug];\n if (!previewWebm) {\n throw new Error(`Missing video template preview webm: ${entry.id}`);\n }\n return {\n id: entry.id,\n slug,\n title: entry.name,\n description: entry.description,\n previewImage,\n cardPreviewImage,\n previewVideo,\n previewWebm,\n sourcePath: entry.source.path,\n };\n}\n\nexport const VIDEO_TEMPLATE_ITEMS: readonly VideoTemplateItem[] =\n listVideoTemplates().map(toVideoTemplateItem);\n\nexport function findVideoTemplateItem(\n id: string,\n): VideoTemplateItem | undefined {\n const entry = findVideoTemplate(id);\n if (!entry) {\n return undefined;\n }\n return VIDEO_TEMPLATE_ITEMS.find((item) => {\n return item.id === entry.id;\n });\n}\n","export interface WorkflowTemplateItem {\n readonly id: `workflow-template:${string}`;\n readonly title: string;\n readonly description: string;\n // Persona group used to organize the template picker. One of\n // WORKFLOW_TEMPLATE_CATEGORIES.\n readonly category: string;\n // Connector types shown as icons on the card. Typed loosely because the\n // catalog is curated by hand; the picker filters these to the connector\n // types that actually have an icon (isConnectorIconType).\n readonly connectors: readonly string[];\n readonly promptGuidance: string;\n}\n\n// Ordered persona groups for the template picker. \"Everyone\" leads and holds the\n// generic starter template; the rest mirror the onboarding personas.\nexport const WORKFLOW_TEMPLATE_CATEGORIES: readonly string[] = [\n \"Everyone\",\n \"Engineering\",\n \"Product\",\n \"Data\",\n \"Marketing\",\n \"Sales\",\n \"Support\",\n \"CEO\",\n \"Operations\",\n];\n\n// Built-in workflow templates. Each entry compiles into promptGuidance that\n// instructs the agent to build a workflow (via the workflow-setup skill) rather\n// than run a one-shot prompt. This set merges the curated gallery (#20409) with\n// the persona-bucketed catalog derived from the onboarding cards.\nfunction defineWorkflowTemplate(args: {\n readonly id: WorkflowTemplateItem[\"id\"];\n readonly category: string;\n readonly title: string;\n readonly description: string;\n readonly connectors: readonly string[];\n readonly behavior: readonly string[];\n readonly missingInfo: string;\n}): WorkflowTemplateItem {\n return {\n id: args.id,\n title: args.title,\n description: args.description,\n category: args.category,\n connectors: args.connectors,\n promptGuidance: [\n \"# Workflow Template Context\",\n \"\",\n `The user selected the built-in workflow template: ${args.title} (${args.id}).`,\n \"Use the workflow-setup skill to help the user create or remix a workflow for this agent.\",\n \"Do not execute an existing workflow. This template is only context for creating or updating a workflow.\",\n \"\",\n \"Template behavior:\",\n ...args.behavior.map((line) => {\n return `- ${line}`;\n }),\n \"\",\n args.missingInfo,\n ].join(\"\\n\"),\n };\n}\n\nexport const WORKFLOW_TEMPLATE_ITEMS: readonly WorkflowTemplateItem[] = [\n defineWorkflowTemplate({\n id: \"workflow-template:auto-inbox-label\",\n category: \"Everyone\",\n title: \"Auto-inbox label\",\n description:\n \"Create a workflow that runs when a Gmail label is applied and handles the labeled inbox item.\",\n connectors: [\"gmail\"],\n behavior: [\n \"Create a workflow that reacts when a named Gmail label is applied to a message.\",\n \"Treat the labeled message as the inbox item to process.\",\n \"Inspect the message context, decide the requested handling path, and prepare the appropriate follow-up.\",\n \"Add a Gmail label-applied automation for the workflow once the user confirms the label name.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Gmail label name, handling rules, and final action if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:daily-standup-report\",\n category: \"Engineering\",\n title: \"Daily standup report\",\n description:\n \"Pull product and engineering signals each morning, create a short report, and post it to Slack.\",\n connectors: [\"github\", \"sentry\", \"axiom\", \"plausible\", \"slack\"],\n behavior: [\n \"Create a scheduled workflow that runs every weekday or every morning.\",\n \"Pull recent GitHub activity, Sentry issues, Axiom metrics, and Plausible traffic signals.\",\n \"Summarize changes, incidents, usage movement, blockers, and notable risks.\",\n \"Post the final standup report to a Slack channel selected by the user.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the schedule, timezone, Slack channel, metric scope, and any required report sections if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:github-pr-summarizer\",\n category: \"Engineering\",\n title: \"GitHub PR summarizer\",\n description:\n \"Collect merged pull requests, save a structured report in Notion, and optionally post to Slack.\",\n connectors: [\"github\", \"notion\", \"slack\"],\n behavior: [\n \"Create a daily or weekly scheduled workflow for one or more GitHub repositories.\",\n \"Find merged pull requests in the selected time window and group them by product or code area.\",\n \"Write a concise user-impact summary with links to the relevant pull requests.\",\n \"Save the report in Notion and optionally post a shorter version to Slack.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the repositories, cadence, timezone, Notion destination, Slack destination, and grouping rules if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:sentry-issue-digest\",\n category: \"Engineering\",\n title: \"Sentry issue digest\",\n description:\n \"Send a daily digest of critical and high-severity Sentry issues to Slack.\",\n connectors: [\"sentry\", \"slack\"],\n behavior: [\n \"Create a daily scheduled workflow that checks selected Sentry projects.\",\n \"Group active issues by severity, recency, affected users, and ownership when available.\",\n \"Highlight regressions, repeated failures, and issues needing escalation.\",\n \"Post the digest to a Slack channel with links back to Sentry.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Sentry projects, severity threshold, schedule, timezone, and Slack channel if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:vercel-deploy-digest\",\n category: \"Engineering\",\n title: \"Vercel deploy digest\",\n description:\n \"Monitor Vercel deployments, link them to GitHub commits, and alert Slack on failures.\",\n connectors: [\"vercel\", \"github\", \"slack\"],\n behavior: [\n \"Create a workflow that monitors selected Vercel projects on a schedule or via webhook when available.\",\n \"Link deployments to GitHub commits, pull requests, and authors when possible.\",\n \"Summarize recent successful deployments and call out failed or stuck deployments.\",\n \"Send Slack alerts for failures and optionally send a periodic deployment digest.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Vercel projects, GitHub repositories, alert rules, cadence, and Slack channel if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:auto-merge-github-prs\",\n category: \"Engineering\",\n title: \"Auto-merge GitHub PRs\",\n description:\n \"Review PRs labeled ready-to-merge, wait for CI, then merge and post to Slack.\",\n connectors: [\"github\", \"vercel\", \"slack\"],\n behavior: [\n \"A PR is labeled ready-to-merge\",\n \"Zero reviews and waits on CI\",\n \"Merged and posted to Slack\",\n ],\n missingInfo:\n \"Connectors: github required; vercel, slack optional.\\nSuggested trigger: Add a github-label-applied event trigger on the ready-to-merge label so it runs the moment a PR is labeled.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:file-sentry-crashes-github\",\n category: \"Engineering\",\n title: \"File Sentry crashes as GitHub issues\",\n description:\n \"Rank new Sentry errors by user impact and file the worst as GitHub issues.\",\n connectors: [\"sentry\", \"github\", \"linear\", \"slack\"],\n behavior: [\n \"Zero pulls new Sentry errors\",\n \"Ranked by user impact\",\n \"Issues filed and owner pinged\",\n ],\n missingInfo:\n \"Connectors: sentry, github required; linear, slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. hourly). Sentry has no native event trigger yet, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:draft-github-release-notes-notion\",\n category: \"Engineering\",\n title: \"Draft GitHub release notes in Notion\",\n description:\n \"Turn the PRs merged since the last release into clean notes in Notion.\",\n connectors: [\"github\", \"notion\", \"slack\"],\n behavior: [\n \"A PR is labeled shipped\",\n \"Zero gathers merged PRs\",\n \"Release notes saved to Notion\",\n ],\n missingInfo:\n \"Connectors: github, notion required; slack optional.\\nSuggested trigger: Add a github-label-applied event trigger on a release label, or a schedule trigger you run per release.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:feedback-router\",\n category: \"Product\",\n title: \"Feedback router\",\n description:\n \"Watch a Slack channel and route product feedback into Notion with labels and owners.\",\n connectors: [\"slack\", \"notion\"],\n behavior: [\n \"Create a workflow that reviews messages from a selected Slack feedback channel.\",\n \"Classify feedback into themes, priority, sentiment, and affected product area.\",\n \"Create structured Notion records with links back to the source Slack messages.\",\n \"Optionally tag an owner or add follow-up notes based on the user's routing rules.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Slack channel, Notion database, taxonomy, owner mapping, and run cadence if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:github-idea-to-notion-spec\",\n category: \"Product\",\n title: \"Turn a GitHub idea into a Notion spec\",\n description:\n \"Expand a labeled GitHub issue into a structured product spec in Notion.\",\n connectors: [\"github\", \"notion\", \"figma\"],\n behavior: [\n \"An issue is labeled needs-spec\",\n \"Zero expands it into a PRD\",\n \"Saved to Notion\",\n ],\n missingInfo:\n \"Connectors: github, notion required; figma optional.\\nSuggested trigger: Add a github-label-applied event trigger on the needs-spec label.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:post-release-notes-slack\",\n category: \"Product\",\n title: \"Post release notes to Slack\",\n description:\n \"Draft a changelog from recently shipped work and post it to Slack.\",\n connectors: [\"github\", \"slack\", \"notion\"],\n behavior: [\n \"A PR is labeled release\",\n \"Zero drafts the changelog\",\n \"Posted to Slack and Notion\",\n ],\n missingInfo:\n \"Connectors: github, slack required; notion optional.\\nSuggested trigger: Add a github-label-applied event trigger on the release label.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:sync-linear-roadmap-notion\",\n category: \"Product\",\n title: \"Sync the Linear roadmap to Notion\",\n description: \"Keep a Notion roadmap in sync with your Linear issue status.\",\n connectors: [\"linear\", \"notion\"],\n behavior: [\n \"Zero reads Linear status\",\n \"Mapped to Now / Next / Later\",\n \"Board updated in Notion\",\n ],\n missingInfo:\n \"Connectors: linear, notion required.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Linear has no native event trigger here, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:track-feature-usage-posthog\",\n category: \"Product\",\n title: \"Track feature usage with PostHog\",\n description:\n \"Surface the biggest weekly shifts in feature usage from PostHog.\",\n connectors: [\"posthog\", \"slack\"],\n behavior: [\n \"Zero reads PostHog\",\n \"Compared week over week\",\n \"Shifts posted to Slack\",\n ],\n missingInfo:\n \"Connectors: posthog required; slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly). PostHog has no native event trigger, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:flag-figma-designs-no-task\",\n category: \"Product\",\n title: \"Flag Figma designs without a task\",\n description: \"Flag Figma designs that have no linked Linear task yet.\",\n connectors: [\"figma\", \"linear\", \"slack\"],\n behavior: [\n \"Zero scans Figma frames\",\n \"Finds frames without a task\",\n \"Gaps posted to Slack\",\n ],\n missingInfo:\n \"Connectors: figma required; linear, slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Figma has no native event trigger, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:revenuecat-subscription-digest\",\n category: \"Data\",\n title: \"RevenueCat subscription digest\",\n description:\n \"Track subscriptions in Sheets and alert Slack when churn or cancellation patterns change.\",\n connectors: [\"revenuecat\", \"google-sheets\", \"slack\"],\n behavior: [\n \"Create a daily scheduled workflow that pulls RevenueCat subscription activity.\",\n \"Log new subscriptions, renewals, cancellations, and notable churn signals in Google Sheets.\",\n \"Compare recent movement against the user's alert thresholds.\",\n \"Post a Slack summary and send urgent alerts when churn spikes.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the RevenueCat project, schedule, timezone, Sheets destination, Slack channel, and alert thresholds if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:post-daily-metrics-slack\",\n category: \"Data\",\n title: \"Post daily metrics to Slack\",\n description:\n \"Post daily visitors, signups, and activation numbers to Slack.\",\n connectors: [\"plausible\", \"slack\", \"posthog\", \"clerk\"],\n behavior: [\n \"Zero pulls the metrics\",\n \"Assembled into a KPI snapshot\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: plausible, slack required; posthog, clerk optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:run-daily-query-sheets\",\n category: \"Data\",\n title: \"Run a daily query into Google Sheets\",\n description:\n \"Run your saved SQL on a schedule and append the results to a Sheet.\",\n connectors: [\"snowflake\", \"google-sheets\", \"slack\"],\n behavior: [\n \"Zero runs the query\",\n \"Results formatted\",\n \"Written to Google Sheets\",\n ],\n missingInfo:\n \"Connectors: snowflake, google-sheets required; slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:check-posthog-signup-funnel\",\n category: \"Data\",\n title: \"Check the PostHog signup funnel\",\n description:\n \"Track the signup funnel and post the biggest drop-off to Slack.\",\n connectors: [\"posthog\", \"slack\"],\n behavior: [\n \"Zero runs the funnel\",\n \"Biggest drop-off identified\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: posthog required; slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:alert-metric-moves-slack\",\n category: \"Data\",\n title: \"Alert when a metric moves\",\n description:\n \"Watch your key metrics and alert Slack when one moves sharply.\",\n connectors: [\"plausible\", \"slack\", \"posthog\"],\n behavior: [\n \"Zero checks the metric\",\n \"Compared to normal range\",\n \"Alert posted to Slack\",\n ],\n missingInfo:\n \"Connectors: plausible, slack required; posthog optional.\\nSuggested trigger: Add a schedule trigger on a tight cadence (e.g. hourly) so anomalies surface quickly.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:track-signup-sources-sheets\",\n category: \"Data\",\n title: \"Track signup sources in Google Sheets\",\n description: \"Attribute each new signup to its source in a tracking Sheet.\",\n connectors: [\"clerk\", \"google-sheets\", \"plausible\"],\n behavior: [\n \"Zero reads new signups\",\n \"Attributed to a channel\",\n \"Logged to Google Sheets\",\n ],\n missingInfo:\n \"Connectors: clerk, google-sheets required; plausible optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Clerk has no native event trigger here, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:build-weekly-deck-gamma\",\n category: \"Data\",\n title: \"Build the weekly deck in Gamma\",\n description:\n \"Turn the week's metrics into a ready-to-present deck in Gamma.\",\n connectors: [\"google-sheets\", \"gamma\", \"plausible\", \"slack\"],\n behavior: [\n \"Zero gathers the numbers\",\n \"Deck built in Gamma\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: google-sheets, gamma required; plausible, slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:competitive-intel-monitor\",\n category: \"Marketing\",\n title: \"Competitive intel monitor\",\n description:\n \"Monitor competitor sites for pricing and feature changes, save findings to Notion, and alert Slack.\",\n connectors: [\"firecrawl\", \"notion\", \"slack\"],\n behavior: [\n \"Create a weekly or daily scheduled workflow for a list of competitor pages.\",\n \"Use Firecrawl to detect meaningful pricing, packaging, messaging, and feature changes.\",\n \"Save structured findings with source links and change summaries in Notion.\",\n \"Post Slack alerts for important changes that need review.\",\n ],\n missingInfo:\n \"Before creating anything, ask for competitor URLs, cadence, timezone, Notion destination, Slack channel, and alert criteria if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:x-brand-monitor\",\n category: \"Marketing\",\n title: \"X brand monitor\",\n description:\n \"Track brand mentions on X, save relevant posts in Notion, and alert Slack on high-signal mentions.\",\n connectors: [\"x\", \"notion\", \"slack\"],\n behavior: [\n \"Create a scheduled workflow that searches X for product, company, or keyword mentions.\",\n \"Filter posts for relevance, engagement, sentiment, and response urgency.\",\n \"Save notable mentions to a Notion database with source links and suggested follow-up.\",\n \"Send Slack alerts for high-engagement, urgent, or reputationally sensitive posts.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the keywords or accounts, cadence, Notion database, Slack channel, and alert thresholds if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:track-keyword-ranks-ahrefs\",\n category: \"Marketing\",\n title: \"Track keyword ranks with Ahrefs\",\n description:\n \"Track keyword rankings in Ahrefs and report the movers in Notion.\",\n connectors: [\"ahrefs\", \"similarweb\", \"notion\"],\n behavior: [\n \"Zero reads keyword positions\",\n \"Movers identified\",\n \"Reported in Notion\",\n ],\n missingInfo:\n \"Connectors: ahrefs required; similarweb, notion optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:publish-scheduled-posts-buffer\",\n category: \"Marketing\",\n title: \"Publish scheduled posts to Buffer\",\n description:\n \"Publish the day's scheduled content and queue the social posts.\",\n connectors: [\"notion\", \"strapi\", \"buffer\"],\n behavior: [\n \"Zero reads today's calendar\",\n \"Published to the CMS\",\n \"Social queued in Buffer\",\n ],\n missingInfo:\n \"Connectors: notion, strapi required; buffer optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning) to publish the day's scheduled content.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:blog-posts-to-x\",\n category: \"Marketing\",\n title: \"Turn blog posts into X posts\",\n description:\n \"Turn each new blog post into social variants queued via Buffer.\",\n connectors: [\"strapi\", \"buffer\", \"x\"],\n behavior: [\n \"Zero finds new posts\",\n \"Cut into social variants\",\n \"Queued in Buffer\",\n ],\n missingInfo:\n \"Connectors: strapi, buffer required; x optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Publishing has no native event trigger, so poll for newly published posts.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:draft-newsletter-mailchimp\",\n category: \"Marketing\",\n title: \"Draft the newsletter in Mailchimp\",\n description:\n \"Assemble recent updates into a newsletter draft in Mailchimp.\",\n connectors: [\"github\", \"mailchimp\"],\n behavior: [\n \"Zero gathers what shipped\",\n \"Newsletter drafted\",\n \"Staged in Mailchimp\",\n ],\n missingInfo:\n \"Connectors: github, mailchimp required.\\nSuggested trigger: Add a schedule trigger (e.g. monthly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:compare-google-ads-last-month\",\n category: \"Marketing\",\n title: \"Compare Google Ads vs last month\",\n description:\n \"Compare ad spend and ROAS to last month and flag anomalies in Slack.\",\n connectors: [\"google-ads\", \"slack\", \"meta-ads\"],\n behavior: [\n \"Zero reads ad performance\",\n \"Compared to prior period\",\n \"Anomalies flagged in Slack\",\n ],\n missingInfo:\n \"Connectors: google-ads, slack required; meta-ads optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:salesforce-pipeline-digest\",\n category: \"Sales\",\n title: \"Salesforce pipeline digest\",\n description:\n \"Summarize Salesforce opportunity changes and close-date risks in Slack each week.\",\n connectors: [\"salesforce\", \"slack\"],\n behavior: [\n \"Create a weekly scheduled workflow that reviews selected Salesforce opportunities.\",\n \"Summarize new opportunities, stage changes, close-date movement, and blocked deals.\",\n \"Highlight risks, stale opportunities, and follow-ups due soon.\",\n \"Post the pipeline digest to a Slack channel.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Salesforce object scope, cadence, timezone, Slack channel, and pipeline rules if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:catch-leads-gmail\",\n category: \"Sales\",\n title: \"Catch leads from Gmail\",\n description:\n \"Spot buying signals in new email and log the qualified leads.\",\n connectors: [\"gmail\", \"apollo\", \"google-sheets\", \"slack\"],\n behavior: [\n \"Zero scans new mail\",\n \"Lead enriched and logged\",\n \"Next step suggested\",\n ],\n missingInfo:\n \"Connectors: gmail required; apollo, google-sheets, slack optional.\\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:new-gmail-contacts-hubspot\",\n category: \"Sales\",\n title: \"Add new Gmail contacts to HubSpot\",\n description: \"Add and enrich unknown email senders as HubSpot contacts.\",\n connectors: [\"gmail\", \"hubspot\", \"apollo\"],\n behavior: [\n \"Zero spots an unknown sender\",\n \"Contact created and enriched\",\n \"Logged for follow-up\",\n ],\n missingInfo:\n \"Connectors: gmail, hubspot required; apollo optional.\\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:research-new-signups-apollo\",\n category: \"Sales\",\n title: \"Research new signups with Apollo\",\n description:\n \"Research each new signup with Apollo and post a quick snapshot.\",\n connectors: [\"clerk\", \"slack\", \"apollo\"],\n behavior: [\n \"Zero reads new signups\",\n \"Researched with Apollo\",\n \"Snapshot posted to Slack\",\n ],\n missingInfo:\n \"Connectors: clerk, slack required; apollo optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Clerk signups have no native event trigger, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:gmail-followups-auto\",\n category: \"Sales\",\n title: \"Send Gmail follow-ups automatically\",\n description: \"Find contacts who didn't reply and draft the next follow-up.\",\n connectors: [\"instantly\", \"gmail\", \"apollo\"],\n behavior: [\n \"Zero checks sequence status\",\n \"Next touch drafted\",\n \"Ready in Gmail\",\n ],\n missingInfo:\n \"Connectors: instantly, gmail required; apollo optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning). Instantly has no native event trigger, so poll for non-repliers.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:prep-google-calendar-meetings\",\n category: \"Sales\",\n title: \"Prep for Google Calendar meetings\",\n description:\n \"Research external attendees and send a prep brief before meetings.\",\n connectors: [\"google-calendar\", \"apollo\", \"gong\", \"slack\"],\n behavior: [\n \"A meeting is added\",\n \"Attendee researched\",\n \"Prep brief sent to Slack\",\n ],\n missingInfo:\n \"Connectors: google-calendar required; apollo, gong, slack optional.\\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day's meetings.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:log-gong-calls-hubspot\",\n category: \"Sales\",\n title: \"Log Gong calls to HubSpot\",\n description:\n \"Pull notes and next steps from a Gong call into the HubSpot deal.\",\n connectors: [\"gong\", \"hubspot\", \"slack\"],\n behavior: [\n \"Zero reads the transcript\",\n \"Summary and next steps drafted\",\n \"Logged to HubSpot\",\n ],\n missingInfo:\n \"Connectors: gong, hubspot required; slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Gong has no native event trigger, so poll for new call transcripts.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:support-ticket-router\",\n category: \"Support\",\n title: \"Support ticket router\",\n description:\n \"Classify support emails, create Notion records, and alert Slack for critical tickets.\",\n connectors: [\"gmail\", \"notion\", \"slack\"],\n behavior: [\n \"Create a workflow that runs from a Gmail trigger or scheduled inbox scan.\",\n \"Classify support messages by category, priority, customer, and requested action.\",\n \"Create or update structured Notion records for each qualifying ticket.\",\n \"Alert Slack when a ticket is urgent, blocked, or needs human follow-up.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the inbox or label, triage rules, Notion database, Slack channel, and escalation criteria if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:zendesk-knowledge-base\",\n category: \"Support\",\n title: \"Zendesk knowledge base\",\n description:\n \"Find recurring Zendesk questions, draft FAQ entries, and save them to Notion.\",\n connectors: [\"zendesk\", \"notion\", \"slack\"],\n behavior: [\n \"Create a scheduled workflow that reviews recent Zendesk conversations or tickets.\",\n \"Cluster recurring questions, gaps, and confusing product areas.\",\n \"Draft FAQ or knowledge-base entries in Notion with source ticket examples.\",\n \"Post a Slack summary when new FAQ drafts are ready for review.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the Zendesk scope, cadence, Notion destination, Slack channel, and publishing/review rules if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:draft-replies-notion-faq\",\n category: \"Support\",\n title: \"Draft replies from your Notion FAQ\",\n description: \"Draft ticket replies grounded in your Notion FAQ.\",\n connectors: [\"intercom\", \"notion\", \"gmail\"],\n behavior: [\n \"A question arrives\",\n \"Zero checks the Notion FAQ\",\n \"Reply drafted for review\",\n ],\n missingInfo:\n \"Connectors: intercom, notion required; gmail optional.\\nSuggested trigger: Add a schedule trigger on a tight cadence (e.g. every 15 minutes), or a webhook-received trigger if Intercom can post to a webhook.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:send-bugs-github-slack\",\n category: \"Support\",\n title: \"Send bugs to GitHub and Slack\",\n description:\n \"File bug-tagged reports as GitHub issues and alert the team on Slack.\",\n connectors: [\"github\", \"slack\", \"linear\"],\n behavior: [\n \"An issue is labeled bug\",\n \"Repro and impact packaged\",\n \"Sent to engineering\",\n ],\n missingInfo:\n \"Connectors: github, slack required; linear optional.\\nSuggested trigger: Add a github-label-applied event trigger on the bug label.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:spot-churn-risk-stripe-zendesk\",\n category: \"Support\",\n title: \"Spot churn risk in Stripe and Zendesk\",\n description: \"Flag accounts at risk of churn and draft a recovery email.\",\n connectors: [\"clerk\", \"stripe\", \"zendesk\", \"resend\", \"slack\"],\n behavior: [\n \"Zero scans accounts\",\n \"At-risk accounts flagged\",\n \"Recovery email drafted\",\n ],\n missingInfo:\n \"Connectors: clerk required; stripe, zendesk, resend, slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Stripe and Zendesk have no native event trigger here, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:summarize-zendesk-tickets-daily\",\n category: \"Support\",\n title: \"Summarize Zendesk tickets daily\",\n description:\n \"Summarize the last day of Zendesk tickets and post it to Slack.\",\n connectors: [\"zendesk\", \"slack\"],\n behavior: [\n \"Zero reads the queue\",\n \"Grouped by severity and age\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: zendesk, slack required.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:daily-company-brief-slack\",\n category: \"CEO\",\n title: \"Post a daily company brief to Slack\",\n description:\n \"Pull product, growth, and revenue into a daily brief on Slack.\",\n connectors: [\"plausible\", \"slack\", \"clerk\", \"stripe\", \"github\", \"sentry\"],\n behavior: [\n \"Zero gathers the signals\",\n \"Assembled into a pulse\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: plausible, slack required; clerk, stripe, github, sentry optional.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:daily-industry-news-slack\",\n category: \"CEO\",\n title: \"Post daily industry news to Slack\",\n description:\n \"Round up the day's relevant industry news into a Slack brief.\",\n connectors: [\"exa\", \"slack\"],\n behavior: [\n \"Zero scans the news\",\n \"Distilled into a brief\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: exa, slack required.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:business-review-gamma\",\n category: \"CEO\",\n title: \"Build the business review in Gamma\",\n description:\n \"Turn the month's metrics into a business review deck in Gamma.\",\n connectors: [\"stripe\", \"gamma\", \"clerk\"],\n behavior: [\n \"Zero pulls the numbers\",\n \"Deck built in Gamma\",\n \"Ready to present\",\n ],\n missingInfo:\n \"Connectors: stripe, gamma required; clerk optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:highlight-key-emails-gmail\",\n category: \"CEO\",\n title: \"Highlight key emails in Gmail\",\n description: \"Surface the few emails that actually need your attention.\",\n connectors: [\"gmail\", \"slack\"],\n behavior: [\n \"Zero reads the inbox\",\n \"Priorities identified\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: gmail, slack required.\\nSuggested trigger: Add a gmail-new-message event trigger, or a schedule trigger that runs a few times a day.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:investor-update-google-docs\",\n category: \"CEO\",\n title: \"Draft the investor update in Google Docs\",\n description:\n \"Assemble metrics and highlights into an investor update in Docs.\",\n connectors: [\"stripe\", \"google-docs\", \"google-sheets\"],\n behavior: [\n \"Zero gathers KPIs\",\n \"Update drafted\",\n \"Editable in Google Docs\",\n ],\n missingInfo:\n \"Connectors: stripe, google-docs required; google-sheets optional.\\nSuggested trigger: Add a schedule trigger (e.g. monthly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:gmail-reconnect-reminders\",\n category: \"CEO\",\n title: \"Get Gmail reconnect reminders\",\n description: \"Surface important contacts you haven't emailed in a while.\",\n connectors: [\"gmail\", \"google-calendar\", \"slack\"],\n behavior: [\n \"Zero reviews your contacts\",\n \"Quiet relationships surfaced\",\n \"Openers suggested\",\n ],\n missingInfo:\n \"Connectors: gmail required; google-calendar, slack optional.\\nSuggested trigger: Add a schedule trigger (e.g. weekly).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:clickup-slack-standup\",\n category: \"Operations\",\n title: \"ClickUp Slack standup\",\n description:\n \"Pull ClickUp tasks each morning and post a team standup summary to Slack.\",\n connectors: [\"clickup\", \"slack\"],\n behavior: [\n \"Create a daily scheduled workflow that reads selected ClickUp spaces, folders, lists, or assignees.\",\n \"Summarize active tasks, completed work, blockers, and overdue items by person or team.\",\n \"Keep the report compact enough for daily Slack consumption.\",\n \"Post the standup summary to the selected Slack channel.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the ClickUp scope, schedule, timezone, grouping preference, and Slack channel if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:sync-asana-projects-notion\",\n category: \"Operations\",\n title: \"Sync Asana projects to Notion\",\n description: \"Roll up Asana project status into a single board in Notion.\",\n connectors: [\"asana\", \"notion\"],\n behavior: [\"Zero reads Asana\", \"Rolled into one board\", \"Digest posted\"],\n missingInfo:\n \"Connectors: asana, notion required.\\nSuggested trigger: Add a schedule trigger (e.g. every morning). Asana has no native event trigger, so poll on a cadence.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:meeting-notes-asana-tasks\",\n category: \"Operations\",\n title: \"Turn meeting notes into Asana tasks\",\n description: \"Turn meeting notes into assigned, due-dated tasks in Asana.\",\n connectors: [\"fireflies\", \"asana\"],\n behavior: [\n \"Zero reads the transcript\",\n \"Action items extracted\",\n \"Tasks created in Asana\",\n ],\n missingInfo:\n \"Connectors: fireflies, asana required.\\nSuggested trigger: Add a google-meet-transcript-generated event trigger if you meet on Google Meet; otherwise a schedule trigger, since Fireflies has no native event trigger.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:file-gmail-invoices-drive\",\n category: \"Operations\",\n title: \"File Gmail invoices to Google Drive\",\n description: \"File invoice emails to Drive and log each one in a Sheet.\",\n connectors: [\"gmail\", \"google-drive\", \"google-sheets\"],\n behavior: [\n \"An invoice is labeled\",\n \"Filed to Google Drive\",\n \"Logged in a sheet\",\n ],\n missingInfo:\n \"Connectors: gmail, google-drive required; google-sheets optional.\\nSuggested trigger: Add a gmail-label-applied event trigger on the label you use for invoices.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:onboard-new-hires-asana\",\n category: \"Operations\",\n title: \"Onboard new hires in Asana\",\n description:\n \"Create the onboarding task checklist for each new hire in Asana.\",\n connectors: [\"deel\", \"asana\", \"google-drive\"],\n behavior: [\n \"A new hire is added\",\n \"Checklist created in Asana\",\n \"Docs provisioned\",\n ],\n missingInfo:\n \"Connectors: deel, asana required; google-drive optional.\\nSuggested trigger: Add a schedule trigger (e.g. daily). Deel has no native event trigger, so poll for new hires.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:chase-overdue-asana-tasks\",\n category: \"Operations\",\n title: \"Chase overdue Asana tasks\",\n description: \"Find overdue Asana tasks and nudge their owners on Slack.\",\n connectors: [\"asana\", \"slack\"],\n behavior: [\"Zero scans Asana\", \"Owners identified\", \"Nudges sent in Slack\"],\n missingInfo:\n \"Connectors: asana, slack required.\\nSuggested trigger: Add a schedule trigger (e.g. every morning).\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:catch-calendar-conflicts\",\n category: \"Operations\",\n title: \"Catch Google Calendar conflicts\",\n description: \"Scan your calendar for double-bookings and alert you early.\",\n connectors: [\"cal-com\", \"google-calendar\", \"slack\"],\n behavior: [\n \"An event is created\",\n \"Checked for conflicts\",\n \"Conflict flagged in Slack\",\n ],\n missingInfo:\n \"Connectors: cal-com, google-calendar required; slack optional.\\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day for conflicts.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:personal-weekly-digest\",\n category: \"Everyone\",\n title: \"Personal weekly digest\",\n description:\n \"Summarize GitHub, Gmail, and Calendar activity into one weekly Slack update.\",\n connectors: [\"github\", \"gmail\", \"google-calendar\", \"slack\"],\n behavior: [\n \"Create a weekly scheduled workflow for the selected owner.\",\n \"Collect recent pull requests, important inbox threads, and upcoming or completed calendar events.\",\n \"Group the digest into accomplishments, pending decisions, follow-ups, and upcoming commitments.\",\n \"Send the digest to the user's chosen Slack destination.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the day/time, timezone, GitHub scope, Gmail filters, calendar scope, and Slack destination if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:morning-brief\",\n category: \"Everyone\",\n title: \"Morning brief\",\n description:\n \"Turn Gmail, Calendar, and Notion updates into a short daily plan in Slack.\",\n connectors: [\"gmail\", \"google-calendar\", \"notion\", \"slack\"],\n behavior: [\n \"Create a daily scheduled workflow that prepares a morning planning brief.\",\n \"Review important email, calendar events, and relevant Notion updates.\",\n \"Prioritize the day into meetings, decisions, follow-ups, and focus blocks.\",\n \"Post the brief to Slack or another destination the user chooses.\",\n ],\n missingInfo:\n \"Before creating anything, ask for the schedule, timezone, Slack destination, Gmail scope, calendar scope, and Notion sources if they are missing.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:sort-gmail-draft-replies\",\n category: \"Everyone\",\n title: \"Sort Gmail and draft replies\",\n description:\n \"Sort your inbox and draft replies to the emails that need them.\",\n connectors: [\"gmail\"],\n behavior: [\"Zero reads new mail\", \"Sorted by urgency\", \"Replies drafted\"],\n missingInfo:\n \"Connectors: gmail required.\\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:research-calendar-meetings\",\n category: \"Everyone\",\n title: \"Research your calendar meetings\",\n description:\n \"Research the people you're meeting before each calendar event.\",\n connectors: [\"google-calendar\", \"exa\", \"slack\"],\n behavior: [\n \"A meeting is added\",\n \"Attendees researched\",\n \"Dossier delivered\",\n ],\n missingInfo:\n \"Connectors: google-calendar required; exa, slack optional.\\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day's meetings.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:summarize-gmail-newsletters\",\n category: \"Everyone\",\n title: \"Summarize Gmail newsletters\",\n description: \"Digest the newsletters in your inbox into one short summary.\",\n connectors: [\"gmail\", \"slack\"],\n behavior: [\n \"Zero collects newsletters\",\n \"Digested into one summary\",\n \"Posted to Slack\",\n ],\n missingInfo:\n \"Connectors: gmail, slack required.\\nSuggested trigger: Add a schedule trigger (e.g. weekly) to digest the newsletters, or a gmail-label-applied trigger on your newsletter label.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:meeting-recaps-slack\",\n category: \"Everyone\",\n title: \"Get meeting recaps in Slack\",\n description:\n \"Share a recap with decisions and action items after each meeting.\",\n connectors: [\"fireflies\", \"gmail\", \"slack\"],\n behavior: [\"Zero reads the transcript\", \"Recap written\", \"Sent to you\"],\n missingInfo:\n \"Connectors: fireflies required; gmail, slack optional.\\nSuggested trigger: Add a google-meet-transcript-generated event trigger if you meet on Google Meet; otherwise a schedule trigger, since Fireflies has no native event trigger.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n defineWorkflowTemplate({\n id: \"workflow-template:flagged-gmail-todoist-tasks\",\n category: \"Everyone\",\n title: \"Turn flagged Gmail into Todoist tasks\",\n description: \"Turn the emails you flag into Todoist tasks automatically.\",\n connectors: [\"gmail\", \"todoist\"],\n behavior: [\n \"You flag an email\",\n \"Zero researches it\",\n \"Task filed in Todoist\",\n ],\n missingInfo:\n \"Connectors: gmail, todoist required.\\nSuggested trigger: Add a gmail-label-applied event trigger on the label you apply to flag an email.\\n\\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors.\",\n }),\n];\n\nexport function findWorkflowTemplateItem(\n id: string,\n): WorkflowTemplateItem | undefined {\n return WORKFLOW_TEMPLATE_ITEMS.find((item) => {\n return item.id === id;\n });\n}\n","const R2_IMAGE_TRANSFORM_HOSTS = new Set([\n \"cdn.vm0.io\",\n \"cdn.vm7.io\",\n \"static.vm0.io\",\n]);\nconst R2_IMAGE_TRANSFORM_PREFIX = \"/cdn-cgi/image/\";\n\n// Output quality for Cloudflare Image Resizing. Tuned to stay crisp on\n// text-heavy presentation thumbnails while still shrinking payloads.\nconst R2_IMAGE_TRANSFORM_QUALITY = 85;\n\nexport interface R2ImageTransformOptions {\n readonly width?: number;\n readonly height?: number;\n readonly fit?: \"cover\" | \"scale-down\";\n readonly quality?: number;\n}\n\nfunction normalizedDimension(value: number | undefined): number | null {\n if (value === undefined || !Number.isFinite(value) || value <= 0) {\n return null;\n }\n return Math.round(value);\n}\n\nfunction normalizedQuality(value: number | undefined): number {\n if (value === undefined || !Number.isFinite(value)) {\n return R2_IMAGE_TRANSFORM_QUALITY;\n }\n return Math.max(1, Math.min(100, Math.round(value)));\n}\n\nfunction r2ImageTransformDirectives(options: R2ImageTransformOptions): string {\n const directives: string[] = [];\n const width = normalizedDimension(options.width);\n const height = normalizedDimension(options.height);\n const quality = normalizedQuality(options.quality);\n\n if (width !== null) {\n directives.push(`width=${String(width)}`);\n }\n if (height !== null) {\n directives.push(`height=${String(height)}`);\n }\n directives.push(`fit=${options.fit ?? \"scale-down\"}`);\n // Negotiate AVIF/WebP from the request Accept header, cap quality, and drop\n // metadata so previews download as little as possible.\n directives.push(\"format=auto\");\n directives.push(`quality=${String(quality)}`);\n directives.push(\"metadata=none\");\n\n return directives.join(\",\");\n}\n\nfunction parseAbsoluteUrl(url: string): URL | null {\n try {\n return new URL(url);\n } catch {\n return null;\n }\n}\n\nexport function r2ImageTransformUrl(\n url: string,\n options: R2ImageTransformOptions,\n): string {\n const parsed = parseAbsoluteUrl(url);\n if (parsed === null) {\n return url;\n }\n\n if (\n !R2_IMAGE_TRANSFORM_HOSTS.has(parsed.hostname) ||\n parsed.pathname.startsWith(R2_IMAGE_TRANSFORM_PREFIX)\n ) {\n return url;\n }\n\n const directives = r2ImageTransformDirectives(options);\n return `${parsed.origin}${R2_IMAGE_TRANSFORM_PREFIX}${directives}${parsed.pathname}${parsed.search}${parsed.hash}`;\n}\n","export * from \"@vm0/api-contracts/contracts\";\n","/**\n * API Contracts\n *\n * This module exports type-safe REST contracts backed by tRPC procedure\n * typing.\n */\nexport { initContract } from \"./base\";\nexport {\n buildCommitShaSchema,\n buildInfoContract,\n buildInfoResponseSchema,\n type BuildInfoContract,\n type BuildInfoResponse,\n type BuildInfoRouteResponse,\n} from \"./build-info\";\nexport {\n healthAuthContract,\n healthContract,\n healthResponseSchema,\n type HealthAuthContract,\n type HealthAuthRouteResponse,\n type HealthContract,\n type HealthResponse,\n type HealthRouteResponse,\n} from \"./health\";\nexport {\n ACTIONABLE_RUN_ERROR_SNIPPETS,\n apiErrorSchema,\n ApiError,\n CHAT_RUN_TRANSIENT_ERROR_MESSAGE,\n createErrorResponse,\n formatRunErrorForExternalSurface,\n isActionableRunError,\n isGenericRunErrorForDisplay,\n RUN_ERROR_GUIDANCE,\n type ApiErrorKey,\n type ApiErrorResponse,\n} from \"./errors\";\nexport {\n desktopAuthConsumeContract,\n desktopAuthHandoffContract,\n type DesktopAuthConsumeContract,\n type DesktopAuthHandoffContract,\n} from \"./desktop-auth\";\nexport {\n composesMainContract,\n composesByIdContract,\n composesVersionsContract,\n type ComposesMainContract,\n type ComposesByIdContract,\n type ComposesVersionsContract,\n AGENT_NAME_REGEX,\n agentNameSchema,\n volumeConfigSchema,\n artifactConfigSchema,\n artifactsArraySchema,\n MOUNT_PATH_TEMPLATE,\n expandMountPath,\n agentDefinitionSchema,\n agentComposeContentSchema,\n agentComposeApiContentSchema,\n composeResponseSchema,\n composeListItemSchema,\n ZERO_CAPABILITIES,\n ZERO_CAPABILITY_META,\n type ZeroCapability,\n type ZeroCapabilityMeta,\n // Inferred types\n type ComposeResponse,\n type ComposeListItem,\n type ArtifactConfig,\n} from \"./composes\";\nexport {\n runsMainContract,\n runsByIdContract,\n runsCancelContract,\n runEventsContract,\n runSystemLogContract,\n runMetricsContract,\n runAgentEventsContract,\n runNetworkLogsContract,\n logsSearchContract,\n ALL_RUN_STATUSES,\n runStatusSchema,\n unifiedRunRequestSchema,\n createRunResponseSchema,\n getRunResponseSchema,\n runListItemSchema,\n runsListResponseSchema,\n cancelRunResponseSchema,\n runEventSchema,\n runResultSchema,\n runStateSchema,\n eventsResponseSchema,\n telemetryMetricSchema,\n systemLogResponseSchema,\n metricsResponseSchema,\n agentEventsResponseSchema,\n networkLogEntrySchema,\n networkLogsResponseSchema,\n searchResultSchema,\n logsSearchResponseSchema,\n type RunsMainContract,\n type RunsByIdContract,\n type RunsCancelContract,\n type RunEventsContract,\n type RunSystemLogContract,\n type RunMetricsContract,\n type RunAgentEventsContract,\n type RunNetworkLogsContract,\n type LogsSearchContract,\n // Inferred types\n type RunStatus,\n type RunResult,\n type RunState,\n type RunEvent,\n type CreateRunResponse,\n type GetRunResponse,\n type RunListItem,\n type RunsListResponse,\n type CancelRunResponse,\n type EventsResponse,\n type TelemetryMetric,\n type SystemLogResponse,\n type MetricsResponse,\n type AgentEventsResponse,\n type NetworkLogEntry,\n type AxiomNetworkEvent,\n type NetworkLogsResponse,\n type SearchResult,\n type LogsSearchResponse,\n runsQueueContract,\n queueEntrySchema,\n runningTaskSchema,\n concurrencyInfoSchema,\n queueResponseSchema,\n type RunsQueueContract,\n type QueueEntry,\n type RunningTask,\n type ConcurrencyInfo,\n type QueueResponse,\n} from \"./runs\";\nexport {\n zeroModelPoliciesMainContract,\n type ZeroModelPoliciesMainContract,\n} from \"./zero-model-policies\";\nexport {\n userModelPreferenceResponseSchema,\n updateUserModelPreferenceRequestSchema,\n zeroUserModelPreferenceContract,\n type UserModelPreferenceResponse,\n type UpdateUserModelPreferenceRequest,\n type ZeroUserModelPreferenceContract,\n} from \"./zero-user-model-preference\";\nexport {\n storagesContract,\n storageTypeSchema,\n uploadStorageResponseSchema,\n // Direct upload schemas (shared with webhooks)\n MAX_FILE_SIZE_BYTES,\n fileEntryWithHashSchema,\n storageChangesSchema,\n presignedUploadSchema,\n // Direct upload contracts (CLI endpoints)\n storagesPrepareContract,\n storagesCommitContract,\n storagesDownloadContract,\n storagesListContract,\n type StoragesContract,\n type StoragesPrepareContract,\n type StoragesCommitContract,\n type StoragesDownloadContract,\n type StoragesListContract,\n} from \"./storages\";\nexport {\n registryResourceDownloadContract,\n type RegistryResourceDownloadContract,\n} from \"./registry-resources\";\nexport {\n presentationImageAssetSchema,\n presentationImageOrientationSchema,\n presentationImageResolveErrorSchema,\n presentationImageResolveItemSchema,\n presentationImageResolveRequestSchema,\n presentationImageResolveResponseSchema,\n presentationImagesContract,\n type PresentationImageAsset,\n type PresentationImageResolveItem,\n type PresentationImageResolveRequest,\n type PresentationImageResolveResponse,\n type PresentationImagesContract,\n} from \"./presentation-images\";\nexport {\n testTelegramDispatchProbeContract,\n type TestTelegramDispatchProbeContract,\n} from \"./test-telegram-dispatch-probe\";\nexport {\n testTeamsDispatchProbeBodySchema,\n testTeamsDispatchProbeContract,\n testTeamsDispatchProbeErrorSchema,\n testTeamsDispatchProbeFailureResponseSchema,\n testTeamsDispatchProbeResponseSchema,\n testTeamsDispatchProbeSuccessResponseSchema,\n type TestTeamsDispatchProbeBody,\n type TestTeamsDispatchProbeContract,\n type TestTeamsDispatchProbeResponse,\n} from \"./test-teams-dispatch-probe\";\nexport {\n zeroEmailInboundContract,\n zeroEmailReplyCallbackContract,\n zeroEmailReplyCallbackPayloadSchema,\n zeroEmailTriggerCallbackContract,\n zeroEmailTriggerCallbackPayloadSchema,\n type ZeroEmailReplyCallbackPayload,\n type ZeroEmailTriggerCallbackPayload,\n} from \"./zero-email\";\nexport {\n sandboxReuseResultSchema,\n webhookClerkContract,\n webhookEventsContract,\n webhookFirewallAuthContract,\n webhookGithubContract,\n webhookGmailContract,\n webhookGoogleCalendarContract,\n webhookGoogleWorkspaceEventsContract,\n webhookWorkflowTriggerContract,\n webhookStripeContract,\n webhookBuiltInGenerationFalContract,\n webhookBuiltInGenerationBytePlusContract,\n webhookCompleteContract,\n webhookCheckpointsContract,\n webhookCheckpointsPrepareHistoryContract,\n webhookHeartbeatContract,\n webhookStoragesContract,\n webhookStoragesIncrementalContract,\n webhookTelemetryContract,\n // Direct upload contracts (Webhook endpoints for sandbox)\n webhookStoragesPrepareContract,\n webhookStoragesCommitContract,\n type SandboxReuseResult,\n type WebhookEventsContract,\n type WebhookFirewallAuthContract,\n type WebhookCompleteContract,\n type WebhookCheckpointsContract,\n type WebhookCheckpointsPrepareHistoryContract,\n type WebhookHeartbeatContract,\n type WebhookStoragesContract,\n type WebhookStoragesIncrementalContract,\n type WebhookTelemetryContract,\n type WebhookStoragesPrepareContract,\n type WebhookStoragesCommitContract,\n webhookModelUsageObservationContract,\n webhookUsageEventContract,\n type WebhookClerkContract,\n type WebhookModelUsageObservationContract,\n type WebhookUsageEventContract,\n type WebhookGithubContract,\n type WebhookGmailContract,\n type WebhookGoogleCalendarContract,\n type WebhookGoogleWorkspaceEventsContract,\n type WebhookWorkflowTriggerContract,\n type WebhookStripeContract,\n type WebhookBuiltInGenerationFalContract,\n} from \"./webhooks\";\nexport {\n cliAuthDeviceContract,\n cliAuthTokenContract,\n cliAuthApproveContract,\n cliAuthOrgContract,\n type CliAuthDeviceContract,\n type CliAuthTokenContract,\n type CliAuthApproveContract,\n type CliAuthOrgContract,\n} from \"./cli-auth\";\nexport { authContract, type AuthContract } from \"./auth\";\nexport {\n userExportContract,\n type UserExportContract,\n type UserExportJob,\n type UserExportStatusResponse,\n} from \"./user-export\";\nexport {\n emailUnsubscribeContract,\n emailUnsubscribeErrorSchema,\n emailUnsubscribeQuerySchema,\n emailUnsubscribeResponseSchema,\n type EmailUnsubscribeContract,\n type EmailUnsubscribeError,\n type EmailUnsubscribeQuery,\n type EmailUnsubscribeResponse,\n} from \"./email-unsubscribe\";\nexport {\n connectorsTypeCallbackContract,\n type ConnectorsTypeCallbackContract,\n} from \"./connectors-type-callback\";\nexport {\n testOAuthProviderAuthorizeContract,\n testOAuthProviderAuthorizeErrorSchema,\n testOAuthProviderAuthorizeQuerySchema,\n type TestOAuthProviderAuthorizeContract,\n type TestOAuthProviderAuthorizeQuery,\n} from \"./test-oauth-provider-authorize\";\nexport {\n testOAuthProviderEchoContract,\n testOAuthProviderEchoErrorSchema,\n testOAuthProviderEchoResponseSchema,\n type TestOAuthProviderEchoContract,\n type TestOAuthProviderEchoResponse,\n} from \"./test-oauth-provider-echo\";\nexport {\n testOAuthProviderTokenContract,\n testOAuthProviderTokenErrorSchema,\n testOAuthProviderTokenResponseSchema,\n type TestOAuthProviderTokenContract,\n type TestOAuthProviderTokenResponse,\n} from \"./test-oauth-provider-token\";\nexport {\n testOAuthProviderDeviceAuthContract,\n testOAuthProviderDeviceAuthErrorSchema,\n testOAuthProviderDeviceAuthResponseSchema,\n type TestOAuthProviderDeviceAuthContract,\n type TestOAuthProviderDeviceAuthResponse,\n} from \"./test-oauth-provider-device-auth\";\nexport {\n testOAuthProviderUserinfoContract,\n testOAuthProviderUserinfoErrorSchema,\n testOAuthProviderUserinfoResponseSchema,\n type TestOAuthProviderUserinfoContract,\n type TestOAuthProviderUserinfoResponse,\n} from \"./test-oauth-provider-userinfo\";\nexport {\n testComputerUseStateContract,\n testComputerUseStateDeleteResponseSchema,\n testComputerUseStateGetResponseSchema,\n testComputerUseStatePostBodySchema,\n testComputerUseStatePostResponseSchema,\n type TestComputerUseStateContract,\n type TestComputerUseStateDeleteResponse,\n type TestComputerUseStateGetResponse,\n type TestComputerUseStatePostResponse,\n} from \"./test-computer-use-state\";\nexport {\n testRuntimeStateActionBodySchema,\n testRuntimeStateActionResponseSchema,\n testRuntimeStateContract,\n type TestRuntimeStateActionBody,\n type TestRuntimeStateActionResponse,\n type TestRuntimeStateContract,\n} from \"./test-runtime-state\";\nexport {\n testZeroAgentStateActionBodySchema,\n testZeroAgentStateActionResponseSchema,\n testZeroAgentStateContract,\n testZeroAgentStateErrorSchema,\n type TestZeroAgentStateActionBody,\n type TestZeroAgentStateActionResponse,\n type TestZeroAgentStateContract,\n} from \"./test-zero-agent-state\";\nexport {\n testModelProviderStateActionBodySchema,\n testModelProviderStateActionResponseSchema,\n testModelProviderStateContract,\n testModelProviderStateErrorSchema,\n type TestModelProviderStateActionBody,\n type TestModelProviderStateActionResponse,\n type TestModelProviderStateContract,\n} from \"./test-model-provider-state\";\nexport {\n testUsageInsightStateActionBodySchema,\n testUsageInsightStateActionResponseSchema,\n testUsageInsightStateContract,\n testUsageInsightStateFixtureSchema,\n type TestUsageInsightStateActionBody,\n type TestUsageInsightStateActionResponse,\n type TestUsageInsightStateContract,\n type TestUsageInsightStateFixture,\n} from \"./test-usage-insight-state\";\nexport {\n testCronCleanupSandboxesStateActionBodySchema,\n testCronCleanupSandboxesStateActionResponseSchema,\n testCronCleanupSandboxesStateContract,\n testCronCleanupSandboxesStateErrorSchema,\n type TestCronCleanupSandboxesStateActionBody,\n type TestCronCleanupSandboxesStateActionResponse,\n type TestCronCleanupSandboxesStateContract,\n} from \"./test-cron-cleanup-sandboxes-state\";\nexport {\n testSlackDispatchProbeBodySchema,\n testSlackDispatchProbeContract,\n testSlackDispatchProbeErrorSchema,\n testSlackDispatchProbeFailureResponseSchema,\n testSlackDispatchProbeResponseSchema,\n testSlackDispatchProbeSuccessResponseSchema,\n type TestSlackDispatchProbeBody,\n type TestSlackDispatchProbeContract,\n type TestSlackDispatchProbeError,\n type TestSlackDispatchProbeResponse,\n} from \"./test-slack-dispatch-probe\";\nexport {\n testSlackStateContract,\n testSlackStateErrorSchema,\n testSlackStateResponseSchema,\n type TestSlackStateContract,\n type TestSlackStateResponse,\n} from \"./test-slack-state\";\nexport {\n SLACK_E2E_FIXTURES,\n SLACK_E2E_SCOPES,\n testSlackMockAuthTestResponseSchema,\n testSlackMockChatPostEphemeralResponseSchema,\n testSlackMockChatPostMessageResponseSchema,\n testSlackMockContract,\n testSlackMockConversationMessagesResponseSchema,\n testSlackMockConversationsOpenResponseSchema,\n testSlackMockOauthAccessResponseSchema,\n testSlackMockOkResponseSchema,\n testSlackMockUsersInfoResponseSchema,\n type TestSlackMockContract,\n type TestSlackMockUsersInfoResponse,\n} from \"./test-slack-mock\";\nexport {\n testTelegramMockContract,\n testTelegramMockErrorResponseSchema,\n testTelegramMockPathParamsSchema,\n testTelegramMockSuccessResponseSchema,\n type TestTelegramMockContract,\n} from \"./test-telegram-mock\";\nexport {\n testTeamsMockContract,\n type TestTeamsMockContract,\n} from \"./test-teams-mock\";\nexport {\n testTeamsStateContract,\n testTeamsStateErrorSchema,\n testTeamsStateResponseSchema,\n type TestTeamsStateContract,\n type TestTeamsStateResponse,\n} from \"./test-teams-state\";\nexport {\n testTelegramStateContract,\n testTelegramStateErrorSchema,\n testTelegramStateResponseSchema,\n type TestTelegramStateContract,\n type TestTelegramStateResponse,\n} from \"./test-telegram-state\";\nexport {\n cronAggregateInsightsContract,\n cronAggregateInsightsResponseSchema,\n cronAggregateModelStatsContract,\n cronAggregateModelStatsResponseSchema,\n cronAggregateUsageContract,\n cronAggregateUsageResponseSchema,\n CRON_AGGREGATE_MODEL_STATS_MAX_HOURS,\n cronCompactChatThreadSnapshotsContract,\n cronCompactChatThreadSnapshotsResponseSchema,\n cronCleanupSandboxesContract,\n cronDrainEmailOutboxContract,\n cronDrainEmailOutboxResponseSchema,\n cronExecuteWorkflowTriggersContract,\n cronRenewGmailWatchesContract,\n cronRenewGmailWatchesResponseSchema,\n cronRenewGoogleCalendarWatchesContract,\n cronRenewGoogleCalendarWatchesResponseSchema,\n cronRenewGoogleWorkspaceEventSubscriptionsContract,\n cronRenewGoogleWorkspaceEventSubscriptionsResponseSchema,\n cronProcessUsageEventsContract,\n cronProcessUsageEventsResponseSchema,\n cronReconcileBillingEntitlementsContract,\n cronReconcileBillingEntitlementsResponseSchema,\n cronSyncSkillsContract,\n cronSyncSkillsResponseSchema,\n cronTelegramCleanupContract,\n cronTelegramCleanupResponseSchema,\n cleanupResultSchema,\n cleanupResponseSchema,\n type CronAggregateInsightsContract,\n type CronAggregateModelStatsContract,\n type CronAggregateUsageContract,\n type CronCompactChatThreadSnapshotsContract,\n type CronCleanupSandboxesContract,\n type CronDrainEmailOutboxContract,\n type CronProcessUsageEventsContract,\n type CronReconcileBillingEntitlementsContract,\n type CronRenewGmailWatchesContract,\n type CronRenewGoogleCalendarWatchesContract,\n type CronRenewGoogleWorkspaceEventSubscriptionsContract,\n type CronSyncSkillsContract,\n type CronTelegramCleanupContract,\n} from \"./cron\";\nexport {\n orgDefaultAgentContract,\n orgSlugSchema,\n orgResponseSchema,\n updateOrgRequestSchema,\n orgTierSchema,\n isOrgTier,\n type OrgDefaultAgentContract,\n type OrgResponse,\n type UpdateOrgRequest,\n type OrgTier,\n} from \"./orgs\";\nexport {\n secretNameSchema,\n secretTypeSchema,\n secretResponseSchema,\n secretListResponseSchema,\n setSecretRequestSchema,\n type SecretResponse,\n type SecretListResponse,\n type SetSecretRequest,\n type SecretType,\n} from \"./secrets\";\nexport {\n variableNameSchema,\n variableResponseSchema,\n variableListResponseSchema,\n setVariableRequestSchema,\n type VariableResponse,\n type VariableListResponse,\n type SetVariableRequest,\n} from \"./variables\";\nexport {\n modelProviderTypeSchema,\n modelProviderFrameworkSchema,\n modelProviderResponseSchema,\n modelProviderListResponseSchema,\n upsertModelProviderRequestSchema,\n upsertModelProviderResponseSchema,\n orgModelPolicyRouteStatusSchema,\n orgModelPolicySchema,\n updateOrgModelPolicySchema,\n orgModelPoliciesResponseSchema,\n updateOrgModelPoliciesRequestSchema,\n supportedRunModelSchema,\n modelProviderCredentialScopeSchema,\n MODEL_PROVIDER_TYPES,\n SUPPORTED_RUN_MODELS,\n VM0_MODEL_PRICE_TIER,\n VM0_MODEL_PRICE_TIER_LABEL,\n DEFAULT_ORG_MODEL_POLICY_MODELS,\n DEFAULT_ORG_MODEL_POLICY_DEFAULT_MODEL,\n LIMITED_FREE1_DEFAULT_RUN_MODEL,\n getFrameworkForType,\n getSecretNameForType,\n getModelProviderEnvBindings,\n getModels,\n getDefaultModel,\n hasModelSelection,\n allowsCustomModel,\n getCustomModelPlaceholder,\n getDefaultOrgModelPolicySeed,\n // Provider compatibility\n getProviderBaseUrl,\n areProvidersCompatible,\n getCanonicalModelDisplayName,\n getProvidersForModel,\n getProviderRuntimeModel,\n isModelSupportedByProvider,\n isSupportedRunModel,\n normalizeRunModelId,\n getVm0ModelPriceTier,\n getVm0ModelPriceTierLabel,\n // Selectable provider filtering\n getSelectableProviderTypes,\n isModelProviderFrameworkFeatureSwitched,\n isModelProviderFrameworkSwitchEnabled,\n // Multi-auth provider support\n hasAuthMethods,\n getAuthMethodsForType,\n getDefaultAuthMethod,\n getSecretsForAuthMethod,\n getSecretNamesForAuthMethod,\n type ModelProviderType,\n type ModelProviderFramework,\n type ModelProviderEnvBindings,\n type ModelProviderResponse,\n type Vm0ModelPriceTier,\n type ModelProviderListResponse,\n type UpsertModelProviderRequest,\n type UpsertModelProviderResponse,\n type OrgModelPolicyRouteStatus,\n type OrgModelPolicy,\n type UpdateOrgModelPolicy,\n type OrgModelPoliciesResponse,\n type UpdateOrgModelPoliciesRequest,\n type SupportedRunModel,\n type ModelProviderCredentialScope,\n type DefaultOrgModelPolicySeed,\n // Multi-auth provider types\n type SecretFieldConfig,\n type AuthMethodConfig,\n // Firewall gateway for model providers\n MODEL_PROVIDER_FIREWALL_CONFIGS,\n getModelProviderFirewall,\n shouldInlineModelProviderFirewall,\n // VM0 managed provider\n VM0_ORG_SLUG,\n VM0_MODEL_TO_PROVIDER,\n VM0_MODEL_ALIAS_TO_MODEL,\n getVm0ConcreteProviderType,\n getVm0Vendor,\n getVm0ApiModel,\n getVm0VisibleModels,\n normalizeVm0ModelId,\n isLimitedFree1RestrictedRunModel,\n} from \"./model-providers\";\nexport {\n sessionsByIdContract,\n checkpointsByIdContract,\n sessionResponseSchema,\n checkpointResponseSchema,\n agentComposeSnapshotSchema,\n volumeVersionsSnapshotSchema,\n type SessionsByIdContract,\n type CheckpointsByIdContract,\n // Inferred types\n type SessionResponse,\n type CheckpointResponse,\n type AgentComposeSnapshot,\n type VolumeVersionsSnapshot,\n} from \"./sessions\";\nexport {\n chatThreadsContract,\n chatThreadByIdContract,\n chatThreadDraftContract,\n chatThreadMarkReadContract,\n chatThreadMarkAgentReadContract,\n chatThreadMetadataContract,\n chatThreadModelSelectionContract,\n chatThreadComputerUseHostContract,\n chatMessagesContract,\n chatThreadMessagesContract,\n chatThreadArtifactsContract,\n artifactsContract,\n chatSearchContract,\n chatThreadSnapshotProjectionSchema,\n chatThreadEventSchema,\n chatThreadDetailSchema,\n chatThreadMetadataSchema,\n chatThreadDraftSchema,\n MODEL_FIRST_SELECTION_PROVIDER_ID,\n generationTemplateRequestSchema,\n presentationGenerationTemplateRequestSchema,\n websiteGenerationTemplateRequestSchema,\n pagedChatMessageSchema,\n summaryEntrySchema,\n persistedAttachmentSchema,\n attachFileSchema,\n resolvedAttachFileSchema,\n artifactItemSchema,\n artifactFavoriteBodySchema,\n artifactsListResponseSchema,\n chatThreadArtifactFileSchema,\n chatThreadArtifactGoogleDriveSyncSchema,\n chatThreadArtifactRunSchema,\n htmlArtifactEditSnapshotSchema,\n type GenerationTemplateRequest,\n type PresentationGenerationTemplateRequest,\n type WebsiteGenerationTemplateRequest,\n type SummaryEntry,\n type ChatThreadsContract,\n type ChatThreadByIdContract,\n type ChatThreadDraftContract,\n type ChatThreadMarkReadContract,\n type ChatThreadMarkAgentReadContract,\n type ChatThreadMetadataContract,\n type ChatThreadModelSelectionContract,\n type ChatThreadComputerUseHostContract,\n type ChatMessagesContract,\n type ChatThreadMessagesContract,\n type ChatThreadArtifactsContract,\n type ArtifactsContract,\n type ChatSearchContract,\n type ChatSearchResponse,\n type ChatSearchResult,\n type ChatSearchMessage,\n type ChatThreadSnapshotProjection,\n type ChatThreadEvent,\n type ChatThreadDetail,\n type ChatThreadMetadata,\n type ChatThreadDraft,\n type PagedChatMessage,\n type PersistedAttachment,\n type AttachFile,\n type ResolvedAttachFile,\n type ArtifactItem,\n type ArtifactsListResponse,\n type ChatThreadArtifactFile,\n type ChatThreadArtifactGoogleDriveSync,\n type ChatThreadArtifactRun,\n type HtmlArtifactEditSnapshot,\n} from \"./chat-threads\";\nexport {\n chatThreadV1GetContract,\n chatThreadV1MessagesContract,\n chatThreadV1SendContract,\n chatThreadV1Schema,\n chatMessageV1Schema,\n type ChatThreadV1GetContract,\n type ChatThreadV1MessagesContract,\n type ChatThreadV1SendContract,\n type ChatThreadV1,\n type ChatMessageV1,\n} from \"./chat-threads-v1\";\nexport {\n deviceTokenContract,\n bb0DeviceConfirmContract,\n bb0DeviceCodeSchema,\n bleSessionNonceSchema,\n pollTokenSchema,\n createDeviceTokenRequestSchema,\n createDeviceTokenResponseSchema,\n pollDeviceTokenRequestSchema,\n pollDeviceTokenPendingResponseSchema,\n pollDeviceTokenApprovedResponseSchema,\n pollDeviceTokenExpiredResponseSchema,\n pollDeviceTokenInvalidResponseSchema,\n confirmBb0DeviceRequestSchema,\n confirmBb0DeviceResponseSchema,\n type DeviceTokenContract,\n type Bb0DeviceConfirmContract,\n type CreateDeviceTokenRequest,\n type CreateDeviceTokenResponse,\n type PollDeviceTokenRequest,\n type PollDeviceTokenPendingResponse,\n type PollDeviceTokenApprovedResponse,\n type PollDeviceTokenExpiredResponse,\n type PollDeviceTokenInvalidResponse,\n type ConfirmBb0DeviceRequest,\n type ConfirmBb0DeviceResponse,\n} from \"./device-token\";\nexport {\n audioTranscriptionsV1Contract,\n audioTranscriptionV1Schema,\n type AudioTranscriptionsV1Contract,\n type AudioTranscriptionV1,\n} from \"./audio-transcriptions-v1\";\nexport {\n runnersPollContract,\n runnersJobClaimContract,\n runnersNetworkPolicyRefreshContract,\n runnersBuiltinFirewallsResolveContract,\n runnersHeartbeatContract,\n heartbeatBodySchema,\n runnerGroupSchema,\n jobSchema,\n executionContextSchema,\n storedExecutionContextSchema,\n secretConnectorMetadataSchema,\n secretConnectorMetadataMapSchema,\n storageEntrySchema,\n CANONICAL_CODEX_MEMORY_MOUNT_PATH,\n CANONICAL_CLAUDE_MEMORY_MOUNT_PATH,\n CANONICAL_GUEST_HOME_DIR,\n CANONICAL_WORKING_DIR,\n DEFAULT_PROFILE,\n RUNNER_BUILTIN_FIREWALL_RESOLVE_NAMES_MAX,\n SESSION_HISTORY_DOWNLOAD_SOURCE_CONFIGURED_PUBLIC_ENDPOINT,\n SESSION_HISTORY_DOWNLOAD_SOURCE_DEFAULT_R2_ENDPOINT,\n artifactEntrySchema,\n sessionHistoryDownloadSourceSchema,\n storageManifestSchema,\n resumeSessionSchema,\n type RunnersPollContract,\n type RunnersJobClaimContract,\n type RunnersNetworkPolicyRefreshContract,\n type RunnersBuiltinFirewallsResolveContract,\n type RunnersHeartbeatContract,\n type Job,\n type ExecutionContext,\n type StoredExecutionContext,\n type NetworkPolicyRefresh,\n type SecretConnectorMetadata,\n type StorageEntry,\n type ArtifactEntry,\n type StorageManifest,\n type ResumeSession,\n type SessionHistoryDownloadSource,\n type RunnerBuiltinFirewallsResolveBody,\n type RunnerBuiltinFirewallsResolveResponse,\n} from \"./runners\";\n\nexport {\n ablyTokenRequestSchema,\n runnerRealtimeTokenContract,\n type RunnerRealtimeTokenContract,\n platformRealtimeTokenContract,\n type PlatformRealtimeTokenContract,\n} from \"./realtime\";\n\nexport {\n logsListContract,\n logsByIdContract,\n logStatusSchema,\n logEntrySchema,\n paginationSchema,\n logsListResponseSchema,\n artifactSchema,\n logDetailSchema,\n triggerSourceSchema,\n type LogsListContract,\n type LogsByIdContract,\n // Inferred types\n type LogStatus,\n type LogEntry,\n type Pagination,\n type LogsListResponse,\n type Artifact,\n type LogDetail,\n type TriggerSource,\n type LogsFilters,\n} from \"./logs\";\n\nexport {\n connectorTypeSchema,\n CONNECTOR_TYPES,\n CONNECTOR_DISPLAY_CATEGORY_GROUPS,\n CONNECTOR_DISPLAY_CATEGORY_META,\n CONNECTOR_DISPLAY_CATEGORY_ORDER,\n type ConnectorType,\n type AuthGrantConnectorType,\n type ConnectorConfig,\n type ConnectorDisplayCategory,\n type ConnectorDisplayCategoryGroup,\n type ConnectorAuthMethodConfig,\n type ConnectorAuthMethodId,\n type ConnectorEnvBindings,\n type ConnectorEnvBindingValue,\n} from \"@vm0/connectors/connectors\";\nexport {\n getConnectorOwnedSecretNames,\n getConnectorEnvBindingEntries,\n type ScopeDiff,\n} from \"@vm0/connectors/connector-utils\";\nexport {\n connectorResponseConnectionStatusSchema,\n connectorResponseSchema,\n connectorListResponseSchema,\n guaranteedConnectorProvidedBindingNames,\n connectorProvidedBindingNamespaceSchema,\n connectorProvidedBindingSchema,\n connectorProvidedBindingSourceSchema,\n scopeDiffResponseSchema,\n type ConnectorResponseConnectionStatus,\n type ScopeDiffResponse,\n type ConnectorResponse,\n type ConnectorListResponse,\n type ConnectorProvidedBinding,\n type ConnectorProvidedBindingNamespace,\n} from \"./connector-schemas\";\n\nexport {\n parseBasicAuthTemplates,\n replaceBasicAuthTemplates,\n extractSecretNamesFromApis,\n firewallPermissionSchema,\n firewallApiSchema,\n firewallSchema,\n firewallsSchema,\n executionFirewallBuiltinEntrySchema,\n executionFirewallInlineEntrySchema,\n executionFirewallEntrySchema,\n executionFirewallsSchema,\n firewallConfigSchema,\n firewallPolicyValueSchema,\n firewallPoliciesSchema,\n firewallPolicySchema,\n networkPolicySchema,\n type FirewallConfig,\n type ExpandedFirewallConfig,\n type FirewallApi,\n type Firewall,\n type Firewalls,\n type ExecutionFirewallBuiltinEntry,\n type ExecutionFirewallInlineEntry,\n type ExecutionFirewallEntry,\n type ExecutionFirewalls,\n type FirewallPolicyValue,\n type FirewallPolicy,\n type FirewallPolicies,\n type NetworkPolicy,\n type FirewallTemplateReferenceNamespace,\n type FirewallTemplateReferences,\n type BasicAuthTemplateArg,\n type BasicAuthTemplateMatch,\n networkPoliciesSchema,\n type NetworkPolicies,\n hasBaseUrlParams,\n hasBaseUrlVars,\n resolveFirewallBaseUrlVars,\n validateBaseUrl,\n} from \"@vm0/connectors/firewall-types\";\n\nexport {\n collectAndValidatePermissions,\n validateRule,\n} from \"@vm0/connectors/firewall-expander\";\n\nexport {\n matchFirewallPath,\n findMatchingPermissions,\n} from \"@vm0/connectors/firewall-rule-matcher\";\n\nexport {\n userPreferencesResponseSchema,\n updateUserPreferencesRequestSchema,\n type UserPreferencesResponse,\n type UpdateUserPreferencesRequest,\n sendModeSchema,\n type SendMode,\n} from \"./zero-user-preferences\";\nexport {\n featureSwitchesResponseSchema,\n updateFeatureSwitchesRequestSchema,\n type FeatureSwitchesResponse,\n type UpdateFeatureSwitchesRequest,\n} from \"./zero-feature-switches\";\nexport {\n memoryDetailResponseSchema,\n type MemoryDetailResponse,\n} from \"./zero-memory\";\nexport {\n orgListItemSchema,\n orgListResponseSchema,\n type OrgListItem,\n type OrgListResponse,\n} from \"./org-list\";\nexport {\n orgRoleSchema,\n orgMemberSchema,\n orgPendingInvitationSchema,\n orgMembershipRequestSchema,\n orgMembersResponseSchema,\n inviteOrgMemberRequestSchema,\n removeOrgMemberRequestSchema,\n updateOrgMemberRoleRequestSchema,\n revokeInvitationRequestSchema,\n membershipRequestActionSchema,\n orgMessageResponseSchema,\n type OrgRole,\n type OrgMember,\n type OrgPendingInvitation,\n type OrgMembershipRequest,\n type OrgMembersResponse,\n type InviteOrgMemberRequest,\n type RemoveOrgMemberRequest,\n type UpdateOrgMemberRoleRequest,\n type RevokeInvitationRequest,\n type MembershipRequestAction,\n type OrgMessageResponse,\n} from \"./org-members\";\nexport {\n onboardingStatusContract,\n onboardingSetupContract,\n onboardingCompleteContract,\n onboardingStatusResponseSchema,\n type OnboardingStatusContract,\n type OnboardingSetupContract,\n type OnboardingCompleteContract,\n type OnboardingStatusResponse,\n} from \"./onboarding\";\nexport { skillFrontmatterSchema } from \"./skills\";\nexport {\n zeroAgentsMainContract,\n zeroAgentsByIdContract,\n zeroAgentInstructionsContract,\n zeroAgentDraftContract,\n zeroAgentResponseSchema,\n zeroAgentRequestSchema,\n zeroAgentMetadataRequestSchema,\n zeroAgentInstructionsResponseSchema,\n zeroAgentInstructionsRequestSchema,\n zeroAgentDraftResponseSchema,\n zeroAgentDraftRequestSchema,\n type ZeroAgentsMainContract,\n type ZeroAgentsByIdContract,\n type ZeroAgentInstructionsContract,\n type ZeroAgentDraftContract,\n type ZeroAgentResponse,\n type ZeroAgentRequest,\n type ZeroAgentMetadataRequest,\n type ZeroAgentInstructionsResponse,\n type ZeroAgentInstructionsRequest,\n type ZeroAgentDraftResponse,\n type ZeroAgentDraftRequest,\n} from \"./zero-agents\";\nexport {\n zeroWorkflowVisibilitySchema,\n zeroWorkflowNameSchema,\n RESERVED_SKILL_FILE,\n workflowFileEntrySchema,\n workflowFileMetadataSchema,\n workflowInstructionSchema,\n zeroWorkflowTriggerKindSchema,\n zeroWorkflowEventTypeSchema,\n zeroWorkflowScheduleTypeSchema,\n gmailNewMessageEventConfigSchema,\n gmailLabelAppliedEventConfigSchema,\n gmailWorkflowEventConfigSchema,\n googleCalendarEventCreatedEventConfigSchema,\n zeroWorkflowScheduleSchema,\n zeroWorkflowTriggerSummarySchema,\n chatThreadWorkflowTriggerSchema,\n zeroWorkflowTriggerCreateRequestSchema,\n zeroWorkflowTriggerUpdateRequestSchema,\n zeroWorkflowSummarySchema,\n zeroWorkflowDetailResponseSchema,\n zeroWorkflowListResponseSchema,\n zeroWorkflowCreateRequestSchema,\n zeroWorkflowUpdateRequestSchema,\n zeroWorkflowCopyRequestSchema,\n zeroWorkflowRunResponseSchema,\n zeroWorkflowsCollectionContract,\n zeroWorkflowsDetailContract,\n zeroWorkflowVisibilityContract,\n zeroWorkflowTriggersContract,\n type ZeroWorkflowVisibility,\n type WorkflowFileEntry,\n type WorkflowFileMetadata,\n type ZeroWorkflowTriggerKind,\n type ZeroWorkflowEventType,\n type ZeroWorkflowScheduleType,\n type GmailNewMessageEventConfig,\n type GmailLabelAppliedEventConfig,\n type GmailWorkflowEventConfig,\n type GoogleCalendarEventCreatedEventConfig,\n type GoogleCalendarWorkflowEventConfig,\n type ZeroWorkflowSchedule,\n type ZeroWorkflowTriggerSummary,\n type ChatThreadWorkflowTrigger,\n type ZeroWorkflowTriggerCreateRequest,\n type ZeroWorkflowTriggerUpdateRequest,\n type ZeroWorkflowSummary,\n type ZeroWorkflowDetailResponse,\n type ZeroWorkflowCreateRequest,\n type ZeroWorkflowUpdateRequest,\n type ZeroWorkflowCopyRequest,\n type ZeroWorkflowRunResponse,\n type ZeroWorkflowsCollectionContract,\n type ZeroWorkflowsDetailContract,\n type ZeroWorkflowVisibilityContract,\n type ZeroWorkflowTriggersContract,\n} from \"./zero-workflows\";\nexport {\n zeroUserConnectorsContract,\n userConnectorEnabledTypesSchema,\n type UserConnectorEnabledTypes,\n type ZeroUserConnectorsContract,\n} from \"./user-connectors\";\nexport {\n zeroUserPermissionGrantsContract,\n userPermissionGrantScopeSchema,\n userPermissionGrantActionSchema,\n userPermissionGrantApplyModeSchema,\n userPermissionGrantExpiresInSchema,\n userPermissionGrantResponseSchema,\n applyUserPermissionGrantSchema,\n applyUserPermissionGrantsRequestSchema,\n type UserPermissionGrantAction,\n type UserPermissionGrantApplyMode,\n type UserPermissionGrantExpiresIn,\n type UserPermissionGrantResponse,\n type ListUserPermissionGrantsQuery,\n type ApplyUserPermissionGrant,\n type ApplyUserPermissionGrantsRequest,\n type ZeroUserPermissionGrantsContract,\n} from \"./zero-user-permission-grants\";\nexport {\n zeroConnectorsMainContract,\n zeroConnectorsByTypeContract,\n zeroConnectorScopeDiffContract,\n zeroConnectorManualGrantContract,\n zeroConnectorNoAuthGrantContract,\n zeroConnectorOauthDeviceAuthSessionContract,\n zeroConnectorsSearchContract,\n type ConnectorSearchAuthMethod,\n type ZeroConnectorsMainContract,\n type ZeroConnectorsByTypeContract,\n type ZeroConnectorScopeDiffContract,\n type ZeroConnectorManualGrantContract,\n type ZeroConnectorNoAuthGrantContract,\n type ZeroConnectorOauthDeviceAuthSessionContract,\n type ZeroConnectorsSearchContract,\n} from \"./zero-connectors\";\nexport {\n publicConnectorCatalogIconSchema,\n zeroConnectorCatalogContract,\n type PublicConnectorCatalogAuthMethodDetail,\n type PublicConnectorCatalogAuthMethodSummary,\n type PublicConnectorCatalogDetail,\n type PublicConnectorCatalogDetailResponse,\n type PublicConnectorCatalogConnection,\n type PublicConnectorCatalogConnectionStatus,\n type PublicConnectorCatalogItem,\n type PublicConnectorCatalogIcon,\n type PublicConnectorCatalogListResponse,\n type PublicConnectorCatalogManualField,\n type PublicConnectorCatalogPermissionDetail,\n type PublicConnectorCatalogPermissionDetailResponse,\n type PublicConnectorCatalogPermissionSummary,\n type PublicConnectorCatalogStartOption,\n type PublicConnectorCatalogStatusItem,\n type PublicConnectorCatalogStatusResponse,\n type ZeroConnectorCatalogContract,\n} from \"./zero-connector-catalog\";\nexport {\n connectorPermissionDenyDiagnosticResultSchema,\n zeroConnectorPermissionDenyContract,\n type ConnectorPermissionDenyDiagnosticResult,\n type ZeroConnectorPermissionDenyContract,\n} from \"./zero-connector-permission-deny\";\nexport {\n connectorCheckDiagnosticResultSchema,\n connectorCheckPolicySchema,\n connectorCheckRequestSchema,\n zeroConnectorCheckContract,\n type ConnectorCheckDiagnosticResult,\n type ConnectorCheckPolicy,\n type ConnectorCheckRequest,\n type ZeroConnectorCheckContract,\n} from \"./zero-connector-check\";\nexport { CONNECTOR_REF_MAX_LENGTH, connectorRefSchema } from \"./connector-ref\";\nexport {\n CONNECTOR_CATALOG_AUTH_METHOD_ID_MAX_LENGTH,\n CONNECTOR_CATALOG_REF_MAX_LENGTH,\n connectorCatalogAuthMethodIdSchema,\n connectorCatalogRefSchema,\n type ConnectorCatalogAuthMethodId,\n type ConnectorCatalogRef,\n} from \"./connector-identity\";\nexport {\n codexDeviceAuthScopeSchema,\n zeroCodexDeviceAuthContract,\n type CodexDeviceAuthScope,\n type ZeroCodexDeviceAuthContract,\n} from \"./zero-codex-device-auth\";\nexport {\n claudeCodeDeviceAuthScopeSchema,\n zeroClaudeCodeDeviceAuthContract,\n type ClaudeCodeDeviceAuthScope,\n type ZeroClaudeCodeDeviceAuthContract,\n} from \"./zero-claude-code-device-auth\";\nexport {\n zeroOrgContract,\n zeroOrgLeaveContract,\n zeroOrgDeleteContract,\n type ZeroOrgContract,\n type ZeroOrgLeaveContract,\n type ZeroOrgDeleteContract,\n} from \"./zero-org\";\nexport {\n zeroOrgLogoContract,\n zeroOrgLogoResponseSchema,\n type ZeroOrgLogoContract,\n type ZeroOrgLogoResponse,\n} from \"./zero-org-logo\";\nexport { zeroOrgListContract, type ZeroOrgListContract } from \"./zero-org-list\";\nexport {\n zeroOrgMembersContract,\n zeroOrgInviteContract,\n zeroOrgMembershipRequestsContract,\n type ZeroOrgMembersContract,\n type ZeroOrgInviteContract,\n type ZeroOrgMembershipRequestsContract,\n} from \"./zero-org-members\";\nexport {\n zeroComposesListContract,\n type ZeroComposesListContract,\n} from \"./zero-composes\";\nexport {\n zeroRunsMainContract,\n zeroRunsByIdContract,\n zeroRunsCancelContract,\n zeroRunsQueueContract,\n zeroRunAgentEventsContract,\n zeroRunContextContract,\n zeroRunNetworkLogsContract,\n zeroRunRunnerContract,\n zeroLogsSearchContract,\n type ZeroRunsMainContract,\n type ZeroRunsByIdContract,\n type ZeroRunsCancelContract,\n type ZeroRunsQueueContract,\n type ZeroRunAgentEventsContract,\n type ZeroRunContextContract,\n type ZeroRunNetworkLogsContract,\n type ZeroRunRunnerContract,\n type ZeroLogsSearchContract,\n type RunContextResponse,\n type RunRunnerResponse,\n} from \"./zero-runs\";\nexport {\n zeroModelProvidersMainContract,\n zeroModelProvidersByTypeContract,\n type ZeroModelProvidersMainContract,\n type ZeroModelProvidersByTypeContract,\n} from \"./zero-model-providers\";\nexport {\n zeroPersonalModelProvidersMainContract,\n zeroPersonalModelProvidersByTypeContract,\n type ZeroPersonalModelProvidersMainContract,\n type ZeroPersonalModelProvidersByTypeContract,\n} from \"./zero-personal-model-providers\";\nexport {\n zeroUserPreferencesContract,\n type ZeroUserPreferencesContract,\n} from \"./zero-user-preferences\";\nexport {\n zeroFeatureSwitchesContract,\n type ZeroFeatureSwitchesContract,\n} from \"./zero-feature-switches\";\nexport {\n zeroMemoryContract,\n type MemorySourceListResponse,\n type MemorySourceProvider,\n type SlackMemoryBackfillRequest,\n type SlackMemoryStatusResponse,\n type ZeroMemoryContract,\n} from \"./zero-memory\";\nexport {\n zeroRelationshipsContract,\n relationshipRecordSchema,\n relationshipResolveResponseSchema,\n relationshipSearchResponseSchema,\n type RelationshipRecord,\n type RelationshipResolveResponse,\n type RelationshipSearchResponse,\n type ZeroRelationshipsContract,\n} from \"./zero-relationships\";\nexport {\n zeroMemoryDevRefreshContract,\n type MemoryDevRefreshResponse,\n type ZeroMemoryDevRefreshContract,\n} from \"./zero-memory-dev-refresh\";\nexport {\n zeroSecretsContract,\n zeroSecretsByNameContract,\n zeroVariablesContract,\n zeroVariablesByNameContract,\n type ZeroSecretsContract,\n type ZeroSecretsByNameContract,\n type ZeroVariablesContract,\n type ZeroVariablesByNameContract,\n} from \"./zero-secrets\";\nexport {\n apiKeysContract,\n apiKeysByIdContract,\n apiKeyItemSchema,\n apiKeyListResponseSchema,\n createApiKeyRequestSchema,\n createApiKeyResponseSchema,\n type ApiKeysContract,\n type ApiKeysByIdContract,\n type ApiKeyItem,\n type ApiKeyListResponse,\n type CreateApiKeyRequest,\n type CreateApiKeyResponse,\n} from \"./api-keys\";\nexport {\n zeroCustomConnectorsContract,\n zeroCustomConnectorByIdContract,\n zeroCustomConnectorSecretContract,\n customConnectorResponseSchema,\n customConnectorListResponseSchema,\n createCustomConnectorBodySchema,\n setCustomConnectorSecretBodySchema,\n patchCustomConnectorBodySchema,\n type ZeroCustomConnectorsContract,\n type ZeroCustomConnectorByIdContract,\n type ZeroCustomConnectorSecretContract,\n type CustomConnectorResponse,\n type CreateCustomConnectorBody,\n type PatchCustomConnectorBody,\n} from \"./zero-custom-connectors\";\nexport {\n zeroAgentCustomConnectorsContract,\n agentCustomConnectorEnabledIdsSchema,\n agentCustomConnectorUpdateSchema,\n type AgentCustomConnectorEnabledIds,\n type AgentCustomConnectorUpdate,\n type ZeroAgentCustomConnectorsContract,\n} from \"./zero-agent-custom-connectors\";\nexport {\n integrationsSlackMessageContract,\n type IntegrationsSlackMessageContract,\n type SendSlackMessageBody,\n type SendSlackMessageResponse,\n integrationsTelegramMessageContract,\n type IntegrationsTelegramMessageContract,\n type SendTelegramMessageBody,\n type SendTelegramMessageResponse,\n integrationsTeamsMessageContract,\n type IntegrationsTeamsMessageContract,\n type SendTeamsMessageBody,\n type SendTeamsMessageResponse,\n integrationsPhoneMessageContract,\n type IntegrationsPhoneMessageContract,\n type SendPhoneMessageBody,\n type SendPhoneMessageResponse,\n integrationsPhoneDownloadFileContract,\n type IntegrationsPhoneDownloadFileContract,\n integrationsTelegramBotListContract,\n type IntegrationsTelegramBotListContract,\n type TelegramBotListItem,\n type ListTelegramBotsResponse,\n integrationsSlackUploadInitContract,\n type SlackUploadInitBody,\n type SlackUploadInitResponse,\n integrationsSlackUploadCompleteContract,\n type SlackUploadCompleteBody,\n type SlackUploadCompleteResponse,\n integrationsTelegramUploadInitContract,\n type TelegramUploadInitBody,\n type TelegramUploadInitResponse,\n integrationsTeamsUploadInitContract,\n type TeamsUploadInitBody,\n type TeamsUploadInitResponse,\n integrationsTelegramUploadCompleteContract,\n type TelegramUploadCompleteBody,\n type TelegramUploadCompleteResponse,\n integrationsTeamsUploadCompleteContract,\n type TeamsUploadCompleteBody,\n type TeamsUploadCompleteResponse,\n integrationsPhoneUploadInitContract,\n type PhoneUploadInitBody,\n type PhoneUploadInitResponse,\n integrationsPhoneUploadCompleteContract,\n type PhoneUploadCompleteBody,\n type PhoneUploadCompleteResponse,\n} from \"./integrations\";\nexport {\n githubConnectSignatureSchema,\n githubConnectUserBodySchema,\n githubInstallationNotFoundResponseSchema,\n githubInstallationResponseSchema,\n githubIntegrationActionResponseSchema,\n integrationsGithubContract,\n type GithubConnectSignature,\n type GithubConnectUserBody,\n type GithubInstallationNotFoundResponse,\n type GithubInstallationResponse,\n type GithubIntegrationActionResponse,\n type IntegrationsGithubContract,\n} from \"./integrations-github\";\nexport {\n githubAppSetupCallbackQuerySchema,\n githubOauthContract,\n githubOauthInstallQuerySchema,\n type GithubAppSetupCallbackQuery,\n type GithubOauthContract,\n type GithubOauthInstallQuery,\n} from \"./github-oauth\";\nexport {\n adAttributionMetadataSchema,\n zeroAttributionContract,\n type AdAttributionMetadata,\n type RecordSignupAttributionRequest,\n type RecordSignupAttributionResponse,\n type ZeroAttributionContract,\n} from \"./zero-attribution\";\nexport {\n zeroBillingStatusContract,\n zeroBillingCheckoutContract,\n zeroBillingConcurrencyCheckoutContract,\n zeroBillingPortalContract,\n zeroBillingAutoRechargeContract,\n zeroBillingInvoicesContract,\n zeroBillingDowngradeContract,\n zeroBillingRestoreContract,\n zeroBillingRedeemContract,\n type ZeroBillingStatusContract,\n type ZeroBillingCheckoutContract,\n type ZeroBillingConcurrencyCheckoutContract,\n type ZeroBillingPortalContract,\n type ZeroBillingAutoRechargeContract,\n type ZeroBillingInvoicesContract,\n type ZeroBillingDowngradeContract,\n type ZeroBillingRestoreContract,\n type ZeroBillingRedeemContract,\n // Inferred types\n type BillingStatusResponse,\n type AutoRechargeConfig,\n type CheckoutResponse,\n type ConcurrencyCheckoutRequest,\n type PortalResponse,\n type BillingInvoice,\n type BillingInvoicesResponse,\n type DowngradeResponse,\n type RedeemRequest,\n type RedeemResponse,\n} from \"./zero-billing\";\nexport {\n zeroUsageMembersContract,\n type ZeroUsageMembersContract,\n // Inferred types\n type MemberUsage,\n type UsageMembersResponse,\n} from \"./zero-usage\";\nexport {\n zeroUsageRunsContract,\n type ZeroUsageRunsContract,\n type UsageRun,\n type UsageRunsResponse,\n} from \"./zero-usage-daily\";\nexport {\n zeroUsageInsightContract,\n type ZeroUsageInsightContract,\n type UsageInsightResponse,\n type UsageInsightBucket,\n type UsageInsightAutomationRow,\n type UsageInsightChatRow,\n} from \"./zero-usage-insight\";\nexport {\n zeroUsageRecordContract,\n usageRecordKindSchema,\n usageRecordRangeSchema,\n usageRecordScopeSchema,\n usageRecordSourceSchema,\n type ZeroUsageRecordContract,\n type UsageRecordKind,\n type UsageRecordRange,\n type UsageRecordResponse,\n type UsageRecordRow,\n type UsageRecordScope,\n type UsageRecordSource,\n} from \"./zero-usage-record\";\nexport {\n usageContract,\n type UsageContract,\n type DailyUsage,\n type UsageResponse,\n} from \"./usage\";\nexport {\n zeroTeamContract,\n teamComposeItemSchema,\n type ZeroTeamContract,\n type TeamComposeItem,\n} from \"./zero-team\";\nexport {\n zeroIntegrationsSlackContract,\n slackOrgStatusSchema,\n type ZeroIntegrationsSlackContract,\n type SlackOrgStatus,\n} from \"./zero-integrations-slack\";\nexport {\n zeroSlackConnectContract,\n type ZeroSlackConnectContract,\n} from \"./zero-slack-connect\";\nexport {\n zeroSlackCommandsContract,\n type ZeroSlackCommandsContract,\n} from \"./zero-slack-commands\";\nexport {\n zeroSlackEventsContract,\n type ZeroSlackEventsContract,\n} from \"./zero-slack-events\";\nexport {\n zeroTeamsBotContract,\n teamsInboundActivitySchema,\n teamsBotIngressResponseSchema,\n type TeamsInboundActivity,\n type TeamsBotIngressResponse,\n type ZeroTeamsBotContract,\n} from \"./zero-teams-bot\";\nexport {\n zeroTeamsConnectContract,\n type TeamsConnectBody,\n type TeamsConnectResponse,\n type TeamsConnectStatus,\n type TeamsDisconnectResponse,\n type ZeroTeamsConnectContract,\n} from \"./zero-teams-connect\";\nexport {\n zeroTeamsBrowserConnectContract,\n zeroTeamsBrowserConnectQuerySchema,\n type ZeroTeamsBrowserConnectContract,\n type ZeroTeamsBrowserConnectQuery,\n} from \"./zero-teams-browser-connect\";\nexport {\n zeroTeamsOauthContract,\n zeroTeamsOauthCallbackQuerySchema,\n zeroTeamsOauthConnectQuerySchema,\n type ZeroTeamsOauthCallbackQuery,\n type ZeroTeamsOauthConnectQuery,\n type ZeroTeamsOauthContract,\n} from \"./zero-teams-oauth\";\nexport {\n zeroSlackInteractiveContract,\n type ZeroSlackInteractiveContract,\n} from \"./zero-slack-interactive\";\nexport {\n zeroSlackBrowserConnectContract,\n zeroSlackBrowserConnectQuerySchema,\n type ZeroSlackBrowserConnectContract,\n type ZeroSlackBrowserConnectQuery,\n} from \"./zero-slack-browser-connect\";\nexport {\n zeroSlackOauthContract,\n zeroSlackOauthInstallQuerySchema,\n zeroSlackOauthConnectQuerySchema,\n zeroSlackOauthCallbackQuerySchema,\n type ZeroSlackOauthContract,\n type ZeroSlackOauthInstallQuery,\n type ZeroSlackOauthConnectQuery,\n type ZeroSlackOauthCallbackQuery,\n} from \"./zero-slack-oauth\";\nexport {\n zeroSlackChannelsContract,\n slackChannelSchema,\n type ZeroSlackChannelsContract,\n type SlackChannel,\n} from \"./zero-slack-channels\";\nexport {\n zeroQueuePositionContract,\n type ZeroQueuePositionContract,\n} from \"./zero-queue-position\";\nexport {\n zeroDeveloperSupportContract,\n developerSupportBodySchema,\n consentCodeResponseSchema,\n submitResponseSchema,\n type ZeroDeveloperSupportContract,\n} from \"./zero-developer-support\";\nexport {\n zeroReportErrorContract,\n reportErrorBodySchema,\n reportErrorResponseSchema,\n type ZeroReportErrorContract,\n} from \"./zero-report-error\";\nexport {\n zeroComputerUseAuditEventsContract,\n zeroComputerUseAuthorizationRequestsContract,\n zeroComputerUseCommandContract,\n zeroComputerUseHeartbeatContract,\n zeroComputerUseHostCommandsContract,\n zeroComputerUseHostsContract,\n zeroComputerUsePluginCommandContract,\n zeroComputerUseWriteCommandContract,\n computerUseAuditEventSchema,\n computerUseCommandKindSchema,\n computerUseCommandResponseSchema,\n computerUseHostSchema,\n isExpiredPluginContentPointer,\n isStoredScreenshotPointer,\n isExpiredScreenshotPointer,\n isStoredPluginContentPointer,\n type StoredScreenshotPointer,\n type ClientScreenshotPointer,\n type StoredPluginContentPointer,\n type ClientPluginContentPointer,\n type ComputerUseAuditEvent,\n type ComputerUseAuditEventListResponse,\n type ComputerUseAuthorizationRequestApplyResponse,\n type ComputerUseAuthorizationRequestCreateResponse,\n type ComputerUseAuthorizationRequestResponse,\n type ComputerUseAuthorizationSource,\n type ComputerUseCommandCreateResponse,\n type ComputerUseCommandError,\n type ComputerUseCommandKind,\n type ComputerUseCommandResponse,\n type ComputerUseCommandResult,\n type ComputerUseCommandStatus,\n type ComputerUseHost,\n type ComputerUseHostDeleteResponse,\n type ComputerUseHostListResponse,\n type ComputerUsePluginCommandKind,\n type ComputerUseReadCommandKind,\n type ComputerUseWriteCommandKind,\n type ZeroComputerUseAuditEventsContract,\n type ZeroComputerUseAuthorizationRequestsContract,\n type ZeroComputerUseCommandContract,\n type ZeroComputerUseHeartbeatContract,\n type ZeroComputerUseHostCommandsContract,\n type ZeroComputerUseHostsContract,\n type ZeroComputerUsePluginCommandContract,\n type ZeroComputerUseWriteCommandContract,\n} from \"./zero-computer-use\";\nexport {\n COMPUTER_USE_FILESYSTEM_MCP_PACKAGE,\n COMPUTER_USE_FILESYSTEM_MCP_VERSION,\n COMPUTER_USE_FILESYSTEM_PLUGIN,\n COMPUTER_USE_PLUGIN_CALL_KIND,\n COMPUTER_USE_PLUGIN_RESULT_BLOB_MAX_BYTES,\n COMPUTER_USE_PLUGIN_RESULT_INLINE_JSON_MAX_BYTES,\n COMPUTER_USE_PLUGIN_RESULT_INLINE_TEXT_MAX_BYTES,\n computerUseFilesystemToolArgumentsSchema,\n computerUseFilesystemToolIsDestructive,\n computerUseFilesystemToolNames,\n computerUseFilesystemToolSchema,\n computerUsePluginCallBodySchema,\n computerUsePluginCallRequiredCapabilities,\n computerUsePluginCapability,\n computerUsePluginNameSchema,\n computerUsePluginToolCapability,\n isComputerUseFilesystemTool,\n isComputerUsePluginCallPayload,\n parseComputerUseFilesystemToolArguments,\n type ComputerUseFilesystemTool,\n type ComputerUsePluginCallBody,\n type ComputerUsePluginCallPayload,\n type ComputerUsePluginName,\n} from \"./zero-computer-use-plugins\";\nexport {\n zeroInsightsContract,\n zeroInsightsRangeContract,\n type ZeroInsightsContract,\n type ZeroInsightsRangeContract,\n type InsightsResponse,\n type InsightsRangeResponse,\n type DayInsight,\n} from \"./zero-insights\";\nexport {\n pushSubscriptionsContract,\n type PushSubscriptionsContract,\n} from \"./push-subscriptions\";\nexport {\n zeroImageIoGenerateContract,\n zeroImageIoGenerateRequestSchema,\n zeroImageIoGenerateResponseSchema,\n type ZeroImageIoGenerateContract,\n type ZeroImageIoGenerateRequest,\n type ZeroImageIoGenerateResponse,\n} from \"./zero-image-io-generate\";\nexport {\n ZERO_IMAGE_INTERPRET_MARKS_MAX_REGIONS,\n ZERO_IMAGE_INTERPRET_MARKS_MAX_INSTRUCTION_LENGTH,\n zeroImageIoInterpretMarksContract,\n zeroImageIoInterpretMarksRegionSchema,\n zeroImageIoInterpretMarksRequestSchema,\n zeroImageIoInterpretMarksResultSchema,\n zeroImageIoInterpretMarksResponseSchema,\n type ZeroImageIoInterpretMarksContract,\n type ZeroImageIoInterpretMarksRegion,\n type ZeroImageIoInterpretMarksRequest,\n type ZeroImageIoInterpretMarksResult,\n type ZeroImageIoInterpretMarksResponse,\n} from \"./zero-image-io-interpret-marks\";\nexport {\n zeroImageShareXContract,\n zeroImageShareXRequestSchema,\n zeroImageShareXResponseSchema,\n type ZeroImageShareXContract,\n type ZeroImageShareXRequest,\n type ZeroImageShareXResponse,\n} from \"./zero-image-share-x\";\nexport {\n zeroBankingContract,\n zeroBankingProviderSchema,\n zeroBankingAccountSchema,\n zeroBankingBalanceSchema,\n zeroBankingTransactionSchema,\n zeroBankingAccountsResponseSchema,\n zeroBankingBalancesRequestSchema,\n zeroBankingBalancesResponseSchema,\n zeroBankingTransactionsRequestSchema,\n zeroBankingTransactionsResponseSchema,\n type ZeroBankingContract,\n type ZeroBankingAccount,\n type ZeroBankingBalance,\n type ZeroBankingTransaction,\n type ZeroBankingAccountsResponse,\n type ZeroBankingBalancesRequest,\n type ZeroBankingBalancesResponse,\n type ZeroBankingTransactionsRequest,\n type ZeroBankingTransactionsResponse,\n} from \"./zero-banking\";\nexport {\n zeroMapsContract,\n zeroMapsOperationSchema,\n zeroMapsResponseSchema,\n zeroMapsGeocodeRequestSchema,\n zeroMapsReverseGeocodeRequestSchema,\n zeroMapsDirectionsRequestSchema,\n zeroMapsPlacesSearchRequestSchema,\n zeroMapsPlacesDetailsRequestSchema,\n type ZeroMapsContract,\n type ZeroMapsResponse,\n type ZeroMapsGeocodeRequest,\n type ZeroMapsReverseGeocodeRequest,\n type ZeroMapsDirectionsRequest,\n type ZeroMapsPlacesSearchRequest,\n type ZeroMapsPlacesDetailsRequest,\n} from \"./zero-maps\";\nexport {\n zeroVideoIoGenerateContract,\n zeroVideoIoGenerateRequestSchema,\n zeroVideoIoGenerateResponseSchema,\n type ZeroVideoIoGenerateContract,\n type ZeroVideoIoGenerateRequest,\n type ZeroVideoIoGenerateResponse,\n} from \"./zero-video-io-generate\";\nexport {\n zeroBuiltInGenerationContract,\n zeroBuiltInGenerationTypeSchema,\n zeroBuiltInGenerationStatusSchema,\n zeroBuiltInGenerationRealtimeSubscriptionSchema,\n zeroBuiltInGenerationAcceptedResponseSchema,\n zeroBuiltInGenerationResponseSchema,\n type ZeroBuiltInGenerationContract,\n type ZeroBuiltInGenerationType,\n type ZeroBuiltInGenerationStatus,\n type ZeroBuiltInGenerationRealtimeSubscription,\n type ZeroBuiltInGenerationAcceptedResponse,\n type ZeroBuiltInGenerationResponse,\n} from \"./zero-built-in-generation\";\nexport {\n internalCallbackBodySchema,\n internalCallbackErrorSchema,\n internalCallbackHeadersSchema,\n internalCallbackSuccessSchema,\n internalCallbackSuccessWithSkippedSchema,\n type InternalCallbackBody,\n} from \"./internal-callbacks-shared\";\nexport {\n zeroVoiceIoQuotaContract,\n audioInputQuotaResponseSchema,\n type ZeroVoiceIoQuotaContract,\n type AudioInputQuotaResponse,\n} from \"./zero-voice-io-quota\";\nexport {\n zeroVoiceIoSpeechContract,\n zeroVoiceIoSpeechRequestSchema,\n zeroVoiceIoSpeechResponseSchema,\n type ZeroVoiceIoSpeechContract,\n type ZeroVoiceIoSpeechRequest,\n type ZeroVoiceIoSpeechResponse,\n} from \"./zero-voice-io-speech\";\nexport {\n zeroVoiceIoSttContract,\n zeroVoiceIoSttResponseSchema,\n zeroVoiceIoSttQuotaErrorSchema,\n type ZeroVoiceIoSttContract,\n type ZeroVoiceIoSttResponse,\n} from \"./zero-voice-io-stt\";\nexport {\n zeroUploadsContract,\n type ZeroUploadsContract,\n type UploadPrepareResponse,\n type UploadImportImageResponse,\n} from \"./zero-uploads\";\nexport {\n zeroGoalsContract,\n zeroGoalCreateRequestSchema,\n zeroGoalEditRequestSchema,\n zeroGoalEventSchema,\n zeroGoalResponseSchema,\n zeroGoalStatusSchema,\n type ZeroGoalCreateRequest,\n type ZeroGoalEditRequest,\n type ZeroGoalEvent,\n type ZeroGoalResponse,\n type ZeroGoalStatus,\n type ZeroGoalsContract,\n} from \"./zero-goals\";\nexport {\n zeroHostContract,\n hostedSiteFileSchema,\n hostedSitePrepareRequestSchema,\n hostedSitePrepareResponseSchema,\n hostedSiteCompleteResponseSchema,\n hostedSiteSlugSchema,\n type HostedSitePrepareRequest,\n type HostedSitePrepareResponse,\n type HostedSiteCompleteResponse,\n type ZeroHostContract,\n} from \"./zero-host\";\nexport {\n zeroIntegrationsTelegramContract,\n type ZeroIntegrationsTelegramContract,\n type TelegramBot,\n type TelegramBotStatus,\n type TelegramListResponse,\n type TelegramLinkStatusResponse,\n type TelegramSetupStatus,\n} from \"./zero-integrations-telegram\";\nexport {\n zeroIntegrationsAgentPhoneContract,\n type ZeroIntegrationsAgentPhoneContract,\n type AgentPhoneConnectResponse,\n type AgentPhoneLinkStatusResponse,\n type AgentPhoneStartLinkResponse,\n} from \"./zero-integrations-agentphone\";\n","import { z } from \"zod\";\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const buildCommitShaSchema = z\n .string()\n .regex(/^[0-9a-f]{40}$/u)\n .nullable();\n\nexport const buildVersionSchema = z.string().min(1).nullable().optional();\n\nexport const buildInfoResponseSchema = z.object({\n commitSha: buildCommitShaSchema,\n version: buildVersionSchema,\n});\n\nexport const buildInfoContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/build-info\",\n responses: {\n 200: buildInfoResponseSchema,\n },\n summary: \"Get API build information\",\n },\n});\n\nexport type BuildInfoContract = typeof buildInfoContract;\nexport type BuildInfoResponse = z.infer<typeof buildInfoResponseSchema>;\nexport type BuildInfoRouteResponse = {\n readonly status: 200;\n readonly body: BuildInfoResponse;\n};\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema, type ApiErrorResponse } from \"./errors\";\n\nconst c = initContract();\n\nexport const healthResponseSchema = z.object({\n status: z.literal(\"ok\"),\n});\n\nexport const healthContract = c.router({\n check: {\n method: \"GET\",\n path: \"/health\",\n responses: {\n 200: healthResponseSchema,\n },\n summary: \"Check API health\",\n },\n});\n\nexport const healthAuthContract = c.router({\n check: {\n method: \"GET\",\n path: \"/health/auth\",\n headers: authHeadersSchema,\n query: z.object({\n requiredCapability: z.string().optional(),\n acceptAnySandboxCapability: z.string().optional(),\n accept: z.string().optional(),\n }),\n responses: {\n 200: healthResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Check authenticated API health\",\n },\n});\n\nexport type HealthContract = typeof healthContract;\nexport type HealthAuthContract = typeof healthAuthContract;\nexport type HealthResponse = z.infer<typeof healthResponseSchema>;\nexport type HealthRouteResponse = {\n readonly status: 200;\n readonly body: HealthResponse;\n};\nexport type HealthAuthRouteResponse =\n | HealthRouteResponse\n | {\n readonly status: 401;\n readonly body: ApiErrorResponse;\n }\n | {\n readonly status: 403;\n readonly body: ApiErrorResponse;\n };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const desktopAuthCallbackSchemes = [\n \"ai.vm0.zero.desktop\",\n \"ai.vm0.zero.desktop.dev\",\n] as const;\nexport const defaultDesktopAuthCallbackScheme = desktopAuthCallbackSchemes[0];\nexport const desktopAuthCallbackSchemeSchema = z.enum(\n desktopAuthCallbackSchemes,\n);\nexport type DesktopAuthCallbackScheme = z.infer<\n typeof desktopAuthCallbackSchemeSchema\n>;\n\nexport const desktopAuthHandoffStatusSchema = z.enum([\n \"pending\",\n \"consumed\",\n \"completed\",\n]);\nexport type DesktopAuthHandoffStatus = z.infer<\n typeof desktopAuthHandoffStatusSchema\n>;\n\nconst desktopAuthHandoffPathParamsSchema = z.object({\n handoffId: z.string().uuid(),\n});\n\nexport const desktopAuthHandoffContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/desktop-auth/handoff\",\n headers: authHeadersSchema,\n body: z\n .object({\n callbackScheme: desktopAuthCallbackSchemeSchema.optional(),\n })\n .optional(),\n responses: {\n 200: z.object({\n callbackUrl: z.string(),\n handoffId: z.string().uuid(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create a desktop auth handoff code\",\n },\n status: {\n method: \"GET\",\n path: \"/api/desktop-auth/handoff/:handoffId\",\n pathParams: desktopAuthHandoffPathParamsSchema,\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n status: desktopAuthHandoffStatusSchema,\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Read desktop auth handoff status\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/desktop-auth/handoff/:handoffId/complete\",\n pathParams: desktopAuthHandoffPathParamsSchema,\n headers: authHeadersSchema,\n body: z.object({}).optional(),\n responses: {\n 200: z.object({\n status: z.literal(\"completed\"),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Mark desktop auth handoff complete\",\n },\n});\n\nexport const desktopAuthConsumeContract = c.router({\n consume: {\n method: \"POST\",\n path: \"/api/desktop-auth/consume\",\n body: z.object({\n code: z.string().min(1, \"code is required\"),\n }),\n responses: {\n 200: z.object({\n token: z.string(),\n }),\n 400: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Consume a desktop auth handoff code\",\n },\n});\n\nexport type DesktopAuthHandoffContract = typeof desktopAuthHandoffContract;\nexport type DesktopAuthConsumeContract = typeof desktopAuthConsumeContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { supportedRunModelSchema } from \"./model-providers\";\n\nconst c = initContract();\n\nexport const userModelPreferenceResponseSchema = z.object({\n selectedModel: supportedRunModelSchema.nullable(),\n updatedAt: z.string().nullable(),\n});\n\nexport type UserModelPreferenceResponse = z.infer<\n typeof userModelPreferenceResponseSchema\n>;\n\nexport const updateUserModelPreferenceRequestSchema = z.object({\n selectedModel: supportedRunModelSchema.nullable(),\n});\n\nexport type UpdateUserModelPreferenceRequest = z.infer<\n typeof updateUserModelPreferenceRequestSchema\n>;\n\nexport const zeroUserModelPreferenceContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/user-model-preference\",\n headers: authHeadersSchema,\n responses: {\n 200: userModelPreferenceResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get current user's model-first preference\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/user-model-preference\",\n headers: authHeadersSchema,\n body: updateUserModelPreferenceRequestSchema,\n responses: {\n 200: userModelPreferenceResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update current user's model-first preference\",\n },\n});\n\nexport type ZeroUserModelPreferenceContract =\n typeof zeroUserModelPreferenceContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const presentationImageOrientationSchema = z.enum([\n \"landscape\",\n \"portrait\",\n \"squarish\",\n]);\n\nexport const presentationImageResolveItemSchema = z\n .object({\n path: z.string().min(1).max(300),\n query: z.string().trim().min(1).max(160),\n intent: z.string().trim().min(1).max(200).optional(),\n orientation: presentationImageOrientationSchema.optional(),\n })\n .strict();\n\nexport const presentationImageResolveRequestSchema = z\n .object({\n items: z.array(presentationImageResolveItemSchema).min(1).max(40),\n })\n .strict();\n\nexport const presentationImageAssetSchema = z\n .object({\n src: z.url(),\n alt: z.string().min(1),\n source: z.enum([\"unsplash\", \"pexels\"]),\n sourceName: z.enum([\"Unsplash\", \"Pexels\"]),\n sourceUrl: z.url(),\n // Credit link for the source, rendered by the deck templates as the\n // \"/ <sourceName>\" hyperlink. Named `unsplashUrl` for backward compatibility\n // with the presentation runbook packages that whitelist this field; it now\n // carries the source link for whichever provider resolved the image.\n unsplashUrl: z.url(),\n photographerName: z.string().min(1),\n photographerUrl: z.url(),\n license: z.enum([\"Unsplash\", \"Pexels\"]),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n color: z.string().min(1).optional(),\n blurHash: z.string().min(1).optional(),\n })\n .strict();\n\nexport const presentationImageResolveErrorSchema = z\n .object({\n code: z.enum([\"NO_RESULTS\", \"DOWNLOAD_TRACKING_FAILED\", \"PROVIDER_ERROR\"]),\n message: z.string().min(1),\n })\n .strict();\n\nexport const presentationImageResolvedItemSchema = z\n .object({\n path: z.string(),\n query: z.string(),\n status: z.literal(\"resolved\"),\n asset: presentationImageAssetSchema,\n })\n .strict();\n\nexport const presentationImageUnresolvedItemSchema = z\n .object({\n path: z.string(),\n query: z.string(),\n status: z.literal(\"unresolved\"),\n error: presentationImageResolveErrorSchema,\n })\n .strict();\n\nexport const presentationImageResolveResponseSchema = z\n .object({\n items: z.array(\n z.discriminatedUnion(\"status\", [\n presentationImageResolvedItemSchema,\n presentationImageUnresolvedItemSchema,\n ]),\n ),\n })\n .strict();\n\nexport type PresentationImageResolveRequest = z.infer<\n typeof presentationImageResolveRequestSchema\n>;\nexport type PresentationImageResolveItem = z.infer<\n typeof presentationImageResolveItemSchema\n>;\nexport type PresentationImageAsset = z.infer<\n typeof presentationImageAssetSchema\n>;\nexport type PresentationImageResolveResponse = z.infer<\n typeof presentationImageResolveResponseSchema\n>;\n\nexport const presentationImagesContract = c.router({\n resolve: {\n method: \"POST\",\n path: \"/api/presentation/images/resolve\",\n headers: authHeadersSchema,\n body: presentationImageResolveRequestSchema,\n responses: {\n 200: presentationImageResolveResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Resolve presentation image briefs through a server-side provider\",\n },\n});\n\nexport type PresentationImagesContract = typeof presentationImagesContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testTelegramDispatchProbeBodySchema = z.object({\n bot_id: z.string(),\n chat_id: z.string(),\n telegram_user_id: z.string(),\n message_text: z.string(),\n message_id: z.number().optional(),\n chat_type: z.enum([\"private\", \"group\", \"supergroup\"]).optional(),\n bot_username: z.string().optional(),\n});\n\nexport const testTelegramDispatchProbeSuccessSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testTelegramDispatchProbeValidationErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testTelegramDispatchProbeHandlerErrorSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n name: z.string(),\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }),\n});\n\nexport const testTelegramDispatchProbeContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/test/telegram-dispatch-probe\",\n body: testTelegramDispatchProbeBodySchema,\n responses: {\n 200: z.union([\n testTelegramDispatchProbeSuccessSchema,\n testTelegramDispatchProbeHandlerErrorSchema,\n ]),\n 400: testTelegramDispatchProbeValidationErrorSchema,\n 404: z.string(),\n },\n summary:\n \"Dispatch a synthetic Telegram E2E message through the real handler\",\n },\n});\n\nexport type TestTelegramDispatchProbeContract =\n typeof testTelegramDispatchProbeContract;\nexport type TestTelegramDispatchProbeBody = z.infer<\n typeof testTelegramDispatchProbeBodySchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testTeamsDispatchProbeBodySchema = z.object({\n tenant_id: z.string(),\n conversation_id: z.string(),\n teams_user_id: z.string(),\n message_text: z.string(),\n service_url: z.string().optional(),\n tenant_name: z.string().nullable().optional(),\n team_id: z.string().nullable().optional(),\n team_name: z.string().nullable().optional(),\n channel_id: z.string().nullable().optional(),\n conversation_type: z.enum([\"personal\", \"channel\"]).optional(),\n activity_id: z.string().nullable().optional(),\n thread_id: z.string().optional(),\n teams_aad_object_id: z.string().nullable().optional(),\n teams_user_display_name: z.string().nullable().optional(),\n teams_user_principal_name: z.string().nullable().optional(),\n bot_id: z.string().nullable().optional(),\n bot_name: z.string().nullable().optional(),\n});\n\nexport const testTeamsDispatchProbeErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testTeamsDispatchProbeSuccessResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testTeamsDispatchProbeFailureResponseSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n name: z.string(),\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }),\n});\n\nexport const testTeamsDispatchProbeResponseSchema = z.union([\n testTeamsDispatchProbeSuccessResponseSchema,\n testTeamsDispatchProbeFailureResponseSchema,\n]);\n\nexport const testTeamsDispatchProbeContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/test/teams-dispatch-probe\",\n body: testTeamsDispatchProbeBodySchema,\n responses: {\n 200: testTeamsDispatchProbeResponseSchema,\n 400: testTeamsDispatchProbeErrorSchema,\n 404: z.string(),\n },\n summary: \"Synchronously dispatch a Teams test message for diagnostics\",\n },\n});\n\nexport type TestTeamsDispatchProbeBody = z.infer<\n typeof testTeamsDispatchProbeBodySchema\n>;\nexport type TestTeamsDispatchProbeContract =\n typeof testTeamsDispatchProbeContract;\nexport type TestTeamsDispatchProbeResponse = z.infer<\n typeof testTeamsDispatchProbeResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\nimport {\n internalCallbackBodySchema,\n internalCallbackErrorSchema,\n internalCallbackHeadersSchema,\n internalCallbackSuccessWithSkippedSchema,\n} from \"./internal-callbacks-shared\";\n\nconst c = initContract();\n\nconst emailRecipientsSchema = z.array(z.string()).optional();\n\nexport const zeroEmailReplyCallbackPayloadSchema = z\n .object({\n emailThreadSessionId: z.string(),\n inboundEmailId: z.string(),\n inboundMessageId: z.string().optional(),\n inboundReferences: z.string().optional(),\n replyRecipientTo: emailRecipientsSchema,\n replyRecipientCc: emailRecipientsSchema,\n })\n .passthrough();\n\nexport const zeroEmailTriggerCallbackPayloadSchema = z\n .object({\n senderEmail: z.string(),\n agentId: z.string(),\n userId: z.string(),\n inboundEmailId: z.string(),\n replyToken: z.string(),\n inboundMessageId: z.string().optional(),\n inboundReferences: z.string().optional(),\n subject: z.string().optional(),\n runtimeOrgId: z.string().optional(),\n replyRecipientTo: emailRecipientsSchema,\n replyRecipientCc: emailRecipientsSchema,\n })\n .passthrough();\n\nexport const zeroEmailReplyCallbackContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/email/callbacks/reply\",\n headers: internalCallbackHeadersSchema,\n body: internalCallbackBodySchema.extend({\n payload: zeroEmailReplyCallbackPayloadSchema,\n }),\n responses: {\n 200: internalCallbackSuccessWithSkippedSchema,\n 400: internalCallbackErrorSchema,\n 401: internalCallbackErrorSchema,\n 404: internalCallbackErrorSchema,\n },\n summary: \"Handle Zero email reply completion callbacks\",\n },\n});\n\nexport const zeroEmailTriggerCallbackContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/email/callbacks/trigger\",\n headers: internalCallbackHeadersSchema,\n body: internalCallbackBodySchema.extend({\n payload: zeroEmailTriggerCallbackPayloadSchema,\n }),\n responses: {\n 200: internalCallbackSuccessWithSkippedSchema,\n 400: internalCallbackErrorSchema,\n 401: internalCallbackErrorSchema,\n 404: internalCallbackErrorSchema,\n },\n summary: \"Handle Zero email trigger completion callbacks\",\n },\n});\n\nexport const zeroEmailInboundContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/email/inbound\",\n headers: z.object({\n \"svix-id\": z.string().optional(),\n \"svix-timestamp\": z.string().optional(),\n \"svix-signature\": z.string().optional(),\n }),\n body: z.unknown(),\n responses: {\n 200: z.object({ received: z.literal(true) }),\n 401: z.object({ error: z.string() }),\n },\n summary: \"Handle Resend inbound email webhooks\",\n },\n});\n\nexport type ZeroEmailReplyCallbackPayload = z.infer<\n typeof zeroEmailReplyCallbackPayloadSchema\n>;\nexport type ZeroEmailTriggerCallbackPayload = z.infer<\n typeof zeroEmailTriggerCallbackPayloadSchema\n>;\n","import { z } from \"zod\";\n\nexport const internalCallbackHeadersSchema = z.object({\n \"x-vm0-signature\": z.string().optional(),\n \"x-vm0-timestamp\": z.string().optional(),\n});\n\nconst internalCallbackPayloadSchema = z.record(z.string(), z.unknown());\n\nexport const internalCallbackBodySchema = z\n .object({\n callbackId: z.string().optional(),\n runId: z.string().optional(),\n status: z.enum([\"completed\", \"failed\", \"progress\"]),\n result: z.record(z.string(), z.unknown()).optional(),\n error: z.string().optional(),\n payload: internalCallbackPayloadSchema.optional(),\n })\n .passthrough();\n\nexport const internalCallbackSuccessSchema = z.object({\n success: z.literal(true),\n});\n\nexport const internalCallbackSuccessWithSkippedSchema =\n internalCallbackSuccessSchema.extend({\n skipped: z.literal(true).optional(),\n });\n\nexport const internalCallbackErrorSchema = z.object({\n error: z.string(),\n});\n\nexport type InternalCallbackBody = z.infer<typeof internalCallbackBodySchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Auth contract for /api/auth/me\n */\nexport const authContract = c.router({\n /**\n * GET /api/auth/me\n * Get current user information\n */\n me: {\n method: \"GET\",\n path: \"/api/auth/me\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n userId: z.string(),\n email: z.string(),\n }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get current user information\",\n },\n});\n\nexport type AuthContract = typeof authContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst exportJobStatusSchema = z.enum([\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n]);\n\nconst userExportJobSchema = z.object({\n id: z.string().uuid(),\n status: exportJobStatusSchema,\n createdAt: z.string(),\n completedAt: z.string().nullable(),\n expiresAt: z.string().nullable(),\n downloadUrl: z.string().url().nullable(),\n error: z.string().nullable(),\n});\n\nconst userExportStatusResponseSchema = z.object({\n job: userExportJobSchema.nullable(),\n canExport: z.boolean(),\n nextExportAt: z.string().nullable(),\n});\n\nconst userExportStartResponseSchema = z.object({\n jobId: z.string().uuid(),\n status: z.enum([\"pending\", \"running\"]),\n});\n\nexport const userExportContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/user/export\",\n headers: authHeadersSchema,\n responses: {\n 200: userExportStatusResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get current user export status\",\n },\n post: {\n method: \"POST\",\n path: \"/api/user/export\",\n headers: authHeadersSchema,\n body: z.undefined(),\n responses: {\n 202: userExportStartResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 429: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Start a user data export\",\n },\n});\n\nexport type UserExportContract = typeof userExportContract;\nexport type UserExportStatusResponse = z.infer<\n typeof userExportStatusResponseSchema\n>;\nexport type UserExportJob = z.infer<typeof userExportJobSchema>;\nexport type UserExportStartResponse = z.infer<\n typeof userExportStartResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const emailUnsubscribeQuerySchema = z.object({\n token: z.string().optional(),\n});\n\nexport const emailUnsubscribeResponseSchema = z.object({\n unsubscribed: z.literal(true),\n});\n\nexport const emailUnsubscribeErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const emailUnsubscribeContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/email/unsubscribe\",\n query: emailUnsubscribeQuerySchema,\n responses: {\n 200: c.otherResponse({\n contentType: \"text/html\",\n body: z.unknown(),\n }),\n 400: emailUnsubscribeErrorSchema,\n },\n summary: \"Unsubscribe from system email notifications\",\n },\n unsubscribe: {\n method: \"POST\",\n path: \"/api/email/unsubscribe\",\n query: emailUnsubscribeQuerySchema,\n body: z.undefined(),\n responses: {\n 200: emailUnsubscribeResponseSchema,\n 400: emailUnsubscribeErrorSchema,\n },\n summary: \"Unsubscribe a user from system-initiated emails\",\n },\n});\n\nexport type EmailUnsubscribeContract = typeof emailUnsubscribeContract;\nexport type EmailUnsubscribeQuery = z.infer<typeof emailUnsubscribeQuerySchema>;\nexport type EmailUnsubscribeResponse = z.infer<\n typeof emailUnsubscribeResponseSchema\n>;\nexport type EmailUnsubscribeError = z.infer<typeof emailUnsubscribeErrorSchema>;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorCatalogRefSchema } from \"./connector-identity\";\n\nconst c = initContract();\n\nexport const connectorsTypeCallbackContract = c.router({\n callback: {\n method: \"GET\",\n path: \"/api/connectors/:type/callback\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorCatalogRefSchema }),\n query: z\n .object({\n code: z.string().optional(),\n auth_code: z.string().optional(),\n state: z.string().optional(),\n realmId: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n \"openid.mode\": z.string().optional(),\n \"openid.ns\": z.string().optional(),\n \"openid.op_endpoint\": z.string().optional(),\n \"openid.claimed_id\": z.string().optional(),\n \"openid.identity\": z.string().optional(),\n \"openid.return_to\": z.string().optional(),\n \"openid.response_nonce\": z.string().optional(),\n \"openid.assoc_handle\": z.string().optional(),\n \"openid.signed\": z.string().optional(),\n \"openid.sig\": z.string().optional(),\n \"openid.realm\": z.string().optional(),\n })\n .catchall(z.string()),\n responses: {\n 307: c.noBody(),\n },\n summary: \"Complete connector browser authorization\",\n },\n});\n\nexport type ConnectorsTypeCallbackContract =\n typeof connectorsTypeCallbackContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testOAuthProviderAuthorizeErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testOAuthProviderAuthorizeQuerySchema = z.object({\n client_id: z.string().optional(),\n redirect_uri: z.string().optional(),\n response_type: z.string().optional(),\n scenario: z.string().optional(),\n scope: z.string().optional(),\n state: z.string().optional(),\n});\n\nexport const testOAuthProviderAuthorizeContract = c.router({\n authorize: {\n method: \"GET\",\n path: \"/api/test/oauth-provider/authorize\",\n query: testOAuthProviderAuthorizeQuerySchema,\n responses: {\n 302: c.noBody(),\n 400: testOAuthProviderAuthorizeErrorSchema,\n 404: z.string(),\n },\n summary: \"Synthetic OAuth authorize endpoint for test connector flows\",\n },\n});\n\nexport type TestOAuthProviderAuthorizeContract =\n typeof testOAuthProviderAuthorizeContract;\nexport type TestOAuthProviderAuthorizeQuery = z.infer<\n typeof testOAuthProviderAuthorizeQuerySchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testOAuthProviderEchoErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testOAuthProviderEchoResponseSchema = z.object({\n authorization: z.string(),\n receivedAt: z.string(),\n});\n\nexport const testOAuthProviderEchoContract = c.router({\n echo: {\n method: \"GET\",\n path: \"/api/test/oauth-provider/echo\",\n responses: {\n 200: testOAuthProviderEchoResponseSchema,\n 401: testOAuthProviderEchoErrorSchema,\n 404: z.string(),\n },\n summary: \"Synthetic protected upstream endpoint for test connector flows\",\n },\n});\n\nexport type TestOAuthProviderEchoContract =\n typeof testOAuthProviderEchoContract;\nexport type TestOAuthProviderEchoResponse = z.infer<\n typeof testOAuthProviderEchoResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testOAuthProviderTokenErrorSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n});\n\nexport const testOAuthProviderTokenResponseSchema = z.object({\n access_token: z.string(),\n refresh_token: z.string().nullable().optional(),\n token_type: z.literal(\"Bearer\"),\n expires_in: z.number(),\n scope: z.string(),\n});\n\nexport const testOAuthProviderTokenContract = c.router({\n token: {\n method: \"POST\",\n path: \"/api/test/oauth-provider/token\",\n body: c.type<string>(),\n responses: {\n 200: testOAuthProviderTokenResponseSchema,\n 400: testOAuthProviderTokenErrorSchema,\n 401: testOAuthProviderTokenErrorSchema,\n 404: z.string(),\n },\n summary: \"Synthetic OAuth token endpoint for test connector flows\",\n },\n});\n\nexport type TestOAuthProviderTokenContract =\n typeof testOAuthProviderTokenContract;\nexport type TestOAuthProviderTokenResponse = z.infer<\n typeof testOAuthProviderTokenResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testOAuthProviderDeviceAuthErrorSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n});\n\nexport const testOAuthProviderDeviceAuthResponseSchema = z.object({\n device_code: z.string(),\n user_code: z.string(),\n verification_uri: z.string(),\n verification_uri_complete: z.string(),\n expires_in: z.number(),\n interval: z.number(),\n});\n\nexport const testOAuthProviderDeviceAuthContract = c.router({\n deviceAuth: {\n method: \"POST\",\n path: \"/api/test/oauth-provider/device/code\",\n body: c.type<string>(),\n responses: {\n 200: testOAuthProviderDeviceAuthResponseSchema,\n 400: testOAuthProviderDeviceAuthErrorSchema,\n 401: testOAuthProviderDeviceAuthErrorSchema,\n 404: z.string(),\n },\n summary:\n \"Synthetic OAuth device authorization endpoint for test connector flows\",\n },\n});\n\nexport type TestOAuthProviderDeviceAuthContract =\n typeof testOAuthProviderDeviceAuthContract;\nexport type TestOAuthProviderDeviceAuthResponse = z.infer<\n typeof testOAuthProviderDeviceAuthResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testOAuthProviderUserinfoErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testOAuthProviderUserinfoResponseSchema = z.object({\n email: z.string(),\n id: z.string(),\n username: z.string(),\n});\n\nexport const testOAuthProviderUserinfoContract = c.router({\n userinfo: {\n method: \"GET\",\n path: \"/api/test/oauth-provider/userinfo\",\n responses: {\n 200: testOAuthProviderUserinfoResponseSchema,\n 401: testOAuthProviderUserinfoErrorSchema,\n 404: z.string(),\n },\n summary: \"Synthetic OAuth userinfo endpoint for test connector flows\",\n },\n});\n\nexport type TestOAuthProviderUserinfoContract =\n typeof testOAuthProviderUserinfoContract;\nexport type TestOAuthProviderUserinfoResponse = z.infer<\n typeof testOAuthProviderUserinfoResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nconst testComputerUseStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testComputerUseStatePostBodySchema = z.object({\n user_id: z.string().optional(),\n org_id: z.string().optional(),\n trigger_source: z.enum([\"web\", \"slack\", \"teams\"]).optional(),\n});\n\nexport const testComputerUseStatePostResponseSchema = z.object({\n ok: z.literal(true),\n compose_id: z.string(),\n run_id: z.string(),\n session_id: z.string(),\n thread_id: z.string().nullable(),\n slack: z\n .object({\n connection_id: z.string(),\n channel_id: z.string(),\n thread_ts: z.string(),\n })\n .nullable(),\n teams: z\n .object({\n connection_id: z.string(),\n conversation_id: z.string(),\n thread_id: z.string(),\n })\n .nullable(),\n});\n\nexport const testComputerUseStateGetResponseSchema = z.object({\n source: z.enum([\"web\", \"slack\", \"teams\"]).nullable(),\n computer_use_host_id: z.string().nullable(),\n});\n\nexport const testComputerUseStateDeleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testComputerUseStateContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/test/computer-use-state\",\n body: testComputerUseStatePostBodySchema,\n responses: {\n 200: testComputerUseStatePostResponseSchema,\n 400: testComputerUseStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Seed computer-use e2e run state\",\n },\n get: {\n method: \"GET\",\n path: \"/api/test/computer-use-state\",\n query: z.object({\n run_id: z.string().optional(),\n }),\n responses: {\n 200: testComputerUseStateGetResponseSchema,\n 400: testComputerUseStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Read computer-use e2e run state\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/test/computer-use-state\",\n query: z.object({\n run_id: z.string().optional(),\n }),\n responses: {\n 200: testComputerUseStateDeleteResponseSchema,\n 400: testComputerUseStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Clear computer-use e2e run state\",\n },\n});\n\nexport type TestComputerUseStateContract = typeof testComputerUseStateContract;\nexport type TestComputerUseStatePostResponse = z.infer<\n typeof testComputerUseStatePostResponseSchema\n>;\nexport type TestComputerUseStateGetResponse = z.infer<\n typeof testComputerUseStateGetResponseSchema\n>;\nexport type TestComputerUseStateDeleteResponse = z.infer<\n typeof testComputerUseStateDeleteResponseSchema\n>;\n","import { z } from \"zod\";\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\n// Test-only support actions for infrastructure fixtures used by API suites.\nexport const testRuntimeStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testRuntimeStateActionBodySchema = z.discriminatedUnion(\"action\", [\n z.object({\n action: z.literal(\"seed-vm0-managed-default-model-key\"),\n }),\n z.object({\n action: z.literal(\"seed-vm0-managed-model-key\"),\n selected_model: z.string(),\n }),\n z.object({\n action: z.literal(\"delete-vm0-managed-default-model-key\"),\n }),\n z.object({\n action: z.literal(\"enable-fake-kms\"),\n }),\n z.object({\n action: z.literal(\"reset-fake-kms\"),\n }),\n z.object({\n action: z.literal(\"read-fake-kms-state\"),\n }),\n z.object({\n action: z.literal(\"mutate-runner-job-secret-value-environment-keys\"),\n run_id: z.uuid(),\n mode: z.enum([\"remove\", \"invalid\"]),\n }),\n z.object({\n action: z.literal(\"hold-org-admission-lock\"),\n org_id: z.string(),\n }),\n z.object({\n action: z.literal(\"read-org-admission-lock-state\"),\n }),\n z.object({\n action: z.literal(\"release-org-admission-lock\"),\n }),\n z.object({\n action: z.literal(\"read-run-uploaded-file-sources\"),\n run_id: z.uuid(),\n }),\n]);\n\nexport const testRuntimeStateActionResponseSchema = z.object({\n ok: z.literal(true),\n selected_model: z.string().optional(),\n decrypt_call_count: z.number().optional(),\n admission_lock_held: z.boolean().optional(),\n admission_lock_waiting: z.boolean().optional(),\n uploaded_file_sources: z.array(z.string()).optional(),\n});\n\nexport const testRuntimeStateContract = c.router({\n action: {\n method: \"POST\",\n path: \"/api/test/runtime-state/action\",\n body: testRuntimeStateActionBodySchema,\n responses: {\n 200: testRuntimeStateActionResponseSchema,\n 400: testRuntimeStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate API test support state\",\n },\n});\n\nexport type TestRuntimeStateContract = typeof testRuntimeStateContract;\nexport type TestRuntimeStateActionBody = z.infer<\n typeof testRuntimeStateActionBodySchema\n>;\nexport type TestRuntimeStateActionResponse = z.infer<\n typeof testRuntimeStateActionResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testZeroAgentStateErrorSchema = z.object({\n error: z.string(),\n});\n\nconst zeroAgentVisibilitySchema = z.enum([\"public\", \"private\"]);\n\nexport const testZeroAgentStateActionBodySchema = z.discriminatedUnion(\n \"action\",\n [\n z.object({\n action: z.literal(\"seed-agent\"),\n agent_id: z.string(),\n display_name: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n sound: z.string().nullable().optional(),\n avatar_url: z.string().nullable().optional(),\n visibility: zeroAgentVisibilitySchema.optional(),\n }),\n ],\n);\n\nexport const testZeroAgentStateActionResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testZeroAgentStateContract = c.router({\n action: {\n method: \"POST\",\n path: \"/api/test/zero-agent-state/action\",\n body: testZeroAgentStateActionBodySchema,\n responses: {\n 200: testZeroAgentStateActionResponseSchema,\n 400: testZeroAgentStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate Zero agent API test support state\",\n },\n});\n\nexport type TestZeroAgentStateContract = typeof testZeroAgentStateContract;\nexport type TestZeroAgentStateActionBody = z.infer<\n typeof testZeroAgentStateActionBodySchema\n>;\nexport type TestZeroAgentStateActionResponse = z.infer<\n typeof testZeroAgentStateActionResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testModelProviderStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testModelProviderStateActionBodySchema = z.discriminatedUnion(\n \"action\",\n [\n z.object({\n action: z.literal(\"overwrite-secret\"),\n provider_id: z.string(),\n secret_name: z.string(),\n secret: z.string(),\n }),\n ],\n);\n\nexport const testModelProviderStateActionResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testModelProviderStateContract = c.router({\n action: {\n method: \"POST\",\n path: \"/api/test/model-provider-state/action\",\n body: testModelProviderStateActionBodySchema,\n responses: {\n 200: testModelProviderStateActionResponseSchema,\n 400: testModelProviderStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate model provider API test support state\",\n },\n});\n\nexport type TestModelProviderStateContract =\n typeof testModelProviderStateContract;\nexport type TestModelProviderStateActionBody = z.infer<\n typeof testModelProviderStateActionBodySchema\n>;\nexport type TestModelProviderStateActionResponse = z.infer<\n typeof testModelProviderStateActionResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nconst nullableDateStringSchema = z.string().nullable();\nconst optionalDateStringSchema = z.string().optional();\n\nconst testUsageInsightStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testUsageInsightStateFixtureSchema = z.object({\n org_id: z.string(),\n user_id: z.string(),\n});\n\nconst usageInsightFixtureInputSchema = testUsageInsightStateFixtureSchema;\n\nexport const testUsageInsightStateActionBodySchema = z.discriminatedUnion(\n \"action\",\n [\n z.object({\n action: z.literal(\"seed-fixture\"),\n }),\n z.object({\n action: z.literal(\"delete-fixture\"),\n fixture: usageInsightFixtureInputSchema,\n }),\n z.object({\n action: z.literal(\"seed-compose\"),\n org_id: z.string(),\n user_id: z.string(),\n name: z.string().optional(),\n display_name: z.string().nullable().optional(),\n visibility: z.enum([\"public\", \"private\"]).optional(),\n }),\n z.object({\n action: z.literal(\"seed-run\"),\n org_id: z.string(),\n user_id: z.string(),\n compose_id: z.string(),\n trigger_source: z.string().optional(),\n chat_thread_id: z.string().optional(),\n status: z.string().optional(),\n prompt: z.string().optional(),\n created_at: optionalDateStringSchema,\n started_at: nullableDateStringSchema.optional(),\n completed_at: nullableDateStringSchema.optional(),\n continued_from_session_id: z.string().nullable().optional(),\n sandbox_reuse_result: z.string().nullable().optional(),\n result: z.record(z.string(), z.unknown()).nullable().optional(),\n error: z.string().nullable().optional(),\n last_event_sequence: z.number().nullable().optional(),\n selected_model: z.string().nullable().optional(),\n }),\n z.object({\n action: z.literal(\"seed-chat-thread\"),\n user_id: z.string(),\n compose_id: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n action: z.literal(\"insert-model-usage-event-for-run\"),\n org_id: z.string(),\n user_id: z.string(),\n run_id: z.string(),\n input_tokens: z.number().optional(),\n output_tokens: z.number().optional(),\n cache_read_input_tokens: z.number().optional(),\n cache_creation_input_tokens: z.number().optional(),\n credits_charged: z.number().optional(),\n status: z.string().optional(),\n processed_at: nullableDateStringSchema.optional(),\n }),\n z.object({\n action: z.literal(\"insert-usage-event\"),\n org_id: z.string(),\n user_id: z.string().optional(),\n run_id: z.string().nullable().optional(),\n kind: z.string().optional(),\n provider: z.string().optional(),\n category: z.string().optional(),\n quantity: z.number().optional(),\n status: z.string().optional(),\n credits_charged: z.number().optional(),\n idempotency_key: z.string().optional(),\n created_at: optionalDateStringSchema,\n processed_at: nullableDateStringSchema.optional(),\n }),\n z.object({\n action: z.literal(\"set-usage-event-created-at\"),\n id: z.string(),\n created_at: z.string(),\n }),\n ],\n);\n\nexport const testUsageInsightStateActionResponseSchema = z.object({\n ok: z.literal(true),\n fixture: testUsageInsightStateFixtureSchema.optional(),\n compose_id: z.string().optional(),\n agent_id: z.string().optional(),\n run_id: z.string().optional(),\n chat_thread_id: z.string().optional(),\n usage_event_id: z.string().optional(),\n});\n\nexport const testUsageInsightStateContract = c.router({\n action: {\n method: \"POST\",\n path: \"/api/test/usage-insight-state/action\",\n body: testUsageInsightStateActionBodySchema,\n responses: {\n 200: testUsageInsightStateActionResponseSchema,\n 400: testUsageInsightStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate usage insight API test support state\",\n },\n});\n\nexport type TestUsageInsightStateContract =\n typeof testUsageInsightStateContract;\nexport type TestUsageInsightStateFixture = z.infer<\n typeof testUsageInsightStateFixtureSchema\n>;\nexport type TestUsageInsightStateActionBody = z.infer<\n typeof testUsageInsightStateActionBodySchema\n>;\nexport type TestUsageInsightStateActionResponse = z.infer<\n typeof testUsageInsightStateActionResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testCronCleanupSandboxesStateActionBodySchema = z\n .object({\n action: z.enum([\n \"seed-run\",\n \"delete-run\",\n \"seed-runner-job\",\n \"seed-custom-connector-auth-ref\",\n \"seed-queue-entry\",\n \"seed-queue-marker\",\n \"seed-export-job\",\n \"delete-export-job\",\n \"get-run\",\n \"get-runner-job\",\n \"get-custom-connector-auth-ref\",\n \"get-queue-entry\",\n \"get-queue-marker-revoker\",\n \"get-export-job\",\n ]),\n })\n .passthrough();\n\nexport const testCronCleanupSandboxesStateActionResponseSchema = z\n .object({\n ok: z.literal(true),\n })\n .passthrough();\n\nexport const testCronCleanupSandboxesStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testCronCleanupSandboxesStateContract = c.router({\n action: {\n method: \"POST\",\n path: \"/api/test/cron-cleanup-sandboxes-state/action\",\n body: testCronCleanupSandboxesStateActionBodySchema,\n responses: {\n 200: testCronCleanupSandboxesStateActionResponseSchema,\n 400: testCronCleanupSandboxesStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate or inspect cron cleanup sandboxes test state\",\n },\n});\n\nexport type TestCronCleanupSandboxesStateActionBody = z.infer<\n typeof testCronCleanupSandboxesStateActionBodySchema\n>;\nexport type TestCronCleanupSandboxesStateActionResponse = z.infer<\n typeof testCronCleanupSandboxesStateActionResponseSchema\n>;\nexport type TestCronCleanupSandboxesStateContract =\n typeof testCronCleanupSandboxesStateContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testSlackDispatchProbeBodySchema = z.object({\n team_id: z.string(),\n channel_id: z.string(),\n user_id: z.string(),\n message_text: z.string(),\n message_ts: z.string(),\n channel_type: z.enum([\"channel\", \"im\"]).optional(),\n});\n\nexport const testSlackDispatchProbeErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testSlackDispatchProbeSuccessResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testSlackDispatchProbeFailureResponseSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n name: z.string(),\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }),\n});\n\nexport const testSlackDispatchProbeResponseSchema = z.union([\n testSlackDispatchProbeSuccessResponseSchema,\n testSlackDispatchProbeFailureResponseSchema,\n]);\n\nexport const testSlackDispatchProbeContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/test/slack-dispatch-probe\",\n body: testSlackDispatchProbeBodySchema,\n responses: {\n 200: testSlackDispatchProbeResponseSchema,\n 400: testSlackDispatchProbeErrorSchema,\n 404: z.string(),\n },\n summary: \"Synchronously dispatch a Slack test message for diagnostics\",\n },\n});\n\nexport type TestSlackDispatchProbeBody = z.infer<\n typeof testSlackDispatchProbeBodySchema\n>;\nexport type TestSlackDispatchProbeContract =\n typeof testSlackDispatchProbeContract;\nexport type TestSlackDispatchProbeError = z.infer<\n typeof testSlackDispatchProbeErrorSchema\n>;\nexport type TestSlackDispatchProbeResponse = z.infer<\n typeof testSlackDispatchProbeResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testSlackStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testSlackStateDeleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testSlackStatePostBodySchema = z.object({\n team_id: z.string().optional(),\n slack_user_id: z.string().optional(),\n org_id: z.string().optional(),\n vm0_user_id: z.string().optional(),\n workspace_name: z.string().optional(),\n bot_user_id: z.string().optional(),\n bot_scopes: z.string().nullable().optional(),\n bot_token: z.string().optional(),\n installation_org_id: z.string().nullable().optional(),\n email: z.string().optional(),\n seed_connection: z.boolean().optional(),\n delete_connection: z.boolean().optional(),\n seed_default_agent: z.boolean().optional(),\n default_agent_name: z.string().optional(),\n default_agent_display_name: z.string().nullable().optional(),\n compose_content: z.record(z.string(), z.unknown()).optional(),\n org_slug: z.string().optional(),\n org_name: z.string().optional(),\n seed_secret_names: z.array(z.string()).optional(),\n seed_variables: z.record(z.string(), z.string()).optional(),\n});\n\nexport const testSlackStatePostResponseSchema = z.object({\n ok: z.literal(true),\n team_id: z.string(),\n org_id: z.string(),\n vm0_user_id: z.string(),\n connection_id: z.string().nullable(),\n default_agent_id: z.string().nullable(),\n});\n\nconst nullableDateStringSchema = z.string().nullable();\n\nexport const testSlackStateResponseSchema = z.object({\n installation: z\n .object({\n slackWorkspaceId: z.string(),\n slackWorkspaceName: z.string().nullable(),\n orgId: z.string().nullable(),\n botUserId: z.string(),\n botScopes: z.string().nullable(),\n installedByUserId: z.string().nullable(),\n createdAt: z.string(),\n })\n .nullable(),\n connections: z.array(\n z.object({\n id: z.string(),\n slackUserId: z.string(),\n vm0UserId: z.string(),\n dmWelcomeSent: z.boolean(),\n createdAt: z.string(),\n }),\n ),\n recent_runs: z.array(\n z.object({\n id: z.string(),\n status: z.string(),\n createdAt: z.string(),\n triggerSource: z.string().nullable(),\n userId: z.string(),\n error: z.string().nullable(),\n promptPreview: z.string().nullable(),\n }),\n ),\n artifact_storage: z\n .object({\n id: z.string(),\n headVersionId: z.string().nullable(),\n s3Prefix: z.string(),\n versionId: z.string().nullable(),\n versionS3Key: z.string().nullable(),\n })\n .nullable(),\n org_metadata: z\n .object({\n orgId: z.string(),\n defaultAgentId: z.string().nullable(),\n credits: z.number(),\n tier: z.string(),\n })\n .nullable(),\n default_agent: z\n .object({\n id: z.string(),\n name: z.string(),\n orgId: z.string(),\n })\n .nullable(),\n default_compose: z\n .object({\n id: z.string(),\n name: z.string(),\n headVersionId: z.string().nullable(),\n })\n .nullable(),\n default_compose_version: z\n .object({\n id: z.string(),\n content_keys: z.array(z.string()),\n })\n .nullable(),\n resolved_slack_api_url: z.string().nullable(),\n mock_calls: z.array(\n z.object({\n method: z.string(),\n teamId: z.string().nullable(),\n channelId: z.string().nullable(),\n bodyJson: z.unknown(),\n createdAt: nullableDateStringSchema,\n }),\n ),\n});\n\nexport const testSlackStateContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/test/slack-state\",\n query: z.object({\n team_id: z.string().optional(),\n org_id: z.string().optional(),\n user_id: z.string().optional(),\n }),\n responses: {\n 200: testSlackStateResponseSchema,\n 400: testSlackStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Read Slack e2e diagnostic state for a test workspace\",\n },\n post: {\n method: \"POST\",\n path: \"/api/test/slack-state\",\n body: testSlackStatePostBodySchema,\n responses: {\n 200: testSlackStatePostResponseSchema,\n 400: testSlackStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Seed Slack e2e diagnostic state for a test workspace\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/test/slack-state\",\n query: z.object({\n team_id: z.string().optional(),\n org_id: z.string().optional(),\n }),\n responses: {\n 200: testSlackStateDeleteResponseSchema,\n 400: testSlackStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Clear Slack e2e diagnostic state for a test workspace\",\n },\n});\n\nexport type TestSlackStateContract = typeof testSlackStateContract;\nexport type TestSlackStateDeleteResponse = z.infer<\n typeof testSlackStateDeleteResponseSchema\n>;\nexport type TestSlackStatePostBody = z.infer<\n typeof testSlackStatePostBodySchema\n>;\nexport type TestSlackStatePostResponse = z.infer<\n typeof testSlackStatePostResponseSchema\n>;\nexport type TestSlackStateResponse = z.infer<\n typeof testSlackStateResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const SLACK_E2E_FIXTURES = {\n botUserId: \"U_E2E_BOT\",\n userUserId: \"U_E2E_USER\",\n botId: \"B_E2E_BOT\",\n teamId: \"T_E2E\",\n appId: \"A_E2E_APP\",\n channelId: \"C_E2E_MOCK\",\n botToken: \"xoxb-e2e-test-bot-token\",\n teamName: \"E2E Test Team\",\n} as const;\n\nexport const SLACK_E2E_SCOPES = [\n \"app_mentions:read\",\n \"channels:read\",\n \"chat:write\",\n \"chat:write.public\",\n \"commands\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"im:write\",\n \"users:read\",\n \"users:read.email\",\n] as const;\n\nconst slackMockRequestBodySchema = z.unknown().optional();\nconst slackMockNotFoundSchema = z.string();\n\nexport const testSlackMockOkResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testSlackMockAuthTestResponseSchema =\n testSlackMockOkResponseSchema.extend({\n url: z.string(),\n team: z.string(),\n user: z.string(),\n team_id: z.string(),\n user_id: z.string(),\n bot_id: z.string(),\n });\n\nexport const testSlackMockOauthAccessResponseSchema =\n testSlackMockOkResponseSchema.extend({\n access_token: z.string(),\n token_type: z.literal(\"bot\"),\n scope: z.string(),\n bot_user_id: z.string(),\n app_id: z.string(),\n team: z.object({\n id: z.string(),\n name: z.string(),\n }),\n enterprise: z.null(),\n authed_user: z.object({\n id: z.string(),\n scope: z.string(),\n access_token: z.string(),\n token_type: z.literal(\"user\"),\n }),\n });\n\nexport const testSlackMockChatPostMessageResponseSchema =\n testSlackMockOkResponseSchema.extend({\n channel: z.string(),\n ts: z.string(),\n message: z.object({\n ts: z.string(),\n text: z.string(),\n }),\n });\n\nexport const testSlackMockChatPostEphemeralResponseSchema =\n testSlackMockOkResponseSchema.extend({\n message_ts: z.string(),\n });\n\nexport const testSlackMockConversationsOpenResponseSchema =\n testSlackMockOkResponseSchema.extend({\n channel: z.object({\n id: z.string(),\n }),\n });\n\nexport const testSlackMockConversationMessagesResponseSchema =\n testSlackMockOkResponseSchema.extend({\n messages: z.array(z.unknown()),\n has_more: z.literal(false),\n });\n\nexport const testSlackMockUsersInfoResponseSchema =\n testSlackMockOkResponseSchema.extend({\n user: z.object({\n id: z.string(),\n name: z.string(),\n real_name: z.string(),\n tz: z.string(),\n tz_label: z.string(),\n profile: z.object({\n display_name: z.string(),\n real_name: z.string(),\n email: z.string(),\n }),\n }),\n });\n\nexport const testSlackMockContract = c.router({\n assistantThreadsSetStatus: {\n method: \"POST\",\n path: \"/api/test/slack-mock/assistant.threads.setStatus\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockOkResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack assistant.threads.setStatus for e2e tests\",\n },\n authTest: {\n method: \"POST\",\n path: \"/api/test/slack-mock/auth.test\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockAuthTestResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack auth.test for e2e tests\",\n },\n chatPostEphemeral: {\n method: \"POST\",\n path: \"/api/test/slack-mock/chat.postEphemeral\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockChatPostEphemeralResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack chat.postEphemeral for e2e tests\",\n },\n chatPostMessage: {\n method: \"POST\",\n path: \"/api/test/slack-mock/chat.postMessage\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockChatPostMessageResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack chat.postMessage for e2e tests\",\n },\n conversationsHistory: {\n method: \"POST\",\n path: \"/api/test/slack-mock/conversations.history\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockConversationMessagesResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack conversations.history for e2e tests\",\n },\n conversationsOpen: {\n method: \"POST\",\n path: \"/api/test/slack-mock/conversations.open\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockConversationsOpenResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack conversations.open for e2e tests\",\n },\n conversationsReplies: {\n method: \"POST\",\n path: \"/api/test/slack-mock/conversations.replies\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockConversationMessagesResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack conversations.replies for e2e tests\",\n },\n oauthV2Access: {\n method: \"POST\",\n path: \"/api/test/slack-mock/oauth.v2.access\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockOauthAccessResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack oauth.v2.access for e2e tests\",\n },\n usersInfo: {\n method: \"POST\",\n path: \"/api/test/slack-mock/users.info\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockUsersInfoResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack users.info for e2e tests\",\n },\n viewsPublish: {\n method: \"POST\",\n path: \"/api/test/slack-mock/views.publish\",\n body: slackMockRequestBodySchema,\n responses: {\n 200: testSlackMockOkResponseSchema,\n 404: slackMockNotFoundSchema,\n },\n summary: \"Mock Slack views.publish for e2e tests\",\n },\n});\n\nexport type TestSlackMockContract = typeof testSlackMockContract;\nexport type TestSlackMockUsersInfoResponse = z.infer<\n typeof testSlackMockUsersInfoResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testTelegramMockPathParamsSchema = z.object({\n botToken: z.string(),\n method: z.string(),\n});\n\nexport const testTelegramMockSuccessResponseSchema = z.object({\n ok: z.literal(true),\n result: z.unknown(),\n});\n\nexport const testTelegramMockErrorResponseSchema = z.object({\n ok: z.literal(false),\n description: z.string(),\n});\n\nexport const testTelegramMockContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/test/telegram-mock/:botToken/:method\",\n pathParams: testTelegramMockPathParamsSchema,\n body: z.unknown().optional(),\n responses: {\n 200: testTelegramMockSuccessResponseSchema,\n 404: z.union([z.string(), testTelegramMockErrorResponseSchema]),\n },\n summary: \"Handle Telegram Bot API E2E mock calls\",\n },\n});\n\nexport type TestTelegramMockContract = typeof testTelegramMockContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nconst teamsMockBodySchema = z.unknown().optional();\nconst teamsMockOkSchema = z.object({ ok: z.literal(true) });\nconst teamsMockTokenResponseSchema = z.object({\n access_token: z.string(),\n token_type: z.string(),\n expires_in: z.number(),\n});\nconst teamsMockActivityResponseSchema = z.object({\n id: z.string(),\n});\nconst teamsMockConversationResponseSchema = z.object({\n id: z.string(),\n});\nconst teamsMockGraphMessagesResponseSchema = z.object({\n value: z.array(z.unknown()),\n});\n\nexport const testTeamsMockConversationPathParamsSchema = z.object({\n conversationId: z.string(),\n});\n\nexport const testTeamsMockActivityPathParamsSchema =\n testTeamsMockConversationPathParamsSchema.extend({\n activityId: z.string(),\n });\n\nexport const testTeamsMockReactionPathParamsSchema =\n testTeamsMockActivityPathParamsSchema.extend({\n reactionType: z.string(),\n });\n\nexport const testTeamsMockGraphMessagesPathParamsSchema = z.object({\n teamId: z.string(),\n channelId: z.string(),\n});\n\nexport const testTeamsMockGraphMessagePathParamsSchema =\n testTeamsMockGraphMessagesPathParamsSchema.extend({\n messageId: z.string(),\n });\n\nexport const testTeamsMockGraphUserPathParamsSchema = z.object({\n userId: z.string(),\n});\n\nexport const testTeamsMockContract = c.router({\n token: {\n method: \"POST\",\n path: \"/api/test/teams-mock/token\",\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockTokenResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Microsoft OAuth token endpoint for Teams e2e tests\",\n },\n createConversation: {\n method: \"POST\",\n path: \"/api/test/teams-mock/service/v3/conversations\",\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockConversationResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Bot Framework create conversation\",\n },\n sendActivity: {\n method: \"POST\",\n path: \"/api/test/teams-mock/service/v3/conversations/:conversationId/activities\",\n pathParams: testTeamsMockConversationPathParamsSchema,\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockActivityResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Bot Framework send activity\",\n },\n replyActivity: {\n method: \"POST\",\n path: \"/api/test/teams-mock/service/v3/conversations/:conversationId/activities/:activityId\",\n pathParams: testTeamsMockActivityPathParamsSchema,\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockActivityResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Bot Framework reply activity\",\n },\n putReaction: {\n method: \"PUT\",\n path: \"/api/test/teams-mock/service/v3/conversations/:conversationId/activities/:activityId/reactions/:reactionType\",\n pathParams: testTeamsMockReactionPathParamsSchema,\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockOkSchema,\n 404: z.string(),\n },\n summary: \"Mock Bot Framework add reaction\",\n },\n deleteReaction: {\n method: \"DELETE\",\n path: \"/api/test/teams-mock/service/v3/conversations/:conversationId/activities/:activityId/reactions/:reactionType\",\n pathParams: testTeamsMockReactionPathParamsSchema,\n body: teamsMockBodySchema,\n responses: {\n 200: teamsMockOkSchema,\n 404: z.string(),\n },\n summary: \"Mock Bot Framework delete reaction\",\n },\n graphMessages: {\n method: \"GET\",\n path: \"/api/test/teams-mock/graph/teams/:teamId/channels/:channelId/messages\",\n pathParams: testTeamsMockGraphMessagesPathParamsSchema,\n responses: {\n 200: teamsMockGraphMessagesResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Microsoft Graph channel message list\",\n },\n graphMessage: {\n method: \"GET\",\n path: \"/api/test/teams-mock/graph/teams/:teamId/channels/:channelId/messages/:messageId\",\n pathParams: testTeamsMockGraphMessagePathParamsSchema,\n responses: {\n 200: z.unknown(),\n 404: z.string(),\n },\n summary: \"Mock Microsoft Graph channel message\",\n },\n graphReplies: {\n method: \"GET\",\n path: \"/api/test/teams-mock/graph/teams/:teamId/channels/:channelId/messages/:messageId/replies\",\n pathParams: testTeamsMockGraphMessagePathParamsSchema,\n responses: {\n 200: teamsMockGraphMessagesResponseSchema,\n 404: z.string(),\n },\n summary: \"Mock Microsoft Graph channel message replies\",\n },\n graphUser: {\n method: \"GET\",\n path: \"/api/test/teams-mock/graph/users/:userId\",\n pathParams: testTeamsMockGraphUserPathParamsSchema,\n responses: {\n 200: z.unknown(),\n 404: z.string(),\n },\n summary: \"Mock Microsoft Graph user lookup\",\n },\n});\n\nexport type TestTeamsMockContract = typeof testTeamsMockContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testTeamsStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testTeamsStateDeleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testTeamsStatePostBodySchema = z.object({\n tenant_id: z.string().optional(),\n tenant_name: z.string().nullable().optional(),\n team_id: z.string().nullable().optional(),\n team_name: z.string().nullable().optional(),\n service_url: z.string().optional(),\n bot_id: z.string().nullable().optional(),\n bot_name: z.string().nullable().optional(),\n teams_user_id: z.string().nullable().optional(),\n teams_aad_object_id: z.string().nullable().optional(),\n teams_user_display_name: z.string().nullable().optional(),\n teams_user_principal_name: z.string().nullable().optional(),\n org_id: z.string().optional(),\n vm0_user_id: z.string().optional(),\n email: z.string().optional(),\n installation_org_id: z.string().nullable().optional(),\n seed_connection: z.boolean().optional(),\n delete_connection: z.boolean().optional(),\n seed_default_agent: z.boolean().optional(),\n default_agent_name: z.string().optional(),\n default_agent_display_name: z.string().nullable().optional(),\n});\n\nexport const testTeamsStatePostResponseSchema = z.object({\n ok: z.literal(true),\n tenant_id: z.string(),\n org_id: z.string(),\n vm0_user_id: z.string(),\n connection_id: z.string().nullable(),\n default_agent_id: z.string().nullable(),\n});\n\nconst nullableDateStringSchema = z.string().nullable();\n\nexport const testTeamsStateResponseSchema = z.object({\n installation: z\n .object({\n teamsTenantId: z.string(),\n teamsTenantName: z.string().nullable(),\n teamsTeamId: z.string().nullable(),\n teamsTeamName: z.string().nullable(),\n teamsAppId: z.string().nullable(),\n botId: z.string().nullable(),\n botName: z.string().nullable(),\n serviceUrl: z.string().nullable(),\n orgId: z.string().nullable(),\n installedByUserId: z.string().nullable(),\n createdAt: z.string(),\n })\n .nullable(),\n connections: z.array(\n z.object({\n id: z.string(),\n teamsUserId: z.string().nullable(),\n teamsAadObjectId: z.string().nullable(),\n vm0UserId: z.string(),\n teamsUserDisplayName: z.string().nullable(),\n teamsUserPrincipalName: z.string().nullable(),\n dmWelcomeSent: z.boolean(),\n createdAt: z.string(),\n }),\n ),\n recent_runs: z.array(\n z.object({\n id: z.string(),\n status: z.string(),\n createdAt: z.string(),\n triggerSource: z.string().nullable(),\n userId: z.string(),\n error: z.string().nullable(),\n promptPreview: z.string().nullable(),\n }),\n ),\n recent_callbacks: z.array(\n z.object({\n id: z.string(),\n runId: z.string(),\n status: z.string(),\n internalKind: z.string().nullable(),\n attempts: z.number(),\n lastError: z.string().nullable(),\n createdAt: z.string(),\n lastAttemptAt: nullableDateStringSchema,\n deliveredAt: nullableDateStringSchema,\n payload: z.unknown(),\n }),\n ),\n org_metadata: z\n .object({\n orgId: z.string(),\n defaultAgentId: z.string().nullable(),\n credits: z.number(),\n tier: z.string(),\n })\n .nullable(),\n default_agent: z\n .object({\n id: z.string(),\n name: z.string(),\n orgId: z.string(),\n })\n .nullable(),\n default_compose: z\n .object({\n id: z.string(),\n name: z.string(),\n headVersionId: z.string().nullable(),\n })\n .nullable(),\n default_compose_version: z\n .object({\n id: z.string(),\n content_keys: z.array(z.string()),\n })\n .nullable(),\n resolved_teams_mock_base_url: z.string().nullable(),\n mock_calls: z.array(\n z.object({\n method: z.string(),\n tenantId: z.string().nullable(),\n conversationId: z.string().nullable(),\n activityId: z.string().nullable(),\n bodyJson: z.unknown(),\n createdAt: nullableDateStringSchema,\n }),\n ),\n});\n\nexport const testTeamsStateContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/test/teams-state\",\n query: z.object({\n tenant_id: z.string().optional(),\n org_id: z.string().optional(),\n }),\n responses: {\n 200: testTeamsStateResponseSchema,\n 400: testTeamsStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Read Teams e2e diagnostic state for a test tenant\",\n },\n post: {\n method: \"POST\",\n path: \"/api/test/teams-state\",\n body: testTeamsStatePostBodySchema,\n responses: {\n 200: testTeamsStatePostResponseSchema,\n 400: testTeamsStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Seed Teams e2e diagnostic state for a test tenant\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/test/teams-state\",\n query: z.object({\n tenant_id: z.string().optional(),\n org_id: z.string().optional(),\n }),\n responses: {\n 200: testTeamsStateDeleteResponseSchema,\n 400: testTeamsStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Clear Teams e2e diagnostic state for a test tenant\",\n },\n});\n\nexport type TestTeamsStateContract = typeof testTeamsStateContract;\nexport type TestTeamsStatePostBody = z.infer<\n typeof testTeamsStatePostBodySchema\n>;\nexport type TestTeamsStatePostResponse = z.infer<\n typeof testTeamsStatePostResponseSchema\n>;\nexport type TestTeamsStateResponse = z.infer<\n typeof testTeamsStateResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const testTelegramStateQuerySchema = z.object({\n bot_id: z.string().optional(),\n});\n\nexport const testTelegramStateErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const testTelegramStateSeedBodySchema = z\n .object({\n bot_id: z.string().optional(),\n telegram_user_id: z.string().optional(),\n bot_username: z.string().optional(),\n webhook_secret: z.string().optional(),\n email: z.string().optional(),\n seed_link: z.boolean().optional(),\n })\n .passthrough();\n\nexport const testTelegramStateActionBodySchema = z\n .object({\n action: z.enum([\n \"seed-installation\",\n \"seed-org-default-agent\",\n \"seed-official-user-link\",\n \"seed-user-link\",\n \"seed-user-agent-preference\",\n \"seed-agent-run-callback\",\n \"seed-post-fixture\",\n \"delete-post-fixture\",\n \"get-post-run-state\",\n \"get-telegram-link-id\",\n \"seed-agent-session\",\n \"seed-thread-session\",\n \"has-thread-session\",\n \"seed-running-run\",\n \"seed-completed-run\",\n \"seed-model-policies\",\n \"seed-org-credits\",\n \"get-selected-model\",\n \"seed-pending-user-link\",\n \"update-run-callback\",\n \"update-run\",\n \"get-run\",\n \"find-thread-session\",\n \"delete-fixture\",\n ]),\n })\n .passthrough();\n\nexport const testTelegramStateComposeVersionSchema = z.object({\n id: z.string(),\n content_keys: z.array(z.string()),\n});\n\nexport const testTelegramStateResponseSchema = z.object({\n installation: z.unknown().nullable(),\n links: z.array(z.unknown()),\n message_count: z.number(),\n recent_runs: z.array(z.unknown()),\n org_metadata: z.unknown().nullable(),\n default_agent: z.unknown().nullable(),\n default_compose: z.unknown().nullable(),\n default_compose_version: testTelegramStateComposeVersionSchema.nullable(),\n resolved_telegram_api_url: z.string().nullable(),\n mock_calls: z.array(z.unknown()),\n messages: z.array(z.unknown()),\n official_messages: z.array(z.unknown()),\n thread_sessions: z.array(z.unknown()),\n});\n\nexport const testTelegramStateDeleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const testTelegramStateActionResponseSchema = z\n .object({\n ok: z.literal(true),\n })\n .passthrough();\n\nexport const testTelegramStateSeedResponseSchema = z.object({\n ok: z.literal(true),\n bot_id: z.string(),\n org_id: z.string(),\n vm0_user_id: z.string(),\n user_link_id: z.string().nullable(),\n default_agent_id: z.string(),\n});\n\nexport const testTelegramStateContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/test/telegram-state\",\n query: testTelegramStateQuerySchema,\n responses: {\n 200: testTelegramStateResponseSchema,\n 400: testTelegramStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Inspect Telegram E2E test state\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/test/telegram-state\",\n query: testTelegramStateQuerySchema,\n responses: {\n 200: testTelegramStateDeleteResponseSchema,\n 400: testTelegramStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Delete Telegram E2E test state\",\n },\n post: {\n method: \"POST\",\n path: \"/api/test/telegram-state\",\n body: testTelegramStateSeedBodySchema,\n responses: {\n 200: testTelegramStateSeedResponseSchema,\n 400: testTelegramStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Seed Telegram E2E test state\",\n },\n action: {\n method: \"POST\",\n path: \"/api/test/telegram-state/action\",\n body: testTelegramStateActionBodySchema,\n responses: {\n 200: testTelegramStateActionResponseSchema,\n 400: testTelegramStateErrorSchema,\n 404: z.string(),\n },\n summary: \"Mutate Telegram API test state\",\n },\n});\n\nexport type TestTelegramStateContract = typeof testTelegramStateContract;\nexport type TestTelegramStateResponse = z.infer<\n typeof testTelegramStateResponseSchema\n>;\nexport type TestTelegramStateSeedBody = z.infer<\n typeof testTelegramStateSeedBodySchema\n>;\nexport type TestTelegramStateSeedResponse = z.infer<\n typeof testTelegramStateSeedResponseSchema\n>;\nexport type TestTelegramStateActionBody = z.infer<\n typeof testTelegramStateActionBodySchema\n>;\nexport type TestTelegramStateActionResponse = z.infer<\n typeof testTelegramStateActionResponseSchema\n>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Cleanup result schema\n */\nconst cleanupResultSchema = z.object({\n runId: z.string(),\n sandboxId: z.string().nullable(),\n status: z.enum([\"cleaned\", \"error\"]),\n error: z.string().optional(),\n reason: z.string().optional(),\n});\n\n/**\n * Cleanup response schema\n */\nconst cleanupResponseSchema = z.object({\n cleaned: z.number(),\n errors: z.number(),\n results: z.array(cleanupResultSchema),\n exportJobsCleaned: z.number(),\n exportJobsStuck: z.number(),\n});\n\n/**\n * Cron cleanup sandboxes contract for /api/cron/cleanup-sandboxes\n */\nexport const cronCleanupSandboxesContract = c.router({\n /**\n * GET /api/cron/cleanup-sandboxes\n * Cron job to cleanup sandboxes that have stopped sending heartbeats\n */\n cleanup: {\n method: \"GET\",\n path: \"/api/cron/cleanup-sandboxes\",\n headers: authHeadersSchema,\n responses: {\n 200: cleanupResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Cleanup expired sandboxes\",\n },\n});\n\nexport type CronCleanupSandboxesContract = typeof cronCleanupSandboxesContract;\n\nconst cronAggregateUsageResponseSchema = z.object({\n date: z.string(),\n aggregated: z.number(),\n});\n\nconst cronProcessUsageEventsResponseSchema = z.object({\n success: z.literal(true),\n processed: z.number(),\n});\n\nconst cronCompactChatThreadSnapshotsResponseSchema = z.object({\n success: z.literal(true),\n scopes: z.number(),\n eventsApplied: z.number(),\n removedDeletedAgentThreads: z.number(),\n eventsPruned: z.number(),\n});\n\nconst cronReconcileBillingEntitlementsResponseSchema = z.object({\n success: z.literal(true),\n downgraded: z.number(),\n});\n\nconst cronTelegramCleanupResponseSchema = z.object({\n deleted: z.number(),\n});\n\nconst cronComputerUseScreenshotCleanupResponseSchema = z.object({\n cleaned: z.number(),\n});\n\nconst cronArtifactPreviewResponseSchema = z.object({\n generated: z.number(),\n});\n\nconst cronDrainEmailOutboxResponseSchema = z.object({\n success: z.literal(true),\n drained: z.number(),\n cleaned: z.number(),\n});\n\nconst cronSyncSkillsResponseSchema = z.object({\n success: z.literal(true),\n commitSha: z.string(),\n synced: z.number(),\n skipped: z.number(),\n failed: z.number(),\n removed: z.number(),\n total: z.number(),\n});\n\nconst cronExecuteWorkflowTriggersResponseSchema = z.object({\n success: z.literal(true),\n executed: z.number(),\n skipped: z.number(),\n});\n\nconst cronRenewGmailWatchesResponseSchema = z.object({\n success: z.literal(true),\n renewed: z.number(),\n failed: z.number(),\n});\n\nconst cronRenewGoogleCalendarWatchesResponseSchema = z.object({\n success: z.literal(true),\n renewed: z.number(),\n failed: z.number(),\n});\n\nconst cronRenewGoogleWorkspaceEventSubscriptionsResponseSchema = z.object({\n success: z.literal(true),\n renewed: z.number(),\n repaired: z.number(),\n failed: z.number(),\n});\n\nconst cronAggregateInsightsSkippedResponseSchema = z.object({\n users: z.number(),\n skipped: z.literal(true),\n});\n\nconst cronAggregateInsightsAggregatedResponseSchema = z.object({\n users: z.number(),\n windows: z.number(),\n networkRows: z.number(),\n});\n\nconst cronAggregateInsightsResponseSchema = z.union([\n cronAggregateInsightsSkippedResponseSchema,\n cronAggregateInsightsAggregatedResponseSchema,\n]);\n\nconst cronSummarizeMemorySkippedResponseSchema = z.object({\n skipped: z.literal(true),\n});\n\nconst cronSummarizeMemorySummarizedResponseSchema = z.object({\n summarized: z.number(),\n});\n\nconst cronSummarizeMemoryResponseSchema = z.union([\n cronSummarizeMemorySkippedResponseSchema,\n cronSummarizeMemorySummarizedResponseSchema,\n]);\n\nconst cronDrainRelationshipMemoryResponseSchema = z.object({\n success: z.literal(true),\n processed: z.number(),\n failed: z.number(),\n relationshipsUpdated: z.number(),\n backfill: z.object({\n processed: z.number(),\n failed: z.number(),\n scanned: z.number(),\n enqueued: z.number(),\n }),\n});\n\nconst storagePresignedUrlRefreshResultSchema = z.object({\n due: z.number(),\n refreshed: z.number(),\n pruned: z.number(),\n});\n\nconst cronRefreshStoragePresignedUrlsResponseSchema = z.object({\n success: z.literal(true),\n system: storagePresignedUrlRefreshResultSchema,\n workflowSkill: storagePresignedUrlRefreshResultSchema,\n});\n\nexport const CRON_AGGREGATE_MODEL_STATS_MAX_HOURS = 24 * 32;\n\nconst cronAggregateModelStatsResponseSchema = z.object({\n success: z.literal(true),\n windowStart: z.string(),\n windowEnd: z.string(),\n aggregated: z.number(),\n});\n\nexport const cronAggregateUsageContract = c.router({\n aggregate: {\n method: \"GET\",\n path: \"/api/cron/aggregate-usage\",\n headers: authHeadersSchema,\n responses: {\n 200: cronAggregateUsageResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Aggregate daily usage cache\",\n },\n});\n\nexport const cronProcessUsageEventsContract = c.router({\n process: {\n method: \"GET\",\n path: \"/api/cron/process-usage-events\",\n headers: authHeadersSchema,\n responses: {\n 200: cronProcessUsageEventsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Process pending usage events\",\n },\n});\n\nexport const cronCompactChatThreadSnapshotsContract = c.router({\n compact: {\n method: \"GET\",\n path: \"/api/cron/compact-chat-thread-snapshots\",\n headers: authHeadersSchema,\n responses: {\n 200: cronCompactChatThreadSnapshotsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Compact chat thread snapshots from lifecycle events\",\n },\n});\n\nexport const cronReconcileBillingEntitlementsContract = c.router({\n reconcile: {\n method: \"GET\",\n path: \"/api/cron/reconcile-billing-entitlements\",\n headers: authHeadersSchema,\n responses: {\n 200: cronReconcileBillingEntitlementsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Reconcile billing entitlements\",\n },\n});\n\nexport const cronTelegramCleanupContract = c.router({\n cleanup: {\n method: \"GET\",\n path: \"/api/cron/telegram-cleanup\",\n headers: authHeadersSchema,\n responses: {\n 200: cronTelegramCleanupResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Delete expired Telegram messages\",\n },\n});\n\nexport const cronComputerUseScreenshotCleanupContract = c.router({\n cleanup: {\n method: \"GET\",\n path: \"/api/cron/computer-use-screenshot-cleanup\",\n headers: authHeadersSchema,\n responses: {\n 200: cronComputerUseScreenshotCleanupResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Delete expired desktop computer-use screenshots\",\n },\n});\n\nexport const cronArtifactPreviewContract = c.router({\n generate: {\n method: \"GET\",\n path: \"/api/cron/artifact-preview\",\n headers: authHeadersSchema,\n responses: {\n 200: cronArtifactPreviewResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Render static preview images for HTML/website artifacts\",\n },\n});\n\nexport const cronDrainEmailOutboxContract = c.router({\n drain: {\n method: \"GET\",\n path: \"/api/cron/drain-email-outbox\",\n headers: authHeadersSchema,\n responses: {\n 200: cronDrainEmailOutboxResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Drain pending email outbox messages\",\n },\n});\n\nexport const cronRenewGmailWatchesContract = c.router({\n renew: {\n method: \"GET\",\n path: \"/api/cron/renew-gmail-watches\",\n headers: authHeadersSchema,\n responses: {\n 200: cronRenewGmailWatchesResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Renew Gmail push notification watches\",\n },\n});\n\nexport const cronRenewGoogleCalendarWatchesContract = c.router({\n renew: {\n method: \"GET\",\n path: \"/api/cron/renew-google-calendar-watches\",\n headers: authHeadersSchema,\n responses: {\n 200: cronRenewGoogleCalendarWatchesResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Renew Google Calendar push notification watches\",\n },\n});\n\nexport const cronRenewGoogleWorkspaceEventSubscriptionsContract = c.router({\n renew: {\n method: \"GET\",\n path: \"/api/cron/renew-google-workspace-event-subscriptions\",\n headers: authHeadersSchema,\n responses: {\n 200: cronRenewGoogleWorkspaceEventSubscriptionsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Renew Google Workspace Events subscriptions\",\n },\n});\n\nexport const cronSyncSkillsContract = c.router({\n sync: {\n method: \"GET\",\n path: \"/api/cron/sync-skills\",\n headers: authHeadersSchema,\n responses: {\n 200: cronSyncSkillsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Sync official skills from the skills repository\",\n },\n});\n\nexport const cronExecuteWorkflowTriggersContract = c.router({\n execute: {\n method: \"GET\",\n path: \"/api/cron/execute-workflow-triggers\",\n headers: authHeadersSchema,\n responses: {\n 200: cronExecuteWorkflowTriggersResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Execute due workflow schedule triggers\",\n },\n});\n\nexport const cronAggregateInsightsContract = c.router({\n aggregate: {\n method: \"GET\",\n path: \"/api/cron/aggregate-insights\",\n headers: authHeadersSchema,\n responses: {\n 200: cronAggregateInsightsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Aggregate daily usage insights\",\n },\n});\n\nexport const cronAggregateModelStatsContract = c.router({\n aggregate: {\n method: \"GET\",\n path: \"/api/cron/aggregate-model-stats\",\n headers: authHeadersSchema,\n query: z.object({\n hours: z.coerce\n .number()\n .int()\n .min(1)\n .max(CRON_AGGREGATE_MODEL_STATS_MAX_HOURS)\n .optional(),\n }),\n responses: {\n 200: cronAggregateModelStatsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Aggregate hourly model usage statistics\",\n },\n});\n\nexport const cronSummarizeMemoryContract = c.router({\n summarize: {\n method: \"GET\",\n path: \"/api/cron/summarize-memory\",\n headers: authHeadersSchema,\n responses: {\n 200: cronSummarizeMemoryResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Summarize daily memory changes per user\",\n },\n});\n\nexport const cronDrainRelationshipMemoryContract = c.router({\n drain: {\n method: \"GET\",\n path: \"/api/cron/drain-relationship-memory\",\n headers: authHeadersSchema,\n responses: {\n 200: cronDrainRelationshipMemoryResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Drain pending relationship memory sync jobs\",\n },\n});\n\nexport const cronRefreshStoragePresignedUrlsContract = c.router({\n refresh: {\n method: \"GET\",\n path: \"/api/cron/refresh-storage-presigned-urls\",\n headers: authHeadersSchema,\n responses: {\n 200: cronRefreshStoragePresignedUrlsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Refresh cached storage presigned URLs\",\n },\n});\n\nexport type CronAggregateUsageContract = typeof cronAggregateUsageContract;\nexport type CronProcessUsageEventsContract =\n typeof cronProcessUsageEventsContract;\nexport type CronCompactChatThreadSnapshotsContract =\n typeof cronCompactChatThreadSnapshotsContract;\nexport type CronReconcileBillingEntitlementsContract =\n typeof cronReconcileBillingEntitlementsContract;\nexport type CronAggregateInsightsContract =\n typeof cronAggregateInsightsContract;\nexport type CronAggregateModelStatsContract =\n typeof cronAggregateModelStatsContract;\nexport type CronSummarizeMemoryContract = typeof cronSummarizeMemoryContract;\nexport type CronDrainRelationshipMemoryContract =\n typeof cronDrainRelationshipMemoryContract;\nexport type CronRefreshStoragePresignedUrlsContract =\n typeof cronRefreshStoragePresignedUrlsContract;\nexport type CronTelegramCleanupContract = typeof cronTelegramCleanupContract;\nexport type CronComputerUseScreenshotCleanupContract =\n typeof cronComputerUseScreenshotCleanupContract;\nexport type CronArtifactPreviewContract = typeof cronArtifactPreviewContract;\nexport type CronDrainEmailOutboxContract = typeof cronDrainEmailOutboxContract;\nexport type CronSyncSkillsContract = typeof cronSyncSkillsContract;\nexport type CronRenewGmailWatchesContract =\n typeof cronRenewGmailWatchesContract;\nexport type CronRenewGoogleCalendarWatchesContract =\n typeof cronRenewGoogleCalendarWatchesContract;\nexport type CronRenewGoogleWorkspaceEventSubscriptionsContract =\n typeof cronRenewGoogleWorkspaceEventSubscriptionsContract;\n\n// Export schemas for reuse\nexport {\n cleanupResultSchema,\n cleanupResponseSchema,\n cronAggregateUsageResponseSchema,\n cronCompactChatThreadSnapshotsResponseSchema,\n cronProcessUsageEventsResponseSchema,\n cronReconcileBillingEntitlementsResponseSchema,\n cronTelegramCleanupResponseSchema,\n cronComputerUseScreenshotCleanupResponseSchema,\n cronArtifactPreviewResponseSchema,\n cronDrainEmailOutboxResponseSchema,\n cronSyncSkillsResponseSchema,\n cronExecuteWorkflowTriggersResponseSchema,\n cronRenewGmailWatchesResponseSchema,\n cronRenewGoogleCalendarWatchesResponseSchema,\n cronRenewGoogleWorkspaceEventSubscriptionsResponseSchema,\n cronAggregateInsightsResponseSchema,\n cronAggregateModelStatsResponseSchema,\n cronSummarizeMemoryResponseSchema,\n cronDrainRelationshipMemoryResponseSchema,\n cronRefreshStoragePresignedUrlsResponseSchema,\n};\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Public v1 chat-threads surface. Authenticated exclusively via vm0 personal\n * access tokens (`vm0_pat_…`) minted from `/settings/api-keys`. The caller\n * never addresses an agent id — messages are sent into an existing thread's\n * agent, and responses omit agent-related fields so the public contract stays\n * narrow.\n */\nconst v1ThreadSchema = z.object({\n id: z.string(),\n title: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst v1MessageSchema = z.object({\n id: z.string(),\n role: z.enum([\"user\", \"assistant\"]),\n content: z.string().nullable(),\n error: z.string().optional(),\n createdAt: z.string(),\n});\n\nexport const chatThreadV1GetContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/v1/chat-threads/:threadId\",\n headers: authHeadersSchema,\n pathParams: z.object({ threadId: z.string().uuid() }),\n responses: {\n 200: v1ThreadSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a chat thread\",\n },\n});\n\nexport const chatThreadV1MessagesContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/v1/chat-threads/:threadId/messages\",\n headers: authHeadersSchema,\n pathParams: z.object({ threadId: z.string().uuid() }),\n query: z.object({\n sinceId: z.string().uuid().optional(),\n beforeId: z.string().uuid().optional(),\n limit: z.coerce.number().min(1).max(100).default(50),\n }),\n responses: {\n 200: z.object({ messages: z.array(v1MessageSchema) }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List messages in a chat thread\",\n },\n});\n\nexport const chatThreadV1SendContract = c.router({\n send: {\n method: \"POST\",\n path: \"/api/v1/chat-threads/messages\",\n headers: authHeadersSchema,\n body: z.object({\n prompt: z.string().min(1),\n threadId: z.string().uuid(),\n }),\n responses: {\n 201: z.object({\n threadId: z.string(),\n messageId: z.string(),\n runId: z.string().nullable(),\n createdAt: z.string(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 422: apiErrorSchema,\n 429: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Send a chat message to an existing thread\",\n },\n});\n\nexport type ChatThreadV1GetContract = typeof chatThreadV1GetContract;\nexport type ChatThreadV1MessagesContract = typeof chatThreadV1MessagesContract;\nexport type ChatThreadV1SendContract = typeof chatThreadV1SendContract;\n\nexport {\n v1ThreadSchema as chatThreadV1Schema,\n v1MessageSchema as chatMessageV1Schema,\n};\n\nexport type ChatThreadV1 = z.infer<typeof v1ThreadSchema>;\nexport type ChatMessageV1 = z.infer<typeof v1MessageSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const bb0DeviceCodeSchema = z\n .string()\n .regex(/^[A-Z2-9]{4}-[A-Z2-9]{4}$/);\n\nexport const bleSessionNonceSchema = z\n .string()\n .min(16)\n .max(128)\n .regex(/^[A-Za-z0-9._:-]+$/);\n\nexport const pollTokenSchema = z\n .string()\n .min(32)\n .max(256)\n .regex(/^[A-Za-z0-9._-]+$/);\n\nexport const createDeviceTokenRequestSchema = z.object({\n device_type: z.literal(\"bb0\"),\n ble_session_nonce: bleSessionNonceSchema.optional(),\n});\n\nexport const createDeviceTokenResponseSchema = z.object({\n device_code: bb0DeviceCodeSchema,\n expires_in: z.number().int().positive(),\n interval: z.number().int().positive(),\n poll_token: pollTokenSchema,\n});\n\nexport const pollDeviceTokenRequestSchema = z.object({\n device_code: bb0DeviceCodeSchema,\n poll_token: pollTokenSchema,\n});\n\nexport const pollDeviceTokenPendingResponseSchema = z.object({\n status: z.literal(\"pending\"),\n interval: z.number().int().positive(),\n});\n\nexport const pollDeviceTokenApprovedResponseSchema = z.object({\n status: z.literal(\"approved\"),\n api_token: z.string(),\n thread_id: z.string().uuid(),\n});\n\nexport const pollDeviceTokenExpiredResponseSchema = z.object({\n status: z.literal(\"expired\"),\n});\n\nexport const pollDeviceTokenInvalidResponseSchema = z.object({\n status: z.literal(\"invalid\"),\n});\n\nexport const confirmBb0DeviceRequestSchema = z.object({\n device_code: bb0DeviceCodeSchema,\n});\n\nexport const confirmBb0DeviceResponseSchema = z.object({\n status: z.literal(\"approved\"),\n});\n\nexport type CreateDeviceTokenRequest = z.infer<\n typeof createDeviceTokenRequestSchema\n>;\nexport type CreateDeviceTokenResponse = z.infer<\n typeof createDeviceTokenResponseSchema\n>;\nexport type PollDeviceTokenRequest = z.infer<\n typeof pollDeviceTokenRequestSchema\n>;\nexport type PollDeviceTokenPendingResponse = z.infer<\n typeof pollDeviceTokenPendingResponseSchema\n>;\nexport type PollDeviceTokenApprovedResponse = z.infer<\n typeof pollDeviceTokenApprovedResponseSchema\n>;\nexport type PollDeviceTokenExpiredResponse = z.infer<\n typeof pollDeviceTokenExpiredResponseSchema\n>;\nexport type PollDeviceTokenInvalidResponse = z.infer<\n typeof pollDeviceTokenInvalidResponseSchema\n>;\nexport type ConfirmBb0DeviceRequest = z.infer<\n typeof confirmBb0DeviceRequestSchema\n>;\nexport type ConfirmBb0DeviceResponse = z.infer<\n typeof confirmBb0DeviceResponseSchema\n>;\n\nexport const deviceTokenContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/device-token\",\n body: createDeviceTokenRequestSchema,\n responses: {\n 200: createDeviceTokenResponseSchema,\n 400: apiErrorSchema,\n },\n summary: \"Create a short-lived device code for embedded device onboarding\",\n },\n poll: {\n method: \"POST\",\n path: \"/api/device-token/poll\",\n body: pollDeviceTokenRequestSchema,\n responses: {\n 200: pollDeviceTokenApprovedResponseSchema,\n 202: pollDeviceTokenPendingResponseSchema,\n 400: apiErrorSchema,\n 404: pollDeviceTokenInvalidResponseSchema,\n 410: pollDeviceTokenExpiredResponseSchema,\n },\n summary: \"Poll a bb0 device code for approval and final credentials\",\n },\n});\n\nexport const bb0DeviceConfirmContract = c.router({\n confirm: {\n method: \"POST\",\n path: \"/api/zero/devices/bb0/confirm\",\n headers: authHeadersSchema,\n body: confirmBb0DeviceRequestSchema,\n responses: {\n 200: confirmBb0DeviceResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Confirm a bb0 device code for the authenticated user\",\n },\n});\n\nexport type DeviceTokenContract = typeof deviceTokenContract;\nexport type Bb0DeviceConfirmContract = typeof bb0DeviceConfirmContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst audioTranscriptionV1Schema = z.object({\n text: z.string(),\n});\n\nexport const audioTranscriptionsV1Contract = c.router({\n transcribe: {\n method: \"POST\",\n path: \"/api/v1/audio/transcriptions\",\n headers: authHeadersSchema,\n body: c.type<Blob>(),\n responses: {\n 200: audioTranscriptionV1Schema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 413: apiErrorSchema,\n 429: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary:\n \"Transcribe raw 16 kHz mono signed 16-bit PCM audio using the existing voice input pipeline\",\n },\n});\n\nexport type AudioTranscriptionsV1Contract =\n typeof audioTranscriptionsV1Contract;\nexport type AudioTranscriptionV1 = z.infer<typeof audioTranscriptionV1Schema>;\n\nexport { audioTranscriptionV1Schema };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { runnerGroupSchema } from \"./runners\";\n\nconst c = initContract();\n\n/**\n * Ably token request schema (matches Ably SDK's TokenRequest type)\n */\nexport const ablyTokenRequestSchema = z.object({\n keyName: z.string(),\n ttl: z.number().optional(),\n timestamp: z.number(),\n capability: z.string(),\n clientId: z.string().optional(),\n nonce: z.string(),\n mac: z.string(),\n});\n\n/**\n * Runner realtime token contract for /api/runners/realtime/token\n */\nexport const runnerRealtimeTokenContract = c.router({\n /**\n * POST /api/runners/realtime/token\n * Get an Ably token to subscribe to a runner group's job notification channel\n */\n create: {\n method: \"POST\",\n path: \"/api/runners/realtime/token\",\n headers: authHeadersSchema,\n body: z.object({\n group: runnerGroupSchema,\n }),\n responses: {\n 200: ablyTokenRequestSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get Ably token for runner group job notifications\",\n },\n});\n\nexport type RunnerRealtimeTokenContract = typeof runnerRealtimeTokenContract;\n\n/**\n * Platform realtime token contract for /api/zero/realtime/token\n * Used by the frontend to get an Ably token for subscribing to user-scoped push signals.\n */\nexport const platformRealtimeTokenContract = c.router({\n /**\n * POST /api/zero/realtime/token\n * Get an Ably token to subscribe to the authenticated user's push channel\n */\n create: {\n method: \"POST\",\n path: \"/api/zero/realtime/token\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: ablyTokenRequestSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get Ably token for platform user push notifications\",\n },\n});\n\nexport type PlatformRealtimeTokenContract =\n typeof platformRealtimeTokenContract;\n","import {\n type FirewallConfig,\n UNKNOWN_PERMISSION_GRANT,\n validateAuthBaseUrl,\n validateBaseUrlHostPolicy,\n validateBaseUrl,\n} from \"./firewall-types\";\nimport { hasRawWhitespace, hasUnsafeUrlCodepoint } from \"./firewall-url-utils\";\nimport { parseSegment, splitPathSegments } from \"./segment-parser\";\n\nconst VALID_RULE_METHODS = new Set([\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n \"HEAD\",\n \"OPTIONS\",\n \"ANY\",\n]);\n\nfunction validatePathSegments(\n path: string,\n rule: string,\n permName: string,\n serviceName: string,\n): void {\n if (!path.startsWith(\"/\")) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": path must start with \"/\"`,\n );\n }\n if (hasRawWhitespace(path)) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": path must not contain whitespace`,\n );\n }\n if (hasUnsafeUrlCodepoint(path)) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": path must not contain control characters or invalid Unicode`,\n );\n }\n if (path.includes(\"\\\\\")) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": path must not contain backslash`,\n );\n }\n if (path.includes(\"?\") || path.includes(\"#\")) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": path must not contain query string or fragment`,\n );\n }\n const segments = splitPathSegments(path);\n const paramNames = new Set<string>();\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i]!;\n const parsed = parseSegment(seg);\n if (parsed.kind === \"error\") {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": ${parsed.reason}`,\n );\n }\n if (parsed.kind === \"literal\") continue;\n const { name, greedy, prefix, suffix } = parsed;\n if (paramNames.has(name)) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": duplicate parameter name \"{${name}}\"`,\n );\n }\n paramNames.add(name);\n if (greedy && i !== segments.length - 1) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": {${name}${greedy}} must be the last segment`,\n );\n }\n if (greedy && (prefix !== \"\" || suffix !== \"\")) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": greedy parameter {${name}${greedy}} cannot be combined with a literal prefix or suffix in segment \"${seg}\"`,\n );\n }\n }\n}\n\nexport function validateRule(\n rule: string,\n permName: string,\n serviceName: string,\n): void {\n const spaceIdx = rule.indexOf(\" \");\n if (spaceIdx === -1) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": must be \"METHOD /path\"`,\n );\n }\n const method = rule.slice(0, spaceIdx);\n const rest = rule.slice(spaceIdx + 1);\n if (!method || !rest) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": must be \"METHOD /path\"`,\n );\n }\n if (!VALID_RULE_METHODS.has(method)) {\n throw new Error(\n `Invalid rule \"${rule}\" in permission \"${permName}\" of firewall \"${serviceName}\": unknown method \"${method}\" (must be uppercase)`,\n );\n }\n\n validatePathSegments(rest, rule, permName, serviceName);\n}\n\n/**\n * Collect available permission names from a firewall config.\n * Validates uniqueness and that \"all\" is not used as a permission name.\n */\nexport function collectAndValidatePermissions(\n serviceConfig: FirewallConfig,\n): Set<string> {\n if (serviceConfig.apis.length === 0) {\n throw new Error(`Firewall \"${serviceConfig.name}\" has no api entries`);\n }\n const available = new Set<string>();\n for (const api of serviceConfig.apis) {\n validateBaseUrl(api.base, serviceConfig.name);\n validateBaseUrlHostPolicy({\n base: api.base,\n serviceName: serviceConfig.name,\n hostPolicy: api.hostPolicy,\n });\n if (api.auth.base !== undefined) {\n validateAuthBaseUrl(api.auth.base, serviceConfig.name);\n }\n if (!api.permissions || api.permissions.length === 0) {\n // Empty permissions is a valid shape: every request under this base\n // falls through to the firewall's unknownPolicy. Auth headers are\n // still injected on base URL match.\n continue;\n }\n // Uniqueness is enforced within a single api_entry. The same permission\n // name across different api_entries is allowed (e.g., \"full-access\" on\n // both slack.com/api and files.slack.com).\n const seen = new Set<string>();\n for (const perm of api.permissions) {\n if (!perm.name) {\n throw new Error(\n `Firewall \"${serviceConfig.name}\" has a permission with empty name`,\n );\n }\n if (perm.name === \"all\" || perm.name === UNKNOWN_PERMISSION_GRANT) {\n throw new Error(\n `Firewall \"${serviceConfig.name}\" has a permission named \"${perm.name}\", which is a reserved keyword`,\n );\n }\n if (seen.has(perm.name)) {\n throw new Error(\n `Duplicate permission name \"${perm.name}\" in API entry \"${api.base}\" of firewall \"${serviceConfig.name}\"`,\n );\n }\n if (perm.rules.length === 0) {\n throw new Error(\n `Permission \"${perm.name}\" in firewall \"${serviceConfig.name}\" has no rules`,\n );\n }\n for (const rule of perm.rules) {\n validateRule(rule, perm.name, serviceConfig.name);\n }\n seen.add(perm.name);\n available.add(perm.name);\n }\n }\n return available;\n}\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const featureSwitchesResponseSchema = z.object({\n switches: z.record(z.string(), z.boolean()),\n effectiveSwitches: z.record(z.string(), z.boolean()),\n});\n\nexport type FeatureSwitchesResponse = z.infer<\n typeof featureSwitchesResponseSchema\n>;\n\nexport const updateFeatureSwitchesRequestSchema = z.object({\n switches: z.record(z.string(), z.boolean()),\n});\n\nexport type UpdateFeatureSwitchesRequest = z.infer<\n typeof updateFeatureSwitchesRequestSchema\n>;\n\n/**\n * Zero feature switches contract for /api/zero/feature-switches\n *\n * GET: Get current user's feature switch overrides plus org-scoped overrides.\n * POST: Update feature switch overrides (merge strategy). Some switches may be\n * stored at org scope.\n * DELETE: Remove current user's overrides plus org-scoped overrides controlled\n * by this endpoint.\n */\nexport const zeroFeatureSwitchesContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/feature-switches\",\n headers: authHeadersSchema,\n responses: {\n 200: featureSwitchesResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get feature switch overrides\",\n },\n update: {\n method: \"POST\",\n path: \"/api/zero/feature-switches\",\n headers: authHeadersSchema,\n body: updateFeatureSwitchesRequestSchema,\n responses: {\n 200: featureSwitchesResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update feature switch overrides\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/feature-switches\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: z.object({ deleted: z.literal(true) }),\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete feature switch overrides\",\n },\n});\n\nexport type ZeroFeatureSwitchesContract = typeof zeroFeatureSwitchesContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { connectorCatalogRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Onboarding status response schema\n */\nexport const onboardingStatusResponseSchema = z.object({\n needsOnboarding: z.boolean(),\n onboardingComplete: z.boolean(),\n isAdmin: z.boolean(),\n hasOrg: z.boolean(),\n hasDefaultAgent: z.boolean(),\n defaultAgentId: z.string().nullable(),\n defaultAgentMetadata: z\n .object({\n displayName: z.string().optional(),\n description: z.string().optional(),\n sound: z.string().optional(),\n avatarUrl: z.string().optional(),\n })\n .nullable(),\n});\n\nexport type OnboardingStatusResponse = z.infer<\n typeof onboardingStatusResponseSchema\n>;\n\n/**\n * Onboarding status contract for GET /api/zero/onboarding/status\n */\nexport const onboardingStatusContract = c.router({\n getStatus: {\n method: \"GET\",\n path: \"/api/zero/onboarding/status\",\n headers: authHeadersSchema,\n responses: {\n 200: onboardingStatusResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Get onboarding status for current user\",\n },\n});\n\nexport const onboardingSetupContract = c.router({\n setup: {\n method: \"POST\",\n path: \"/api/zero/onboarding/setup\",\n headers: authHeadersSchema,\n body: z.object({\n displayName: z.string(),\n workspaceName: z.string().optional(),\n sound: z.string().optional(),\n avatarUrl: z.string().optional(),\n selectedConnectors: z.array(connectorCatalogRefSchema).optional(),\n timezone: z.string().optional(),\n role: z.string().optional(),\n }),\n responses: {\n 200: z.object({ agentId: z.string() }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: z.object({ agentId: z.string() }),\n 422: apiErrorSchema,\n },\n summary: \"Complete admin onboarding in a single request\",\n },\n});\n\nexport const onboardingCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/onboarding/complete\",\n headers: authHeadersSchema,\n body: z.object({}).strict(),\n responses: {\n 200: z.object({\n onboardingComplete: z.literal(true),\n needsOnboarding: z.literal(false),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Mark onboarding complete for the current org\",\n },\n});\n\nexport type OnboardingStatusContract = typeof onboardingStatusContract;\nexport type OnboardingSetupContract = typeof onboardingSetupContract;\nexport type OnboardingCompleteContract = typeof onboardingCompleteContract;\n","import { z } from \"zod\";\n\nexport const skillFrontmatterSchema = z.object({\n name: z.string().optional(),\n description: z.string().optional(),\n});\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorCatalogRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst connectorPermissionDenyRequestSchema = z\n .object({\n method: z.string().min(1).max(16),\n url: z.string().min(1).max(8192),\n })\n .strict();\n\nconst connectorPermissionDenyMatchedSchema = z\n .object({\n outcome: z.literal(\"matched\"),\n label: z.string().min(1),\n base: z.string().min(1),\n relativePath: z.string().min(1),\n permissions: z.array(z.string().min(1)).min(1),\n })\n .strict();\n\nconst connectorPermissionDenyUnknownEndpointSchema = z\n .object({\n outcome: z.literal(\"unknown-endpoint\"),\n label: z.string().min(1),\n base: z.string().min(1),\n relativePath: z.string().min(1),\n })\n .strict();\n\nconst connectorPermissionDenyUnknownConnectorSchema = z\n .object({ outcome: z.literal(\"unknown-connector\") })\n .strict();\n\nconst connectorPermissionDenyNoMatchingBaseSchema = z\n .object({\n outcome: z.literal(\"no-matching-base\"),\n label: z.string().min(1),\n })\n .strict();\n\nconst connectorPermissionDenyUnresolvedDynamicBaseSchema = z\n .object({\n outcome: z.literal(\"unresolved-dynamic-base\"),\n label: z.string().min(1),\n })\n .strict();\n\nconst connectorPermissionDenyUnsafeInputSchema = z\n .object({\n outcome: z.literal(\"unsafe-input\"),\n reason: z.enum([\"invalid-method\", \"invalid-url\", \"unsafe-path\"]),\n })\n .strict();\n\nexport const connectorPermissionDenyDiagnosticResultSchema =\n z.discriminatedUnion(\"outcome\", [\n connectorPermissionDenyMatchedSchema,\n connectorPermissionDenyUnknownEndpointSchema,\n connectorPermissionDenyUnknownConnectorSchema,\n connectorPermissionDenyNoMatchingBaseSchema,\n connectorPermissionDenyUnresolvedDynamicBaseSchema,\n connectorPermissionDenyUnsafeInputSchema,\n ]);\n\nexport type ConnectorPermissionDenyDiagnosticResult = z.infer<\n typeof connectorPermissionDenyDiagnosticResultSchema\n>;\n\nexport const zeroConnectorPermissionDenyContract = c.router({\n diagnose: {\n method: \"POST\",\n path: \"/api/zero/connectors/:connectorRef/diagnostics/permission-deny\",\n headers: authHeadersSchema,\n pathParams: z.object({ connectorRef: connectorCatalogRefSchema }),\n body: connectorPermissionDenyRequestSchema,\n responses: {\n 200: connectorPermissionDenyDiagnosticResultSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Diagnose a connector permission denial\",\n },\n});\n\nexport type ZeroConnectorPermissionDenyContract =\n typeof zeroConnectorPermissionDenyContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorCatalogRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst boundedNameSchema = z.string().min(1).max(255);\n\nconst connectorCheckUrlRequestSchema = z\n .object({\n mode: z.literal(\"url\"),\n method: z.string().min(1).max(16),\n url: z.string().min(1).max(8192),\n connectorRef: connectorCatalogRefSchema.optional(),\n environmentName: boundedNameSchema.optional(),\n })\n .strict();\n\nconst connectorCheckEnvironmentRequestSchema = z\n .object({\n mode: z.literal(\"environment\"),\n environmentName: boundedNameSchema,\n permission: boundedNameSchema.optional(),\n })\n .strict();\n\nexport const connectorCheckRequestSchema = z.discriminatedUnion(\"mode\", [\n connectorCheckUrlRequestSchema,\n connectorCheckEnvironmentRequestSchema,\n]);\n\nexport type ConnectorCheckRequest = z.infer<typeof connectorCheckRequestSchema>;\n\nconst connectorCheckIdentitySchema = z\n .object({\n connectorRef: connectorCatalogRefSchema,\n label: z.string().min(1),\n visibility: z.enum([\"available\", \"unavailable\"]),\n credentialResolution: z.enum([\"network-boundary\", \"none\"]),\n })\n .strict();\n\nconst connectorCheckCandidateSchema = z\n .object({\n connectorRef: connectorCatalogRefSchema,\n label: z.string().min(1),\n })\n .strict();\n\nconst connectorCheckNotScopedRunSchema = z\n .object({ status: z.literal(\"not-scoped\") })\n .strict();\n\nconst connectorCheckConfiguredRunSchema = z\n .object({\n status: z.literal(\"configured\"),\n bases: z.array(z.string().min(1)),\n })\n .strict();\n\nconst connectorCheckNotConfiguredRunSchema = z\n .object({ status: z.literal(\"not-configured\") })\n .strict();\n\nconst connectorCheckRunSchema = z.discriminatedUnion(\"status\", [\n connectorCheckNotScopedRunSchema,\n connectorCheckConfiguredRunSchema,\n connectorCheckNotConfiguredRunSchema,\n]);\n\nconst connectorCheckAllowPolicySchema = z\n .object({\n outcome: z.literal(\"allow\"),\n basis: z.enum([\"allow-list\", \"not-blocked\", \"no-policy\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckDenyPolicySchema = z\n .object({\n outcome: z.literal(\"deny\"),\n basis: z.enum([\"deny-list\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckAskPolicySchema = z\n .object({\n outcome: z.literal(\"ask\"),\n basis: z.enum([\"ask-list\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckUnavailablePolicySchema = z\n .object({\n outcome: z.literal(\"unavailable\"),\n basis: z.enum([\n \"not-run-scoped\",\n \"policies-unavailable\",\n \"connector-not-configured\",\n ]),\n })\n .strict();\n\nexport const connectorCheckPolicySchema = z.discriminatedUnion(\"outcome\", [\n connectorCheckAllowPolicySchema,\n connectorCheckDenyPolicySchema,\n connectorCheckAskPolicySchema,\n connectorCheckUnavailablePolicySchema,\n]);\n\nexport type ConnectorCheckPolicy = z.infer<typeof connectorCheckPolicySchema>;\n\nconst connectorCheckMatchedPermissionSchema = z\n .object({\n name: z.string().min(1),\n policy: connectorCheckPolicySchema,\n })\n .strict();\n\nconst connectorCheckMatchedPermissionsSchema = z\n .object({\n kind: z.literal(\"matched\"),\n permissions: z.array(connectorCheckMatchedPermissionSchema).min(1),\n })\n .strict();\n\nconst connectorCheckUnknownEndpointSchema = z\n .object({\n kind: z.literal(\"unknown-endpoint\"),\n policy: connectorCheckPolicySchema,\n })\n .strict();\n\nconst connectorCheckPermissionResultSchema = z.discriminatedUnion(\"kind\", [\n connectorCheckMatchedPermissionsSchema,\n connectorCheckUnknownEndpointSchema,\n]);\n\nconst connectorCheckResolvedUrlSchema = z\n .object({\n outcome: z.literal(\"resolved\"),\n mode: z.literal(\"url\"),\n connector: connectorCheckIdentitySchema,\n environmentNames: z.array(boundedNameSchema).nullable(),\n run: connectorCheckRunSchema,\n method: z.string().min(1).max(16),\n base: z.string().min(1),\n relativePath: z.string().min(1),\n permission: connectorCheckPermissionResultSchema,\n })\n .strict();\n\nconst connectorCheckResolvedEnvironmentSchema = z\n .object({\n outcome: z.literal(\"resolved\"),\n mode: z.literal(\"environment\"),\n connector: connectorCheckIdentitySchema,\n environmentName: boundedNameSchema,\n run: connectorCheckRunSchema,\n permission: connectorCheckPolicySchema.nullable(),\n })\n .strict();\n\nconst connectorCheckUnsafeInputSchema = z\n .object({\n outcome: z.literal(\"unsafe-input\"),\n reason: z.enum([\"invalid-method\", \"invalid-url\", \"unsafe-path\"]),\n })\n .strict();\n\nconst connectorCheckUnknownConnectorSchema = z\n .object({ outcome: z.literal(\"unknown-connector\") })\n .strict();\n\nconst connectorCheckUnknownEnvironmentSchema = z\n .object({ outcome: z.literal(\"unknown-environment\") })\n .strict();\n\nconst connectorCheckNoMatchSchema = z\n .object({\n outcome: z.literal(\"no-match\"),\n scope: z.enum([\"run\", \"catalog\"]),\n })\n .strict();\n\nconst connectorCheckAmbiguousSchema = z\n .object({\n outcome: z.literal(\"ambiguous\"),\n candidates: z.array(connectorCheckCandidateSchema).min(2),\n })\n .strict();\n\nconst connectorCheckMismatchSchema = z\n .object({\n outcome: z.literal(\"connector-mismatch\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckEnvironmentNotOwnedSchema = z\n .object({\n outcome: z.literal(\"environment-not-owned\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckEnvironmentNotUsedSchema = z\n .object({\n outcome: z.literal(\"environment-not-used\"),\n connector: connectorCheckIdentitySchema,\n environmentNames: z.array(boundedNameSchema),\n })\n .strict();\n\nconst connectorCheckUnresolvedDynamicBaseSchema = z\n .object({\n outcome: z.literal(\"unresolved-dynamic-base\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckRunContextUnavailableSchema = z\n .object({ outcome: z.literal(\"run-context-unavailable\") })\n .strict();\n\nexport const connectorCheckDiagnosticResultSchema = z.union([\n connectorCheckResolvedUrlSchema,\n connectorCheckResolvedEnvironmentSchema,\n connectorCheckUnsafeInputSchema,\n connectorCheckUnknownConnectorSchema,\n connectorCheckUnknownEnvironmentSchema,\n connectorCheckNoMatchSchema,\n connectorCheckAmbiguousSchema,\n connectorCheckMismatchSchema,\n connectorCheckEnvironmentNotOwnedSchema,\n connectorCheckEnvironmentNotUsedSchema,\n connectorCheckUnresolvedDynamicBaseSchema,\n connectorCheckRunContextUnavailableSchema,\n]);\n\nexport type ConnectorCheckDiagnosticResult = z.infer<\n typeof connectorCheckDiagnosticResultSchema\n>;\n\nexport const zeroConnectorCheckContract = c.router({\n check: {\n method: \"POST\",\n path: \"/api/zero/connectors/diagnostics/check\",\n headers: authHeadersSchema,\n body: connectorCheckRequestSchema,\n responses: {\n 200: connectorCheckDiagnosticResultSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Resolve connector runtime diagnostics\",\n },\n});\n\nexport type ZeroConnectorCheckContract = typeof zeroConnectorCheckContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { modelProviderResponseSchema } from \"./model-providers\";\n\nconst c = initContract();\n\nexport const codexDeviceAuthScopeSchema = z.enum([\"org\", \"personal\"]);\n\nconst codexDeviceAuthStartResponseSchema = z.object({\n sessionToken: z.string(),\n type: z.literal(\"codex\"),\n status: z.literal(\"pending\"),\n scope: codexDeviceAuthScopeSchema,\n browserUrl: z.url(),\n verificationCode: z.string().min(1),\n expiresIn: z.number().int().positive(),\n interval: z.number().int().positive(),\n});\n\nconst codexDeviceAuthCompleteResponseSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"pending\"),\n errorMessage: z.string().nullable(),\n }),\n z.object({\n status: z.literal(\"complete\"),\n provider: modelProviderResponseSchema,\n created: z.boolean(),\n }),\n]);\n\nconst codexDeviceAuthCancelResponseSchema = z.object({\n status: z.literal(\"cancelled\"),\n});\n\n/**\n * Zero contract for Codex device auth.\n * Runs the official Codex device authorization flow through OpenAI auth and\n * imports the resulting ChatGPT tokens.\n */\nexport const zeroCodexDeviceAuthContract = c.router({\n start: {\n method: \"POST\",\n path: \"/api/zero/model-providers/codex/device-auth/sessions\",\n headers: authHeadersSchema,\n body: z.object({ scope: codexDeviceAuthScopeSchema }),\n responses: {\n 200: codexDeviceAuthStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Start Codex device auth\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/model-providers/codex/device-auth/sessions/complete\",\n headers: authHeadersSchema,\n body: z.object({ sessionToken: z.string().min(1) }),\n responses: {\n 200: codexDeviceAuthCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Complete Codex device auth and import ChatGPT credentials\",\n },\n cancel: {\n method: \"POST\",\n path: \"/api/zero/model-providers/codex/device-auth/sessions/cancel\",\n headers: authHeadersSchema,\n body: z.object({ sessionToken: z.string().min(1) }),\n responses: {\n 200: codexDeviceAuthCancelResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Cancel Codex device auth\",\n },\n});\n\nexport type CodexDeviceAuthScope = z.infer<typeof codexDeviceAuthScopeSchema>;\nexport type ZeroCodexDeviceAuthContract = typeof zeroCodexDeviceAuthContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { modelProviderResponseSchema } from \"./model-providers\";\n\nconst c = initContract();\n\nexport const claudeCodeDeviceAuthScopeSchema = z.enum([\"org\", \"personal\"]);\n\nconst claudeCodeDeviceAuthStartResponseSchema = z.object({\n sessionToken: z.string(),\n type: z.literal(\"claude-code\"),\n status: z.literal(\"pending\"),\n scope: claudeCodeDeviceAuthScopeSchema,\n browserUrl: z.url(),\n expiresIn: z.number().int().positive(),\n});\n\nconst claudeCodeDeviceAuthCompleteResponseSchema = z.object({\n status: z.literal(\"complete\"),\n provider: modelProviderResponseSchema,\n created: z.boolean(),\n});\n\nconst claudeCodeDeviceAuthCancelResponseSchema = z.object({\n status: z.literal(\"cancelled\"),\n});\n\n/**\n * Zero contract for Claude Code device-style OAuth.\n * Runs the same PKCE OAuth path as `claude setup-token` and imports the\n * resulting long-lived Claude Code token.\n */\nexport const zeroClaudeCodeDeviceAuthContract = c.router({\n start: {\n method: \"POST\",\n path: \"/api/zero/model-providers/claude-code/device-auth/sessions\",\n headers: authHeadersSchema,\n body: z.object({ scope: claudeCodeDeviceAuthScopeSchema }),\n responses: {\n 200: claudeCodeDeviceAuthStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Start Claude Code device auth\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/model-providers/claude-code/device-auth/sessions/complete\",\n headers: authHeadersSchema,\n body: z.object({\n sessionToken: z.string().min(1),\n authorizationCode: z.string().min(1),\n }),\n responses: {\n 200: claudeCodeDeviceAuthCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Complete Claude Code device auth and import OAuth token\",\n },\n cancel: {\n method: \"POST\",\n path: \"/api/zero/model-providers/claude-code/device-auth/sessions/cancel\",\n headers: authHeadersSchema,\n body: z.object({ sessionToken: z.string().min(1) }),\n responses: {\n 200: claudeCodeDeviceAuthCancelResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Cancel Claude Code device auth\",\n },\n});\n\nexport type ClaudeCodeDeviceAuthScope = z.infer<\n typeof claudeCodeDeviceAuthScopeSchema\n>;\nexport type ZeroClaudeCodeDeviceAuthContract =\n typeof zeroClaudeCodeDeviceAuthContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroOrgLogoResponseSchema = z.object({\n logoUrl: z.string().nullable(),\n hasImage: z.boolean(),\n});\n\nexport type ZeroOrgLogoResponse = z.infer<typeof zeroOrgLogoResponseSchema>;\n\n/**\n * Zero contract for /api/zero/org/logo\n */\nexport const zeroOrgLogoContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/org/logo\",\n headers: authHeadersSchema,\n responses: {\n 200: zeroOrgLogoResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get current organization logo\",\n },\n post: {\n method: \"POST\",\n path: \"/api/zero/org/logo\",\n headers: authHeadersSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n responses: {\n 200: zeroOrgLogoResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upload current organization logo\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/org/logo\",\n headers: authHeadersSchema,\n responses: {\n 200: zeroOrgLogoResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Remove current organization logo\",\n },\n});\n\nexport type ZeroOrgLogoContract = typeof zeroOrgLogoContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { composeListItemSchema } from \"./composes\";\n\nconst c = initContract();\n\n/**\n * Zero composes list contract (GET /api/zero/composes/list)\n */\nexport const zeroComposesListContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/composes/list\",\n headers: authHeadersSchema,\n query: z.object({}),\n responses: {\n 200: z.object({\n composes: z.array(composeListItemSchema),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List all agent composes (zero proxy)\",\n },\n});\n\nexport type ZeroComposesListContract = typeof zeroComposesListContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n modelProviderListResponseSchema,\n upsertModelProviderRequestSchema,\n upsertModelProviderResponseSchema,\n modelProviderTypeSchema,\n} from \"./model-providers\";\n\nconst c = initContract();\n\nexport const resetPersonalModelProviderSubscriptionUsageRequestSchema =\n z.object({\n idempotencyKey: z.uuid(),\n });\n\nexport const resetPersonalModelProviderSubscriptionUsageResponseSchema =\n z.object({\n outcome: z.enum([\"reset\", \"nothingToReset\", \"noCredit\", \"alreadyRedeemed\"]),\n });\n\nexport type ResetPersonalModelProviderSubscriptionUsageResponse = z.infer<\n typeof resetPersonalModelProviderSubscriptionUsageResponseSchema\n>;\n\n/**\n * Zero personal (user-level) model providers main contract for /api/zero/me/model-providers\n *\n * Personal-tier per Epic #11868: providers scoped to the authenticated user\n * within an org, no admin gate. List/upsert are gated on model-first provider\n * controls and return 404 when unavailable.\n *\n * GET: List the requesting user's personal model providers\n * POST: Create or update a personal model provider for the requesting user\n */\nexport const zeroPersonalModelProvidersMainContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/me/model-providers\",\n headers: authHeadersSchema,\n responses: {\n 200: modelProviderListResponseSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List the requesting user's personal model providers\",\n },\n upsert: {\n method: \"POST\",\n path: \"/api/zero/me/model-providers\",\n headers: authHeadersSchema,\n body: upsertModelProviderRequestSchema,\n responses: {\n 200: upsertModelProviderResponseSchema,\n 201: upsertModelProviderResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary:\n \"Create or update a personal model provider for the requesting user\",\n },\n});\n\nexport type ZeroPersonalModelProvidersMainContract =\n typeof zeroPersonalModelProvidersMainContract;\n\n/**\n * Zero personal model providers by type contract for /api/zero/me/model-providers/:type\n *\n * DELETE: Delete one of the requesting user's personal model providers\n */\nexport const zeroPersonalModelProvidersByTypeContract = c.router({\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/me/model-providers/:type\",\n headers: authHeadersSchema,\n pathParams: z.object({\n type: modelProviderTypeSchema,\n }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete a personal model provider for the requesting user\",\n },\n resetSubscriptionUsage: {\n method: \"POST\",\n path: \"/api/zero/me/model-providers/:type/subscription-reset\",\n headers: authHeadersSchema,\n pathParams: z.object({\n type: modelProviderTypeSchema,\n }),\n body: resetPersonalModelProviderSubscriptionUsageRequestSchema,\n responses: {\n 200: resetPersonalModelProviderSubscriptionUsageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Reset a personal model provider subscription usage window\",\n },\n});\n\nexport type ZeroPersonalModelProvidersByTypeContract =\n typeof zeroPersonalModelProvidersByTypeContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst memoryDevRefreshSkippedResponseSchema = z.object({\n skipped: z.literal(true),\n});\n\nconst memoryDevRefreshSummarizedResponseSchema = z.object({\n summarized: z.number(),\n});\n\nexport const memoryDevRefreshResponseSchema = z.union([\n memoryDevRefreshSkippedResponseSchema,\n memoryDevRefreshSummarizedResponseSchema,\n]);\n\nexport type MemoryDevRefreshResponse = z.infer<\n typeof memoryDevRefreshResponseSchema\n>;\n\n/**\n * Staff/development-only refresh endpoint for iterating on Memory Activity\n * summary generation against the current user's memory artifact.\n */\nexport const zeroMemoryDevRefreshContract = c.router({\n refresh: {\n method: \"POST\",\n path: \"/api/zero/memory/dev-refresh\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: memoryDevRefreshResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Force-refresh memory summaries for the current user\",\n },\n});\n\nexport type ZeroMemoryDevRefreshContract = typeof zeroMemoryDevRefreshContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const apiKeyItemSchema = z.object({\n id: z.string().uuid(),\n name: z.string(),\n tokenPrefix: z.string(),\n createdAt: z.string(),\n expiresAt: z.string(),\n lastUsedAt: z.string().nullable(),\n});\n\nexport const apiKeyListResponseSchema = z.object({\n apiKeys: z.array(apiKeyItemSchema),\n});\n\nexport const createApiKeyRequestSchema = z.object({\n name: z.string().min(1).max(100),\n expiresInDays: z.number().int().positive().max(3650),\n});\n\nexport const createApiKeyResponseSchema = apiKeyItemSchema.extend({\n token: z.string(),\n});\n\nexport type ApiKeyItem = z.infer<typeof apiKeyItemSchema>;\nexport type ApiKeyListResponse = z.infer<typeof apiKeyListResponseSchema>;\nexport type CreateApiKeyRequest = z.infer<typeof createApiKeyRequestSchema>;\nexport type CreateApiKeyResponse = z.infer<typeof createApiKeyResponseSchema>;\n\nexport const apiKeysContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/api-keys\",\n headers: authHeadersSchema,\n responses: {\n 200: apiKeyListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List caller's API keys (metadata only)\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/api-keys\",\n headers: authHeadersSchema,\n body: createApiKeyRequestSchema,\n responses: {\n 201: createApiKeyResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create a new API key (token returned once)\",\n },\n});\n\nexport type ApiKeysContract = typeof apiKeysContract;\n\nexport const apiKeysByIdContract = c.router({\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/api-keys/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Revoke (delete) an API key\",\n },\n});\n\nexport type ApiKeysByIdContract = typeof apiKeysByIdContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const githubInstallationResponseSchema = z.object({\n installation: z.object({\n id: z.string(),\n installationId: z.string().nullable(),\n status: z.string(),\n targetName: z.string().nullable(),\n targetType: z.string().nullable(),\n isAdmin: z.boolean(),\n }),\n isConnected: z.boolean(),\n connectedGithubUserId: z.string().nullable(),\n connectedGithubUsername: z.string().nullable(),\n connectUrl: z.string(),\n});\n\nexport type GithubInstallationResponse = z.infer<\n typeof githubInstallationResponseSchema\n>;\n\nexport const githubInstallationNotFoundResponseSchema = apiErrorSchema;\n\nexport type GithubInstallationNotFoundResponse = z.infer<\n typeof githubInstallationNotFoundResponseSchema\n>;\n\nexport const githubIntegrationActionResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport type GithubIntegrationActionResponse = z.infer<\n typeof githubIntegrationActionResponseSchema\n>;\n\nexport const githubConnectSignatureSchema = z.object({\n installationId: z.string().min(1),\n githubUserId: z.string().min(1),\n githubUsername: z.string().max(255).optional(),\n timestamp: z.number(),\n signature: z.string().min(1),\n});\n\nexport type GithubConnectSignature = z.infer<\n typeof githubConnectSignatureSchema\n>;\n\nexport const githubConnectUserBodySchema = z\n .object({\n connectSignature: githubConnectSignatureSchema.optional(),\n })\n .optional();\n\nexport type GithubConnectUserBody = z.infer<typeof githubConnectUserBodySchema>;\n\nexport const integrationsGithubContract = c.router({\n getInstallation: {\n method: \"GET\",\n path: \"/api/integrations/github\",\n headers: authHeadersSchema,\n responses: {\n 200: githubInstallationResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: githubInstallationNotFoundResponseSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get the authenticated user's GitHub App installation\",\n },\n\n connectUser: {\n method: \"POST\",\n path: \"/api/integrations/github/link\",\n headers: authHeadersSchema,\n body: githubConnectUserBodySchema,\n responses: {\n 200: githubIntegrationActionResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Link the authenticated VM0 user to the GitHub App installation\",\n },\n});\n\nexport type IntegrationsGithubContract = typeof integrationsGithubContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst jsonErrorSchema = z.object({ error: z.string() });\n\nexport const githubOauthInstallQuerySchema = z.object({\n vm0UserId: z.string().optional(),\n orgId: z.string().optional(),\n composeId: z.string().optional(),\n});\n\nexport const githubOauthConnectQuerySchema = z.object({\n installation: z.string().optional(),\n ghUser: z.string().optional(),\n ghLogin: z.string().optional(),\n ts: z.coerce.number().optional(),\n sig: z.string().optional(),\n});\n\nexport const githubOauthConnectCallbackQuerySchema = z.object({\n code: z.string().optional(),\n state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n});\n\nexport const githubAppSetupCallbackQuerySchema = z.object({\n code: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n installation_id: z.string().optional(),\n setup_action: z.string().optional(),\n state: z.string().optional(),\n target_id: z.string().optional(),\n target_type: z.string().optional(),\n});\n\nexport const githubOauthContract = c.router({\n install: {\n method: \"GET\",\n path: \"/api/github/oauth/install\",\n query: githubOauthInstallQuerySchema,\n responses: {\n 307: c.noBody(),\n 503: jsonErrorSchema,\n },\n summary: \"Start GitHub App OAuth install\",\n },\n connect: {\n method: \"GET\",\n path: \"/api/zero/github/oauth/connect\",\n query: githubOauthConnectQuerySchema,\n responses: {\n 307: c.noBody(),\n 401: apiErrorSchema,\n 503: jsonErrorSchema,\n },\n summary: \"Start GitHub user OAuth for the GitHub App\",\n },\n connectCallback: {\n method: \"GET\",\n path: \"/api/zero/github/oauth/connect/callback\",\n query: githubOauthConnectCallbackQuerySchema,\n responses: {\n 307: c.noBody(),\n },\n summary: \"Handle GitHub user OAuth for the GitHub App\",\n },\n setupCallback: {\n method: \"GET\",\n path: \"/api/github/app/setup/callback\",\n query: githubAppSetupCallbackQuerySchema,\n responses: {\n 307: c.noBody(),\n },\n summary: \"Handle GitHub App setup callback\",\n },\n});\n\nexport type GithubOauthContract = typeof githubOauthContract;\nexport type GithubOauthInstallQuery = z.infer<\n typeof githubOauthInstallQuerySchema\n>;\nexport type GithubOauthConnectQuery = z.infer<\n typeof githubOauthConnectQuerySchema\n>;\nexport type GithubOauthConnectCallbackQuery = z.infer<\n typeof githubOauthConnectCallbackQuerySchema\n>;\nexport type GithubAppSetupCallbackQuery = z.infer<\n typeof githubAppSetupCallbackQuerySchema\n>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { usageRecordRangeSchema } from \"./zero-usage-record\";\n\nconst c = initContract();\n\nconst memberUsageSchema = z.object({\n userId: z.string(),\n email: z.string(),\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheReadInputTokens: z.number(),\n cacheCreationInputTokens: z.number(),\n creditsCharged: z.number(),\n});\n\nconst usageMembersResponseSchema = z.object({\n period: z\n .object({\n start: z.string(),\n end: z.string(),\n })\n .nullable(),\n members: z.array(memberUsageSchema),\n});\n\n/**\n * Zero contract for GET /api/zero/usage/members\n */\nexport const zeroUsageMembersContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/usage/members\",\n headers: authHeadersSchema,\n query: z.object({\n range: usageRecordRangeSchema.default(\"billingPeriod\"),\n tz: z.string().default(\"UTC\"),\n }),\n responses: {\n 200: usageMembersResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get per-member usage for a selected period\",\n },\n});\n\nexport type ZeroUsageMembersContract = typeof zeroUsageMembersContract;\n\n// Inferred types from Zod schemas\nexport type MemberUsage = z.infer<typeof memberUsageSchema>;\nexport type UsageMembersResponse = z.infer<typeof usageMembersResponseSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// Where a run originated. `chat` is web chat (trigger_source 'web'); known\n// trigger sources keep their surface, and unsupported historical values are\n// grouped as `other`.\nexport const usageRecordSourceSchema = z.enum([\n \"chat\",\n \"automation\",\n \"slack\",\n \"teams\",\n \"telegram\",\n \"email\",\n \"agentphone\",\n \"github\",\n \"cli\",\n \"agent\",\n \"other\",\n]);\n\nexport type UsageRecordSource = z.infer<typeof usageRecordSourceSchema>;\n\nexport const usageRecordScopeSchema = z.enum([\"mine\", \"team\"]);\nexport type UsageRecordScope = z.infer<typeof usageRecordScopeSchema>;\n\nexport const usageRecordRangeSchema = z.enum([\n \"today\",\n \"yesterday\",\n \"24h\",\n \"7d\",\n \"billingPeriod\",\n]);\nexport type UsageRecordRange = z.infer<typeof usageRecordRangeSchema>;\n\nexport const usageRecordKindSchema = z.enum([\n \"model\",\n \"image\",\n \"video\",\n \"connector\",\n \"other\",\n]);\nexport type UsageRecordKind = z.infer<typeof usageRecordKindSchema>;\n\nconst usageRecordProviderBreakdownSchema = z.object({\n provider: z.string(),\n credits: z.number(),\n});\n\nconst usageRecordKindBreakdownSchema = z.object({\n kind: usageRecordKindSchema,\n credits: z.number(),\n providers: z.array(usageRecordProviderBreakdownSchema),\n});\n\nconst usageRecordMemberSchema = z.object({\n userId: z.string(),\n email: z.string(),\n});\n\n// One usage row. Threaded sources (chat, automation) aggregate every run in the\n// thread into a single row that links to the thread. Deleted threaded sources\n// aggregate into a synthetic non-clickable row. Unthreaded sources are one row\n// per run that links to the run's activity detail. Ordered by most recent\n// activity so the list reads as a chronological record.\nconst usageRecordRowSchema = z.object({\n source: usageRecordSourceSchema,\n // Set for threaded sources (web chat, automation) — links to the chat thread.\n threadId: z.string().nullable(),\n // Set for unthreaded sources (slack, telegram, …) — links to the run.\n runId: z.string().nullable(),\n title: z.string().nullable(),\n credits: z.number(),\n tokens: z.number(),\n breakdown: z.array(usageRecordKindBreakdownSchema),\n member: usageRecordMemberSchema.nullable(),\n // ISO string of the most recent run in this row.\n lastActivityAt: z.string(),\n});\n\nconst usageRecordResponseSchema = z.object({\n period: z\n .object({\n start: z.string(),\n end: z.string(),\n })\n .nullable(),\n rows: z.array(usageRecordRowSchema),\n // Total credits across the whole range (not just the current page), so the\n // summary headline stays correct as more pages load in.\n totalCredits: z.number(),\n pagination: z.object({\n page: z.number(),\n pageSize: z.number(),\n total: z.number(),\n }),\n});\n\nexport const zeroUsageRecordContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/usage/record\",\n headers: authHeadersSchema,\n query: z.object({\n page: z.coerce.number().int().positive().default(1),\n pageSize: z.coerce.number().int().positive().max(100).default(20),\n scope: usageRecordScopeSchema.default(\"mine\"),\n range: usageRecordRangeSchema.default(\"today\"),\n tz: z.string().default(\"UTC\"),\n source: usageRecordSourceSchema.optional(),\n }),\n responses: {\n 200: usageRecordResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary:\n \"Get personal usage records across sources, ordered by recent activity\",\n },\n});\n\nexport type ZeroUsageRecordContract = typeof zeroUsageRecordContract;\nexport type UsageRecordResponse = z.infer<typeof usageRecordResponseSchema>;\nexport type UsageRecordRow = z.infer<typeof usageRecordRowSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// --- Per-Run Records Contract ---\n\nconst usageRunSchema = z.object({\n runId: z.string(),\n agentName: z.string().nullable(),\n memberEmail: z.string(),\n userId: z.string(),\n triggerSource: z.string().nullable(),\n model: z.string(),\n status: z.string(),\n prompt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n durationMs: z.number().nullable(),\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheTokens: z.number(),\n creditsCharged: z.number(),\n createdAt: z.string(),\n});\n\nconst usageRunsResponseSchema = z.object({\n runs: z.array(usageRunSchema),\n pagination: z.object({\n page: z.number(),\n pageSize: z.number(),\n total: z.number(),\n }),\n});\n\nexport const zeroUsageRunsContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/usage/runs\",\n headers: authHeadersSchema,\n query: z.object({\n page: z.coerce.number().int().positive().default(1),\n pageSize: z.coerce.number().int().positive().max(100).default(20),\n runId: z.string().uuid().optional(),\n agentId: z.string().optional(),\n // Comma-separated list of user IDs to filter by. Empty string = no filter.\n userIds: z.string().optional(),\n dateFrom: z.string().optional(),\n dateTo: z.string().optional(),\n }),\n responses: {\n 200: usageRunsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get per-run usage records for the org\",\n },\n});\n\nexport type ZeroUsageRunsContract = typeof zeroUsageRunsContract;\n\nexport type UsageRun = z.infer<typeof usageRunSchema>;\nexport type UsageRunsResponse = z.infer<typeof usageRunsResponseSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst usageInsightBucketSchema = z.object({\n ts: z.string(), // ISO string for the bucket start\n series: z.record(z.string(), z.number()), // { chat: 123, slack: 45, ... }\n tokens: z.record(z.string(), z.number()), // same keys, total token counts\n});\n\nconst usageInsightAutomationRowSchema = z.object({\n automationId: z.string(),\n automationName: z.string(),\n automationDescription: z.string().nullable(),\n credits: z.number(),\n tokens: z.number(),\n});\n\nconst usageInsightChatRowSchema = z.object({\n threadId: z.string(),\n threadTitle: z.string().nullable(),\n credits: z.number(),\n tokens: z.number(),\n});\n\nconst usageInsightResponseSchema = z.object({\n buckets: z.array(usageInsightBucketSchema),\n automations: z.array(usageInsightAutomationRowSchema),\n automationOtherCount: z.number(),\n automationOtherCredits: z.number(),\n chats: z.array(usageInsightChatRowSchema),\n chatOtherCount: z.number(),\n chatOtherCredits: z.number(),\n emailCredits: z.number(),\n emailTokens: z.number(),\n slackCredits: z.number(),\n slackTokens: z.number(),\n grandTotalCredits: z.number(),\n grandTotalTokens: z.number(),\n});\n\nexport const zeroUsageInsightContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/usage/insight\",\n headers: authHeadersSchema,\n query: z.object({\n range: z.enum([\"today\", \"yesterday\", \"day\", \"7d\", \"28d\", \"30d\"]),\n date: z.string().optional(),\n groupBy: z.enum([\"source\", \"agent\"]),\n tz: z.string(),\n }),\n responses: {\n 200: usageInsightResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get personal usage insight for the signed-in user\",\n },\n});\n\nexport type ZeroUsageInsightContract = typeof zeroUsageInsightContract;\nexport type UsageInsightResponse = z.infer<typeof usageInsightResponseSchema>;\nexport type UsageInsightBucket = z.infer<typeof usageInsightBucketSchema>;\nexport type UsageInsightAutomationRow = z.infer<\n typeof usageInsightAutomationRowSchema\n>;\nexport type UsageInsightChatRow = z.infer<typeof usageInsightChatRowSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst dailyUsageSchema = z.object({\n date: z.string(),\n run_count: z.number(),\n run_time_ms: z.number(),\n});\n\nconst usageResponseSchema = z.object({\n period: z.object({\n start: z.string(),\n end: z.string(),\n }),\n summary: z.object({\n total_runs: z.number(),\n total_run_time_ms: z.number(),\n }),\n daily: z.array(dailyUsageSchema),\n});\n\nexport const usageContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/usage\",\n headers: authHeadersSchema,\n query: z.object({\n start_date: z.string().optional(),\n end_date: z.string().optional(),\n }),\n responses: {\n 200: usageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get personal daily run usage for the signed-in user\",\n },\n});\n\nexport type UsageContract = typeof usageContract;\nexport type DailyUsage = z.infer<typeof dailyUsageSchema>;\nexport type UsageResponse = z.infer<typeof usageResponseSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { zeroAgentVisibilitySchema } from \"./zero-agents\";\n\nconst c = initContract();\n\nconst teamComposeItemSchema = z.object({\n id: z.string(),\n ownerId: z.string().optional(),\n displayName: z.string().nullable(),\n description: z.string().nullable(),\n sound: z.string().nullable(),\n avatarUrl: z.string().nullable(),\n visibility: zeroAgentVisibilitySchema.optional(),\n headVersionId: z.string().nullable(),\n updatedAt: z.string(),\n});\n\n/**\n * Zero team contract (GET /api/zero/team)\n * Lists all agents in the user's active Clerk org.\n */\nexport const zeroTeamContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/team\",\n headers: authHeadersSchema,\n responses: {\n 200: z.array(teamComposeItemSchema),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List all agents in the user's active org\",\n },\n});\n\nexport type ZeroTeamContract = typeof zeroTeamContract;\nexport type TeamComposeItem = z.infer<typeof teamComposeItemSchema>;\nexport { teamComposeItemSchema };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst slackEnvironmentSchema = z.object({\n requiredSecrets: z.array(z.string()),\n requiredVars: z.array(z.string()),\n missingSecrets: z.array(z.string()),\n missingVars: z.array(z.string()),\n});\n\nconst slackOrgStatusSchema = z.object({\n isConnected: z.boolean(),\n isInstalled: z.boolean().optional(),\n workspaceName: z.string().nullable().optional(),\n isAdmin: z.boolean(),\n installUrl: z.string().nullable().optional(),\n connectUrl: z.string().nullable().optional(),\n defaultAgentName: z.string().nullable().optional(),\n agentOrgSlug: z.string().nullable().optional(),\n environment: slackEnvironmentSchema.optional(),\n /** True when the installation's granted scopes are outdated (admin-only). */\n scopeMismatch: z.boolean().optional(),\n /** OAuth install URL for re-authorization (admin-only, when scopeMismatch). */\n reinstallUrl: z.string().nullable().optional(),\n});\n\n/**\n * Zero integrations Slack contract (GET/DELETE /api/zero/integrations/slack)\n * Manages org-scoped Slack workspace info.\n */\nexport const zeroIntegrationsSlackContract = c.router({\n getStatus: {\n method: \"GET\",\n path: \"/api/zero/integrations/slack\",\n headers: authHeadersSchema,\n responses: {\n 200: slackOrgStatusSchema,\n 401: apiErrorSchema,\n },\n summary: \"Get org-scoped Slack workspace info\",\n },\n disconnect: {\n method: \"DELETE\",\n path: \"/api/zero/integrations/slack\",\n headers: authHeadersSchema,\n body: c.noBody(),\n query: z.object({\n action: z.string().optional(),\n }),\n responses: {\n 200: z.object({ ok: z.boolean() }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disconnect or uninstall Slack workspace\",\n },\n});\n\nexport type ZeroIntegrationsSlackContract =\n typeof zeroIntegrationsSlackContract;\nexport type SlackOrgStatus = z.infer<typeof slackOrgStatusSchema>;\nexport { slackOrgStatusSchema };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst slackConnectStatusSchema = z.object({\n isConnected: z.boolean(),\n isAdmin: z.boolean(),\n workspaceName: z.string().nullable().optional(),\n defaultAgentName: z.string().nullable().optional(),\n});\n\nconst slackConnectResponseSchema = z.object({\n success: z.boolean(),\n connectionId: z.string(),\n role: z.string(),\n});\n\n/**\n * Zero Slack connect contract (GET/POST /api/zero/integrations/slack/connect)\n * Manages per-user Slack connection.\n */\nexport const zeroSlackConnectContract = c.router({\n getStatus: {\n method: \"GET\",\n path: \"/api/zero/integrations/slack/connect\",\n headers: authHeadersSchema,\n responses: {\n 200: slackConnectStatusSchema,\n 401: apiErrorSchema,\n },\n summary: \"Check user Slack connection status\",\n },\n connect: {\n method: \"POST\",\n path: \"/api/zero/integrations/slack/connect\",\n headers: authHeadersSchema,\n body: z.object({\n workspaceId: z.string().min(1),\n slackUserId: z.string().min(1),\n channelId: z.string().optional(),\n threadTs: z.string().optional(),\n }),\n responses: {\n 200: slackConnectResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Connect user to Slack workspace\",\n },\n});\n\nexport type ZeroSlackConnectContract = typeof zeroSlackConnectContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const zeroSlackCommandsContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/slack/commands\",\n body: c.type<string>(),\n responses: {\n 200: z.unknown(),\n 401: z.object({ error: z.string() }),\n 503: z.object({ error: z.string() }),\n },\n summary: \"Handle Zero Slack slash commands\",\n },\n});\n\nexport type ZeroSlackCommandsContract = typeof zeroSlackCommandsContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const zeroSlackEventsContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/slack/events\",\n body: c.type<string>(),\n responses: {\n 200: z.unknown(),\n 400: z.object({ error: z.string() }),\n 401: z.object({ error: z.string() }),\n 503: z.object({ error: z.string() }),\n },\n summary: \"Handle Zero Slack Events API callbacks\",\n },\n});\n\nexport type ZeroSlackEventsContract = typeof zeroSlackEventsContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst teamsActorSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n aadObjectId: z.string().nullable(),\n userPrincipalName: z.string().nullable(),\n});\n\nconst teamsInboundAttachmentSchema = z.object({\n id: z.string().nullable(),\n contentType: z.string().nullable(),\n contentUrl: z.string().nullable(),\n name: z.string().nullable(),\n content: z.record(z.string(), z.unknown()).nullable(),\n});\n\nconst teamsActivityBaseSchema = z.object({\n activityId: z.string().nullable(),\n tenantId: z.string(),\n tenantName: z.string().nullable(),\n teamsAppId: z.string().nullable(),\n serviceUrl: z.string(),\n conversationId: z.string(),\n conversationType: z.string().nullable(),\n teamId: z.string().nullable(),\n teamName: z.string().nullable(),\n channelId: z.string().nullable(),\n timestamp: z.string().nullable(),\n idempotencyKey: z.string(),\n});\n\nexport const teamsInboundMessageActivitySchema = teamsActivityBaseSchema.extend(\n {\n kind: z.literal(\"message\"),\n threadId: z.string(),\n sender: teamsActorSchema,\n recipient: teamsActorSchema.nullable(),\n rawText: z.string(),\n text: z.string(),\n value: z.record(z.string(), z.unknown()).nullable(),\n mentionsRecipient: z.boolean(),\n attachments: z.array(teamsInboundAttachmentSchema),\n },\n);\n\nexport const teamsConversationUpdateActivitySchema =\n teamsActivityBaseSchema.extend({\n kind: z.literal(\"conversation_update\"),\n action: z.enum([\"members_added\", \"members_removed\", \"unknown\"]),\n recipient: teamsActorSchema,\n membersAdded: z.array(teamsActorSchema),\n membersRemoved: z.array(teamsActorSchema),\n });\n\nexport const teamsBotRemovedActivitySchema = teamsActivityBaseSchema.extend({\n kind: z.literal(\"bot_removed\"),\n reason: z.enum([\"members_removed\", \"installation_remove\"]),\n recipient: teamsActorSchema.nullable(),\n membersRemoved: z.array(teamsActorSchema),\n});\n\nexport const teamsInstallationUpdateActivitySchema =\n teamsActivityBaseSchema.extend({\n kind: z.literal(\"installation_update\"),\n action: z.enum([\"add\", \"unknown\"]),\n recipient: teamsActorSchema.nullable(),\n });\n\nexport const teamsUnsupportedActivitySchema = z.object({\n kind: z.literal(\"unsupported\"),\n activityType: z.string(),\n idempotencyKey: z.string().nullable(),\n});\n\nexport const teamsInboundActivitySchema = z.discriminatedUnion(\"kind\", [\n teamsInboundMessageActivitySchema,\n teamsConversationUpdateActivitySchema,\n teamsBotRemovedActivitySchema,\n teamsInstallationUpdateActivitySchema,\n teamsUnsupportedActivitySchema,\n]);\n\nconst teamsBotDispatchResponseSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"ignored\") }),\n z.object({\n kind: z.literal(\"notice\"),\n replyText: z.string(),\n connectUrl: z.string().optional(),\n card: z.record(z.string(), z.unknown()).optional(),\n }),\n z.object({\n kind: z.literal(\"accepted\"),\n runId: z.string(),\n }),\n z.object({\n kind: z.literal(\"queued\"),\n runId: z.string(),\n }),\n z.object({\n kind: z.literal(\"failed\"),\n replyText: z.string(),\n runId: z.string().optional(),\n }),\n]);\n\nexport const teamsBotIngressResponseSchema = z.object({\n ok: z.literal(true),\n activity: teamsInboundActivitySchema,\n connectUrl: z.string().nullable().optional(),\n dispatch: teamsBotDispatchResponseSchema.optional(),\n});\n\nexport const zeroTeamsBotContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/teams/bot\",\n body: z.unknown(),\n responses: {\n 200: teamsBotIngressResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Handle Microsoft Teams Bot Framework activities\",\n },\n});\n\nexport type TeamsActor = z.infer<typeof teamsActorSchema>;\nexport type TeamsInboundAttachment = z.infer<\n typeof teamsInboundAttachmentSchema\n>;\nexport type TeamsInboundActivity = z.infer<typeof teamsInboundActivitySchema>;\nexport type TeamsBotIngressResponse = z.infer<\n typeof teamsBotIngressResponseSchema\n>;\nexport type TeamsBotDispatchResponse = z.infer<\n typeof teamsBotDispatchResponseSchema\n>;\nexport type ZeroTeamsBotContract = typeof zeroTeamsBotContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst nullableStringSchema = z.string().nullable();\n\nconst teamsEnvironmentSchema = z.object({\n requiredSecrets: z.array(z.string()),\n requiredVars: z.array(z.string()),\n missingSecrets: z.array(z.string()),\n missingVars: z.array(z.string()),\n});\n\nconst teamsConnectStatusSchema = z.object({\n isInstalled: z.boolean(),\n isConnected: z.boolean(),\n isAdmin: z.boolean(),\n installUrl: nullableStringSchema.optional(),\n connectUrl: nullableStringSchema.optional(),\n tenantId: nullableStringSchema.optional(),\n tenantName: nullableStringSchema.optional(),\n teamId: nullableStringSchema.optional(),\n teamName: nullableStringSchema.optional(),\n defaultAgentName: nullableStringSchema.optional(),\n agentOrgSlug: nullableStringSchema.optional(),\n permissionMismatch: z.boolean().optional(),\n reinstallUrl: nullableStringSchema.optional(),\n environment: teamsEnvironmentSchema.optional(),\n});\n\nconst teamsConnectBodySchema = z\n .object({\n tenantId: z.string().min(1),\n tenantName: z.string().min(1).optional(),\n teamsUserId: z.string().min(1).optional(),\n teamsAadObjectId: z.string().min(1).optional(),\n teamsUserDisplayName: z.string().min(1).optional(),\n teamsUserPrincipalName: z.string().min(1).optional(),\n teamId: z.string().min(1).optional(),\n teamName: z.string().min(1).optional(),\n serviceUrl: z.string().min(1).optional(),\n conversationId: z.string().min(1).optional(),\n conversationType: z.string().min(1).optional(),\n activityId: z.string().min(1).optional(),\n channelId: z.string().min(1).optional(),\n threadId: z.string().min(1).optional(),\n })\n .refine(\n (body) => {\n return Boolean(body.teamsUserId || body.teamsAadObjectId);\n },\n {\n message: \"teamsUserId or teamsAadObjectId is required\",\n path: [\"teamsUserId\"],\n },\n );\n\nconst teamsConnectResponseSchema = z.object({\n success: z.literal(true),\n connectionId: z.string(),\n role: z.enum([\"admin\", \"member\"]),\n});\n\nconst teamsDisconnectResponseSchema = z.object({\n success: z.literal(true),\n});\n\nexport const zeroTeamsConnectContract = c.router({\n getStatus: {\n method: \"GET\",\n path: \"/api/zero/integrations/teams/connect\",\n headers: authHeadersSchema,\n responses: {\n 200: teamsConnectStatusSchema,\n 401: apiErrorSchema,\n },\n summary: \"Check user Microsoft Teams connection status\",\n },\n connect: {\n method: \"POST\",\n path: \"/api/zero/integrations/teams/connect\",\n headers: authHeadersSchema,\n body: teamsConnectBodySchema,\n responses: {\n 200: teamsConnectResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Connect user to Microsoft Teams installation\",\n },\n disconnect: {\n method: \"DELETE\",\n path: \"/api/zero/integrations/teams/connect\",\n headers: authHeadersSchema,\n query: z.object({\n action: z.string().optional(),\n }),\n responses: {\n 200: teamsDisconnectResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disconnect user from Microsoft Teams installation\",\n },\n});\n\nexport type TeamsConnectStatus = z.infer<typeof teamsConnectStatusSchema>;\nexport type TeamsConnectBody = z.infer<typeof teamsConnectBodySchema>;\nexport type TeamsConnectResponse = z.infer<typeof teamsConnectResponseSchema>;\nexport type TeamsDisconnectResponse = z.infer<\n typeof teamsDisconnectResponseSchema\n>;\nexport type ZeroTeamsConnectContract = typeof zeroTeamsConnectContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const zeroTeamsBrowserConnectQuerySchema = z.object({\n tenantId: z.string().optional(),\n tenantName: z.string().optional(),\n teamsUserId: z.string().optional(),\n teamsAadObjectId: z.string().optional(),\n teamsUserDisplayName: z.string().optional(),\n teamsUserPrincipalName: z.string().optional(),\n displayName: z.string().optional(),\n upn: z.string().optional(),\n teamId: z.string().optional(),\n teamName: z.string().optional(),\n serviceUrl: z.string().optional(),\n conversationId: z.string().optional(),\n conversationType: z.string().optional(),\n activityId: z.string().optional(),\n channelId: z.string().optional(),\n threadId: z.string().optional(),\n orgId: z.string().optional(),\n});\n\nexport const zeroTeamsBrowserConnectContract = c.router({\n connect: {\n method: \"GET\",\n path: \"/api/zero/teams/connect\",\n query: zeroTeamsBrowserConnectQuerySchema,\n responses: {\n 307: c.noBody(),\n 500: z.object({ error: z.string() }),\n },\n summary: \"Browser Microsoft Teams connect flow\",\n },\n});\n\nexport type ZeroTeamsBrowserConnectContract =\n typeof zeroTeamsBrowserConnectContract;\nexport type ZeroTeamsBrowserConnectQuery = z.infer<\n typeof zeroTeamsBrowserConnectQuerySchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nconst jsonErrorSchema = z.object({ error: z.string() });\n\nexport const zeroTeamsOauthConnectQuerySchema = z.object({\n orgId: z.string().optional(),\n vm0UserId: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport const zeroTeamsOauthCallbackQuerySchema = z.object({\n code: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n state: z.string().optional(),\n});\n\nexport const zeroTeamsOauthContract = c.router({\n connect: {\n method: \"GET\",\n path: \"/api/zero/teams/oauth/connect\",\n query: zeroTeamsOauthConnectQuerySchema,\n responses: {\n 307: c.noBody(),\n 400: jsonErrorSchema,\n 503: jsonErrorSchema,\n },\n summary: \"Start Microsoft Teams user OAuth connect\",\n },\n callback: {\n method: \"GET\",\n path: \"/api/zero/teams/oauth/callback\",\n query: zeroTeamsOauthCallbackQuerySchema,\n responses: {\n 307: c.noBody(),\n 400: jsonErrorSchema,\n 503: jsonErrorSchema,\n },\n summary: \"Handle Microsoft Teams OAuth callback\",\n },\n});\n\nexport type ZeroTeamsOauthContract = typeof zeroTeamsOauthContract;\nexport type ZeroTeamsOauthConnectQuery = z.infer<\n typeof zeroTeamsOauthConnectQuerySchema\n>;\nexport type ZeroTeamsOauthCallbackQuery = z.infer<\n typeof zeroTeamsOauthCallbackQuerySchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const zeroSlackInteractiveContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/slack/interactive\",\n body: c.type<string>(),\n responses: {\n 200: z.unknown(),\n 400: z.object({ error: z.string() }),\n 401: z.object({ error: z.string() }),\n 503: z.object({ error: z.string() }),\n },\n summary: \"Handle Zero Slack interactive component callbacks\",\n },\n});\n\nexport type ZeroSlackInteractiveContract = typeof zeroSlackInteractiveContract;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nexport const zeroSlackBrowserConnectQuerySchema = z.object({\n w: z.string().optional(),\n u: z.string().optional(),\n c: z.string().optional(),\n t: z.string().optional(),\n orgId: z.string().optional(),\n});\n\nexport const zeroSlackBrowserConnectContract = c.router({\n connect: {\n method: \"GET\",\n path: \"/api/zero/slack/connect\",\n query: zeroSlackBrowserConnectQuerySchema,\n responses: {\n 307: c.noBody(),\n 500: z.object({ error: z.string() }),\n },\n summary: \"Browser Slack connect flow\",\n },\n});\n\nexport type ZeroSlackBrowserConnectContract =\n typeof zeroSlackBrowserConnectContract;\nexport type ZeroSlackBrowserConnectQuery = z.infer<\n typeof zeroSlackBrowserConnectQuerySchema\n>;\n","import { z } from \"zod\";\n\nimport { initContract } from \"./base\";\n\nconst c = initContract();\n\nconst jsonErrorSchema = z.object({ error: z.string() });\n\nexport const zeroSlackOauthInstallQuerySchema = z.object({\n orgId: z.string().optional(),\n vm0UserId: z.string().optional(),\n reinstall: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport const zeroSlackOauthConnectQuerySchema = z.object({\n orgId: z.string().optional(),\n vm0UserId: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport const zeroSlackOauthCallbackQuerySchema = z.object({\n code: z.string().optional(),\n error: z.string().optional(),\n state: z.string().optional(),\n});\n\nexport const zeroSlackOauthContract = c.router({\n install: {\n method: \"GET\",\n path: \"/api/zero/slack/oauth/install\",\n query: zeroSlackOauthInstallQuerySchema,\n responses: {\n 307: c.noBody(),\n 503: jsonErrorSchema,\n },\n summary: \"Start Slack bot OAuth install\",\n },\n connect: {\n method: \"GET\",\n path: \"/api/zero/slack/oauth/connect\",\n query: zeroSlackOauthConnectQuerySchema,\n responses: {\n 307: c.noBody(),\n 400: jsonErrorSchema,\n 404: jsonErrorSchema,\n 503: jsonErrorSchema,\n },\n summary: \"Start Slack user OAuth connect\",\n },\n callback: {\n method: \"GET\",\n path: \"/api/zero/slack/oauth/callback\",\n query: zeroSlackOauthCallbackQuerySchema,\n responses: {\n 307: c.noBody(),\n 400: jsonErrorSchema,\n 503: jsonErrorSchema,\n },\n summary: \"Handle Slack OAuth callback\",\n },\n});\n\nexport type ZeroSlackOauthContract = typeof zeroSlackOauthContract;\nexport type ZeroSlackOauthInstallQuery = z.infer<\n typeof zeroSlackOauthInstallQuerySchema\n>;\nexport type ZeroSlackOauthConnectQuery = z.infer<\n typeof zeroSlackOauthConnectQuerySchema\n>;\nexport type ZeroSlackOauthCallbackQuery = z.infer<\n typeof zeroSlackOauthCallbackQuerySchema\n>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst slackChannelSchema = z.object({\n id: z.string(),\n name: z.string(),\n});\n\n/**\n * Zero Slack channels contract (GET /api/zero/slack/channels)\n * Lists Slack channels where the bot is a member.\n */\nexport const zeroSlackChannelsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/slack/channels\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({ channels: z.array(slackChannelSchema) }),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List Slack channels where bot is a member\",\n },\n});\n\nexport type ZeroSlackChannelsContract = typeof zeroSlackChannelsContract;\nexport type SlackChannel = z.infer<typeof slackChannelSchema>;\nexport { slackChannelSchema };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst queuePositionResponseSchema = z.object({\n position: z.number(),\n total: z.number(),\n});\n\n/**\n * Zero queue position contract (GET /api/zero/queue-position)\n * Returns the position of a queued run within its org queue.\n */\nexport const zeroQueuePositionContract = c.router({\n getPosition: {\n method: \"GET\",\n path: \"/api/zero/queue-position\",\n headers: authHeadersSchema,\n query: z.object({\n runId: z.string().min(1, \"runId is required\"),\n }),\n responses: {\n 200: queuePositionResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get queue position for a run\",\n },\n});\n\nexport type ZeroQueuePositionContract = typeof zeroQueuePositionContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst reportErrorBodySchema = z.object({\n runId: z.uuid(\"Run ID must be a valid UUID\"),\n title: z.string().min(1, \"Title is required\"),\n description: z.string().optional(),\n});\n\nconst reportErrorResponseSchema = z.object({\n reference: z.string(),\n});\n\nexport const zeroReportErrorContract = c.router({\n submit: {\n method: \"POST\",\n path: \"/api/zero/report-error\",\n headers: authHeadersSchema,\n body: reportErrorBodySchema,\n responses: {\n 200: reportErrorResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Submit error report for a failed run\",\n },\n});\n\nexport type ZeroReportErrorContract = typeof zeroReportErrorContract;\nexport { reportErrorBodySchema, reportErrorResponseSchema };\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst insightAgentSchema = z.object({\n agentName: z.string(),\n agentId: z.string().nullable(),\n runs: z.number(),\n credits: z.number(),\n});\n\nconst insightServiceSchema = z.object({\n domain: z.string(),\n calls: z.number(),\n agentNames: z.array(z.string()),\n});\n\nconst insightPermissionSchema = z.object({\n label: z.string(),\n connectorType: z.string().optional(),\n allowed: z.number(),\n denied: z.number(),\n agentNames: z.array(z.string()),\n});\n\nconst insightTopTaskSchema = z.object({\n name: z.string(),\n count: z.number(),\n});\n\nconst insightMemberCreditsSchema = z.object({\n name: z.string(),\n credits: z.number(),\n agentNames: z.array(z.string()).optional(),\n agentCredits: z.record(z.string(), z.number()).optional(),\n});\n\nconst insightDayAutomationSchema = z.object({\n automationId: z.string(),\n automationName: z.string(),\n automationDescription: z.string().nullable(),\n credits: z.number(),\n tokens: z.number(),\n});\n\nconst insightDayChatSchema = z.object({\n threadId: z.string(),\n threadTitle: z.string().nullable(),\n credits: z.number(),\n tokens: z.number(),\n});\n\nconst dayInsightSchema = z.object({\n date: z.string(),\n agents: z.array(insightAgentSchema).default([]),\n creditsUsed: z.number().default(0),\n creditBalance: z.number().default(0),\n teamUsage: z.array(insightMemberCreditsSchema).default([]),\n topTask: insightTopTaskSchema.nullable().default(null),\n services: z.array(insightServiceSchema).default([]),\n permissions: z.array(insightPermissionSchema).default([]),\n automations: z.array(insightDayAutomationSchema).default([]),\n chats: z.array(insightDayChatSchema).default([]),\n});\n\nconst insightsResponseSchema = z.object({\n days: z.array(dayInsightSchema),\n totalCredits: z.number(),\n totalRuns: z.number(),\n lastUpdated: z.string().nullable(),\n});\n\nconst insightsRangeResponseSchema = z.object({\n minDate: z.string().nullable(),\n maxDate: z.string().nullable(),\n totalDays: z.number(),\n});\n\nexport const zeroInsightsContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/insights\",\n headers: authHeadersSchema,\n query: z.object({\n days: z.coerce.number().optional(),\n }),\n responses: {\n 200: insightsResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Get daily insights for the authenticated org\",\n },\n});\n\nexport const zeroInsightsRangeContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/insights/range\",\n headers: authHeadersSchema,\n responses: {\n 200: insightsRangeResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Get available date range for org insights\",\n },\n});\n\nexport type ZeroInsightsContract = typeof zeroInsightsContract;\nexport type ZeroInsightsRangeContract = typeof zeroInsightsRangeContract;\nexport type InsightsResponse = z.infer<typeof insightsResponseSchema>;\nexport type InsightsRangeResponse = z.infer<typeof insightsRangeResponseSchema>;\nexport type DayInsight = z.infer<typeof dayInsightSchema>;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const pushSubscriptionsContract = c.router({\n register: {\n method: \"POST\",\n path: \"/api/zero/push-subscriptions\",\n headers: authHeadersSchema,\n body: z.object({\n endpoint: z.string().url(),\n keys: z.object({\n p256dh: z.string().min(1),\n auth: z.string().min(1),\n }),\n }),\n responses: {\n 201: z.object({ success: z.literal(true) }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Register a Web Push subscription for the current user\",\n },\n});\n\nexport type PushSubscriptionsContract = typeof pushSubscriptionsContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { zeroBuiltInGenerationAcceptedResponseSchema } from \"./zero-built-in-generation\";\n\nconst c = initContract();\nconst stringOrStringArraySchema = z.union([\n z.string(),\n z.array(z.string()).readonly(),\n]);\nconst numberOrStringSchema = z.union([z.number(), z.string()]);\n\nexport const zeroImageIoGenerateRequestSchema = z\n .object({\n prompt: z.string().optional(),\n model: z.string().optional(),\n size: z.string().optional(),\n quality: z.string().optional(),\n background: z.string().optional(),\n outputFormat: z.string().optional(),\n outputCompression: numberOrStringSchema.optional(),\n moderation: z.string().optional(),\n seed: numberOrStringSchema.optional(),\n safetyTolerance: z.string().optional(),\n enhancePrompt: z.boolean().optional(),\n imageUrl: stringOrStringArraySchema.optional(),\n image_url: stringOrStringArraySchema.optional(),\n imageUrls: stringOrStringArraySchema.optional(),\n image_urls: stringOrStringArraySchema.optional(),\n maskImageUrl: z.string().optional(),\n mask_image_url: z.string().optional(),\n inputFidelity: z.string().optional(),\n input_fidelity: z.string().optional(),\n imagePromptStrength: numberOrStringSchema.optional(),\n image_prompt_strength: numberOrStringSchema.optional(),\n })\n .passthrough();\n\nexport const zeroImageIoGenerateResponseSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n url: z.string(),\n creditsCharged: z.number(),\n model: z.string(),\n provider: z.string(),\n imageSize: z.string(),\n quality: z.string(),\n background: z.string(),\n outputFormat: z.string(),\n outputCompression: z.number().optional(),\n moderation: z.string().optional(),\n safetyTolerance: z.string().optional(),\n revisedPrompt: z.string().optional(),\n billingCategory: z.string().optional(),\n billingQuantity: z.number().optional(),\n sourceUrl: z.string().optional(),\n seed: z.number().optional(),\n sourceImageUrls: z.array(z.string()).optional(),\n maskImageUrl: z.string().optional(),\n inputFidelity: z.string().optional(),\n imagePromptStrength: z.number().optional(),\n});\n\nexport type ZeroImageIoGenerateRequest = z.infer<\n typeof zeroImageIoGenerateRequestSchema\n>;\nexport type ZeroImageIoGenerateResponse = z.infer<\n typeof zeroImageIoGenerateResponseSchema\n>;\n\nexport const zeroImageIoGenerateContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/image-io/generate\",\n headers: authHeadersSchema,\n body: zeroImageIoGenerateRequestSchema,\n responses: {\n 200: zeroImageIoGenerateResponseSchema,\n 202: zeroBuiltInGenerationAcceptedResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Generate and persist an image file\",\n },\n});\n\nexport type ZeroImageIoGenerateContract = typeof zeroImageIoGenerateContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { ablyTokenRequestSchema } from \"./realtime\";\n\nconst c = initContract();\n\nexport const zeroBuiltInGenerationTypeSchema = z.enum([\n \"image\",\n \"video\",\n \"presentation\",\n \"website\",\n]);\n\nexport const zeroBuiltInGenerationStatusSchema = z.enum([\n \"queued\",\n \"running\",\n \"completed\",\n \"failed\",\n]);\n\nexport const zeroBuiltInGenerationRealtimeSubscriptionSchema = z.object({\n channelName: z.string(),\n eventName: z.string(),\n tokenRequest: ablyTokenRequestSchema,\n});\n\nexport const zeroBuiltInGenerationAcceptedResponseSchema = z.object({\n generationId: z.string().uuid(),\n type: zeroBuiltInGenerationTypeSchema,\n status: z.literal(\"queued\"),\n realtime: zeroBuiltInGenerationRealtimeSubscriptionSchema,\n});\n\nexport const zeroBuiltInGenerationErrorSchema = z.object({\n message: z.string(),\n code: z.string(),\n});\n\nexport const zeroBuiltInGenerationResponseSchema = z.object({\n generationId: z.string().uuid(),\n type: zeroBuiltInGenerationTypeSchema,\n status: zeroBuiltInGenerationStatusSchema,\n result: z.record(z.string(), z.unknown()).optional(),\n error: zeroBuiltInGenerationErrorSchema.optional(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n});\n\nexport type ZeroBuiltInGenerationType = z.infer<\n typeof zeroBuiltInGenerationTypeSchema\n>;\nexport type ZeroBuiltInGenerationStatus = z.infer<\n typeof zeroBuiltInGenerationStatusSchema\n>;\nexport type ZeroBuiltInGenerationRealtimeSubscription = z.infer<\n typeof zeroBuiltInGenerationRealtimeSubscriptionSchema\n>;\nexport type ZeroBuiltInGenerationAcceptedResponse = z.infer<\n typeof zeroBuiltInGenerationAcceptedResponseSchema\n>;\nexport type ZeroBuiltInGenerationResponse = z.infer<\n typeof zeroBuiltInGenerationResponseSchema\n>;\n\nexport const zeroBuiltInGenerationContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/built-in-generations/:generationId\",\n headers: authHeadersSchema,\n pathParams: z.object({\n generationId: z.string().uuid(),\n }),\n responses: {\n 200: zeroBuiltInGenerationResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get a built-in generation job\",\n },\n});\n\nexport type ZeroBuiltInGenerationContract =\n typeof zeroBuiltInGenerationContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// Shared so the UI can enforce the same bounds it validates against and the two\n// can't drift.\nexport const ZERO_IMAGE_INTERPRET_MARKS_MAX_REGIONS = 16;\nexport const ZERO_IMAGE_INTERPRET_MARKS_MAX_INSTRUCTION_LENGTH = 2000;\n\nexport const zeroImageIoInterpretMarksRegionSchema = z.object({\n id: z.string().min(1),\n // The number drawn on the image for this region (1-based).\n mark: z.number().int().min(1),\n instruction: z\n .string()\n .min(1)\n .max(ZERO_IMAGE_INTERPRET_MARKS_MAX_INSTRUCTION_LENGTH),\n location: z.string().max(500).optional(),\n});\nexport type ZeroImageIoInterpretMarksRegion = z.infer<\n typeof zeroImageIoInterpretMarksRegionSchema\n>;\n\nexport const zeroImageIoInterpretMarksRequestSchema = z.object({\n // Data URI or URL of the source image with numbered marks drawn on it.\n imageUrl: z.string().min(1),\n regions: z\n .array(zeroImageIoInterpretMarksRegionSchema)\n .min(1)\n .max(ZERO_IMAGE_INTERPRET_MARKS_MAX_REGIONS)\n .readonly(),\n});\nexport type ZeroImageIoInterpretMarksRequest = z.infer<\n typeof zeroImageIoInterpretMarksRequestSchema\n>;\n\nexport const zeroImageIoInterpretMarksResultSchema = z.object({\n id: z.string(),\n // The disambiguated object/area the mark refers to, e.g. \"the dog's black\n // nose in the centre (not the tongue below it)\".\n target: z.string(),\n // The self-contained edit instruction to apply to that target.\n edit: z.string(),\n confidence: z.number().min(0).max(100),\n});\nexport type ZeroImageIoInterpretMarksResult = z.infer<\n typeof zeroImageIoInterpretMarksResultSchema\n>;\n\nexport const zeroImageIoInterpretMarksResponseSchema = z.object({\n regions: z.array(zeroImageIoInterpretMarksResultSchema),\n});\nexport type ZeroImageIoInterpretMarksResponse = z.infer<\n typeof zeroImageIoInterpretMarksResponseSchema\n>;\n\nexport const zeroImageIoInterpretMarksContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/image-io/interpret-marks\",\n headers: authHeadersSchema,\n body: zeroImageIoInterpretMarksRequestSchema,\n responses: {\n 200: zeroImageIoInterpretMarksResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Interpret numbered region marks into targeted edit instructions\",\n },\n});\n\nexport type ZeroImageIoInterpretMarksContract =\n typeof zeroImageIoInterpretMarksContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroImageShareXRequestSchema = z.object({\n imageUrl: z.string().min(1),\n caption: z.string().max(280).optional(),\n});\n\nexport const zeroImageShareXResponseSchema = z.object({\n tweetId: z.string(),\n tweetUrl: z.string(),\n});\n\nexport type ZeroImageShareXRequest = z.infer<\n typeof zeroImageShareXRequestSchema\n>;\nexport type ZeroImageShareXResponse = z.infer<\n typeof zeroImageShareXResponseSchema\n>;\n\nexport const zeroImageShareXContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/image-share/x\",\n headers: authHeadersSchema,\n body: zeroImageShareXRequestSchema,\n responses: {\n 200: zeroImageShareXResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Share an image to X\",\n },\n});\n\nexport type ZeroImageShareXContract = typeof zeroImageShareXContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst dateOnlySchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be formatted as YYYY-MM-DD\");\n\nexport const zeroBankingProviderSchema = z.literal(\"finicity\");\n\nexport const zeroBankingAccountSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n institutionName: z.string().nullable(),\n type: z.string().nullable(),\n last4: z.string().nullable(),\n status: z.string().nullable(),\n currency: z.string().nullable(),\n});\n\nexport const zeroBankingBalanceSchema = z.object({\n accountId: z.string(),\n name: z.string().nullable(),\n type: z.string().nullable(),\n balance: z.number().nullable(),\n availableBalance: z.number().nullable(),\n currency: z.string().nullable(),\n balanceDate: z.number().nullable(),\n});\n\nexport const zeroBankingTransactionSchema = z.object({\n id: z.string(),\n accountId: z.string(),\n amount: z.number().nullable(),\n description: z.string().nullable(),\n memo: z.string().nullable(),\n postedDate: z.number().nullable(),\n transactionDate: z.number().nullable(),\n status: z.string().nullable(),\n categorization: z.string().nullable(),\n merchant: z.string().nullable(),\n});\n\nexport const zeroBankingAccountsResponseSchema = z.object({\n operation: z.literal(\"accounts\"),\n provider: zeroBankingProviderSchema,\n accounts: z.array(zeroBankingAccountSchema),\n});\n\nexport const zeroBankingBalancesRequestSchema = z.object({\n accountId: z.string().trim().min(1),\n});\n\nexport const zeroBankingBalancesResponseSchema = z.object({\n operation: z.literal(\"balances\"),\n provider: zeroBankingProviderSchema,\n balance: zeroBankingBalanceSchema,\n});\n\nexport const zeroBankingTransactionsRequestSchema = z.object({\n accountId: z.string().trim().min(1),\n from: dateOnlySchema,\n to: dateOnlySchema,\n limit: z.number().int().min(1).max(1000).default(100),\n});\n\nexport const zeroBankingTransactionsResponseSchema = z.object({\n operation: z.literal(\"transactions\"),\n provider: zeroBankingProviderSchema,\n accountId: z.string(),\n transactions: z.array(zeroBankingTransactionSchema),\n});\n\nconst zeroBankingAccountsResponses = {\n 200: zeroBankingAccountsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nconst zeroBankingBalancesResponses = {\n 200: zeroBankingBalancesResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nconst zeroBankingTransactionsResponses = {\n 200: zeroBankingTransactionsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroBankingContract = c.router({\n accounts: {\n method: \"POST\",\n path: \"/api/zero/banking/accounts\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: zeroBankingAccountsResponses,\n summary: \"List accounts through the managed Zero Banking gateway\",\n },\n balances: {\n method: \"POST\",\n path: \"/api/zero/banking/balances\",\n headers: authHeadersSchema,\n body: zeroBankingBalancesRequestSchema,\n responses: zeroBankingBalancesResponses,\n summary: \"Read an account balance through the managed Zero Banking gateway\",\n },\n transactions: {\n method: \"POST\",\n path: \"/api/zero/banking/transactions\",\n headers: authHeadersSchema,\n body: zeroBankingTransactionsRequestSchema,\n responses: zeroBankingTransactionsResponses,\n summary:\n \"Read account transactions through the managed Zero Banking gateway\",\n },\n});\n\nexport type ZeroBankingContract = typeof zeroBankingContract;\nexport type ZeroBankingAccount = z.infer<typeof zeroBankingAccountSchema>;\nexport type ZeroBankingBalance = z.infer<typeof zeroBankingBalanceSchema>;\nexport type ZeroBankingTransaction = z.infer<\n typeof zeroBankingTransactionSchema\n>;\nexport type ZeroBankingAccountsResponse = z.infer<\n typeof zeroBankingAccountsResponseSchema\n>;\nexport type ZeroBankingBalancesRequest = z.infer<\n typeof zeroBankingBalancesRequestSchema\n>;\nexport type ZeroBankingBalancesResponse = z.infer<\n typeof zeroBankingBalancesResponseSchema\n>;\nexport type ZeroBankingTransactionsRequest = z.infer<\n typeof zeroBankingTransactionsRequestSchema\n>;\nexport type ZeroBankingTransactionsResponse = z.infer<\n typeof zeroBankingTransactionsResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst travelModeSchema = z.enum([\"driving\", \"walking\", \"bicycling\", \"transit\"]);\nconst placeSearchFieldsetSchema = z.enum([\"pro\", \"enterprise\"]);\nconst placeDetailFieldsetSchema = z.enum([\"essentials\", \"pro\", \"enterprise\"]);\nconst osmLayerSchema = z.enum([\"roads\", \"buildings\", \"water\", \"parks\"]);\nconst osmStyleSchema = z.enum([\"standard\", \"guide\"]);\nconst osmBBoxSchema = z.object({\n west: z.number().min(-180).max(180),\n south: z.number().min(-90).max(90),\n east: z.number().min(-180).max(180),\n north: z.number().min(-90).max(90),\n});\nconst osmCenterSchema = z.object({\n lat: z.number().min(-90).max(90),\n lng: z.number().min(-180).max(180),\n});\nconst osmMarkerSchema = z.object({\n lat: z.number().min(-90).max(90),\n lng: z.number().min(-180).max(180),\n label: z.string().trim().min(1).max(80).optional(),\n});\nconst osmAreaRequestBaseSchema = z.object({\n bbox: osmBBoxSchema.optional(),\n center: osmCenterSchema.optional(),\n radiusMeters: z.number().int().min(50).max(5_000).optional(),\n});\nconst defaultOsmLayers = [\"roads\", \"buildings\", \"water\", \"parks\"] as const;\n\nfunction validateOsmArea<T extends z.infer<typeof osmAreaRequestBaseSchema>>(\n schema: z.ZodType<T>,\n) {\n return schema\n .refine((value) => {\n return value.bbox !== undefined\n ? value.center === undefined && value.radiusMeters === undefined\n : value.center !== undefined && value.radiusMeters !== undefined;\n }, \"Provide either bbox or center with radiusMeters\")\n .refine((value) => {\n if (!value.bbox) {\n return true;\n }\n return (\n value.bbox.east > value.bbox.west && value.bbox.north > value.bbox.south\n );\n }, \"bbox east/north must be greater than west/south\");\n}\n\nexport const zeroMapsOperationSchema = z.enum([\n \"geocode\",\n \"reverse-geocode\",\n \"directions\",\n \"places.search\",\n \"places.details\",\n \"osm.download\",\n \"osm.render\",\n]);\n\nexport const zeroMapsResponseSchema = z.object({\n operation: zeroMapsOperationSchema,\n provider: z.enum([\"google-maps\", \"openstreetmap\"]),\n creditsCharged: z.number(),\n billingCategory: z.string(),\n billingQuantity: z.number(),\n result: z.unknown(),\n});\n\nexport const zeroMapsGeocodeRequestSchema = z.object({\n address: z.string().trim().min(1),\n region: z.string().trim().min(1).optional(),\n});\n\nexport const zeroMapsReverseGeocodeRequestSchema = z.object({\n lat: z.number().min(-90).max(90),\n lng: z.number().min(-180).max(180),\n});\n\nexport const zeroMapsDirectionsRequestSchema = z.object({\n origin: z.string().trim().min(1),\n destination: z.string().trim().min(1),\n mode: travelModeSchema.default(\"driving\"),\n departureTime: z.string().trim().min(1).optional(),\n});\n\nexport const zeroMapsPlacesSearchRequestSchema = z.object({\n query: z.string().trim().min(1),\n location: z.string().trim().min(1).optional(),\n radius: z.number().int().positive().optional(),\n limit: z.number().int().min(1).max(20).default(5),\n region: z.string().trim().min(1).optional(),\n fields: placeSearchFieldsetSchema.default(\"pro\"),\n});\n\nexport const zeroMapsPlacesDetailsRequestSchema = z.object({\n placeId: z.string().trim().min(1),\n fields: placeDetailFieldsetSchema.default(\"essentials\"),\n});\n\nexport const zeroMapsOsmDownloadRequestSchema = validateOsmArea(\n osmAreaRequestBaseSchema.extend({\n layers: z\n .array(osmLayerSchema)\n .min(1)\n .max(4)\n .default(() => {\n return [...defaultOsmLayers];\n }),\n }),\n);\n\nexport const zeroMapsOsmRenderRequestSchema = validateOsmArea(\n osmAreaRequestBaseSchema.extend({\n layers: z\n .array(osmLayerSchema)\n .min(1)\n .max(4)\n .default(() => {\n return [...defaultOsmLayers];\n }),\n width: z.number().int().min(320).max(2_048).default(1_536),\n height: z.number().int().min(240).max(2_048).default(1_024),\n style: osmStyleSchema.default(\"standard\"),\n title: z.string().trim().min(1).max(120).optional(),\n markers: z.array(osmMarkerSchema).max(100).default([]),\n }),\n);\n\nexport type ZeroMapsResponse = z.infer<typeof zeroMapsResponseSchema>;\nexport type ZeroMapsGeocodeRequest = z.infer<\n typeof zeroMapsGeocodeRequestSchema\n>;\nexport type ZeroMapsReverseGeocodeRequest = z.infer<\n typeof zeroMapsReverseGeocodeRequestSchema\n>;\nexport type ZeroMapsDirectionsRequest = z.infer<\n typeof zeroMapsDirectionsRequestSchema\n>;\nexport type ZeroMapsPlacesSearchRequest = z.infer<\n typeof zeroMapsPlacesSearchRequestSchema\n>;\nexport type ZeroMapsPlacesDetailsRequest = z.infer<\n typeof zeroMapsPlacesDetailsRequestSchema\n>;\nexport type ZeroMapsOsmDownloadRequest = z.infer<\n typeof zeroMapsOsmDownloadRequestSchema\n>;\nexport type ZeroMapsOsmRenderRequest = z.infer<\n typeof zeroMapsOsmRenderRequestSchema\n>;\n\nconst mapsResponses = {\n 200: zeroMapsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroMapsContract = c.router({\n geocode: {\n method: \"POST\",\n path: \"/api/zero/maps/geocode\",\n headers: authHeadersSchema,\n body: zeroMapsGeocodeRequestSchema,\n responses: mapsResponses,\n summary: \"Geocode an address through managed Zero Maps\",\n },\n reverseGeocode: {\n method: \"POST\",\n path: \"/api/zero/maps/reverse-geocode\",\n headers: authHeadersSchema,\n body: zeroMapsReverseGeocodeRequestSchema,\n responses: mapsResponses,\n summary: \"Reverse geocode coordinates through managed Zero Maps\",\n },\n directions: {\n method: \"POST\",\n path: \"/api/zero/maps/directions\",\n headers: authHeadersSchema,\n body: zeroMapsDirectionsRequestSchema,\n responses: mapsResponses,\n summary: \"Compute directions through managed Zero Maps\",\n },\n placesSearch: {\n method: \"POST\",\n path: \"/api/zero/maps/places/search\",\n headers: authHeadersSchema,\n body: zeroMapsPlacesSearchRequestSchema,\n responses: mapsResponses,\n summary: \"Search places through managed Zero Maps\",\n },\n placesDetails: {\n method: \"POST\",\n path: \"/api/zero/maps/places/details\",\n headers: authHeadersSchema,\n body: zeroMapsPlacesDetailsRequestSchema,\n responses: mapsResponses,\n summary: \"Fetch place details through managed Zero Maps\",\n },\n osmDownload: {\n method: \"POST\",\n path: \"/api/zero/maps/osm/download\",\n headers: authHeadersSchema,\n body: zeroMapsOsmDownloadRequestSchema,\n responses: mapsResponses,\n summary: \"Download OpenStreetMap features through managed Zero Maps\",\n },\n osmRender: {\n method: \"POST\",\n path: \"/api/zero/maps/osm/render\",\n headers: authHeadersSchema,\n body: zeroMapsOsmRenderRequestSchema,\n responses: mapsResponses,\n summary: \"Render OpenStreetMap features to PNG through managed Zero Maps\",\n },\n});\n\nexport type ZeroMapsContract = typeof zeroMapsContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { zeroBuiltInGenerationAcceptedResponseSchema } from \"./zero-built-in-generation\";\n\nconst c = initContract();\nconst stringOrStringArraySchema = z.union([\n z.string(),\n z.array(z.string()).readonly(),\n]);\n\nexport const zeroVideoIoGenerateRequestSchema = z\n .object({\n prompt: z.string().optional(),\n model: z.string().optional(),\n aspectRatio: z.string().optional(),\n duration: z.string().optional(),\n resolution: z.string().optional(),\n generateAudio: z.boolean().optional(),\n negativePrompt: z.string().optional(),\n seed: z.number().optional(),\n autoFix: z.boolean().optional(),\n safetyTolerance: z.string().optional(),\n imageUrls: stringOrStringArraySchema.optional(),\n videoUrls: stringOrStringArraySchema.optional(),\n audioUrls: stringOrStringArraySchema.optional(),\n referenceImageUrls: stringOrStringArraySchema.optional(),\n referenceVideoUrls: stringOrStringArraySchema.optional(),\n referenceAudioUrls: stringOrStringArraySchema.optional(),\n firstFrameImageUrl: z.string().optional(),\n lastFrameImageUrl: z.string().optional(),\n })\n .passthrough();\n\nexport const zeroVideoIoGenerateResponseSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n url: z.string(),\n durationSeconds: z.number(),\n creditsCharged: z.number(),\n model: z.string(),\n aspectRatio: z.string(),\n duration: z.string(),\n resolution: z.string(),\n generateAudio: z.boolean(),\n sourceUrl: z.string(),\n requestId: z.string().optional(),\n});\n\nexport type ZeroVideoIoGenerateRequest = z.infer<\n typeof zeroVideoIoGenerateRequestSchema\n>;\nexport type ZeroVideoIoGenerateResponse = z.infer<\n typeof zeroVideoIoGenerateResponseSchema\n>;\n\nexport const zeroVideoIoGenerateContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/video-io/generate\",\n headers: authHeadersSchema,\n body: zeroVideoIoGenerateRequestSchema,\n responses: {\n 200: zeroVideoIoGenerateResponseSchema,\n 202: zeroBuiltInGenerationAcceptedResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n 504: apiErrorSchema,\n },\n summary: \"Generate and persist a video file\",\n },\n});\n\nexport type ZeroVideoIoGenerateContract = typeof zeroVideoIoGenerateContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const audioInputQuotaResponseSchema = z.object({\n allowed: z.boolean(),\n count: z.number().int().nonnegative(),\n limit: z.number().int().nonnegative().nullable(),\n});\nexport type AudioInputQuotaResponse = z.infer<\n typeof audioInputQuotaResponseSchema\n>;\n\n/**\n * Zero contract for GET /api/zero/voice-io/quota\n *\n * Returns the current audio input quota state for the authenticated org/user.\n * Used by the platform to drive mic-button gating without firing a doomed STT\n * request when a free-tier user has exhausted their quota.\n */\nexport const zeroVoiceIoQuotaContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/voice-io/quota\",\n headers: authHeadersSchema,\n responses: {\n 200: audioInputQuotaResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get audio input quota for current org/user\",\n },\n});\n\nexport type ZeroVoiceIoQuotaContract = typeof zeroVoiceIoQuotaContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroVoiceIoSpeechRequestSchema = z\n .object({\n text: z.string().optional(),\n voice: z.string().optional(),\n instructions: z.string().optional(),\n })\n .passthrough();\n\nexport const zeroVoiceIoSpeechResponseSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n url: z.string(),\n durationSeconds: z.number(),\n creditsCharged: z.number(),\n model: z.string(),\n voice: z.string(),\n});\n\nexport type ZeroVoiceIoSpeechRequest = z.infer<\n typeof zeroVoiceIoSpeechRequestSchema\n>;\nexport type ZeroVoiceIoSpeechResponse = z.infer<\n typeof zeroVoiceIoSpeechResponseSchema\n>;\n\nexport const zeroVoiceIoSpeechContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/voice-io/speech\",\n headers: authHeadersSchema,\n body: zeroVoiceIoSpeechRequestSchema,\n responses: {\n 200: zeroVoiceIoSpeechResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Generate and persist WAV speech audio\",\n },\n});\n\nexport type ZeroVoiceIoSpeechContract = typeof zeroVoiceIoSpeechContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroVoiceIoSttSegmentSchema = z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n});\n\nexport const zeroVoiceIoSttResponseSchema = z.object({\n text: z.string(),\n segments: z.array(zeroVoiceIoSttSegmentSchema).optional(),\n});\n\nexport const zeroVoiceIoSttQuotaErrorSchema = apiErrorSchema.extend({\n quota: z\n .object({\n count: z.number(),\n limit: z.number().nullable(),\n })\n .optional(),\n});\n\nexport type ZeroVoiceIoSttSegment = z.infer<typeof zeroVoiceIoSttSegmentSchema>;\nexport type ZeroVoiceIoSttResponse = z.infer<\n typeof zeroVoiceIoSttResponseSchema\n>;\n\nexport const zeroVoiceIoSttContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/zero/voice-io/stt\",\n headers: authHeadersSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n query: z.object({\n verbose: z.coerce.boolean().optional().default(false),\n }),\n responses: {\n 200: zeroVoiceIoSttResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: zeroVoiceIoSttQuotaErrorSchema,\n 403: apiErrorSchema,\n 429: zeroVoiceIoSttQuotaErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Transcribe audio input\",\n },\n});\n\nexport type ZeroVoiceIoSttContract = typeof zeroVoiceIoSttContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// ---------------------------------------------------------------------------\n// Schemas\n// ---------------------------------------------------------------------------\n\nconst prepareRequestSchema = z.object({\n filename: z.string().min(1).max(255),\n contentType: z.string().min(1).max(200),\n size: z.number().int().nonnegative(),\n});\n\nconst importImageRequestSchema = z.object({\n url: z.string().url(),\n});\n\nconst prepareResponseSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n /** Presigned PUT URL — browser uploads the file body here directly. */\n uploadUrl: z.string().url(),\n /** Public CDN URL returned to the app after upload succeeds. */\n url: z.string().url(),\n});\n\nconst completeRequestSchema = z.object({\n id: z.string().uuid(),\n contentType: z.string().min(1).max(200).optional(),\n});\n\nconst htmlDomEditSnapshotRequestSchema = z.object({\n filename: z.string().min(1).max(255),\n html: z.string().min(1),\n});\n\nconst completeResponseSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n url: z.string().url(),\n});\n\n// ---------------------------------------------------------------------------\n// Contract\n// ---------------------------------------------------------------------------\n\n/**\n * Zero contract for uploads.\n *\n * `prepare` issues a presigned PUT URL so the browser can send the file body\n * straight to R2, bypassing the Next.js runtime's body-size limits. `complete`\n * confirms the object exists after the PUT and persists run associations when\n * the request is authenticated with a run-scoped zero token.\n */\nexport const zeroUploadsContract = c.router({\n prepare: {\n method: \"POST\",\n path: \"/api/zero/uploads/prepare\",\n headers: authHeadersSchema,\n body: prepareRequestSchema,\n responses: {\n 200: prepareResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Prepare a direct-to-R2 upload\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/uploads/complete\",\n headers: authHeadersSchema,\n body: completeRequestSchema,\n responses: {\n 200: completeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Complete a direct-to-R2 upload\",\n },\n importImage: {\n method: \"POST\",\n path: \"/api/zero/uploads/import-image\",\n headers: authHeadersSchema,\n body: importImageRequestSchema,\n responses: {\n 200: completeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Import a remote image into user artifact storage\",\n },\n htmlDomEditSnapshot: {\n method: \"POST\",\n path: \"/api/zero/uploads/html-dom-edit-snapshot\",\n headers: authHeadersSchema,\n body: htmlDomEditSnapshotRequestSchema,\n responses: {\n 200: completeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upload an HTML DOM edit snapshot\",\n },\n});\n\nexport type ZeroUploadsContract = typeof zeroUploadsContract;\n\n// Inferred types\nexport type UploadPrepareResponse = z.infer<typeof prepareResponseSchema>;\nexport type UploadCompleteResponse = z.infer<typeof completeResponseSchema>;\nexport type UploadImportImageResponse = z.infer<typeof completeResponseSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n internalCallbackBodySchema,\n internalCallbackErrorSchema,\n internalCallbackHeadersSchema,\n internalCallbackSuccessSchema,\n} from \"./internal-callbacks-shared\";\n\nconst c = initContract();\n\nexport const OFFICIAL_TELEGRAM_BOT_ID = \"official\" as const;\n\nconst telegramEnvironmentSchema = z.object({\n requiredSecrets: z.array(z.string()),\n requiredVars: z.array(z.string()),\n missingSecrets: z.array(z.string()),\n missingVars: z.array(z.string()),\n});\n\nconst telegramTokenStatusSchema = z.enum([\"valid\", \"invalid\", \"unknown\"]);\n\nconst telegramConnectedUserSchema = z.object({\n telegramUserId: z.string(),\n telegramUsername: z.string().nullable(),\n telegramDisplayName: z.string().nullable(),\n});\n\nconst telegramBotSchema = z.object({\n id: z.string(),\n kind: z.enum([\"custom\", \"official\"]).optional(),\n username: z.string().nullable(),\n avatarUrl: z.string().nullable(),\n agent: z.object({ id: z.string(), name: z.string() }).nullable(),\n isOwner: z.boolean(),\n isConnected: z.boolean(),\n connectedUser: telegramConnectedUserSchema.nullable().optional(),\n tokenStatus: telegramTokenStatusSchema,\n official: z\n .object({\n configured: z.boolean(),\n usesDefaultAgent: z.boolean(),\n linkedTelegramUserId: z.string().nullable(),\n })\n .optional(),\n});\n\nconst telegramBotStatusSchema = telegramBotSchema.extend({\n domainConfigured: z.boolean(),\n environment: telegramEnvironmentSchema,\n});\n\nconst telegramListResponseSchema = z.object({\n bots: z.array(telegramBotSchema),\n});\n\nconst telegramUpdateBodySchema = z.object({\n defaultAgentId: z.string().trim().min(1).optional(),\n selectedAgentId: z.string().trim().min(1).nullable().optional(),\n});\n\nconst telegramLinkStatusResponseSchema = z.discriminatedUnion(\"linked\", [\n z.object({\n linked: z.literal(true),\n telegramUserId: z.string(),\n botUsername: z.string().optional(),\n }),\n z.object({\n linked: z.literal(false),\n installation: z\n .object({\n id: z.string(),\n botUsername: z.string(),\n loginBotId: z.string().optional(),\n domainConfigured: z.boolean().optional(),\n })\n .optional(),\n }),\n]);\n\nconst telegramConnectSignatureSchema = z.object({\n telegramUserId: z.string().min(1),\n telegramUsername: z.string().max(255).optional(),\n telegramDisplayName: z.string().max(255).optional(),\n timestamp: z.number(),\n signature: z.string().min(1),\n});\n\nconst telegramAuthSchema = z.object({\n id: z.number(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n username: z.string().optional(),\n photo_url: z.string().optional(),\n auth_date: z.number(),\n hash: z.string(),\n});\n\nconst telegramLinkBodySchema = z.object({\n telegramBotId: z.string().min(1),\n telegramAuth: telegramAuthSchema.optional(),\n connectSignature: telegramConnectSignatureSchema.optional(),\n});\n\nconst telegramLinkResponseSchema = z.object({\n botUsername: z.string(),\n telegramUserId: z.string(),\n});\n\nconst telegramRegisterBodySchema = z.object({\n botToken: z.string().min(1),\n defaultAgentId: z.string().trim().min(1).optional(),\n reinstallBotId: z.string().min(1).optional(),\n});\n\nconst telegramSetupStatusBodySchema = z.object({\n botToken: z.string().min(1),\n origin: z.string().optional(),\n});\n\nconst telegramSetupStatusSchema = z.object({\n id: z.string(),\n username: z.string().nullable(),\n domainConfigured: z.boolean(),\n privacyDisabled: z.boolean(),\n});\n\nconst telegramWebhookPathParamsSchema = z.object({\n telegramBotId: z.string().min(1),\n});\n\n/**\n * Zero integrations Telegram contract\n * Covers all Telegram integration endpoints.\n *\n * Path note: these endpoints use /api/integrations/ and /api/telegram/ (not /api/zero/)\n * because they are served by the platform app directly, not the Zero sub-application.\n * This is intentional and matches the real server routing.\n */\nexport const zeroIntegrationsTelegramContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/integrations/telegram\",\n headers: authHeadersSchema,\n responses: {\n 200: telegramListResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"List Telegram bot integrations in the authenticated user's org\",\n },\n getBot: {\n method: \"GET\",\n path: \"/api/integrations/telegram/:botId\",\n headers: authHeadersSchema,\n pathParams: z.object({ botId: z.string().min(1) }),\n responses: {\n 200: telegramBotStatusSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get Telegram bot integration status\",\n },\n updateBot: {\n method: \"PATCH\",\n path: \"/api/integrations/telegram/:botId\",\n headers: authHeadersSchema,\n pathParams: z.object({ botId: z.string().min(1) }),\n body: telegramUpdateBodySchema,\n responses: {\n 200: telegramBotStatusSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update the default agent for the Telegram bot\",\n },\n disconnect: {\n method: \"DELETE\",\n path: \"/api/integrations/telegram/:botId\",\n headers: authHeadersSchema,\n pathParams: z.object({ botId: z.string().min(1) }),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Uninstall the Telegram bot\",\n },\n unlink: {\n method: \"DELETE\",\n path: \"/api/integrations/telegram/link\",\n headers: authHeadersSchema,\n body: c.noBody(),\n query: z.object({ botId: z.string().optional() }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disconnect the authenticated user's Telegram account link\",\n },\n getLinkStatus: {\n method: \"GET\",\n path: \"/api/integrations/telegram/link\",\n headers: authHeadersSchema,\n query: z.object({\n botId: z.string().optional(),\n origin: z.string().optional(),\n }),\n responses: {\n 200: telegramLinkStatusResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Check if the authenticated user is linked to a Telegram bot\",\n },\n avatar: {\n method: \"GET\",\n path: \"/api/integrations/telegram/:botId/avatar\",\n headers: authHeadersSchema,\n pathParams: z.object({ botId: z.string().min(1) }),\n query: z.object({\n exp: z.string().optional(),\n sig: z.string().optional(),\n }),\n responses: {\n 200: c.otherResponse({\n contentType: \"application/octet-stream\",\n body: z.unknown(),\n }),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Proxy a Telegram bot avatar\",\n },\n authCallback: {\n method: \"GET\",\n path: \"/api/integrations/telegram/auth-callback\",\n responses: {\n 200: c.otherResponse({\n contentType: \"text/html\",\n body: z.unknown(),\n }),\n },\n summary: \"Return the Telegram auth callback bridge page\",\n },\n link: {\n method: \"POST\",\n path: \"/api/integrations/telegram/link\",\n headers: authHeadersSchema,\n body: telegramLinkBodySchema,\n responses: {\n 200: telegramLinkResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Link the authenticated VM0 user to a Telegram user\",\n },\n register: {\n method: \"POST\",\n path: \"/api/telegram/register\",\n headers: authHeadersSchema,\n body: telegramRegisterBodySchema,\n responses: {\n 200: telegramBotStatusSchema,\n 201: telegramBotStatusSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Register a Telegram bot with VM0\",\n },\n setupStatus: {\n method: \"POST\",\n path: \"/api/telegram/setup-status\",\n headers: authHeadersSchema,\n body: telegramSetupStatusBodySchema,\n responses: {\n 200: telegramSetupStatusSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Check Telegram bot setup state before registration\",\n },\n webhook: {\n method: \"POST\",\n path: \"/api/telegram/webhook/:telegramBotId\",\n pathParams: telegramWebhookPathParamsSchema,\n body: z.unknown(),\n responses: {\n 200: c.otherResponse({\n contentType: \"text/plain\",\n body: z.string(),\n }),\n 400: c.otherResponse({\n contentType: \"text/plain\",\n body: z.string(),\n }),\n 401: c.otherResponse({\n contentType: \"text/plain\",\n body: z.string(),\n }),\n 404: c.otherResponse({\n contentType: \"text/plain\",\n body: z.string(),\n }),\n },\n summary: \"Handle Telegram bot webhook updates\",\n },\n internalCallback: {\n method: \"POST\",\n path: \"/api/internal/callbacks/telegram\",\n headers: internalCallbackHeadersSchema,\n body: internalCallbackBodySchema,\n responses: {\n 200: internalCallbackSuccessSchema,\n 400: internalCallbackErrorSchema,\n 401: internalCallbackErrorSchema,\n 404: internalCallbackErrorSchema,\n 500: internalCallbackErrorSchema,\n 502: internalCallbackErrorSchema,\n },\n summary: \"Handle Telegram run completion callbacks\",\n },\n});\n\nexport type ZeroIntegrationsTelegramContract =\n typeof zeroIntegrationsTelegramContract;\nexport type TelegramBot = z.infer<typeof telegramBotSchema>;\nexport type TelegramBotStatus = z.infer<typeof telegramBotStatusSchema>;\nexport type TelegramListResponse = z.infer<typeof telegramListResponseSchema>;\nexport type TelegramLinkStatusResponse = z.infer<\n typeof telegramLinkStatusResponseSchema\n>;\nexport type TelegramSetupStatus = z.infer<typeof telegramSetupStatusSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst agentPhoneConnectBodySchema = z.object({\n phoneHandle: z.string().min(1),\n agentphoneAgentId: z.string().min(1),\n timestamp: z.number(),\n signature: z.string().min(1),\n channel: z.string().min(1).optional(),\n});\n\nconst agentPhoneConnectResponseSchema = z.object({\n phoneHandle: z.string(),\n});\n\nconst agentPhoneWebhookHeadersSchema = z.object({\n \"x-webhook-signature\": z.string().optional(),\n \"x-webhook-timestamp\": z.string().optional(),\n \"x-webhook-event\": z.string().optional(),\n \"x-webhook-id\": z.string().optional(),\n});\n\nconst agentPhoneLinkStatusResponseSchema = z.discriminatedUnion(\"linked\", [\n z.object({\n linked: z.literal(true),\n phoneHandle: z.string(),\n agentPhoneNumber: z.string().nullable(),\n configured: z.boolean(),\n }),\n z.object({\n linked: z.literal(false),\n agentPhoneNumber: z.string().nullable(),\n configured: z.boolean(),\n }),\n]);\n\nconst agentPhoneStartLinkBodySchema = z.object({\n phoneHandle: z.string().min(1),\n});\n\nconst agentPhoneStartLinkResponseSchema = z.object({\n phoneHandle: z.string(),\n verificationSent: z.literal(true),\n});\n\nexport const zeroIntegrationsAgentPhoneContract = c.router({\n connectAgentPhone: {\n method: \"POST\",\n path: \"/api/agentphone/connect\",\n headers: authHeadersSchema,\n body: agentPhoneConnectBodySchema,\n responses: {\n 200: agentPhoneConnectResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Link the authenticated VM0 user to an AgentPhone phone handle\",\n },\n webhook: {\n method: \"POST\",\n path: \"/api/agentphone/webhook\",\n headers: agentPhoneWebhookHeadersSchema,\n body: c.type<string>(),\n responses: {\n 200: z.string(),\n 400: z.string(),\n 401: z.string(),\n 404: z.string(),\n },\n summary: \"Handle AgentPhone inbound message webhooks\",\n },\n getLinkStatus: {\n method: \"GET\",\n path: \"/api/integrations/agentphone/link\",\n headers: authHeadersSchema,\n responses: {\n 200: agentPhoneLinkStatusResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Check the authenticated user's AgentPhone link status\",\n },\n startLink: {\n method: \"POST\",\n path: \"/api/integrations/agentphone/link\",\n headers: authHeadersSchema,\n body: agentPhoneStartLinkBodySchema,\n responses: {\n 200: agentPhoneStartLinkResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 429: apiErrorSchema,\n 409: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Send a verified AgentPhone connection link by SMS\",\n },\n unlink: {\n method: \"DELETE\",\n path: \"/api/integrations/agentphone/link\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disconnect the authenticated user's AgentPhone link\",\n },\n});\n\nexport type ZeroIntegrationsAgentPhoneContract =\n typeof zeroIntegrationsAgentPhoneContract;\nexport type AgentPhoneConnectResponse = z.infer<\n typeof agentPhoneConnectResponseSchema\n>;\nexport type AgentPhoneLinkStatusResponse = z.infer<\n typeof agentPhoneLinkStatusResponseSchema\n>;\nexport type AgentPhoneStartLinkResponse = z.infer<\n typeof agentPhoneStartLinkResponseSchema\n>;\n","/**\n * System Image Resolution\n *\n * Handles resolution of system image references to E2B template names:\n * - vm0/claude-code → vm0-claude-code\n * - vm0-* → legacy passthrough (deprecated)\n */\n\n/**\n * System image constants\n */\nexport const SYSTEM_IMAGE_CLAUDE_CODE = \"claude-code\";\nexport const SYSTEM_IMAGES = [SYSTEM_IMAGE_CLAUDE_CODE] as const;\nexport const SYSTEM_VALID_TAGS = [\"latest\"] as const;\n\nexport type SystemValidTag = (typeof SYSTEM_VALID_TAGS)[number];\n\n/**\n * Legacy image aliases that map to base templates.\n * These existed when the `apps` field selected separate image variants.\n * Now that gh CLI is included in the base images, these aliases ensure\n * backward compatibility for already-stored compose versions.\n */\ntype SystemImage = (typeof SYSTEM_IMAGES)[number];\n\nconst IMAGE_ALIASES: Record<string, SystemImage> = {\n \"claude-code-github\": \"claude-code\",\n};\n\n/**\n * Check if a tag is valid for system images\n */\nexport function isValidSystemTag(\n tag: string | undefined,\n): tag is SystemValidTag | undefined {\n return tag === undefined || SYSTEM_VALID_TAGS.includes(tag as SystemValidTag);\n}\n\n/**\n * Resolve a system image reference to E2B template name\n *\n * Conversion rules:\n * - vm0/claude-code → vm0-claude-code\n * - vm0/claude-code:latest → vm0-claude-code\n * - vm0/claude-code-github → vm0-claude-code (legacy alias)\n *\n * Note: :dev tag is no longer supported. Development and production use the\n * same template names but different E2B accounts (controlled by E2B_API_KEY).\n *\n * @throws Error if image name is unknown or tag is not supported\n */\nexport function resolveSystemImageToE2b(\n name: string,\n tag?: string,\n): { e2bTemplate: string; deprecationWarning?: string } {\n // TODO: \"vm0\" is hardcoded as the system org slug. This should be configurable.\n const systemOrgSlug = \"vm0\";\n\n // Resolve legacy aliases (e.g., claude-code-github → claude-code)\n const resolvedName = IMAGE_ALIASES[name] ?? name;\n\n // Validate system image name\n if (!SYSTEM_IMAGES.includes(resolvedName as (typeof SYSTEM_IMAGES)[number])) {\n throw new Error(\n `Unknown system image: ${systemOrgSlug}/${name}. Available: ${SYSTEM_IMAGES.map(\n (img) => {\n return `${systemOrgSlug}/${img}`;\n },\n ).join(\", \")}`,\n );\n }\n\n // Validate tag (only 'latest' or undefined allowed)\n if (!isValidSystemTag(tag)) {\n throw new Error(\n `Invalid tag \":${tag}\" for system image. System images only support: :latest`,\n );\n }\n\n // Convert to E2B template name: vm0-{resolvedName}\n return { e2bTemplate: `${systemOrgSlug}-${resolvedName}` };\n}\n\n/**\n * Check if an image reference is a legacy vm0-* system template\n */\nexport function isLegacySystemTemplate(reference: string): boolean {\n return reference.startsWith(\"vm0-\");\n}\n\n/**\n * Get deprecation warning for legacy system template format\n */\nexport function getLegacySystemTemplateWarning(\n legacyFormat: string,\n): string | undefined {\n if (!isLegacySystemTemplate(legacyFormat)) {\n return undefined;\n }\n\n // Map legacy format to new format\n if (legacyFormat === \"vm0-claude-code\") {\n return `Warning: \"${legacyFormat}\" format is deprecated. Use \"vm0/claude-code\" instead.`;\n }\n if (legacyFormat.startsWith(\"vm0-github-cli\")) {\n return `Warning: \"${legacyFormat}\" is deprecated. GitHub CLI is now included in the base image.`;\n }\n\n // Generic warning for other vm0-* formats\n return `Warning: \"${legacyFormat}\" format is deprecated.`;\n}\n","/**\n * Version ID utilities for image versioning\n *\n * Version IDs are SHA-256 hashes (64 hex characters) stored in the database,\n * but displayed in a shortened form (8 characters) for user-friendliness.\n * Matches artifact/storage version display for consistency.\n * Similar to Docker image digests and Git commit hashes.\n */\n\n/**\n * Full length of version ID (SHA-256 hex)\n */\nexport const VERSION_ID_LENGTH = 64;\n\n/**\n * Display length of version ID (first N characters)\n * Matches artifact/storage display length for consistency\n */\nexport const VERSION_ID_DISPLAY_LENGTH = 8;\n\n/**\n * Minimum prefix length for version ID matching\n * Matches artifact/storage prefix length for consistency\n */\nexport const MIN_VERSION_PREFIX_LENGTH = 8;\n\n/**\n * Format a version ID for display (first 8 characters)\n *\n * @param versionId - Full 64-character version ID\n * @returns Truncated version ID for display\n */\nexport function formatVersionIdForDisplay(versionId: string): string {\n return versionId.slice(0, VERSION_ID_DISPLAY_LENGTH);\n}\n\n/**\n * Check if a string is a valid version ID prefix\n *\n * @param prefix - String to check\n * @returns True if valid hex prefix of sufficient length\n */\nexport function isValidVersionPrefix(prefix: string): boolean {\n return (\n /^[a-f0-9]+$/i.test(prefix) && prefix.length >= MIN_VERSION_PREFIX_LENGTH\n );\n}\n","/**\n * Storage name generation functions for agent instructions and skills.\n * These functions create standardized storage names used across CLI and Web packages.\n */\n\n/**\n * Sentinel userId for org-level storages (volumes).\n * Volumes are shared resources within an org — they use this constant\n * instead of a real userId so the (orgId, userId, name, type)\n * constraint keeps them unique per org, not per user.\n */\nexport const VOLUME_ORG_USER_ID = \"__org__\";\n\n/**\n * Sentinel orgId for system-level storages (shared across all orgs).\n * Used for official skills that are cached globally, not per-org.\n */\nexport const SYSTEM_ORG_ID = \"__system__\";\n\n/**\n * Generate the storage name for agent instructions.\n * Format: agent-instructions@{agentName}\n *\n * @param agentName - Name of the agent (compose name)\n * @returns Storage name for the instructions\n */\nexport function getInstructionsStorageName(agentName: string): string {\n return `agent-instructions@${agentName}`;\n}\n\n/**\n * Generate the storage name for an agent skill.\n * Format: agent-skills@{fullPath}\n *\n * @param fullPath - Full path from GitHub URL (e.g., \"owner/repo/tree/branch/path\")\n * @returns Storage name for the skill\n */\nexport function getSkillStorageName(fullPath: string): string {\n return `agent-skills@${fullPath}`;\n}\n\n/**\n * Generate the storage name for a custom skill.\n * Format: custom-skill@{skillName}\n *\n * @param skillName - Name of the custom skill (e.g., \"my-skill\")\n * @returns Storage name for the custom skill\n */\nexport function getCustomSkillStorageName(skillName: string): string {\n return `custom-skill@${skillName}`;\n}\n\n/**\n * Reserved name of the per-user \"memory\" artifact that Zero auto-injects into\n * every agent run. Stored as an artifact (type='artifact') scoped per user,\n * and mounted into the sandbox at a framework-specific path.\n */\nexport const MEMORY_ARTIFACT_NAME = \"memory\";\n","/**\n * GitHub URL parsing utilities\n *\n * Provides parsing for GitHub tree URLs used in skills and other resources.\n */\n\nexport interface ParsedGitHubTreeUrl {\n owner: string;\n repo: string;\n branch: string;\n path: string;\n /** Last segment of path (used for mount directory name) */\n skillName: string;\n /** Full path after github.com/ (unique identifier) */\n fullPath: string;\n}\n\n/**\n * Parse a GitHub tree URL into its components\n * Expected format: https://github.com/{owner}/{repo}/tree/{branch}/{path}\n *\n * Note: Branch names containing slashes (e.g., feature/foo) may not parse correctly.\n * The fullPath field is always correct and used for unique storage naming.\n *\n * @param url - GitHub tree URL\n * @returns Parsed URL components, or null if URL format is invalid\n */\nexport function parseGitHubTreeUrl(url: string): ParsedGitHubTreeUrl | null {\n // Normalize: strip trailing slashes for consistent matching\n let normalizedUrl = url;\n while (normalizedUrl.endsWith(\"/\")) {\n normalizedUrl = normalizedUrl.slice(0, -1);\n }\n\n // First, extract the full path after github.com/ (always correct)\n const fullPathMatch = normalizedUrl.match(/^https:\\/\\/github\\.com\\/(.+)$/);\n if (!fullPathMatch) {\n return null;\n }\n const fullPath = fullPathMatch[1]!;\n\n // Parse components (may be incorrect for branches with slashes)\n const regex =\n /^https:\\/\\/github\\.com\\/([^/]+)\\/([^/]+)\\/tree\\/([^/]+)(?:\\/(.+))?$/;\n const match = normalizedUrl.match(regex);\n\n if (!match) {\n return null;\n }\n\n const [, owner, repo, branch, pathPart] = match;\n const resolvedPath = pathPart ?? \"\";\n const pathSegments = resolvedPath.split(\"/\").filter(Boolean);\n const skillName = pathSegments[pathSegments.length - 1] || repo!;\n\n return {\n owner: owner!,\n repo: repo!,\n branch: branch!,\n path: resolvedPath,\n skillName,\n fullPath,\n };\n}\n\n/**\n * Get skill name from path (last segment)\n */\nexport function getSkillNameFromPath(path: string): string {\n const segments = path.split(\"/\").filter(Boolean);\n return segments[segments.length - 1] || path;\n}\n\n/**\n * Parsed GitHub URL supporting multiple formats\n */\nexport interface ParsedGitHubUrl {\n owner: string;\n repo: string;\n /** Branch name, or null if not specified (use default branch) */\n branch: string | null;\n /** Path within repo, or null if root directory */\n path: string | null;\n /** Full path after github.com/ (unique identifier) */\n fullPath: string;\n}\n\n/**\n * Parse any GitHub repository URL into components.\n * Supports multiple URL formats:\n * - https://github.com/owner/repo (plain repo, uses default branch)\n * - https://github.com/owner/repo/tree/branch (root directory with branch)\n * - https://github.com/owner/repo/tree/branch/path (subdirectory)\n *\n * Note: Branch names containing slashes (e.g., feature/foo) may not parse correctly.\n *\n * @param url - GitHub URL\n * @returns Parsed URL components, or null if URL format is invalid\n */\nexport function parseGitHubUrl(url: string): ParsedGitHubUrl | null {\n // Normalize: strip trailing slashes for consistent matching\n let normalizedUrl = url;\n while (normalizedUrl.endsWith(\"/\")) {\n normalizedUrl = normalizedUrl.slice(0, -1);\n }\n\n // Extract full path after github.com/\n const fullPathMatch = normalizedUrl.match(/^https:\\/\\/github\\.com\\/(.+)$/);\n if (!fullPathMatch) {\n return null;\n }\n const fullPath = fullPathMatch[1]!;\n\n // Pattern 1: Plain repo URL (https://github.com/owner/repo)\n const plainMatch = normalizedUrl.match(\n /^https:\\/\\/github\\.com\\/([^/]+)\\/([^/]+)$/,\n );\n if (plainMatch) {\n return {\n owner: plainMatch[1]!,\n repo: plainMatch[2]!,\n branch: null,\n path: null,\n fullPath,\n };\n }\n\n // Pattern 2: Tree URL with optional path\n // https://github.com/owner/repo/tree/branch or https://github.com/owner/repo/tree/branch/path\n const treeMatch = normalizedUrl.match(\n /^https:\\/\\/github\\.com\\/([^/]+)\\/([^/]+)\\/tree\\/([^/]+)(?:\\/(.+))?$/,\n );\n if (treeMatch) {\n return {\n owner: treeMatch[1]!,\n repo: treeMatch[2]!,\n branch: treeMatch[3]!,\n path: treeMatch[4] ?? null,\n fullPath,\n };\n }\n\n return null;\n}\n\n/** Default owner for bare skill name resolution */\nexport const DEFAULT_SKILLS_OWNER = \"vm0-ai\";\n/** Default repository for bare skill name resolution */\nexport const DEFAULT_SKILLS_REPO = \"vm0-skills\";\n/** Default branch for bare skill name resolution */\nexport const DEFAULT_SKILLS_BRANCH = \"main\";\n\n/**\n * Resolve a skill reference to a full GitHub tree URL.\n *\n * Supports two formats:\n * - **Bare name** (no `/` and no `https://`): e.g. `\"slack\"` →\n * `https://github.com/vm0-ai/vm0-skills/tree/main/slack`\n * - **Full GitHub URL**: validated by `parseGitHubUrl()` and returned as-is.\n *\n * @param input - Bare skill name or full GitHub URL\n * @returns Canonical full GitHub URL\n * @throws Error if input is empty or not a valid GitHub URL\n */\nexport function resolveSkillRef(input: string): string {\n const trimmed = input.trim();\n\n if (!trimmed) {\n throw new Error(\"Skill reference cannot be empty\");\n }\n\n // Bare name: no \"/\" and no \"https://\"\n if (!trimmed.includes(\"/\") && !trimmed.startsWith(\"https://\")) {\n return `https://github.com/${DEFAULT_SKILLS_OWNER}/${DEFAULT_SKILLS_REPO}/tree/${DEFAULT_SKILLS_BRANCH}/${trimmed}`;\n }\n\n // Full GitHub URL: validate with flexible parser\n const parsed = parseGitHubUrl(trimmed);\n if (!parsed) {\n throw new Error(\n `Invalid skill URL: ${trimmed}. Expected a bare skill name (e.g. \"slack\") or a GitHub URL (https://github.com/{owner}/{repo}[/tree/{branch}[/path]])`,\n );\n }\n\n // Plain repo URL (no branch): normalize to tree URL with default branch\n if (!parsed.branch) {\n return `https://github.com/${parsed.owner}/${parsed.repo}/tree/${DEFAULT_SKILLS_BRANCH}`;\n }\n\n return trimmed;\n}\n","export { FeatureSwitchKey } from \"@vm0/connectors/feature-switch-key\";\n","/**\n * Feature switch system\n *\n * Provides centralized feature flag management with user-identity based overrides.\n * User IDs are stored as FNV-1a hashes to avoid exposing plain-text identifiers in source code.\n *\n * NOT AN AUTHORIZATION BOUNDARY. Any authenticated user can self-enable any\n * switch via `POST /api/zero/feature-switches` — overrides are read by\n * `isFeatureEnabled` before the registry. For money-granting, credential,\n * or privilege-escalation endpoints, gate with a hard identity check\n * (e.g. `isStaffOrg()` from `./staff-org`) instead of this system.\n */\n\nimport { FeatureSwitchKey } from \"./feature-switch-key\";\nimport { STAFF_ORG_ID_HASHES, fnv1a } from \"./identity-hash\";\n\nexport interface FeatureSwitch {\n readonly maintainer: string;\n readonly description?: string;\n readonly enabled: boolean;\n readonly enabledUserHashes?: readonly string[];\n readonly enabledEmailHashes?: readonly string[];\n readonly enabledOrgIdHashes?: readonly string[];\n readonly userOverridable?: boolean;\n}\n\nexport interface FeatureSwitchMetadata {\n readonly maintainer: string;\n readonly description?: string;\n readonly userOverridable: boolean;\n}\n\nexport interface FeatureSwitchContext {\n readonly userId?: string;\n readonly email?: string;\n readonly orgId?: string;\n readonly overrides?: Partial<Record<FeatureSwitchKey, boolean>>;\n}\n\n/**\n * Registry of all feature switches\n */\nconst FEATURE_SWITCHES: Record<FeatureSwitchKey, FeatureSwitch> = {\n [FeatureSwitchKey.Dummy]: {\n maintainer: \"ethan@vm0.ai\",\n description: \"Test-only feature switch for flag system validation\",\n enabled: true,\n },\n [FeatureSwitchKey.AhrefsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Ahrefs SEO connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BillConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the BILL Spend & Expense connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BentomlConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the BentoML model serving connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BoxConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Box file storage connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CanvaConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Canva design connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CalComConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Cal.com scheduling connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CopperConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Copper CRM connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DatadogConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Datadog observability connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DeelConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Deel HR connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DocuSignConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the DocuSign e-signature connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DropboxConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Dropbox file storage connector\",\n enabled: false,\n },\n [FeatureSwitchKey.FigmaConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Figma design connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ExpensifyConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Expensify accounting connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GoogleContactsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Google Contacts connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GoogleFormsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Google Forms connector\",\n enabled: false,\n },\n [FeatureSwitchKey.MercuryConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Mercury banking connector\",\n enabled: false,\n },\n [FeatureSwitchKey.Microsoft365Connector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Microsoft 365 connector\",\n enabled: false,\n },\n [FeatureSwitchKey.NeonConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Neon serverless Postgres connector\",\n enabled: false,\n },\n [FeatureSwitchKey.NetSuiteConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Oracle NetSuite ERP connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GarminConnectConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Garmin Connect wellness connector\",\n enabled: false,\n },\n [FeatureSwitchKey.QuickBooksConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the QuickBooks accounting connector\",\n enabled: false,\n },\n [FeatureSwitchKey.RedditConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Reddit connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.SupabaseConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Supabase database connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.CloseConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Close CRM connector\",\n enabled: false,\n },\n [FeatureSwitchKey.WebflowConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Webflow site management connector\",\n enabled: false,\n },\n [FeatureSwitchKey.OutlookMailConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Outlook Mail connector\",\n enabled: false,\n },\n [FeatureSwitchKey.OutlookCalendarConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Outlook Calendar connector\",\n enabled: false,\n },\n [FeatureSwitchKey.TikTokAdsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the TikTok Ads Manager connector\",\n enabled: false,\n },\n [FeatureSwitchKey.AwsConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description: \"Enable the temporary AWS remote login connector\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.NintendoStoreConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description: \"Enable the Nintendo Store connector\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.NintendoSwitchParentalControlsConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description: \"Enable the Nintendo Switch Parental Controls connector\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.PosthogConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the PostHog analytics connector\",\n enabled: false,\n },\n [FeatureSwitchKey.PayPalConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the PayPal payments connector\",\n enabled: false,\n },\n [FeatureSwitchKey.RampConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Ramp spend management connector\",\n enabled: false,\n },\n [FeatureSwitchKey.MailchimpConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Mailchimp email marketing connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ResendConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Resend email service connector\",\n enabled: false,\n },\n [FeatureSwitchKey.PexelsConnector]: {\n maintainer: \"bingjie@vm0.ai\",\n description: \"Enable the Pexels stock photo and video connector\",\n enabled: false,\n },\n [FeatureSwitchKey.SpotifyConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Spotify connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.ZeroDebug]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Reveal activity debug surfaces, activity log navigation, appended system prompts, and Debug preferences\",\n enabled: false,\n },\n [FeatureSwitchKey.Banking]: {\n maintainer: \"linghan@vm0.ai\",\n description:\n \"Enable the managed Zero Banking gateway and banking:read ZERO_TOKEN capability for Finicity-backed accounts, balances, and transactions.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.Lab]: {\n maintainer: \"ethan@vm0.ai\",\n description: \"Show the Lab page for toggling experimental features\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.WorkflowWebhookTriggers]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable creation of inbound webhook workflow triggers. Existing webhook triggers remain visible and dispatch under the workflow automation gate.\",\n enabled: true,\n },\n [FeatureSwitchKey.NotionWorkflowTriggers]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Notion event workflow triggers, starting with child pages created under a configured parent page.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.AgentDetailWorkflowsTab]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show the Workflows tab on agent detail pages, scoped to workflows visible for that agent.\",\n enabled: false,\n },\n [FeatureSwitchKey.TestOauthConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Enable the test-oauth connector, a synthetic OAuth 2.0 provider used only for automated tests. Off in prod.\",\n enabled: false,\n },\n [FeatureSwitchKey.FreshdeskConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Freshdesk helpdesk connector\",\n enabled: false,\n },\n [FeatureSwitchKey.StabilityAiConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Stability AI image generation connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ZoomConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable the Zoom connector (OAuth 2.0) for meetings, past participants, and cloud recordings access\",\n enabled: false,\n },\n [FeatureSwitchKey.WorkdayConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Workday HCM and finance connector\",\n enabled: false,\n },\n\n [FeatureSwitchKey.ApiKeys]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Gate the custom /settings/api-keys UI for issuing personal access tokens used by the /api/v1 public surface. When disabled, the settings page redirects to / and the sidebar menu item is hidden. The backend /api/v1 verification does NOT consult this flag — previously issued PATs continue to work.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.CodexFrameworkForMinimax]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Expose the experimental MiniMax Codex framework provider route for Responses API compatibility testing.\",\n enabled: false,\n },\n [FeatureSwitchKey.CodexFastMode]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Codex fast mode for ChatGPT subscription GPT 5.5 web chat runs.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.RealAgentInPreview]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Send preview chat runs through real agent CLIs instead of preview mock runners.\",\n enabled: false,\n },\n [FeatureSwitchKey.ComposerUploadPopover]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Use the Upload popover in the chat composer instead of the legacy paperclip attachment button.\",\n enabled: false,\n userOverridable: false,\n },\n [FeatureSwitchKey.ZapierConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable the Zapier connector. When disabled, Zapier is hidden from the connectors list and cannot be connected.\",\n enabled: false,\n },\n [FeatureSwitchKey.MemoryViewer]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Show the read-only memory viewer page in the Zero sidebar and at /memory, listing the files in the user's memory artifact.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.RelationshipMemory]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show the experimental relationship memory tab in the Memory page for org-user-scoped relationship context.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.RelationshipMemoryRuntimeInjection]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Inject compact relationship memory profile and prompt-relevant memories into Zero run system prompts.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.HtmlArtifactCommentEditing]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Enable the HTML artifact comment-editing workflow for collecting DOM comments and preparing instrumented working-copy edits.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ComputerUseDesktopPlugins]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Zero Desktop Computer Use plugins for local resources, starting with the bundled filesystem plugin gateway.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.DesktopX64Download]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Show Intel Mac download links for Zero Computer Use after darwin-x64 release artifacts are available.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.AgentUnreadIndicators]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show chat unread indicators in sidebar pinned agent lists and the conversation picker.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.MobileUnreadChatThreadShortcuts]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show unread chat thread shortcuts between the mobile agent chat composer and suggested prompt cards.\",\n enabled: false,\n },\n [FeatureSwitchKey.ChatThreadUnifiedSearch]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show chat thread title results from the local event-driven thread cache in the command-shift-a conversation picker.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.SidebarManageIconCollapse]: {\n maintainer: \"ming@vm0.ai\",\n description:\n \"Show icon-only manage navigation buttons when the expanded sidebar manage section is collapsed.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.SidebarSubscriptionUsage]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show Codex and Claude Code personal subscription usage in the Zero sidebar footer.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.TeamsIntegration]: {\n maintainer: \"linghan@vm0.ai\",\n description:\n \"Show standalone Microsoft Teams integration settings, connect flows, and Works page entry points.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ImageEditing]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Enable in-canvas image editing (remove background, enhance) from the image preview and artifact sidebar.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.PresentationGoogleSlidesUpload]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Enable uploading a presentation artifact to the user's Google Drive as a native, editable Google Slides deck.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.Artifacts]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Show the Artifacts manage page for generated artifacts in the current organization.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ArtifactFavorites]: {\n maintainer: \"bingjie@vm0.ai\",\n description: \"Enable favoriting artifacts on the Artifacts page.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ArtifactPreviewImage]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Render a static preview image (screenshot) for HTML/website artifacts on deploy so the artifacts grid shows an image instead of a live iframe.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.WorkflowTemplateCatalog]: {\n maintainer: \"ming@vm0.ai\",\n description:\n \"Show the full persona-grouped built-in workflow template catalog in the chat composer template picker. Off shows only the General starter template.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.WebsiteTemplates]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Enable the built-in R2-backed website template picker and generation-template flow.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.WorkflowQueue]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Queue workflow trigger events per workflow and run them serially instead of firing concurrent runs.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.WorkflowConnectorReadiness]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Show the manual connector readiness check on workflow settings pages.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: false,\n },\n};\n\ninterface ResolvedHashes {\n readonly userHash?: string;\n readonly emailHash?: string;\n readonly orgIdHash?: string;\n}\n\nfunction evaluateSwitch(fs: FeatureSwitch, hashes: ResolvedHashes): boolean {\n if (fs.enabled) return true;\n if (hashes.userHash && fs.enabledUserHashes?.includes(hashes.userHash))\n return true;\n if (hashes.emailHash && fs.enabledEmailHashes?.includes(hashes.emailHash))\n return true;\n if (hashes.orgIdHash && fs.enabledOrgIdHashes?.includes(hashes.orgIdHash))\n return true;\n return false;\n}\n\n/**\n * Evaluate all feature switches at once for the given context.\n *\n * Computes identity hashes once and checks all switches synchronously.\n */\nexport function getAllFeatureStates(\n ctx?: FeatureSwitchContext,\n): Record<FeatureSwitchKey, boolean> {\n const switches = Object.values(FEATURE_SWITCHES);\n const hashes: ResolvedHashes = {\n userHash:\n ctx?.userId &&\n switches.some((s) => {\n return s.enabledUserHashes?.length;\n })\n ? fnv1a(ctx.userId)\n : undefined,\n emailHash:\n ctx?.email &&\n switches.some((s) => {\n return s.enabledEmailHashes?.length;\n })\n ? fnv1a(ctx.email.toLowerCase())\n : undefined,\n orgIdHash:\n ctx?.orgId &&\n switches.some((s) => {\n return s.enabledOrgIdHashes?.length;\n })\n ? fnv1a(ctx.orgId)\n : undefined,\n };\n\n const result = {} as Record<FeatureSwitchKey, boolean>;\n for (const key of Object.values(FeatureSwitchKey)) {\n result[key] = evaluateSwitch(FEATURE_SWITCHES[key], hashes);\n }\n\n if (ctx?.overrides) {\n for (const [key, value] of Object.entries(ctx.overrides)) {\n if (key in FEATURE_SWITCHES && value !== undefined) {\n result[key as FeatureSwitchKey] = value;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Return the description for every feature switch.\n */\nexport function getFeatureSwitchDescriptions(): Record<\n FeatureSwitchKey,\n string | undefined\n> {\n const result = {} as Record<FeatureSwitchKey, string | undefined>;\n for (const key of Object.values(FeatureSwitchKey)) {\n result[key] = FEATURE_SWITCHES[key].description;\n }\n return result;\n}\n\n/**\n * Return display metadata for every feature switch.\n */\nexport function getFeatureSwitchMetadata(): Record<\n FeatureSwitchKey,\n FeatureSwitchMetadata\n> {\n const result = {} as Record<FeatureSwitchKey, FeatureSwitchMetadata>;\n for (const key of Object.values(FeatureSwitchKey)) {\n const featureSwitch = FEATURE_SWITCHES[key];\n result[key] = {\n maintainer: featureSwitch.maintainer,\n description: featureSwitch.description,\n userOverridable: featureSwitch.userOverridable !== false,\n };\n }\n return result;\n}\n\nexport function isUserOverridableFeatureSwitch(\n key: string,\n): key is FeatureSwitchKey {\n if (!(key in FEATURE_SWITCHES)) {\n return false;\n }\n return FEATURE_SWITCHES[key as FeatureSwitchKey].userOverridable !== false;\n}\n\nexport function getUserOverridableFeatureSwitchKeys(): readonly FeatureSwitchKey[] {\n return Object.values(FeatureSwitchKey).filter(isUserOverridableFeatureSwitch);\n}\n\nexport function filterUserOverridableFeatureSwitchOverrides(\n switches: Record<string, boolean>,\n): Record<string, boolean> {\n const filtered: Record<string, boolean> = {};\n for (const [key, value] of Object.entries(switches)) {\n if (isUserOverridableFeatureSwitch(key)) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\n/**\n * Check if a feature is enabled for the given context.\n *\n * `ctx` is required so callers must pass identity (userId/orgId/email) or an\n * explicit `{}`. A switch gated by `enabledUserHashes` / `enabledOrgIdHashes`\n * silently returns `false` when ctx omits identity, which has caused bugs.\n * Client-side callers should usually read the platform `featureSwitch$` signal\n * instead — it also merges DB overrides on top of identity context.\n */\nexport function isFeatureEnabled(\n key: FeatureSwitchKey,\n ctx: FeatureSwitchContext,\n): boolean {\n const override = ctx.overrides?.[key];\n if (override !== undefined) {\n return override;\n }\n\n const featureSwitch = FEATURE_SWITCHES[key];\n if (featureSwitch.enabled) {\n return true;\n }\n if (ctx.userId && featureSwitch.enabledUserHashes?.length) {\n if (featureSwitch.enabledUserHashes.includes(fnv1a(ctx.userId)))\n return true;\n }\n if (ctx.email && featureSwitch.enabledEmailHashes?.length) {\n if (\n featureSwitch.enabledEmailHashes.includes(fnv1a(ctx.email.toLowerCase()))\n )\n return true;\n }\n if (ctx.orgId && featureSwitch.enabledOrgIdHashes?.length) {\n if (featureSwitch.enabledOrgIdHashes.includes(fnv1a(ctx.orgId)))\n return true;\n }\n return false;\n}\n","/**\n * Identity hashing — FNV-1a 32-bit hash used to reference users / orgs / emails\n * without embedding plain-text identifiers in source code.\n *\n * Shared between the feature-switch registry (UI rollout targeting) and\n * `staff-org.ts` (authorization primitive). The hash is deterministic and\n * synchronous; no crypto API needed.\n */\n\nexport function fnv1a(input: string): string {\n let h = 2166136261 >>> 0;\n for (let i = 0; i < input.length; i++) {\n h ^= input.charCodeAt(i);\n h = Math.imul(h, 16777619) >>> 0;\n }\n return h.toString(16).padStart(8, \"0\");\n}\n\n/**\n * Hashes of internal staff org IDs.\n *\n * This list is the source of truth for `isStaffOrg()` — adding an entry here\n * grants that org access to every endpoint that uses `isStaffOrg` as an\n * authorization check. Treat changes with the same care as role grants.\n */\nexport const STAFF_ORG_ID_HASHES: readonly string[] = [\n \"afce210e\", // org_3ANttyrbWYJk6JKRSTRLEsbsDLe\n];\n","import { STAFF_ORG_ID_HASHES, fnv1a } from \"./identity-hash\";\n\n/**\n * Hard identity check: is this org one of the vm0 internal staff orgs?\n *\n * Intended as an authorization boundary — unlike feature switches, this\n * helper is NOT influenced by `user_feature_switches` overrides or any\n * runtime toggle. Callers can rely on it as a true yes/no gate for\n * internal-only endpoints.\n *\n * Modifying `STAFF_ORG_ID_HASHES` affects every consumer of this helper;\n * treat the list as a privileged allow-list.\n */\nexport function isStaffOrg(orgId: string | undefined | null): boolean {\n if (!orgId) return false;\n return STAFF_ORG_ID_HASHES.includes(fnv1a(orgId));\n}\n","import { parse as parseYaml } from \"yaml\";\n\n/**\n * Parsed skill frontmatter from SKILL.md\n */\nexport interface SkillFrontmatter {\n name?: string;\n description?: string;\n}\n\n/**\n * Parse frontmatter from SKILL.md content.\n * Extracts YAML between --- markers at the start of the file.\n *\n * @param content - Raw content of SKILL.md file\n * @returns Parsed frontmatter fields\n */\nexport function parseSkillFrontmatter(content: string): SkillFrontmatter {\n const frontmatterMatch = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/);\n if (!frontmatterMatch) {\n return {};\n }\n\n const yamlContent = frontmatterMatch[1];\n if (!yamlContent) {\n return {};\n }\n\n const parsed: unknown = parseYaml(yamlContent);\n\n if (!parsed || typeof parsed !== \"object\") {\n return {};\n }\n\n const data = parsed as Record<string, unknown>;\n\n return {\n name: typeof data.name === \"string\" ? data.name : undefined,\n description:\n typeof data.description === \"string\" ? data.description : undefined,\n };\n}\n","// Legacy HTML comment markers (for backward-compatible stripping)\nconst LEGACY_PROFILE_START = \"<!-- ZERO_PROFILE\";\nconst LEGACY_PROFILE_END = \"ZERO_PROFILE -->\";\n\n// New plain-text markers visible to the agent at runtime\nconst PROFILE_START = \"[AGENT_PROFILE]\";\nconst PROFILE_END = \"[/AGENT_PROFILE]\";\n\n/**\n * Remove all profile blocks (both legacy HTML comment and new plain-text\n * markers) from content in O(n) time.\n */\nfunction stripMarkerBlocks(\n content: string,\n startMarker: string,\n endMarker: string,\n): string {\n let result = \"\";\n let searchFrom = 0;\n\n while (searchFrom < content.length) {\n const startIdx = content.indexOf(startMarker + \"\\n\", searchFrom);\n if (startIdx === -1) {\n result += content.slice(searchFrom);\n break;\n }\n\n result += content.slice(searchFrom, startIdx);\n\n const endIdx = content.indexOf(\n endMarker,\n startIdx + startMarker.length + 1,\n );\n if (endIdx === -1) {\n // No closing marker — keep the rest as-is\n result += content.slice(startIdx);\n break;\n }\n\n // Skip past the end marker and optional trailing newline\n let afterEnd = endIdx + endMarker.length;\n if (content[afterEnd] === \"\\n\") {\n afterEnd++;\n }\n searchFrom = afterEnd;\n }\n\n return result;\n}\n\nfunction stripProfileBlocks(content: string): string {\n // Strip both legacy and new format\n const withoutLegacy = stripMarkerBlocks(\n content,\n LEGACY_PROFILE_START,\n LEGACY_PROFILE_END,\n );\n return stripMarkerBlocks(withoutLegacy, PROFILE_START, PROFILE_END);\n}\n\n/** Keys used by the legacy YAML frontmatter format. */\nconst LEGACY_METADATA_KEYS = new Set([\"name\", \"tone\"]);\n\n/**\n * Strip legacy `---` YAML frontmatter that only contains our metadata keys\n * (name, tone). If user-defined keys exist, only our keys are removed.\n */\nfunction stripLegacyFrontmatter(content: string): string {\n const match = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---(\\r?\\n|$)/);\n if (!match) {\n return content;\n }\n const rawYaml = match[1] ?? \"\";\n const body = content.slice(match[0].length);\n\n const remaining = rawYaml\n .split(\"\\n\")\n .filter((line) => {\n const key = line.split(\":\")[0]?.trim();\n return !key || !LEGACY_METADATA_KEYS.has(key);\n })\n .join(\"\\n\")\n .trim();\n\n if (!remaining) {\n return body.replace(/^\\n/, \"\");\n }\n return `---\\n${remaining}\\n---${body}`;\n}\n\n/**\n * Strip the profile block (and legacy YAML frontmatter) from\n * instructions content for display in the editor.\n *\n * Kept for transition: existing S3 archives may still have baked-in\n * `[AGENT_PROFILE]` blocks from before metadata was moved to the\n * `zero_agents` table. Once all instructions have been re-uploaded\n * without the block, this function can be removed entirely.\n */\nexport function stripMetadataFrontmatter(content: string): string {\n return stripProfileBlocks(stripLegacyFrontmatter(content)).trim();\n}\n","/**\n * Returns the GMT offset string for an IANA timezone at the current instant\n * (e.g. \"GMT+05:30\"). Called at render time so DST transitions are reflected\n * correctly without stale cached values.\n */\nexport function getGmtOffset(iana: string): string {\n const parts = new Intl.DateTimeFormat(\"en\", {\n timeZone: iana,\n timeZoneName: \"longOffset\",\n }).formatToParts(new Date());\n return (\n parts.find((p) => {\n return p.type === \"timeZoneName\";\n })?.value ?? \"GMT+00:00\"\n );\n}\n\nconst EXPLICIT_OFFSET_RE = /(?:[zZ]|[+-]\\d{2}:?\\d{2})$/u;\nconst LOCAL_DATE_TIME_RE =\n /^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?$/u;\nconst MINUTE_MS = 60_000;\nconst HOUR_MS = 60 * MINUTE_MS;\n\nexport type ScheduledAtTimeParseErrorCode =\n | \"invalid-at-time\"\n | \"invalid-timezone\"\n | \"nonexistent-local-time\"\n | \"ambiguous-local-time\";\n\nexport type ScheduledAtTimeParseResult =\n | {\n readonly ok: true;\n readonly date: Date;\n readonly hasExplicitOffset: boolean;\n }\n | {\n readonly ok: false;\n readonly code: ScheduledAtTimeParseErrorCode;\n readonly message: string;\n };\n\ninterface WallTimeParts {\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly hour: number;\n readonly minute: number;\n readonly second: number;\n readonly millisecond: number;\n}\n\nexport function hasExplicitDateTimeOffset(input: string): boolean {\n return EXPLICIT_OFFSET_RE.test(input.trim());\n}\n\nexport function isValidTimeZone(input: string): boolean {\n try {\n new Intl.DateTimeFormat(undefined, { timeZone: input });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction datePart(parts: Intl.DateTimeFormatPart[], type: string): string {\n return (\n parts.find((part) => {\n return part.type === type;\n })?.value ?? \"0\"\n );\n}\n\nfunction wallTimePartsInTimezone(\n timezone: string,\n instantMs: number,\n): WallTimeParts {\n const parts = new Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hourCycle: \"h23\",\n timeZone: timezone,\n }).formatToParts(new Date(instantMs));\n return {\n year: Number(datePart(parts, \"year\")),\n month: Number(datePart(parts, \"month\")),\n day: Number(datePart(parts, \"day\")),\n hour: Number(datePart(parts, \"hour\")),\n minute: Number(datePart(parts, \"minute\")),\n second: Number(datePart(parts, \"second\")),\n millisecond: new Date(instantMs).getUTCMilliseconds(),\n };\n}\n\nfunction timezoneOffsetMinutes(timezone: string, instantMs: number): number {\n const parts = wallTimePartsInTimezone(timezone, instantMs);\n const wallTimeAsUtc = Date.UTC(\n parts.year,\n parts.month - 1,\n parts.day,\n parts.hour,\n parts.minute,\n parts.second,\n parts.millisecond,\n );\n return (wallTimeAsUtc - instantMs) / MINUTE_MS;\n}\n\nfunction parseLocalDateTime(input: string): WallTimeParts | null {\n const match = LOCAL_DATE_TIME_RE.exec(input.trim());\n if (!match) {\n return null;\n }\n const [, year, month, day, hour, minute, second, millisecond] = match;\n if (\n year === undefined ||\n month === undefined ||\n day === undefined ||\n hour === undefined ||\n minute === undefined\n ) {\n return null;\n }\n const parts = {\n year: Number(year),\n month: Number(month),\n day: Number(day),\n hour: Number(hour),\n minute: Number(minute),\n second: second === undefined ? 0 : Number(second),\n millisecond:\n millisecond === undefined ? 0 : Number(millisecond.padEnd(3, \"0\")),\n };\n const normalized = new Date(\n Date.UTC(\n parts.year,\n parts.month - 1,\n parts.day,\n parts.hour,\n parts.minute,\n parts.second,\n parts.millisecond,\n ),\n );\n if (\n normalized.getUTCFullYear() !== parts.year ||\n normalized.getUTCMonth() + 1 !== parts.month ||\n normalized.getUTCDate() !== parts.day ||\n normalized.getUTCHours() !== parts.hour ||\n normalized.getUTCMinutes() !== parts.minute ||\n normalized.getUTCSeconds() !== parts.second ||\n normalized.getUTCMilliseconds() !== parts.millisecond\n ) {\n return null;\n }\n return parts;\n}\n\nfunction wallTimeMatches(\n timezone: string,\n instantMs: number,\n expected: WallTimeParts,\n): boolean {\n const actual = wallTimePartsInTimezone(timezone, instantMs);\n return (\n actual.year === expected.year &&\n actual.month === expected.month &&\n actual.day === expected.day &&\n actual.hour === expected.hour &&\n actual.minute === expected.minute &&\n actual.second === expected.second &&\n actual.millisecond === expected.millisecond\n );\n}\n\nfunction zonedWallTimeCandidates(\n timezone: string,\n wallTime: WallTimeParts,\n): readonly Date[] {\n const wallTimeAsUtc = Date.UTC(\n wallTime.year,\n wallTime.month - 1,\n wallTime.day,\n wallTime.hour,\n wallTime.minute,\n wallTime.second,\n wallTime.millisecond,\n );\n const offsets = new Set<number>();\n for (const hourDelta of [-48, -36, -24, -12, -6, 0, 6, 12, 24, 36, 48]) {\n offsets.add(\n timezoneOffsetMinutes(timezone, wallTimeAsUtc + hourDelta * HOUR_MS),\n );\n }\n const candidateTimes = new Set<number>();\n for (const offset of offsets) {\n const candidateMs = wallTimeAsUtc - offset * MINUTE_MS;\n if (wallTimeMatches(timezone, candidateMs, wallTime)) {\n candidateTimes.add(candidateMs);\n }\n }\n return [...candidateTimes]\n .sort((a, b) => {\n return a - b;\n })\n .map((ms) => {\n return new Date(ms);\n });\n}\n\nexport function parseScheduledAtTime(\n input: string,\n timezone: string,\n): ScheduledAtTimeParseResult {\n const value = input.trim();\n if (!isValidTimeZone(timezone)) {\n return {\n ok: false,\n code: \"invalid-timezone\",\n message: `Invalid timezone: ${timezone}`,\n };\n }\n if (hasExplicitDateTimeOffset(value)) {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return {\n ok: false,\n code: \"invalid-at-time\",\n message: `Invalid atTime: ${input}`,\n };\n }\n return { ok: true, date, hasExplicitOffset: true };\n }\n\n const wallTime = parseLocalDateTime(value);\n if (wallTime === null) {\n return {\n ok: false,\n code: \"invalid-at-time\",\n message:\n \"Invalid atTime: use an ISO datetime with Z/offset, or pass a local ISO datetime with timezone\",\n };\n }\n\n const candidates = zonedWallTimeCandidates(timezone, wallTime);\n if (candidates.length === 0) {\n return {\n ok: false,\n code: \"nonexistent-local-time\",\n message: `Invalid atTime: ${input} does not exist in ${timezone}`,\n };\n }\n if (candidates.length > 1) {\n return {\n ok: false,\n code: \"ambiguous-local-time\",\n message: `Invalid atTime: ${input} is ambiguous in ${timezone}; include Z or an explicit offset`,\n };\n }\n return { ok: true, date: candidates[0]!, hasExplicitOffset: false };\n}\n","/**\n * Human-readable display names for model IDs across all providers.\n * Falls back to the raw model ID if no mapping is found.\n */\nconst MODEL_DISPLAY_NAMES = Object.freeze<Record<string, string>>({\n // Anthropic direct (claude-code-oauth-token, anthropic-api-key, vm0)\n \"claude-fable-5\": \"Claude Fable 5\",\n \"claude-sonnet-5\": \"Claude Sonnet 5\",\n \"claude-sonnet-4-6\": \"Claude Sonnet 4.6\",\n \"claude-opus-4-8\": \"Claude Opus 4.8\",\n \"claude-opus-4-6\": \"Claude Opus 4.6\",\n \"claude-opus-4-7\": \"Claude Opus 4.7\",\n \"claude-haiku-4-5\": \"Claude Haiku 4.5\",\n // Anthropic via OpenRouter / Vercel AI Gateway\n \"anthropic/claude-fable-5\": \"Claude Fable 5\",\n \"anthropic/claude-sonnet-5\": \"Claude Sonnet 5\",\n \"anthropic/claude-sonnet-4.6\": \"Claude Sonnet 4.6\",\n \"anthropic/claude-opus-4.8\": \"Claude Opus 4.8\",\n \"anthropic/claude-opus-4.6\": \"Claude Opus 4.6\",\n \"anthropic/claude-opus-4.7\": \"Claude Opus 4.7\",\n \"anthropic/claude-sonnet-4.5\": \"Claude Sonnet 4.5\",\n \"anthropic/claude-opus-4.5\": \"Claude Opus 4.5\",\n \"anthropic/claude-haiku-4.5\": \"Claude Haiku 4.5\",\n // DeepSeek (native)\n \"deepseek-v4-pro\": \"DeepSeek V4 Pro\",\n \"deepseek-v4-flash\": \"DeepSeek V4 Flash\",\n // DeepSeek via OpenRouter\n \"deepseek/deepseek-v4-pro\": \"DeepSeek V4 Pro\",\n \"deepseek/deepseek-v4-flash\": \"DeepSeek V4 Flash\",\n // MiniMax\n \"MiniMax-M3\": \"MiniMax M3\",\n \"MiniMax-M2.7\": \"MiniMax M2.7\",\n \"MiniMax-M2.1\": \"MiniMax M2.1\",\n \"minimax/minimax-m2.5\": \"MiniMax M2.5\",\n // Kimi / Moonshot\n \"kimi-k2.6\": \"Kimi K2.6\",\n \"kimi-k2.5\": \"Kimi K2.5\",\n \"kimi-k2.7-code\": \"Kimi K2.7 Code\",\n \"kimi-k2-thinking\": \"Kimi K2 Thinking\",\n \"kimi-k2-thinking-turbo\": \"Kimi K2 Thinking Turbo\",\n \"moonshotai/kimi-k2.6\": \"Kimi K2.6\",\n \"moonshotai/kimi-k2.5\": \"Kimi K2.5\",\n // GLM / ZhipuAI\n \"glm-5.2\": \"GLM-5.2\",\n \"glm-5.1\": \"GLM-5.1\",\n \"glm-5\": \"GLM-5\",\n \"glm-4.7\": \"GLM-4.7\",\n \"glm-4.5-air\": \"GLM-4.5 Air\",\n \"zai/glm-5-turbo\": \"GLM-5 Turbo\",\n \"z-ai/glm-5.2\": \"GLM-5.2\",\n \"z-ai/glm-5.1\": \"GLM-5.1\",\n // Minimax via OpenRouter\n \"minimax/minimax-m2.7\": \"MiniMax M2.7\",\n // OpenAI / Codex\n \"gpt-5.6-sol\": \"GPT 5.6 Sol\",\n \"gpt-5.6-terra\": \"GPT 5.6 Terra\",\n \"gpt-5.6-luna\": \"GPT 5.6 Luna\",\n \"gpt-5.5\": \"GPT 5.5\",\n \"gpt-5.4\": \"GPT-5.4\",\n \"gpt-5.4-mini\": \"GPT-5.4 Mini\",\n \"gpt-5.3-codex\": \"GPT-5.3 Codex\",\n \"gpt-5.2\": \"GPT-5.2\",\n // Built-in image generation\n \"nano-banana-2\": \"Nano Banana 2\",\n \"fal-ai/nano-banana-2\": \"Nano Banana 2\",\n \"fal-ai/flux-pro/v1.1\": \"Flux Pro v1.1\",\n \"fal-ai/flux-pro/v1.1-ultra\": \"Flux Pro v1.1 Ultra\",\n \"fal-ai/qwen-image\": \"Qwen Image\",\n \"fal-ai/bytedance/seedream/v4/text-to-image\": \"Seedream 4\",\n // Built-in video generation\n \"dreamina-seedance-2-0-260128\": \"Seedance 2.0\",\n \"dreamina-seedance-2-0-fast-260128\": \"Seedance 2.0 Fast\",\n \"seedance-2-0-260128\": \"Seedance 2.0\",\n \"seedance-2-0-fast-260128\": \"Seedance 2.0 Fast\",\n \"seedance-1-5-pro-251215\": \"Seedance 1.5 Pro\",\n \"fal-ai/veo3.1\": \"Veo 3.1\",\n \"fal-ai/veo3.1/fast\": \"Veo 3.1 Fast\",\n \"fal-ai/kling-video/o3/standard/text-to-video\": \"Kling O3 Standard\",\n \"fal-ai/kling-video/v3/4k/text-to-video\": \"Kling 3 4K\",\n});\n\n/**\n * Get a human-readable display name for a model ID.\n * Returns the raw model ID if no friendly name is defined.\n */\nexport function getModelDisplayName(model: string): string {\n return MODEL_DISPLAY_NAMES[model] ?? model;\n}\n","const SERIALIZED_VALUE_MAX_DEPTH = 32;\nconst SERIALIZED_OBJECT_MAX_ENTRIES = 64;\nconst SERIALIZED_VALUE_MAX_NODES = 1024;\nconst SERIALIZED_STRING_MAX_LENGTH = 4096;\nconst CIRCULAR_MARKER = \"[Circular]\";\nconst TRUNCATED_MARKER = \"[Truncated]\";\nconst UNREADABLE_MARKER = \"[Unreadable]\";\n\ninterface SerializationState {\n readonly seen: WeakSet<object>;\n nodes: number;\n}\n\ninterface BoundedEntries {\n readonly entries: readonly [string, unknown][];\n readonly truncated: boolean;\n}\n\nfunction hasOwnSerializedField(\n value: Record<string, unknown>,\n key: string,\n): boolean {\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction setSerializedField(\n value: Record<string, unknown>,\n key: string,\n child: unknown,\n): void {\n Object.defineProperty(value, key, {\n value: child,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\n/**\n * Extract message string from log arguments.\n */\nexport function formatMessage(args: unknown[]): string {\n if (args.length === 0) return \"\";\n if (typeof args[0] === \"string\") return args[0];\n if (args[0] instanceof Error) {\n const message = safeReadValue(() => {\n return args[0] instanceof Error ? args[0].message : undefined;\n });\n return typeof message === \"string\" ? message : UNREADABLE_MARKER;\n }\n return safeString(args[0]);\n}\n\n/**\n * Serialize an Error instance into a plain object. Error's built-in\n * properties (name, message, stack, cause) are non-enumerable, so spreading\n * an Error loses them. This explicitly copies them plus any additional\n * enumerable own properties (e.g. code, statusCode on custom errors).\n */\nfunction serializeErrorWithSeen(\n err: Error,\n state: SerializationState,\n depth: number,\n): Record<string, unknown> {\n const name = safeReadValue(() => {\n return err.name;\n });\n const message = safeReadValue(() => {\n return err.message;\n });\n const serialized: Record<string, unknown> = {\n name: typeof name === \"string\" ? name : \"Error\",\n message:\n typeof message === \"string\"\n ? serializeStringValue(message)\n : UNREADABLE_MARKER,\n };\n state.seen.add(err);\n const stack = safeReadValue(() => {\n return err.stack;\n });\n if (stack !== undefined) {\n setSerializedField(\n serialized,\n \"stack\",\n typeof stack === \"string\"\n ? serializeStringValue(stack)\n : serializeErrorValue(stack, state, depth + 1),\n );\n }\n const cause = safeReadValue(() => {\n return err.cause;\n });\n if (cause !== undefined) {\n setSerializedField(\n serialized,\n \"cause\",\n serializeErrorValue(cause, state, depth + 1),\n );\n }\n const result = safeOwnEnumerableEntries(err);\n if (!result) {\n serialized.__unreadable = true;\n return serialized;\n }\n for (const [key, value] of result.entries) {\n if (!hasOwnSerializedField(serialized, key)) {\n setSerializedField(\n serialized,\n key,\n serializeErrorValue(value, state, depth + 1),\n );\n }\n }\n if (result.truncated) {\n setSerializedField(serialized, \"__truncated\", true);\n }\n return serialized;\n}\n\nexport function serializeError(err: unknown): Record<string, unknown> {\n const state: SerializationState = { seen: new WeakSet<object>(), nodes: 0 };\n if (err instanceof Error) {\n reserveSerializedNode(state);\n return serializeErrorWithSeen(err, state, 0);\n }\n return { value: serializeErrorValue(err, state, 0) };\n}\n\nfunction safeReadValue(read: () => unknown): unknown {\n try {\n return read();\n } catch {\n return UNREADABLE_MARKER;\n }\n}\n\nfunction safeOwnEnumerableEntries(value: object): BoundedEntries | null {\n const entries: [string, unknown][] = [];\n try {\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n if (!Object.prototype.propertyIsEnumerable.call(value, key)) {\n continue;\n }\n if (entries.length >= SERIALIZED_OBJECT_MAX_ENTRIES) {\n return { entries, truncated: true };\n }\n const child = safeReadValue(() => {\n return (value as Record<string, unknown>)[key];\n });\n entries.push([key, child]);\n }\n } catch {\n return null;\n }\n return { entries, truncated: false };\n}\n\nfunction safeString(value: unknown): string {\n const result = safeReadValue(() => {\n return String(value);\n });\n return typeof result === \"string\" ? result : UNREADABLE_MARKER;\n}\n\nfunction serializeStringValue(value: string): string {\n if (value.length <= SERIALIZED_STRING_MAX_LENGTH) {\n return value;\n }\n return `${value.slice(0, SERIALIZED_STRING_MAX_LENGTH - 3)}...`;\n}\n\nfunction serializeFunctionValue(value: { readonly name: string }): string {\n const name = safeReadValue(() => {\n return value.name;\n });\n return typeof name === \"string\" && name\n ? serializeStringValue(`[Function ${name}]`)\n : \"[Function]\";\n}\n\nfunction serializeNonObjectValue(value: unknown): unknown {\n if (typeof value === \"string\") {\n return serializeStringValue(value);\n }\n if (typeof value === \"bigint\" || typeof value === \"symbol\") {\n return serializeStringValue(safeString(value));\n }\n if (typeof value === \"function\") {\n return serializeFunctionValue(value);\n }\n return value;\n}\n\nfunction isObjectValue(value: unknown): value is object {\n return value !== null && typeof value === \"object\";\n}\n\nfunction serializeDateValue(value: Date): unknown {\n const time = safeReadValue(() => {\n return value.getTime();\n });\n if (typeof time !== \"number\" || Number.isNaN(time)) {\n return serializeStringValue(safeString(value));\n }\n const iso = safeReadValue(() => {\n return value.toISOString();\n });\n return typeof iso === \"string\" ? iso : UNREADABLE_MARKER;\n}\n\nfunction serializeArrayValue(\n value: readonly unknown[],\n state: SerializationState,\n depth: number,\n): unknown {\n const result = safeOwnEnumerableEntries(value);\n if (!result) {\n return UNREADABLE_MARKER;\n }\n const items = result.entries.map((item) => {\n const [, child] = item;\n return serializeErrorValue(child, state, depth + 1);\n });\n if (result.truncated) {\n items.push(TRUNCATED_MARKER);\n }\n return items;\n}\n\nfunction serializePlainObjectValue(\n value: object,\n state: SerializationState,\n depth: number,\n): unknown {\n const result = safeOwnEnumerableEntries(value);\n if (!result) {\n return UNREADABLE_MARKER;\n }\n const serialized: Record<string, unknown> = {};\n for (const [key, child] of result.entries) {\n setSerializedField(\n serialized,\n key,\n serializeErrorValue(child, state, depth + 1),\n );\n }\n if (result.truncated) {\n setSerializedField(serialized, \"__truncated\", true);\n }\n return serialized;\n}\n\nfunction reserveSerializedNode(state: SerializationState): boolean {\n if (state.nodes >= SERIALIZED_VALUE_MAX_NODES) {\n return false;\n }\n state.nodes += 1;\n return true;\n}\n\nfunction serializeErrorValue(\n value: unknown,\n state: SerializationState,\n depth: number,\n): unknown {\n if (!reserveSerializedNode(state)) {\n return TRUNCATED_MARKER;\n }\n if (!isObjectValue(value)) {\n return serializeNonObjectValue(value);\n }\n if (state.seen.has(value)) {\n return CIRCULAR_MARKER;\n }\n if (depth > SERIALIZED_VALUE_MAX_DEPTH) {\n return TRUNCATED_MARKER;\n }\n if (value instanceof Error) {\n return serializeErrorWithSeen(value, state, depth);\n }\n if (value instanceof Date) {\n return serializeDateValue(value);\n }\n if (value instanceof RegExp) {\n return serializeStringValue(safeString(value));\n }\n\n state.seen.add(value);\n if (Array.isArray(value)) {\n return serializeArrayValue(value, state, depth);\n }\n return serializePlainObjectValue(value, state, depth);\n}\n\n/**\n * Extract structured fields from log arguments.\n * If second argument is an object, use it as fields.\n * If second argument is an Error, wrap it under `error` with non-enumerable\n * properties (name/message/stack/cause) explicitly serialized.\n * Otherwise, wrap remaining arguments in an 'args' field.\n */\nexport function extractFields(args: unknown[]): Record<string, unknown> {\n if (args.length <= 1) {\n if (args.length === 1 && args[0] instanceof Error) {\n return { error: serializeError(args[0]) };\n }\n return {};\n }\n const fields = args.slice(1);\n if (\n fields.length === 1 &&\n typeof fields[0] === \"object\" &&\n fields[0] !== null\n ) {\n const value = fields[0];\n if (value instanceof Error) {\n return { error: serializeError(value) };\n }\n return value as Record<string, unknown>;\n }\n return { args: fields };\n}\n","import { stringify as stringifyYaml } from \"yaml\";\n\n/**\n * Synthesize the SKILL.md written to a workflow's volume.\n *\n * The DB is the single source of truth for a workflow: its (name, description,\n * instruction) are composed into a SKILL.md whose frontmatter is generated, not\n * user-authored. Users never see or edit the frontmatter — they edit only the\n * instruction body and the supplementary files.\n */\nexport function synthesizeWorkflowSkillMd(args: {\n readonly name: string;\n readonly description: string | null;\n readonly instruction: string | null;\n}): string {\n const frontmatter = stringifyYaml({\n name: args.name,\n // Claude Code requires a description; fall back to the slug.\n description: args.description ?? args.name,\n }).trimEnd();\n const body = (args.instruction ?? \"\").trim();\n return body.length > 0\n ? `---\\n${frontmatter}\\n---\\n\\n${body}\\n`\n : `---\\n${frontmatter}\\n---\\n`;\n}\n\n/**\n * Extract the instruction body from an existing SKILL.md by stripping a leading\n * YAML frontmatter block. Used to backfill the `instruction` column from\n * volumes authored before the DB became the source of truth.\n */\nexport function extractInstructionFromSkillMd(content: string): string {\n const match = content.match(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n?/);\n const body = match ? content.slice(match[0].length) : content;\n return body.trim();\n}\n","/**\n * Event parser for Claude Code JSONL events\n * Converts raw JSONL events into simplified, user-friendly format\n *\n * Note: VM0 lifecycle events (vm0_start, vm0_result, vm0_error) are no longer\n * sent as events. Instead, run state is returned in the events API response.\n */\n\nexport interface ParsedEvent {\n type: \"init\" | \"text\" | \"tool_use\" | \"tool_result\" | \"result\";\n timestamp: Date;\n data: Record<string, unknown>;\n}\n\ninterface SystemEvent {\n type: \"system\";\n subtype: string;\n cwd?: string;\n session_id: string;\n tools: string[];\n model: string;\n}\n\ninterface AssistantEvent {\n type: \"assistant\";\n message: {\n role: \"assistant\";\n content: Array<{\n type: string;\n text?: string;\n id?: string;\n name?: string;\n input?: Record<string, unknown>;\n }>;\n usage?: Record<string, unknown>;\n };\n session_id: string;\n}\n\ninterface UserEvent {\n type: \"user\";\n message: {\n role: \"user\";\n content: Array<{\n type: string;\n tool_use_id?: string;\n content?: string;\n is_error?: boolean;\n }>;\n };\n session_id: string;\n}\n\ninterface ResultEvent {\n type: \"result\";\n subtype: string;\n is_error: boolean;\n duration_ms: number;\n num_turns: number;\n result: string;\n session_id: string;\n total_cost_usd: number;\n usage: Record<string, unknown>;\n}\n\ntype RawEvent =\n | SystemEvent\n | AssistantEvent\n | UserEvent\n | ResultEvent\n | Record<string, unknown>;\n\nexport class ClaudeEventParser {\n /**\n * Parse a raw Claude Code JSONL event into a simplified format\n * Returns null if the event type is unknown or malformed\n */\n static parse(rawEvent: RawEvent): ParsedEvent | null {\n if (!rawEvent || typeof rawEvent !== \"object\" || !(\"type\" in rawEvent)) {\n return null;\n }\n\n switch (rawEvent.type) {\n case \"system\":\n return this.parseSystemEvent(rawEvent as SystemEvent);\n\n case \"assistant\":\n return this.parseAssistantMessage(rawEvent as AssistantEvent);\n\n case \"user\":\n return this.parseUserMessage(rawEvent as UserEvent);\n\n case \"result\":\n return this.parseResultEvent(rawEvent as ResultEvent);\n\n default:\n return null;\n }\n }\n\n private static parseSystemEvent(event: SystemEvent): ParsedEvent | null {\n if (event.subtype !== \"init\") {\n return null;\n }\n\n return {\n type: \"init\",\n timestamp: new Date(),\n data: {\n framework: \"claude-code\",\n sessionId: event.session_id,\n model: event.model,\n tools: event.tools,\n ...(event.cwd && { cwd: event.cwd }),\n },\n };\n }\n\n private static parseAssistantMessage(\n event: AssistantEvent,\n ): ParsedEvent | null {\n if (!event.message?.content || event.message.content.length === 0) {\n return null;\n }\n\n const content = event.message.content[0];\n\n if (!content) {\n return null;\n }\n\n if (content.type === \"text\") {\n return {\n type: \"text\",\n timestamp: new Date(),\n data: { text: content.text },\n };\n }\n\n if (content.type === \"tool_use\") {\n return {\n type: \"tool_use\",\n timestamp: new Date(),\n data: {\n tool: content.name,\n toolUseId: content.id,\n input: content.input || {},\n },\n };\n }\n\n return null;\n }\n\n private static parseUserMessage(event: UserEvent): ParsedEvent | null {\n if (!event.message?.content || event.message.content.length === 0) {\n return null;\n }\n\n const content = event.message.content[0];\n\n if (!content) {\n return null;\n }\n\n if (content.type === \"tool_result\") {\n return {\n type: \"tool_result\",\n timestamp: new Date(),\n data: {\n toolUseId: content.tool_use_id,\n result: content.content,\n isError: content.is_error || false,\n },\n };\n }\n\n return null;\n }\n\n private static parseResultEvent(event: ResultEvent): ParsedEvent | null {\n return {\n type: \"result\",\n timestamp: new Date(),\n data: {\n success: !event.is_error,\n result: event.result,\n durationMs: event.duration_ms,\n numTurns: event.num_turns,\n cost: event.total_cost_usd,\n usage: event.usage,\n },\n };\n }\n}\n","/**\n * Event parser for OpenAI Codex CLI JSONL events.\n *\n * The parser accepts both legacy `codex exec --json` events and the\n * Codex-style compatibility events produced by the vm0 guest-agent app-server\n * adapter. It deliberately does not consume raw app-server JSON-RPC\n * notifications.\n */\n\nimport type { ParsedEvent } from \"./claude-event-parser\";\n\ntype JsonRecord = Record<string, unknown>;\n\nconst MAX_FORMATTED_ARRAY_ITEMS = 6;\nconst MAX_FORMATTED_ARRAY_DEPTH = 4;\nconst MAX_FORMATTED_OBJECT_FIELDS = 8;\nconst MAX_FORMATTED_OBJECT_INSPECTED_FIELDS = 16;\nconst MAX_FORMATTED_TEXT_LENGTH = 240;\nconst MAX_ERROR_SIGNAL_DEPTH = 8;\nconst MAX_FORMATTED_PLAN_STEPS = 20;\nconst MAX_FORMATTED_FILE_CHANGES = 20;\n\nfunction asRecord(value: unknown): JsonRecord | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return null;\n }\n return value as JsonRecord;\n}\n\nfunction hasOwnKey(record: JsonRecord, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(record, key);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction nonEmptyStringValue(value: unknown): string | undefined {\n const valueString = stringValue(value);\n return valueString && valueString.length > 0 ? valueString : undefined;\n}\n\nfunction trimmedStringValue(value: unknown): string | undefined {\n const valueString = stringValue(value)?.trim();\n return valueString && valueString.length > 0 ? valueString : undefined;\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\nfunction getFirstString(\n record: JsonRecord,\n keys: readonly string[],\n): string | undefined {\n for (const key of keys) {\n const value = trimmedStringValue(record[key]);\n if (value) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction getFirstNumber(\n record: JsonRecord,\n keys: readonly string[],\n): number | undefined {\n for (const key of keys) {\n const value = numberValue(record[key]);\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction truncate(text: string): string {\n if (text.length <= MAX_FORMATTED_TEXT_LENGTH) {\n return text;\n }\n return `${text.slice(0, MAX_FORMATTED_TEXT_LENGTH - 3)}...`;\n}\n\nfunction formatScalar(value: unknown): string | undefined {\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0 ? truncate(value) : undefined;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return truncate(String(value));\n }\n return undefined;\n}\n\nfunction hasSignalValue(value: unknown, depth = 0): boolean {\n if (value === null || value === undefined || value === false) {\n return false;\n }\n\n if (typeof value === \"string\") {\n return value.trim().length > 0;\n }\n\n if (typeof value === \"number\") {\n return Number.isFinite(value);\n }\n\n if (typeof value === \"boolean\") {\n return true;\n }\n\n if (depth >= MAX_ERROR_SIGNAL_DEPTH) {\n return false;\n }\n\n if (Array.isArray(value)) {\n if (depth >= MAX_FORMATTED_ARRAY_DEPTH) {\n return false;\n }\n\n return value.slice(0, MAX_FORMATTED_ARRAY_ITEMS).some((item) => {\n return hasSignalValue(item, depth + 1);\n });\n }\n\n const record = asRecord(value);\n if (!record) {\n return false;\n }\n\n let inspectedFields = 0;\n for (const key in record) {\n if (!hasOwnKey(record, key)) {\n continue;\n }\n if (inspectedFields >= MAX_FORMATTED_OBJECT_INSPECTED_FIELDS) {\n return false;\n }\n inspectedFields += 1;\n if (hasSignalValue(record[key], depth + 1)) {\n return true;\n }\n }\n return false;\n}\n\nfunction formatUnknownValue(value: unknown, depth = 0): string | undefined {\n const scalar = formatScalar(value);\n if (scalar !== undefined) {\n return scalar;\n }\n\n if (Array.isArray(value)) {\n if (depth >= MAX_FORMATTED_ARRAY_DEPTH) {\n return \"...\";\n }\n\n const items = value\n .slice(0, MAX_FORMATTED_ARRAY_ITEMS)\n .map((item) => {\n return formatUnknownValue(item, depth + 1);\n })\n .filter((item): item is string => {\n return item !== undefined && item.length > 0;\n });\n if (items.length === 0) {\n return undefined;\n }\n const suffix = value.length > MAX_FORMATTED_ARRAY_ITEMS ? \", ...\" : \"\";\n return `[${items.join(\", \")}${suffix}]`;\n }\n\n const record = asRecord(value);\n if (!record || depth > 0) {\n return undefined;\n }\n\n const fields: string[] = [];\n let inspectedFields = 0;\n for (const key in record) {\n if (!hasOwnKey(record, key)) {\n continue;\n }\n if (\n fields.length >= MAX_FORMATTED_OBJECT_FIELDS ||\n inspectedFields >= MAX_FORMATTED_OBJECT_INSPECTED_FIELDS\n ) {\n fields.push(\"...\");\n break;\n }\n inspectedFields += 1;\n const fieldValue = record[key];\n const formatted = formatUnknownValue(fieldValue, depth + 1);\n if (formatted !== undefined) {\n fields.push(`${key}=${formatted}`);\n }\n }\n return fields.length > 0 ? `{${fields.join(\", \")}}` : undefined;\n}\n\nfunction formatSignalValue(\n value: unknown,\n includeBoundedPlaceholder = false,\n): string | undefined {\n if (value === null || value === undefined || value === false) {\n return undefined;\n }\n const formatted = formatUnknownValue(value);\n if (!formatted) {\n return undefined;\n }\n if (hasSignalValue(value)) {\n return formatted;\n }\n return includeBoundedPlaceholder && formatted.includes(\"...\")\n ? formatted\n : undefined;\n}\n\nfunction combineDistinctMessages(\n first: string | undefined,\n second: string | undefined,\n): string | undefined {\n const messages: string[] = [];\n for (const message of [first, second]) {\n const trimmed = message?.trim();\n if (!trimmed) {\n continue;\n }\n const containingIndex = messages.findIndex((existing) => {\n return existing === trimmed || existing.includes(trimmed);\n });\n if (containingIndex !== -1) {\n continue;\n }\n\n const containedIndex = messages.findIndex((existing) => {\n return trimmed.includes(existing);\n });\n if (containedIndex !== -1) {\n messages[containedIndex] = trimmed;\n continue;\n }\n\n messages.push(trimmed);\n }\n return messages.length > 0 ? messages.join(\"\\n\") : undefined;\n}\n\nfunction isGenericFailureMessage(message: string): boolean {\n const normalized = message\n .trim()\n .toLowerCase()\n .replace(/[\\s.:!?]+$/u, \"\");\n return (\n normalized === \"error\" ||\n normalized === \"turn failed\" ||\n normalized === \"turn interrupted\" ||\n normalized === \"unknown error\" ||\n normalized === \"codex error\"\n );\n}\n\nfunction combineResultWithError(\n result: string | undefined,\n errorMessage: string | undefined,\n): string | undefined {\n if (result === undefined || result.length === 0) {\n return errorMessage;\n }\n if (!errorMessage) {\n return result;\n }\n\n const trimmedResult = result.trim();\n if (!trimmedResult) {\n return errorMessage;\n }\n if (trimmedResult === errorMessage || trimmedResult.includes(errorMessage)) {\n return result;\n }\n if (errorMessage.includes(trimmedResult)) {\n return errorMessage;\n }\n\n return `${result}\\n${errorMessage}`;\n}\n\nfunction formatDetailSuffix(details: readonly string[]): string {\n return details.length > 0 ? ` (${details.join(\"; \")})` : \"\";\n}\n\nfunction extractErrorMessage(value: unknown, depth = 0): string | undefined {\n if (value === null || value === undefined || value === false) {\n return undefined;\n }\n\n const direct = trimmedStringValue(value);\n if (direct) {\n return direct;\n }\n\n const record = asRecord(value);\n if (!record) {\n return hasSignalValue(value, depth) ? formatUnknownValue(value) : undefined;\n }\n\n const message =\n getFirstString(record, [\"message\"]) ??\n getFirstString(record, [\"error\", \"code\", \"failureReason\"]);\n const details = [\n getFirstString(record, [\"additional_details\", \"additionalDetails\"]),\n getFirstString(record, [\"codex_error_info\", \"codexErrorInfo\"]),\n formatSignalValue(record.connectors, message !== undefined),\n ].filter((detail): detail is string => {\n return detail !== undefined && detail.length > 0;\n });\n\n if (message) {\n const uniqueDetails = details.filter((detail) => {\n return !message.includes(detail);\n });\n return `${message}${formatDetailSuffix(uniqueDetails)}`;\n }\n\n if (details.length > 0) {\n return details.join(\"; \");\n }\n\n if (depth >= MAX_ERROR_SIGNAL_DEPTH) {\n return undefined;\n }\n\n const nested = extractErrorMessage(record.error, depth + 1);\n if (nested) {\n return nested;\n }\n\n return hasSignalValue(record, depth) ? formatUnknownValue(record) : undefined;\n}\n\nfunction extractEventErrorMessage(event: JsonRecord): string | undefined {\n return combineDistinctMessages(\n trimmedStringValue(event.message),\n extractErrorMessage(event.error),\n );\n}\n\nfunction getTurnRecord(event: JsonRecord): JsonRecord | null {\n return asRecord(event.turn);\n}\n\nfunction getTurnId(event: JsonRecord): string | undefined {\n const topLevelId = getFirstString(event, [\"turn_id\", \"turnId\"]);\n if (topLevelId) {\n return topLevelId;\n }\n const turn = getTurnRecord(event);\n return turn ? getFirstString(turn, [\"id\"]) : undefined;\n}\n\nfunction getTurnStatus(event: JsonRecord): string | undefined {\n const turn = getTurnRecord(event);\n return (\n (turn ? getFirstString(turn, [\"status\"]) : undefined) ??\n getFirstString(event, [\"status\"])\n );\n}\n\nconst FAILED_STATUSES = new Set([\n \"aborted\",\n \"cancelled\",\n \"canceled\",\n \"declined\",\n \"error\",\n \"failed\",\n \"interrupted\",\n \"timed_out\",\n \"timeout\",\n]);\n\nconst SUCCESSFUL_TURN_COMPLETION_STATUSES = new Set([\n \"completed\",\n \"success\",\n \"succeeded\",\n]);\n\nfunction isFailedStatus(status: string | undefined): boolean {\n return status !== undefined && FAILED_STATUSES.has(status.toLowerCase());\n}\n\nfunction isUnsuccessfulTurnCompletionStatus(\n status: string | undefined,\n): boolean {\n return (\n status !== undefined &&\n !SUCCESSFUL_TURN_COMPLETION_STATUSES.has(status.toLowerCase())\n );\n}\n\nfunction hasExtractableError(value: unknown): boolean {\n return extractErrorMessage(value) !== undefined;\n}\n\nfunction hasTurnCompletionError(\n event: JsonRecord,\n turn: JsonRecord | null,\n): boolean {\n return (\n (turn !== null && hasExtractableError(turn.error)) ||\n hasExtractableError(event.error)\n );\n}\n\nfunction getTurnErrorMessage(\n event: JsonRecord,\n turn: JsonRecord | null,\n): string | undefined {\n const turnMessage =\n turn !== null ? extractErrorMessage(turn.error) : undefined;\n const eventMessage = extractEventErrorMessage(event);\n if (turnMessage && eventMessage && isGenericFailureMessage(eventMessage)) {\n return turnMessage;\n }\n return combineDistinctMessages(turnMessage, eventMessage);\n}\n\nfunction getUsage(event: JsonRecord): JsonRecord {\n const eventUsage = asRecord(event.usage);\n if (eventUsage !== null) {\n return eventUsage;\n }\n\n const turn = getTurnRecord(event);\n if (turn === null) {\n return {};\n }\n\n const turnUsage = asRecord(turn.usage);\n return turnUsage === null ? {} : turnUsage;\n}\n\nfunction getTurnDurationMs(event: JsonRecord, turn: JsonRecord | null): number {\n return (\n (turn ? getFirstNumber(turn, [\"duration_ms\", \"durationMs\"]) : undefined) ??\n getFirstNumber(event, [\"duration_ms\", \"durationMs\"]) ??\n 0\n );\n}\n\nfunction getItem(event: JsonRecord): JsonRecord | null {\n return asRecord(event.item);\n}\n\nfunction getItemId(item: JsonRecord): string | undefined {\n return getFirstString(item, [\"id\"]);\n}\n\nfunction getItemType(item: JsonRecord): string | undefined {\n return getFirstString(item, [\"type\"]);\n}\n\nfunction getItemStatus(item: JsonRecord): string | undefined {\n return getFirstString(item, [\"status\"]);\n}\n\nfunction getItemErrorMessage(item: JsonRecord): string | undefined {\n return extractErrorMessage(item.error);\n}\n\nfunction shouldRenderGenericItemFailure(\n eventType: string,\n item: JsonRecord,\n): boolean {\n return (\n eventType === \"item.completed\" &&\n (isFailedStatus(getItemStatus(item)) ||\n getItemErrorMessage(item) !== undefined)\n );\n}\n\nfunction formatPlanStatus(status: string | undefined): string {\n if (status === \"completed\") return \"completed\";\n if (status === \"in_progress\") return \"in progress\";\n if (status === \"pending\") return \"pending\";\n return status ?? \"step\";\n}\n\nfunction formatPlanLines(plan: unknown): string[] {\n if (!Array.isArray(plan)) {\n return [];\n }\n const lines = plan\n .slice(0, MAX_FORMATTED_PLAN_STEPS)\n .map((step) => {\n const stepRecord = asRecord(step);\n if (!stepRecord) {\n return undefined;\n }\n const text = trimmedStringValue(stepRecord.step);\n if (!text) {\n return undefined;\n }\n const status = formatPlanStatus(trimmedStringValue(stepRecord.status));\n return `- ${status}: ${text}`;\n })\n .filter((line): line is string => {\n return line !== undefined;\n });\n const remaining = plan.length - MAX_FORMATTED_PLAN_STEPS;\n if (remaining > 0) {\n lines.push(`- ... +${remaining} more steps`);\n }\n return lines;\n}\n\nfunction formatGenericItem(item: JsonRecord): string | undefined {\n const itemType = getItemType(item);\n if (!itemType) {\n return undefined;\n }\n\n const fields: string[] = [itemType];\n const id = getItemId(item);\n if (id) {\n fields.push(`id=${id}`);\n }\n const status = getItemStatus(item);\n if (status) {\n fields.push(`status=${status}`);\n }\n\n let inspectedFields = 0;\n for (const key in item) {\n if (!hasOwnKey(item, key)) {\n continue;\n }\n if (key === \"id\" || key === \"type\" || key === \"status\") {\n continue;\n }\n if (\n fields.length >= MAX_FORMATTED_OBJECT_FIELDS + 3 ||\n inspectedFields >= MAX_FORMATTED_OBJECT_INSPECTED_FIELDS\n ) {\n fields.push(\"...\");\n break;\n }\n inspectedFields += 1;\n const value = item[key];\n const formatted = formatUnknownValue(value);\n if (formatted !== undefined) {\n fields.push(`${key}=${formatted}`);\n }\n }\n\n return `[item] ${fields.join(\" \")}`;\n}\n\nfunction formatFileChangeAction(kind: string | undefined): string {\n if (kind === \"add\") return \"Created\";\n if (kind === \"modify\") return \"Modified\";\n if (kind === \"delete\") return \"Deleted\";\n return \"Changed\";\n}\n\nexport class CodexEventParser {\n /**\n * Parse a raw Codex JSONL event into the shared CLI parsed-event format.\n * Returns null if the event type is unknown or too malformed to display.\n */\n static parse(rawEvent: unknown): ParsedEvent | null {\n const event = asRecord(rawEvent);\n if (!event) {\n return null;\n }\n\n const eventType = stringValue(event.type);\n if (!eventType) {\n return null;\n }\n\n if (eventType === \"thread.started\") {\n return this.parseThreadStarted(event);\n }\n\n if (eventType === \"turn.completed\") {\n return this.parseTurnCompleted(event);\n }\n\n if (eventType === \"turn.failed\") {\n return this.parseTurnFailed(event);\n }\n\n if (eventType === \"turn.plan.updated\") {\n return this.parseTurnPlanUpdated(event);\n }\n\n if (eventType === \"warning\") {\n return this.parseWarning(event);\n }\n\n if (eventType.startsWith(\"item.\")) {\n return this.parseItemEvent(event, eventType);\n }\n\n if (eventType === \"error\") {\n return this.parseErrorEvent(event);\n }\n\n return null;\n }\n\n private static parseThreadStarted(event: JsonRecord): ParsedEvent | null {\n const threadId = getFirstString(event, [\"thread_id\", \"threadId\"]);\n if (!threadId) {\n return null;\n }\n\n return {\n type: \"init\",\n timestamp: new Date(),\n data: {\n framework: \"codex\",\n sessionId: threadId,\n tools: [],\n },\n };\n }\n\n private static parseTurnCompleted(event: JsonRecord): ParsedEvent | null {\n const status = getTurnStatus(event);\n const turn = getTurnRecord(event);\n const turnId = getTurnId(event);\n const durationMs = getTurnDurationMs(event, turn);\n\n if (\n isUnsuccessfulTurnCompletionStatus(status) ||\n hasTurnCompletionError(event, turn)\n ) {\n const result =\n getTurnErrorMessage(event, turn) ??\n (status ? `Turn ${status}` : \"Turn failed\");\n return {\n type: \"result\",\n timestamp: new Date(),\n data: {\n success: false,\n result,\n durationMs,\n numTurns: 1,\n cost: 0,\n usage: getUsage(event),\n ...(turnId ? { turnId } : {}),\n },\n };\n }\n\n return {\n type: \"result\",\n timestamp: new Date(),\n data: {\n success: true,\n result: \"\",\n durationMs,\n numTurns: 1,\n cost: 0,\n usage: getUsage(event),\n ...(turnId ? { turnId } : {}),\n },\n };\n }\n\n private static parseTurnFailed(event: JsonRecord): ParsedEvent | null {\n const turn = getTurnRecord(event);\n const turnId = getTurnId(event);\n return {\n type: \"result\",\n timestamp: new Date(),\n data: {\n success: false,\n result: getTurnErrorMessage(event, turn) ?? \"Turn failed\",\n durationMs: getTurnDurationMs(event, turn),\n numTurns: 1,\n cost: 0,\n usage: getUsage(event),\n ...(turnId ? { turnId } : {}),\n },\n };\n }\n\n private static parseTurnPlanUpdated(event: JsonRecord): ParsedEvent | null {\n const lines = formatPlanLines(event.plan);\n const explanation = trimmedStringValue(event.explanation);\n if (lines.length === 0 && !explanation) {\n return null;\n }\n\n return {\n type: \"text\",\n timestamp: new Date(),\n data: {\n text: [\"[plan]\", explanation, ...lines]\n .filter((line): line is string => {\n return line !== undefined && line.length > 0;\n })\n .join(\"\\n\"),\n },\n };\n }\n\n private static parseWarning(event: JsonRecord): ParsedEvent | null {\n const message = extractEventErrorMessage(event);\n if (!message) {\n return null;\n }\n\n return {\n type: \"text\",\n timestamp: new Date(),\n data: { text: `[warning] ${message}` },\n };\n }\n\n private static parseItemEvent(\n event: JsonRecord,\n eventType: string,\n ): ParsedEvent | null {\n const item = getItem(event);\n if (!item) {\n return null;\n }\n\n const itemType = getItemType(item);\n if (!itemType) {\n return null;\n }\n\n if (itemType === \"agent_message\") {\n return this.parseTextItem(eventType, item, (text) => {\n return text;\n });\n }\n if (itemType === \"command_execution\") {\n return this.parseCommandExecution(eventType, item);\n }\n if (itemType === \"file_edit\" || itemType === \"file_write\") {\n return this.parseFileEditOrWrite(eventType, item);\n }\n if (itemType === \"file_read\") {\n return this.parseFileRead(eventType, item);\n }\n if (itemType === \"file_change\") {\n return this.parseFileChange(item);\n }\n if (itemType === \"reasoning\") {\n return this.parseTextItem(eventType, item, (text) => {\n return `[thinking] ${text}`;\n });\n }\n if (itemType === \"plan\") {\n return this.parseTextItem(eventType, item, (text) => {\n return `[plan]\\n${text}`;\n });\n }\n\n if (eventType === \"item.completed\") {\n return this.parseGenericCompletedItem(item);\n }\n\n return null;\n }\n\n private static parseTextItem(\n eventType: string,\n item: JsonRecord,\n formatText: (text: string) => string,\n ): ParsedEvent | null {\n const text = trimmedStringValue(item.text);\n if (text) {\n return {\n type: \"text\",\n timestamp: new Date(),\n data: { text: formatText(text) },\n };\n }\n\n return shouldRenderGenericItemFailure(eventType, item)\n ? this.parseGenericCompletedItem(item)\n : null;\n }\n\n private static parseGenericCompletedItem(\n item: JsonRecord,\n ): ParsedEvent | null {\n const text = formatGenericItem(item);\n return text\n ? { type: \"text\", timestamp: new Date(), data: { text } }\n : null;\n }\n\n private static parseCommandExecution(\n eventType: string,\n item: JsonRecord,\n ): ParsedEvent | null {\n const itemId = getItemId(item);\n const command = trimmedStringValue(item.command);\n if (!itemId) {\n return null;\n }\n\n if (eventType === \"item.started\" && command) {\n return {\n type: \"tool_use\",\n timestamp: new Date(),\n data: {\n tool: \"Bash\",\n toolUseId: itemId,\n input: { command },\n },\n };\n }\n\n if (eventType === \"item.completed\") {\n const output =\n nonEmptyStringValue(item.aggregated_output) ??\n nonEmptyStringValue(item.output) ??\n \"\";\n const status = getItemStatus(item);\n const exitCode = numberValue(item.exit_code);\n const errorMessage = getItemErrorMessage(item);\n const isError =\n (exitCode !== undefined ? exitCode !== 0 : false) ||\n isFailedStatus(status) ||\n errorMessage !== undefined;\n return {\n type: \"tool_result\",\n timestamp: new Date(),\n data: {\n tool: \"Bash\",\n toolUseId: itemId,\n input: command ? { command } : {},\n result:\n combineResultWithError(output, errorMessage) ??\n (isFailedStatus(status) ? `Command ${status}` : \"\"),\n isError,\n },\n };\n }\n\n return null;\n }\n\n private static parseFileEditOrWrite(\n eventType: string,\n item: JsonRecord,\n ): ParsedEvent | null {\n const itemId = getItemId(item);\n const path = trimmedStringValue(item.path);\n if (!itemId) {\n return null;\n }\n\n if (eventType === \"item.started\" && path) {\n return {\n type: \"tool_use\",\n timestamp: new Date(),\n data: {\n tool: getItemType(item) === \"file_edit\" ? \"Edit\" : \"Write\",\n toolUseId: itemId,\n input: { file_path: path },\n },\n };\n }\n\n if (eventType === \"item.completed\") {\n const status = getItemStatus(item);\n const tool = getItemType(item) === \"file_edit\" ? \"Edit\" : \"Write\";\n const errorMessage = getItemErrorMessage(item);\n return {\n type: \"tool_result\",\n timestamp: new Date(),\n data: {\n tool,\n toolUseId: itemId,\n input: path ? { file_path: path } : {},\n result:\n combineResultWithError(\n nonEmptyStringValue(item.diff),\n errorMessage,\n ) ??\n (isFailedStatus(status)\n ? `File operation ${status}`\n : \"File operation completed\"),\n isError: isFailedStatus(status) || errorMessage !== undefined,\n },\n };\n }\n\n return null;\n }\n\n private static parseFileRead(\n eventType: string,\n item: JsonRecord,\n ): ParsedEvent | null {\n const itemId = getItemId(item);\n const path = trimmedStringValue(item.path);\n if (!itemId) {\n return null;\n }\n\n if (eventType === \"item.started\" && path) {\n return {\n type: \"tool_use\",\n timestamp: new Date(),\n data: {\n tool: \"Read\",\n toolUseId: itemId,\n input: { file_path: path },\n },\n };\n }\n\n if (eventType === \"item.completed\") {\n const status = getItemStatus(item);\n const output = nonEmptyStringValue(item.output);\n const errorMessage = getItemErrorMessage(item);\n return {\n type: \"tool_result\",\n timestamp: new Date(),\n data: {\n tool: \"Read\",\n toolUseId: itemId,\n input: path ? { file_path: path } : {},\n result:\n combineResultWithError(output, errorMessage) ??\n (isFailedStatus(status)\n ? `File read ${status}`\n : \"File read completed\"),\n isError: isFailedStatus(status) || errorMessage !== undefined,\n },\n };\n }\n\n return null;\n }\n\n private static parseFileChange(item: JsonRecord): ParsedEvent | null {\n const status = getItemStatus(item);\n const errorMessage = getItemErrorMessage(item);\n const lines = Array.isArray(item.changes)\n ? item.changes\n .slice(0, MAX_FORMATTED_FILE_CHANGES)\n .map((change) => {\n const changeRecord = asRecord(change);\n if (!changeRecord) {\n return undefined;\n }\n const path = trimmedStringValue(changeRecord.path);\n if (!path) {\n return undefined;\n }\n const action = formatFileChangeAction(\n trimmedStringValue(changeRecord.kind),\n );\n return `${action}: ${path}`;\n })\n .filter((line): line is string => {\n return line !== undefined;\n })\n : [];\n if (\n Array.isArray(item.changes) &&\n item.changes.length > MAX_FORMATTED_FILE_CHANGES\n ) {\n lines.push(\n `... +${item.changes.length - MAX_FORMATTED_FILE_CHANGES} more changes`,\n );\n }\n\n if (lines.length === 0 && !isFailedStatus(status) && !errorMessage) {\n return null;\n }\n\n const statusLine = isFailedStatus(status) ? `Status: ${status}` : undefined;\n const errorLine = errorMessage ? `Error: ${errorMessage}` : undefined;\n return {\n type: \"text\",\n timestamp: new Date(),\n data: {\n text: [\"[files]\", statusLine, errorLine, ...lines]\n .filter((line): line is string => {\n return line !== undefined && line.length > 0;\n })\n .join(\"\\n\"),\n },\n };\n }\n\n private static parseErrorEvent(event: JsonRecord): ParsedEvent | null {\n const turn = getTurnRecord(event);\n const turnId = getTurnId(event);\n const hasTurnContext = turn !== null || turnId !== undefined;\n return {\n type: \"result\",\n timestamp: new Date(),\n data: {\n success: false,\n result: getTurnErrorMessage(event, turn) ?? \"Unknown error\",\n durationMs: getTurnDurationMs(event, turn),\n numTurns: hasTurnContext ? 1 : 0,\n cost: 0,\n usage: getUsage(event),\n ...(turnId ? { turnId } : {}),\n },\n };\n }\n}\n","export function formatIsoTimestamp(value: Date | string): string {\n const timestamp = value instanceof Date ? value : new Date(value);\n if (!Number.isFinite(timestamp.getTime())) {\n return \"invalid-date\";\n }\n return timestamp.toISOString().replace(/\\.\\d{3}Z$/, \"Z\");\n}\n","/**\n * Event renderer for CLI output\n * Renders parsed events with colors and formatting\n *\n * Run lifecycle is rendered via:\n * - renderRunStarted: Called immediately after run is created\n * - renderRunCompleted: Called when run completes successfully\n * - renderRunFailed: Called when run fails\n */\n\nimport chalk from \"chalk\";\nimport type { ParsedEvent } from \"./claude-event-parser\";\nimport type { RunResult } from \"../api\";\nimport {\n getFrameworkDisplayName,\n isSupportedFramework,\n} from \"@vm0/core/frameworks\";\nimport { formatIsoTimestamp } from \"../utils/time-format\";\nimport {\n formatToolHeader,\n formatToolResult,\n type ToolUseData,\n type ToolResultData,\n} from \"./tool-formatters\";\n\n/**\n * Info about a started run\n */\ninterface RunStartedInfo {\n runId: string;\n sandboxId?: string;\n}\n\n/**\n * Options for creating an EventRenderer instance\n */\ninterface EventRendererOptions {\n /** Whether to show timestamp prefix (useful for historical log viewing) */\n showTimestamp?: boolean;\n /** Whether to show verbose output (full tool inputs/outputs) */\n verbose?: boolean;\n /** Whether to buffer tool_use events and wait for tool_result (default: true for streaming) */\n buffered?: boolean;\n}\n\nfunction recordData(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n return value as Record<string, unknown>;\n}\n\nfunction displayString(value: unknown): string {\n return value === null || value === undefined ? \"\" : String(value);\n}\n\nfunction displayNonNegativeNumber(value: unknown): number {\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value)\n : undefined;\n return number !== undefined && Number.isFinite(number) && number >= 0\n ? number\n : 0;\n}\n\n/**\n * Stateful event renderer that buffers tool_use events\n * and displays them grouped with their tool_result\n */\nexport class EventRenderer {\n private pendingToolUse = new Map<\n string,\n { toolUse: ToolUseData; prefix: string; rendered: boolean }\n >();\n private ambiguousToolUseIds = new Set<string>();\n private ambiguousRenderedToolUses = new Map<string, ToolUseData[]>();\n private options: EventRendererOptions;\n private lastEventType: string | null = null;\n private frameworkDisplayName: string = \"Agent\";\n\n constructor(options?: EventRendererOptions) {\n this.options = options ?? {};\n }\n\n /**\n * Render run started info\n * Called immediately after run is created, before polling events\n */\n static renderRunStarted(info: RunStartedInfo): void {\n console.log(chalk.bold(\"▶ Run started\"));\n console.log(` Run ID: ${chalk.dim(info.runId)}`);\n if (info.sandboxId) {\n console.log(` Sandbox: ${chalk.dim(info.sandboxId)}`);\n }\n console.log(chalk.dim(` (use \"vm0 logs ${info.runId}\" to view logs)`));\n console.log();\n }\n\n /**\n * Format timestamp for display (without milliseconds, matching metrics format)\n */\n static formatTimestamp(timestamp: Date): string {\n return formatIsoTimestamp(timestamp);\n }\n\n /**\n * Render a parsed event to console\n */\n render(event: ParsedEvent): void {\n const timestampPrefix = this.options.showTimestamp\n ? `[${EventRenderer.formatTimestamp(event.timestamp)}] `\n : \"\";\n\n switch (event.type) {\n case \"init\":\n this.renderPendingToolUses();\n this.renderInit(event, timestampPrefix);\n break;\n case \"text\":\n this.renderPendingToolUses();\n this.renderText(event, timestampPrefix);\n break;\n case \"tool_use\":\n this.handleToolUse(event, timestampPrefix);\n break;\n case \"tool_result\":\n this.handleToolResult(event, timestampPrefix);\n break;\n case \"result\":\n this.renderPendingToolUses();\n this.renderResult(event, timestampPrefix);\n break;\n }\n }\n\n /**\n * Render any buffered display state that cannot wait for a future event.\n */\n flush(): void {\n this.renderPendingToolUses();\n this.pendingToolUse.clear();\n this.ambiguousToolUseIds.clear();\n this.ambiguousRenderedToolUses.clear();\n }\n\n private renderPendingToolUses(): void {\n for (const pending of this.pendingToolUse.values()) {\n if (pending.rendered) {\n continue;\n }\n const { toolUse, prefix } = pending;\n this.renderToolUseOnly(toolUse, prefix);\n pending.rendered = true;\n }\n }\n\n /**\n * Render run completed state\n * Note: This is run lifecycle status, not an event\n */\n static renderRunCompleted(result: RunResult | undefined): void {\n // Visual separator to distinguish from event stream\n console.log(\"\");\n console.log(chalk.green(\"✓ Run completed successfully\"));\n\n if (result) {\n console.log(` Checkpoint: ${chalk.dim(result.checkpointId)}`);\n console.log(` Session: ${chalk.dim(result.agentSessionId)}`);\n console.log(` Conversation: ${chalk.dim(result.conversationId)}`);\n\n // Render artifact and volumes\n if (result.artifact && Object.keys(result.artifact).length > 0) {\n console.log(` Artifact:`);\n for (const [name, version] of Object.entries(result.artifact)) {\n console.log(\n ` ${name}: ${chalk.dim(EventRenderer.formatVersion(version))}`,\n );\n }\n }\n\n if (result.volumes && Object.keys(result.volumes).length > 0) {\n console.log(` Volumes:`);\n for (const [name, version] of Object.entries(result.volumes)) {\n console.log(\n ` ${name}: ${chalk.dim(EventRenderer.formatVersion(version))}`,\n );\n }\n }\n }\n }\n\n /**\n * Render run failed state\n * Note: This is run lifecycle status, not an event\n */\n static renderRunFailed(error: string | undefined, runId: string): void {\n // Visual separator to distinguish from event stream\n console.error(\"\");\n console.error(chalk.red(\"✗ Run failed\"));\n\n // Parse markdown links from the error message and render them as\n // plain URLs that terminals can auto-detect as clickable.\n const errorText = error || \"Unknown error\";\n const linkMatch = errorText.match(/\\[([^\\]]+)\\]\\(([^)]+)\\)/);\n if (linkMatch) {\n const messageWithoutLink = errorText\n .replace(linkMatch[0], \"\")\n .replace(/\\s+$/, \"\");\n console.error(` Error: ${chalk.red(messageWithoutLink)}`);\n console.error(` ${linkMatch[1]}: ${chalk.cyan(linkMatch[2])}`);\n } else {\n console.error(` Error: ${chalk.red(errorText)}`);\n }\n\n console.error(\n chalk.dim(` (use \"vm0 logs ${runId} --system\" to view system logs)`),\n );\n }\n\n /**\n * Handle tool_use event - buffer it for later grouping with result (when buffered)\n * or render immediately (when not buffered, e.g., historical log viewing)\n */\n private handleToolUse(event: ParsedEvent, prefix: string): void {\n const toolUseId = displayString(event.data.toolUseId);\n const tool = displayString(event.data.tool);\n const input = recordData(event.data.input);\n const toolUseData: ToolUseData = { tool, input };\n\n // When buffered (default), store for later grouping\n // When not buffered, render immediately\n if (this.options.buffered !== false && toolUseId.length > 0) {\n const existing = this.pendingToolUse.get(toolUseId);\n if (existing || this.ambiguousToolUseIds.has(toolUseId)) {\n if (existing) {\n if (!existing.rendered) {\n this.renderToolUseOnly(existing.toolUse, existing.prefix);\n }\n this.rememberAmbiguousRenderedToolUse(toolUseId, existing.toolUse);\n }\n this.pendingToolUse.delete(toolUseId);\n this.ambiguousToolUseIds.add(toolUseId);\n this.renderToolUseOnly(toolUseData, prefix);\n this.rememberAmbiguousRenderedToolUse(toolUseId, toolUseData);\n return;\n }\n this.pendingToolUse.set(toolUseId, {\n toolUse: toolUseData,\n prefix,\n rendered: false,\n });\n } else {\n // Non-buffered, or malformed tool_use without a stable id: render immediately.\n this.renderToolUseOnly(toolUseData, prefix);\n }\n }\n\n /**\n * Render a tool_use event without waiting for result (for historical log viewing)\n */\n private renderToolUseOnly(toolUse: ToolUseData, prefix: string): void {\n // Add spacing before tool if previous was text\n if (this.lastEventType === \"text\") {\n console.log();\n }\n\n const cont = this.getContinuationPrefix();\n const headerLines = formatToolHeader(toolUse);\n\n // First line gets the bullet, rest get simple indent\n for (let i = 0; i < headerLines.length; i++) {\n if (i === 0) {\n console.log(prefix + \"● \" + headerLines[i]);\n } else {\n console.log(cont + headerLines[i]);\n }\n }\n console.log(); // Empty line after each tool_use\n this.lastEventType = \"tool\";\n }\n\n /**\n * Handle tool_result event - lookup buffered tool_use and render grouped\n */\n private handleToolResult(event: ParsedEvent, prefix: string): void {\n const toolUseId = displayString(event.data.toolUseId);\n const result = displayString(event.data.result);\n const isError = Boolean(event.data.isError);\n\n if (toolUseId.length > 0 && this.ambiguousToolUseIds.has(toolUseId)) {\n const orphanToolUse = this.getToolUseFromResultEvent(event);\n const renderedToolUse = orphanToolUse\n ? this.getMatchingAmbiguousRenderedToolUse(toolUseId, orphanToolUse)\n : undefined;\n if (renderedToolUse) {\n this.renderToolResultOnly(renderedToolUse, { result, isError }, prefix);\n return;\n }\n if (orphanToolUse) {\n this.renderGroupedTool(orphanToolUse, { result, isError }, prefix);\n }\n return;\n }\n\n const pending = this.pendingToolUse.get(toolUseId);\n\n if (pending) {\n if (pending.rendered) {\n this.renderToolResultOnly(pending.toolUse, { result, isError }, prefix);\n } else {\n // Render grouped output\n this.renderGroupedTool(pending.toolUse, { result, isError }, prefix);\n }\n this.pendingToolUse.delete(toolUseId);\n return;\n }\n\n const orphanToolUse = this.getToolUseFromResultEvent(event);\n if (orphanToolUse) {\n this.renderGroupedTool(orphanToolUse, { result, isError }, prefix);\n }\n // Skip orphan tool_results without enough tool metadata to render.\n }\n\n private getToolUseFromResultEvent(event: ParsedEvent): ToolUseData | null {\n const tool = event.data.tool;\n if (typeof tool !== \"string\" || tool.length === 0) {\n return null;\n }\n\n return {\n tool,\n input: recordData(event.data.input),\n };\n }\n\n private rememberAmbiguousRenderedToolUse(\n toolUseId: string,\n toolUse: ToolUseData,\n ): void {\n const renderedToolUses = this.ambiguousRenderedToolUses.get(toolUseId);\n if (renderedToolUses) {\n renderedToolUses.push(toolUse);\n return;\n }\n this.ambiguousRenderedToolUses.set(toolUseId, [toolUse]);\n }\n\n private getMatchingAmbiguousRenderedToolUse(\n toolUseId: string,\n toolUse: ToolUseData,\n ): ToolUseData | undefined {\n const renderedToolUses = this.ambiguousRenderedToolUses.get(toolUseId);\n if (!renderedToolUses) {\n return undefined;\n }\n\n for (let index = renderedToolUses.length - 1; index >= 0; index -= 1) {\n const renderedToolUse = renderedToolUses[index];\n if (\n renderedToolUse !== undefined &&\n this.hasSameToolHeader(renderedToolUse, toolUse)\n ) {\n return renderedToolUse;\n }\n }\n return undefined;\n }\n\n private hasSameToolHeader(first: ToolUseData, second: ToolUseData): boolean {\n return (\n formatToolHeader(first).join(\"\\n\") === formatToolHeader(second).join(\"\\n\")\n );\n }\n\n /**\n * Get continuation prefix (simple indent, no timestamp alignment)\n */\n private getContinuationPrefix(): string {\n return \" \";\n }\n\n /**\n * Render grouped tool output (tool_use + tool_result together)\n */\n private renderGroupedTool(\n toolUse: ToolUseData,\n result: ToolResultData,\n prefix: string,\n ): void {\n // Add spacing before tool if previous was text\n if (this.lastEventType === \"text\") {\n console.log();\n }\n\n const verbose = this.options.verbose ?? false;\n const cont = this.getContinuationPrefix();\n\n const headerLines = formatToolHeader(toolUse);\n const resultLines = formatToolResult(toolUse, result, verbose);\n\n // First line gets timestamp + bullet, rest get simple indent\n for (let i = 0; i < headerLines.length; i++) {\n if (i === 0) {\n console.log(prefix + \"● \" + headerLines[i]);\n } else {\n console.log(cont + headerLines[i]);\n }\n }\n for (const line of resultLines) {\n console.log(cont + line);\n }\n console.log(); // Empty line after each group\n this.lastEventType = \"tool\";\n }\n\n private renderToolResultOnly(\n toolUse: ToolUseData,\n result: ToolResultData,\n prefix: string,\n ): void {\n if (this.lastEventType === \"text\") {\n console.log();\n }\n\n const verbose = this.options.verbose ?? false;\n const cont = this.getContinuationPrefix();\n const resultLines = formatToolResult(toolUse, result, verbose);\n\n for (let i = 0; i < resultLines.length; i++) {\n const line = resultLines[i];\n if (i === 0) {\n console.log(prefix + cont + line);\n } else {\n console.log(cont + line);\n }\n }\n console.log();\n this.lastEventType = \"tool\";\n }\n\n private renderInit(event: ParsedEvent, prefix: string): void {\n const frameworkStr = displayString(event.data.framework) || \"claude-code\";\n const displayName = isSupportedFramework(frameworkStr)\n ? getFrameworkDisplayName(frameworkStr)\n : frameworkStr;\n this.frameworkDisplayName = displayName;\n console.log(prefix + chalk.bold(`▷ ${displayName} Started`));\n console.log(` Session: ${chalk.dim(displayString(event.data.sessionId))}`);\n if (event.data.model) {\n console.log(` Model: ${chalk.dim(String(event.data.model))}`);\n }\n console.log(\n ` Tools: ${chalk.dim(\n Array.isArray(event.data.tools)\n ? event.data.tools.join(\", \")\n : String(event.data.tools || \"\"),\n )}`,\n );\n console.log();\n this.lastEventType = \"init\";\n }\n\n private renderText(event: ParsedEvent, prefix: string): void {\n const text = displayString(event.data.text);\n // Text events get a bullet prefix\n console.log(prefix + \"● \" + text);\n this.lastEventType = \"text\";\n }\n\n private renderResult(event: ParsedEvent, prefix: string): void {\n console.log(); // Spacing before result\n const success = Boolean(event.data.success);\n const eventFramework = displayString(event.data.framework);\n const displayName =\n eventFramework && isSupportedFramework(eventFramework)\n ? getFrameworkDisplayName(eventFramework)\n : eventFramework || this.frameworkDisplayName;\n this.frameworkDisplayName = displayName;\n\n if (success) {\n console.log(prefix + chalk.bold(`◆ ${displayName} Completed`));\n } else {\n console.log(prefix + chalk.bold(`◆ ${displayName} Failed`));\n const result = displayString(event.data.result).trim();\n if (result.length > 0) {\n const [firstLine, ...restLines] = result.split(\"\\n\");\n console.log(` Error: ${chalk.red(firstLine)}`);\n for (const line of restLines) {\n console.log(` ${chalk.red(line)}`);\n }\n }\n }\n\n const durationMs = displayNonNegativeNumber(event.data.durationMs);\n const durationSec = (durationMs / 1000).toFixed(1);\n console.log(` Duration: ${chalk.dim(durationSec + \"s\")}`);\n\n const numTurns = displayNonNegativeNumber(event.data.numTurns);\n console.log(` Turns: ${chalk.dim(String(numTurns))}`);\n\n const usage = event.data.usage as Record<string, unknown>;\n if (usage && typeof usage === \"object\") {\n const inputTokens = displayNonNegativeNumber(usage.input_tokens);\n const outputTokens = displayNonNegativeNumber(usage.output_tokens);\n\n const formatTokens = (count: number): string => {\n if (count >= 1000) {\n return Math.floor(count / 1000) + \"k\";\n }\n return String(count);\n };\n\n console.log(\n ` Tokens: ${chalk.dim(\n `input=${formatTokens(inputTokens)} output=${formatTokens(outputTokens)}`,\n )}`,\n );\n }\n this.lastEventType = \"result\";\n }\n\n /**\n * Format version ID for display (show short 8-character prefix)\n */\n private static formatVersion(version: string): string {\n // SHA-256 hashes are 64 characters, show first 8\n if (version.length === 64 && /^[a-f0-9]+$/i.test(version)) {\n return version.slice(0, 8);\n }\n // For \"latest\" or other formats, show as-is\n return version;\n }\n}\n","/**\n * Tool-specific formatters for CLI output\n * Formats tool_use and tool_result events in grouped output\n */\n\nimport chalk from \"chalk\";\n\nconst MAX_FORMATTED_TODOS = 20;\n\nexport interface ToolUseData {\n tool: string;\n input: Record<string, unknown>;\n}\n\nexport interface ToolResultData {\n result: string;\n isError: boolean;\n}\n\n/**\n * Pluralize a word based on count\n */\nfunction pluralize(count: number, singular: string, plural: string): string {\n return count === 1 ? singular : plural;\n}\n\n/**\n * Truncate text with ellipsis\n */\nfunction truncate(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength - 3) + \"...\";\n}\n\nfunction displayValue(value: unknown): string {\n return value === null || value === undefined ? \"\" : String(value);\n}\n\nfunction nonEmptyDisplayValue(value: unknown): string | undefined {\n const display = displayValue(value);\n return display.length > 0 ? display : undefined;\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\n}\n\n/**\n * Format the header line for a tool (e.g., \"Read src/lib/api.ts\")\n */\nexport function formatToolHeader(data: ToolUseData): string[] {\n const { tool, input } = data;\n\n // Get the headline based on tool type\n const headline = getToolHeadline(tool, input);\n return [headline];\n}\n\n/**\n * Tool headline formatters - maps tool name to headline generator\n */\nconst toolHeadlineFormatters: Record<\n string,\n (input: Record<string, unknown>) => string\n> = {\n Read: (input) => {\n return `Read${chalk.dim(`(${displayValue(input.file_path)})`)}`;\n },\n Edit: (input) => {\n return `Edit${chalk.dim(`(${displayValue(input.file_path)})`)}`;\n },\n Write: (input) => {\n return `Write${chalk.dim(`(${displayValue(input.file_path)})`)}`;\n },\n Bash: (input) => {\n return `Bash${chalk.dim(`(${truncate(displayValue(input.command), 60)})`)}`;\n },\n Glob: (input) => {\n return `Glob${chalk.dim(`(${displayValue(input.pattern)})`)}`;\n },\n Grep: (input) => {\n return `Grep${chalk.dim(`(${displayValue(input.pattern)})`)}`;\n },\n Task: (input) => {\n return `Task${chalk.dim(`(${truncate(displayValue(input.description), 60)})`)}`;\n },\n WebFetch: (input) => {\n return `WebFetch${chalk.dim(`(${truncate(displayValue(input.url), 60)})`)}`;\n },\n WebSearch: (input) => {\n return `WebSearch${chalk.dim(`(${truncate(displayValue(input.query), 60)})`)}`;\n },\n TodoWrite: () => {\n return \"TodoWrite\";\n },\n};\n\n/**\n * Get the headline for a tool based on its type and input\n */\nfunction getToolHeadline(tool: string, input: Record<string, unknown>): string {\n const formatter = toolHeadlineFormatters[tool];\n return formatter ? formatter(input) : tool;\n}\n\n/**\n * Format the result line with content preview\n */\nexport function formatToolResult(\n toolUse: ToolUseData,\n result: ToolResultData,\n verbose: boolean,\n): string[] {\n const { tool, input } = toolUse;\n const { result: resultText, isError } = result;\n const lines: string[] = [];\n\n const specialLines = formatSpecialToolResult(\n tool,\n input,\n resultText,\n isError,\n verbose,\n );\n if (specialLines) {\n return specialLines;\n }\n\n // Error case: show error message\n if (isError) {\n const errorMsg = resultText ? truncate(resultText, 80) : \"Error\";\n lines.push(`└ ✗ ${chalk.dim(errorMsg)}`);\n return lines;\n }\n\n // Success case: show content preview\n if (resultText) {\n const resultLines = resultText.split(\"\\n\");\n if (verbose) {\n // In verbose mode, show full result with └ on first line\n for (let i = 0; i < resultLines.length; i++) {\n const prefix = i === 0 ? \"└ \" : \" \";\n lines.push(`${prefix}${chalk.dim(resultLines[i])}`);\n }\n } else if (resultLines.length > 0) {\n // In normal mode, show first 3 lines with expand hint\n const previewCount = Math.min(3, resultLines.length);\n for (let i = 0; i < previewCount; i++) {\n const prefix = i === 0 ? \"└ \" : \" \";\n lines.push(`${prefix}${chalk.dim(resultLines[i])}`);\n }\n const remaining = resultLines.length - previewCount;\n if (remaining > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remaining} ${pluralize(remaining, \"line\", \"lines\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n }\n } else {\n // No result content, show done\n lines.push(`└ ✓ ${chalk.dim(\"Done\")}`);\n }\n\n return lines;\n}\n\nfunction formatSpecialToolResult(\n tool: string,\n input: Record<string, unknown>,\n resultText: string,\n isError: boolean,\n verbose: boolean,\n): string[] | null {\n if (isError) {\n return null;\n }\n\n if (tool === \"Read\" && resultText) {\n return formatReadContent(resultText, verbose);\n }\n if (tool === \"TodoWrite\") {\n return formatTodoList(input);\n }\n if (tool === \"Edit\" && hasClaudeEditInput(input)) {\n return formatEditDiff(input, verbose);\n }\n if (tool === \"Write\" && hasClaudeWriteInput(input)) {\n return formatWritePreview(input, verbose);\n }\n return null;\n}\n\nfunction hasClaudeEditInput(input: Record<string, unknown>): boolean {\n return (\n typeof input.old_string === \"string\" || typeof input.new_string === \"string\"\n );\n}\n\nfunction hasClaudeWriteInput(input: Record<string, unknown>): boolean {\n return typeof input.content === \"string\";\n}\n\n/**\n * Format Read tool output - strip line numbers and filter system content\n * Input format: \" 1→content\" (line numbers with → separator)\n * Falls back to raw content if no line numbers are present\n */\nfunction formatReadContent(resultText: string, verbose: boolean): string[] {\n const lines: string[] = [];\n const rawLines = resultText.split(\"\\n\");\n\n // Parse lines: try to extract content from line number format, strip the number prefix\n const contentLines: string[] = [];\n const lineNumberPattern = /^\\s*\\d+→(.*)$/;\n\n for (const line of rawLines) {\n const match = line.match(lineNumberPattern);\n if (match) {\n contentLines.push(match[1] ?? \"\");\n }\n }\n\n // If no line numbers found, use raw content so whitespace-only files are not\n // misreported as empty.\n const displayLines = contentLines.length > 0 ? contentLines : rawLines;\n const totalLines = displayLines.length;\n\n if (totalLines === 0) {\n lines.push(`└ ✓ ${chalk.dim(\"(empty)\")}`);\n return lines;\n }\n\n // Show content preview\n if (verbose) {\n for (let i = 0; i < displayLines.length; i++) {\n const prefix = i === 0 ? \"└ \" : \" \";\n lines.push(`${prefix}${chalk.dim(displayLines[i] ?? \"\")}`);\n }\n } else {\n const previewCount = Math.min(3, totalLines);\n for (let i = 0; i < previewCount; i++) {\n const prefix = i === 0 ? \"└ \" : \" \";\n lines.push(`${prefix}${chalk.dim(displayLines[i] ?? \"\")}`);\n }\n const remaining = totalLines - previewCount;\n if (remaining > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remaining} ${pluralize(remaining, \"line\", \"lines\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n }\n\n return lines;\n}\n\n/**\n * Format Write tool output with content preview\n */\nfunction formatWritePreview(\n input: Record<string, unknown>,\n verbose: boolean,\n): string[] {\n const lines: string[] = [];\n const content = displayValue(input.content);\n const contentLines = content.split(\"\\n\");\n const totalLines = contentLines.length;\n\n // Show content preview\n if (verbose) {\n for (let i = 0; i < contentLines.length; i++) {\n const prefix = i === 0 ? \"⎿ \" : \" \";\n lines.push(`${prefix}${chalk.dim(contentLines[i] ?? \"\")}`);\n }\n } else {\n const previewCount = Math.min(3, totalLines);\n for (let i = 0; i < previewCount; i++) {\n const prefix = i === 0 ? \"⎿ \" : \" \";\n lines.push(`${prefix}${chalk.dim(contentLines[i] ?? \"\")}`);\n }\n const remaining = totalLines - previewCount;\n if (remaining > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remaining} ${pluralize(remaining, \"line\", \"lines\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n }\n\n return lines;\n}\n\n/**\n * Format Edit tool output as diff\n * Shows added/removed line counts and preview of changes\n */\nfunction formatEditDiff(\n input: Record<string, unknown>,\n verbose: boolean,\n): string[] {\n const lines: string[] = [];\n const oldString = displayValue(input.old_string);\n const newString = displayValue(input.new_string);\n\n const oldLines = oldString.split(\"\\n\");\n const newLines = newString.split(\"\\n\");\n\n const removed = oldLines.length;\n const added = newLines.length;\n\n // Summary line\n const summary = `Added ${added} ${pluralize(added, \"line\", \"lines\")}, removed ${removed} ${pluralize(removed, \"line\", \"lines\")}`;\n lines.push(`⎿ ${chalk.dim(summary)}`);\n\n if (verbose) {\n // Verbose mode: show all lines\n for (const line of oldLines) {\n lines.push(` - ${chalk.dim(line)}`);\n }\n for (const line of newLines) {\n lines.push(` + ${chalk.dim(line)}`);\n }\n } else {\n // Compact mode: show first few lines of each\n const previewLimit = 3;\n const showOld = Math.min(previewLimit, oldLines.length);\n const showNew = Math.min(previewLimit, newLines.length);\n\n // Show removed lines\n for (let i = 0; i < showOld; i++) {\n lines.push(` - ${chalk.dim(truncate(oldLines[i] ?? \"\", 60))}`);\n }\n const remainingOld = oldLines.length - previewLimit;\n if (remainingOld > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remainingOld} ${pluralize(remainingOld, \"line\", \"lines\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n\n // Show added lines\n for (let i = 0; i < showNew; i++) {\n lines.push(` + ${chalk.dim(truncate(newLines[i] ?? \"\", 60))}`);\n }\n const remainingNew = newLines.length - previewLimit;\n if (remainingNew > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remainingNew} ${pluralize(remainingNew, \"line\", \"lines\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n }\n\n return lines;\n}\n\n/**\n * Format TodoWrite task list with status icons\n * ✓ completed, ▸ in_progress, ◻ pending\n */\nfunction formatTodoList(input: Record<string, unknown>): string[] {\n const lines: string[] = [];\n const todos = input.todos;\n\n if (!Array.isArray(todos)) {\n lines.push(\"└ ✓ Done\");\n return lines;\n }\n\n if (todos.length === 0) {\n lines.push(\"└ ✓ Done\");\n return lines;\n }\n\n const displayedTodos = todos.slice(0, MAX_FORMATTED_TODOS);\n for (let i = 0; i < displayedTodos.length; i++) {\n const todo = recordValue(displayedTodos[i]);\n const content = nonEmptyDisplayValue(todo?.content) ?? \"Unknown task\";\n const status = nonEmptyDisplayValue(todo?.status) ?? \"pending\";\n const icon = getTodoStatusIcon(status);\n const styledContent = formatTodoContent(content, status);\n const prefix = i === 0 ? \"└ \" : \" \";\n lines.push(`${prefix}${icon} ${styledContent}`);\n }\n\n const remaining = todos.length - MAX_FORMATTED_TODOS;\n if (remaining > 0) {\n lines.push(\n ` ${chalk.dim(`… +${remaining} ${pluralize(remaining, \"task\", \"tasks\")} (vm0 logs <runId> to see all)`)}`,\n );\n }\n\n return lines;\n}\n\n/**\n * Get icon for todo status\n */\nfunction getTodoStatusIcon(status: string): string {\n switch (status) {\n case \"completed\":\n return \"✓\";\n case \"in_progress\":\n return \"▸\";\n case \"pending\":\n default:\n return \"◻\";\n }\n}\n\n/**\n * Format todo content with styling based on status\n * - completed: strikethrough + dim\n * - pending: dim\n */\nfunction formatTodoContent(content: string, status: string): string {\n switch (status) {\n case \"completed\":\n return chalk.dim.strikethrough(content);\n case \"in_progress\":\n return content;\n case \"pending\":\n default:\n return chalk.dim(content);\n }\n}\n","import chalk from \"chalk\";\nimport * as fs from \"node:fs\";\nimport { config as dotenvConfig } from \"dotenv\";\nimport { getEvents } from \"../../lib/api\";\nimport type { GetEventsResponse } from \"../../lib/api/core/types\";\nimport { EventStreamNormalizer } from \"../../lib/events/event-stream-normalizer\";\nimport { EventRenderer } from \"../../lib/events/event-renderer\";\nimport { extractAndGroupVariables } from \"@vm0/core/variable-expander\";\nimport { isSupportedFramework } from \"@vm0/core/frameworks\";\nimport {\n firewallPoliciesSchema,\n type FirewallPolicies,\n} from \"@vm0/connectors/firewall-types\";\n/**\n * Collector for --secrets and --vars flags\n * Format: KEY=value\n */\nexport function collectKeyValue(\n value: string,\n previous: Record<string, string>,\n): Record<string, string> {\n const [key, ...valueParts] = value.split(\"=\");\n const val = valueParts.join(\"=\"); // Support values with '='\n\n if (!key || val === undefined || val === \"\") {\n throw new Error(`Invalid format: ${value} (expected KEY=value)`);\n }\n\n return { ...previous, [key]: val };\n}\n\n/**\n * Collector for --volume-version flags\n * Format: volumeName=version\n */\nexport function collectVolumeVersions(\n value: string,\n previous: Record<string, string>,\n): Record<string, string> {\n const [volumeName, ...versionParts] = value.split(\"=\");\n const version = versionParts.join(\"=\");\n\n if (!volumeName || version === undefined || version === \"\") {\n throw new Error(\n `Invalid volume-version format: ${value} (expected volumeName=version)`,\n );\n }\n\n return { ...previous, [volumeName]: version };\n}\n\n/**\n * Parse Docker-style mount declaration shared by --volume and --artifact.\n * Format: \"name:/mount/path\" (latest) or \"name:version:/mount/path\" (specific version)\n *\n * Parsing rule: split on ':', last segment starts with '/' = mount path,\n * first = storage name, middle (if present) = version.\n */\nexport function parseMount(\n value: string,\n flagLabel: \"volume\" | \"artifact\",\n): {\n name: string;\n version?: string;\n mountPath: string;\n} {\n const parts = value.split(\":\");\n\n if (parts.length < 2 || parts.length > 3) {\n throw new Error(\n `Invalid ${flagLabel} format: ${value} (expected name:/path or name:version:/path)`,\n );\n }\n\n // After the length check above, parts has exactly 2 or 3 elements\n const name = parts[0] as string;\n const mountPath =\n parts.length === 3 ? (parts[2] as string) : (parts[1] as string);\n\n if (!name) {\n throw new Error(\n `Invalid ${flagLabel} format: ${value} (name cannot be empty)`,\n );\n }\n\n if (!mountPath.startsWith(\"/\")) {\n throw new Error(\n `Invalid ${flagLabel} mount path: ${mountPath} (must start with /)`,\n );\n }\n\n if (parts.length === 2) {\n return { name, mountPath };\n }\n\n const version = parts[1] as string;\n if (!version) {\n throw new Error(\n `Invalid ${flagLabel} format: ${value} (version cannot be empty)`,\n );\n }\n\n return { name, version, mountPath };\n}\n\n/**\n * Collector for repeatable --volume flags.\n * Accumulates into an array of parsed mount objects.\n */\nexport function collectMounts(\n value: string,\n previous: Array<{ name: string; version?: string; mountPath: string }>,\n): Array<{ name: string; version?: string; mountPath: string }> {\n return [...previous, parseMount(value, \"volume\")];\n}\n\n/**\n * Collector for repeatable --artifact flags.\n * Accumulates into an array of parsed mount objects.\n */\nexport function collectArtifacts(\n value: string,\n previous: Array<{ name: string; version?: string; mountPath: string }>,\n): Array<{ name: string; version?: string; mountPath: string }> {\n return [...previous, parseMount(value, \"artifact\")];\n}\n\n/**\n * Parse and validate --permission-policies JSON string.\n * Returns undefined when no value is provided.\n */\nexport function parsePermissionPolicies(\n json: string | undefined,\n): FirewallPolicies | undefined {\n if (!json) return undefined;\n let parsed: unknown;\n try {\n parsed = JSON.parse(json);\n } catch {\n throw new Error(\n `Invalid --permission-policies JSON: ${json}\\nExpected format: '{\"ref\": {\"permissions\": {\"perm\": \"allow|deny|ask\"}}}'`,\n );\n }\n const result = firewallPoliciesSchema.safeParse(parsed);\n if (!result.success) {\n throw new Error(\n `Invalid --permission-policies: ${result.error.issues\n .map((i) => {\n return i.message;\n })\n .join(\", \")}`,\n );\n }\n return result.data;\n}\n\nconst UUID_PATTERN =\n /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nexport function isUUID(str: string): boolean {\n return UUID_PATTERN.test(str);\n}\n\n/**\n * Extract var names from compose config\n */\nexport function extractVarNames(composeContent: unknown): string[] {\n const grouped = extractAndGroupVariables(composeContent);\n return grouped.vars.map((r) => {\n return r.name;\n });\n}\n\n/**\n * Extract secret names from compose config\n */\nexport function extractSecretNames(composeContent: unknown): string[] {\n const grouped = extractAndGroupVariables(composeContent);\n return grouped.secrets.map((r) => {\n return r.name;\n });\n}\n\n/**\n * Load values with priority: CLI args > --env-file > environment variables\n *\n * For values referenced in the compose config but not provided via CLI,\n * falls back to --env-file (if specified) and environment variables.\n * CLI-provided values are always passed through.\n *\n * Priority order (matches Docker CLI):\n * 1. CLI flags (--vars, --secrets) - HIGHEST\n * 2. --env-file values - MEDIUM\n * 3. process.env - LOWEST\n *\n * @param cliValues Values passed via CLI flags\n * @param configNames Names referenced in compose config (for env fallback)\n * @param envFilePath Optional path to env file (only loads if explicitly provided)\n * @returns Merged values object with CLI taking highest priority\n */\nexport function loadValues(\n cliValues: Record<string, string>,\n configNames: string[],\n envFilePath?: string,\n): Record<string, string> | undefined {\n // Start with CLI-provided values (highest priority, always passed through)\n const result: Record<string, string> = { ...cliValues };\n\n // For names referenced in config but not provided via CLI, load from file/env\n const missingNames = configNames.filter((name) => {\n return !(name in result);\n });\n\n if (missingNames.length > 0) {\n // Get from environment variables (lowest priority)\n const envValues: Record<string, string> = {};\n for (const name of missingNames) {\n const envValue = process.env[name];\n if (envValue !== undefined) {\n envValues[name] = envValue;\n }\n }\n\n // Load from --env-file if explicitly provided (medium priority, overrides env)\n let fileValues: Record<string, string> = {};\n if (envFilePath) {\n if (!fs.existsSync(envFilePath)) {\n throw new Error(`Environment file not found: ${envFilePath}`);\n }\n const dotenvResult = dotenvConfig({ path: envFilePath, quiet: true });\n if (dotenvResult.parsed) {\n // Only include keys that are missing from CLI\n fileValues = Object.fromEntries(\n Object.entries(dotenvResult.parsed).filter(([key]) => {\n return missingNames.includes(key);\n }),\n );\n }\n }\n\n // Merge with priority: file > env (CLI already in result)\n // Apply env first, then file values override\n Object.assign(result, envValues, fileValues);\n }\n\n return Object.keys(result).length > 0 ? result : undefined;\n}\n\n/**\n * Parse identifier with optional org and version specifier\n * Format: name[:version]\n * Examples:\n * \"demo:d084948d\" → { name: \"demo\", version: \"d084948d\" }\n * \"demo:latest\" → { name: \"demo\", version: \"latest\" }\n * \"demo\" → { name: \"demo\" }\n */\nexport function parseIdentifier(identifier: string): {\n name: string;\n version?: string;\n} {\n // UUIDs don't contain colons or slashes, so check first\n if (isUUID(identifier)) {\n return { name: identifier };\n }\n\n // Parse name:version format using indexOf (version comes after name)\n const colonIndex = identifier.indexOf(\":\");\n if (colonIndex > 0 && colonIndex < identifier.length - 1) {\n return {\n name: identifier.slice(0, colonIndex),\n version: identifier.slice(colonIndex + 1),\n };\n }\n\n return { name: identifier };\n}\n\n/**\n * Display run created info (queued or started)\n */\nexport function renderRunCreated(response: {\n status: string;\n runId: string;\n sandboxId?: string;\n}): void {\n if (response.status === \"queued\") {\n console.log(chalk.yellow(\"⚠ Run queued — concurrency limit reached\"));\n console.log(` Run ID: ${chalk.dim(response.runId)}`);\n console.log(\n chalk.dim(\" Will start automatically when a slot is available\"),\n );\n console.log();\n } else {\n EventRenderer.renderRunStarted({\n runId: response.runId,\n sandboxId: response.sandboxId,\n });\n }\n}\n\ninterface PollResult {\n succeeded: boolean;\n runId: string;\n sessionId?: string;\n checkpointId?: string;\n}\n\ntype RunState = GetEventsResponse[\"run\"];\ntype TerminalRunStatus = \"completed\" | \"failed\" | \"timeout\" | \"cancelled\";\ntype TerminalRunState = RunState & { status: TerminalRunStatus };\ninterface TerminalDrainState {\n runState?: TerminalRunState;\n seenAt: number;\n lastProgressAt: number;\n}\n\nconst TERMINAL_RUN_STATUSES: readonly TerminalRunStatus[] = [\n \"completed\",\n \"failed\",\n \"timeout\",\n \"cancelled\",\n];\nconst POLL_INTERVAL_MS = 1000;\nconst TERMINAL_DRAIN_POLL_INTERVAL_MS = 500;\nconst TERMINAL_DRAIN_IDLE_MS = 1000;\nconst TERMINAL_DRAIN_MAX_MS = 3000;\n\nfunction supportedEventFramework(\n framework: string | undefined,\n): string | undefined {\n return isSupportedFramework(framework) ? framework : undefined;\n}\n\n/**\n * Options for polling/streaming events\n */\ninterface EventRenderingOptions {\n verbose?: boolean;\n}\n\nfunction isTerminalRunState(run: RunState): run is TerminalRunState {\n return TERMINAL_RUN_STATUSES.includes(run.status as TerminalRunStatus);\n}\n\nfunction shouldDrainNextEventPage(\n response: GetEventsResponse,\n madeSequenceProgress: boolean,\n): boolean {\n return response.hasMore && response.events.length > 0 && madeSequenceProgress;\n}\n\nfunction isBlockedBySequenceGap(\n response: GetEventsResponse,\n madeSequenceProgress: boolean,\n): boolean {\n return response.hasMore && !madeSequenceProgress;\n}\n\nfunction hasTerminalWatermark(run: TerminalRunState): boolean {\n return run.lastEventSequence !== undefined;\n}\n\nfunction hasReachedTerminalWatermark(\n run: TerminalRunState,\n nextSequence: number,\n): boolean {\n return (\n run.lastEventSequence !== undefined && nextSequence >= run.lastEventSequence\n );\n}\n\nfunction shouldCompleteTerminalDrain(\n terminalSeenAt: number,\n lastTerminalProgressAt: number,\n blockedByGap: boolean,\n): boolean {\n const now = Date.now();\n const terminalElapsedMs = now - terminalSeenAt;\n const terminalIdleMs = now - lastTerminalProgressAt;\n return (\n terminalElapsedMs >= TERMINAL_DRAIN_MAX_MS ||\n (!blockedByGap && terminalIdleMs >= TERMINAL_DRAIN_IDLE_MS)\n );\n}\n\nfunction updateTerminalDrainState(\n state: TerminalDrainState,\n run: RunState,\n madeSequenceProgress: boolean,\n now: number,\n): void {\n if (isTerminalRunState(run)) {\n if (!state.runState) {\n state.seenAt = now;\n state.lastProgressAt = now;\n } else if (madeSequenceProgress) {\n state.lastProgressAt = now;\n }\n state.runState = run;\n return;\n }\n\n if (state.runState && madeSequenceProgress) {\n state.lastProgressAt = now;\n }\n}\n\nfunction isBlockedByTerminalWatermark(\n run: TerminalRunState,\n nextSequence: number,\n): boolean {\n return (\n hasTerminalWatermark(run) && !hasReachedTerminalWatermark(run, nextSequence)\n );\n}\n\nfunction shouldReturnTerminalRunResult(\n state: TerminalDrainState,\n response: GetEventsResponse,\n nextSequence: number,\n madeSequenceProgress: boolean,\n seenResultEvent: boolean,\n): boolean {\n const run = state.runState;\n if (!run) {\n return false;\n }\n\n if (!hasTerminalWatermark(run) && run.status !== \"completed\") {\n if (\n run.status === \"timeout\" &&\n shouldDrainNextEventPage(response, madeSequenceProgress)\n ) {\n return false;\n }\n return true;\n }\n\n if (!hasTerminalWatermark(run) && seenResultEvent) {\n return true;\n }\n\n return shouldCompleteTerminalDrain(\n state.seenAt,\n state.lastProgressAt,\n isBlockedBySequenceGap(response, madeSequenceProgress) ||\n isBlockedByTerminalWatermark(run, nextSequence),\n );\n}\n\nfunction renderTerminalRunResult(\n runId: string,\n run: TerminalRunState,\n): PollResult {\n if (run.status === \"completed\") {\n EventRenderer.renderRunCompleted(run.result);\n return {\n succeeded: true,\n runId,\n sessionId: run.result?.agentSessionId,\n checkpointId: run.result?.checkpointId,\n };\n }\n\n if (run.status === \"failed\") {\n EventRenderer.renderRunFailed(run.error, runId);\n return { succeeded: false, runId };\n }\n\n if (run.status === \"timeout\") {\n console.error(chalk.red(\"\\n✗ Run timed out\"));\n console.error(\n chalk.dim(` (use \"vm0 logs ${runId} --system\" to view system logs)`),\n );\n return { succeeded: false, runId };\n }\n\n console.error(chalk.yellow(\"\\n✗ Run cancelled\"));\n return { succeeded: false, runId };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n return setTimeout(resolve, ms);\n });\n}\n\n/**\n * Poll for events until run completes (via run.status field)\n * @returns Poll result with success status and optional session/checkpoint IDs\n */\nexport async function pollEvents(\n runId: string,\n options?: EventRenderingOptions,\n): Promise<PollResult> {\n const renderer = new EventRenderer({ verbose: options?.verbose });\n const normalizer = new EventStreamNormalizer();\n\n let nextSequence = -1;\n const terminalDrain: TerminalDrainState = {\n seenAt: 0,\n lastProgressAt: 0,\n };\n let seenResultEvent = false;\n const flushPendingEvents = (): void => {\n for (const parsed of normalizer.flush()) {\n renderer.render(parsed);\n }\n renderer.flush();\n };\n\n for (;;) {\n const previousSequence = nextSequence;\n const response = await getEvents(runId, {\n since: nextSequence,\n });\n const now = Date.now();\n const madeSequenceProgress = response.nextSequence > previousSequence;\n let pageHasResultEvent = false;\n\n // Render agent events (use appropriate renderer based on framework from API)\n if (madeSequenceProgress) {\n for (const event of response.events) {\n const parsedEvents = normalizer.process(\n event.eventData,\n supportedEventFramework(response.framework),\n );\n for (const parsed of parsedEvents) {\n renderer.render(parsed);\n if (parsed.type === \"result\") {\n pageHasResultEvent = true;\n }\n }\n }\n }\n\n if (madeSequenceProgress) {\n if (pageHasResultEvent) {\n seenResultEvent = true;\n }\n\n nextSequence = response.nextSequence;\n }\n\n updateTerminalDrainState(\n terminalDrain,\n response.run,\n madeSequenceProgress,\n now,\n );\n\n if (\n terminalDrain.runState &&\n hasReachedTerminalWatermark(terminalDrain.runState, nextSequence)\n ) {\n flushPendingEvents();\n return renderTerminalRunResult(runId, terminalDrain.runState);\n }\n\n const terminalRunState = terminalDrain.runState;\n if (\n terminalRunState &&\n shouldReturnTerminalRunResult(\n terminalDrain,\n response,\n nextSequence,\n madeSequenceProgress,\n seenResultEvent,\n )\n ) {\n flushPendingEvents();\n return renderTerminalRunResult(runId, terminalRunState);\n }\n\n if (shouldDrainNextEventPage(response, madeSequenceProgress)) {\n continue;\n }\n\n await sleep(\n terminalDrain.runState\n ? TERMINAL_DRAIN_POLL_INTERVAL_MS\n : POLL_INTERVAL_MS,\n );\n }\n}\n\n/**\n * Display next steps after successful run\n */\nexport function showNextSteps(result: PollResult): void {\n const { runId, sessionId, checkpointId } = result;\n\n console.log();\n\n // Always show logs command since we always have runId\n console.log(\" View agent logs:\");\n console.log(chalk.cyan(` vm0 logs ${runId}`));\n\n if (sessionId) {\n console.log(\" Continue with session (latest conversation and artifact):\");\n console.log(\n chalk.cyan(` vm0 run continue ${sessionId} \"your next prompt\"`),\n );\n }\n if (checkpointId) {\n console.log(\n \" Resume from checkpoint (snapshotted conversation and artifact):\",\n );\n console.log(\n chalk.cyan(` vm0 run resume ${checkpointId} \"your next prompt\"`),\n );\n }\n}\n","/**\n * Time parser utility for --since option\n *\n * Supports:\n * - Relative time: 5s, 10m, 2h, 1d, 1w (seconds, minutes, hours, days, weeks)\n * - Absolute time: ISO 8601 format (2024-01-15T10:30:00Z)\n * - Unix timestamp: 1705312200 or 1705312200000 (seconds or milliseconds)\n */\n\n/**\n * Parse a time string and return a Unix timestamp in milliseconds\n * @param timeStr - Time string to parse\n * @returns Unix timestamp in milliseconds\n * @throws Error if the time string is invalid\n */\nconst ISO_8601_PATTERN =\n /^(\\d{4})-(\\d{2})-(\\d{2})(?:[Tt](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,9})?)?(?:[Zz]|[+-]\\d{2}:?\\d{2})?)?$/;\nconst DAYS_BY_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst MAX_DATE_TIMESTAMP_MS = 8_640_000_000_000_000;\n\nexport function parseTime(timeStr: string): number {\n // Try relative time first (e.g., \"5m\", \"2h\", \"1d\")\n const relativeMatch = timeStr.match(/^(\\d+)([smhdw])$/);\n if (relativeMatch) {\n const value = Number(relativeMatch[1]!);\n const unit = relativeMatch[2]!;\n const timestamp = parseRelativeTime(value, unit);\n if (timestamp !== undefined) {\n return timestamp;\n }\n }\n\n // Try Unix timestamp (seconds or milliseconds)\n if (/^\\d+$/.test(timeStr)) {\n const rawTimestamp = Number(timeStr);\n // If timestamp is less than year 2000 in seconds, assume it's already in ms\n // If it looks like seconds (< 10000000000), convert to ms\n const timestamp =\n rawTimestamp < 10000000000 ? rawTimestamp * 1000 : rawTimestamp;\n if (isValidTimestamp(timestamp)) {\n return timestamp;\n }\n }\n\n // Try ISO 8601 format\n const timestamp = parseIsoTime(timeStr);\n if (timestamp !== undefined) {\n return timestamp;\n }\n\n throw new Error(\n `Invalid time format: \"${timeStr}\". ` +\n `Supported formats: relative (5m, 2h, 1d), ISO 8601 (2024-01-15T10:30:00Z), Unix timestamp`,\n );\n}\n\nfunction parseIsoTime(timeStr: string): number | undefined {\n const match = ISO_8601_PATTERN.exec(timeStr);\n if (!match) {\n return undefined;\n }\n\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n const hour = match[4] ? Number(match[4]) : 0;\n const minute = match[5] ? Number(match[5]) : 0;\n const second = match[6] ? Number(match[6]) : 0;\n\n if (\n !Number.isInteger(year) ||\n !Number.isInteger(month) ||\n !Number.isInteger(day) ||\n !Number.isInteger(hour) ||\n !Number.isInteger(minute) ||\n !Number.isInteger(second) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > daysInMonth(year, month) ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return undefined;\n }\n\n const timestamp = new Date(timeStr).getTime();\n return isValidTimestamp(timestamp) ? timestamp : undefined;\n}\n\nfunction daysInMonth(year: number, month: number): number {\n if (month === 2) {\n return isLeapYear(year) ? 29 : 28;\n }\n return DAYS_BY_MONTH[month - 1] ?? 0;\n}\n\nfunction isLeapYear(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n/**\n * Parse relative time and return Unix timestamp in milliseconds\n */\nfunction parseRelativeTime(value: number, unit: string): number | undefined {\n if (!Number.isSafeInteger(value)) {\n return undefined;\n }\n\n const now = Date.now();\n const multipliers: Record<string, number> = {\n s: 1000, // seconds\n m: 60 * 1000, // minutes\n h: 60 * 60 * 1000, // hours\n d: 24 * 60 * 60 * 1000, // days\n w: 7 * 24 * 60 * 60 * 1000, // weeks\n };\n\n const multiplier = multipliers[unit];\n if (!multiplier) {\n throw new Error(`Unknown time unit: ${unit}`);\n }\n\n const timestamp = now - value * multiplier;\n return isValidTimestamp(timestamp) ? timestamp : undefined;\n}\n\nfunction isValidTimestamp(timestamp: number): boolean {\n return (\n Number.isSafeInteger(timestamp) &&\n Math.abs(timestamp) <= MAX_DATE_TIMESTAMP_MS\n );\n}\n","type LogOrder = \"asc\" | \"desc\";\n\ninterface CursorLogPageRequest {\n readonly sinceTime?: number;\n readonly cursor?: string;\n readonly limit: number;\n readonly order: LogOrder;\n}\n\ninterface CursorLogPage<T> {\n readonly items: readonly T[];\n readonly hasMore: boolean;\n readonly nextCursor?: string | null;\n}\n\ninterface CollectLogItemsOptions<T> {\n readonly fetchPage: (\n request: CursorLogPageRequest,\n ) => Promise<CursorLogPage<T>>;\n readonly sinceTime?: number;\n readonly targetCount: number | \"all\";\n readonly order: LogOrder;\n readonly pageLimit: number;\n}\n\nexport function parsePositiveLogCount(\n value: string,\n optionName: string,\n): number {\n const trimmed = value.trim();\n if (!/^0*[1-9]\\d*$/.test(trimmed)) {\n throw new Error(`Option ${optionName} must be a positive integer`);\n }\n\n const count = Number(trimmed);\n if (!Number.isSafeInteger(count)) {\n throw new Error(`Option ${optionName} must be a positive integer`);\n }\n\n return count;\n}\n\nexport function parseBoundedLogCount(\n value: string,\n optionName: string,\n min: number,\n max: number,\n): number {\n const trimmed = value.trim();\n if (!/^\\d+$/.test(trimmed)) {\n throw new Error(`${optionName} must be between ${min} and ${max}`);\n }\n\n const count = Number(trimmed);\n if (!Number.isSafeInteger(count) || count < min || count > max) {\n throw new Error(`${optionName} must be between ${min} and ${max}`);\n }\n\n return count;\n}\n\nexport async function collectLogItems<T>(\n options: CollectLogItemsOptions<T>,\n): Promise<T[]> {\n const collected: T[] = [];\n const seenCursors = new Set<string>();\n let cursor: string | undefined;\n\n while (true) {\n const requestLimit =\n options.targetCount === \"all\"\n ? options.pageLimit\n : Math.min(options.pageLimit, options.targetCount - collected.length);\n\n const page = await options.fetchPage({\n sinceTime: options.sinceTime,\n cursor,\n limit: requestLimit,\n order: options.order,\n });\n\n collected.push(...page.items);\n\n if (\n options.targetCount !== \"all\" &&\n collected.length >= options.targetCount\n ) {\n break;\n }\n\n const nextCursor = page.nextCursor ?? null;\n if (!page.hasMore || !nextCursor || seenCursors.has(nextCursor)) {\n break;\n }\n\n seenCursors.add(nextCursor);\n cursor = nextCursor;\n }\n\n const entries =\n options.targetCount === \"all\"\n ? collected\n : collected.slice(0, options.targetCount);\n\n return options.order === \"desc\" ? entries.reverse() : entries;\n}\n","export function parseSearchQuery(value: string, label: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error(`${label} cannot be empty.`);\n }\n return trimmed;\n}\n"],"mappings":"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AA,EAC7B;AAEA,SAAO;AACT;AAmBO,SAAS,yBAAyB,KAIvC;AACA,SAAO,uBAAuB,0BAA0B,GAAG,CAAC;AAC9D;;;AC/OA;;;ACAA;AAqCA,IAAM,mDAAmD;AAAA,EACvD,+BAA+B;AAAA,IAC7B,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,uBAAuB;AAAA,IACrB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,8BAA8B;AAAA,IAC5B,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,wBAAwB;AAAA,IACtB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,gCAAgC;AAAA,IAC9B,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,4BAA4B;AAAA,IAC1B,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,2BAA2B;AAAA,IACzB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,2BAA2B;AAAA,IACzB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,0BAA0B;AAAA,IACxB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,0BAA0B;AAAA,IACxB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAClB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,eAAe;AAAA,IACb,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,cACE;AAAA,IACF,gBACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,qBAAqB;AAAA,IACnB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,aACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,UAAU;AAAA,IACR,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,iBAAiB;AAAA,IACf,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,UAAU;AAAA,IACR,OACE;AAAA,IACF,UACE;AAAA,IACF,aACE;AAAA,IACF,WACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,YACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,gBAAgB;AAAA,IACd,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,YAAY;AAAA,IACV,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,aAAa;AAAA,IACX,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,iBACE;AAAA,IACF,YACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,qBAAqB;AAAA,IACnB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,gBACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,YACE;AAAA,IACF,cACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,cACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,QAAQ;AAAA,IACN,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAClB,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,cACE;AAAA,IACF,aACE;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACP,OACE;AAAA,IACF,UACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,mBACE;AAAA,IACF,gBACE;AAAA,IACF,oBACE;AAAA,IACF,gBACE;AAAA,IACF,mBACE;AAAA,IACF,mBACE;AAAA,IACF,aACE;AAAA,IACF,gBACE;AAAA,IACF,cACE;AAAA,IACF,YACE;AAAA,IACF,aACE;AAAA,IACF,iBACE;AAAA,IACF,iBACE;AAAA,IACF,aACE;AAAA,IACF,cACE;AAAA,EACJ;AACF;AAYA,IAAM,gCAAgC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,oCAAoC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,mCAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,iCAAiC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,gCAAgC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,6BAA6B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,4BAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,oCAAoC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,mCAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,oCAAoC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,mCAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,kCAAkC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,iCAAiC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,6BAA6B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,4BAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,iDAAiD;AAAA,EACrD,eAAe;AAAA,IACb;AAAA,EACF;AAAA,EACA,qBAAqB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX;AAAA,EACF;AAAA,EACA,qBAAqB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP;AAAA,EACF;AACF;AAEO,IAAM,qCACX;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,kCAAkC,CAAC;AAAA,IACjD,0BACE,iDACE,6BACF;AAAA,IACF,kBACE,iDACE,6BACF,EAAE,UAAU;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,8BAA8B,CAAC;AAAA,IAC7C,0BACE,iDAAiD,qBAAqB;AAAA,IACxE,kBACE,iDAAiD,qBAAqB,EACpE,YACF;AAAA,IACF,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,iCAAiC,CAAC;AAAA,IAChD,0BACE,iDACE,4BACF;AAAA,IACF,kBACE,iDACE,4BACF,EAAE,WAAW;AAAA,IACf,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,sBAAsB,CAAC;AAAA,IACrC,0BACE,iDACE,sBACF;AAAA,IACF,kBACE,iDACE,sBACF,EAAE,OAAO;AAAA,IACX,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,+BAA+B,CAAC;AAAA,IAC9C,0BACE,iDACE,8BACF;AAAA,IACF,kBACE,iDACE,8BACF,EAAE,cAAc;AAAA,IAClB,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,2BAA2B,CAAC;AAAA,IAC1C,0BACE,iDACE,0BACF;AAAA,IACF,kBACE,iDACE,0BACF,EAAE,OAAO;AAAA,IACX,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,kCAAkC,CAAC;AAAA,IACjD,0BACE,iDACE,yBACF;AAAA,IACF,kBACE,iDACE,yBACF,EAAE,WAAW;AAAA,IACf,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,kCAAkC,CAAC;AAAA,IACjD,0BACE,iDACE,yBACF;AAAA,IACF,kBACE,iDACE,yBACF,EAAE,SAAS;AAAA,IACb,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,sBAAsB,CAAC;AAAA,IACrC,0BACE,iDACE,wBACF;AAAA,IACF,kBACE,iDACE,wBACF,EAAE,OAAO;AAAA,IACX,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,gCAAgC,CAAC;AAAA,IAC/C,0BACE,iDACE,wBACF;AAAA,IACF,kBACE,iDACE,wBACF,EAAE,UAAU;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,2BAA2B,CAAC;AAAA,IAC1C,0BACE,iDAAiD,kBAAkB;AAAA,IACrE,kBACE,iDAAiD,kBAAkB,EACjE,SACF;AAAA,IACF,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,aAAa,EAAE,CAAC;AAAA,IACjE,0BACE,iDAAiD,aAAa;AAAA,IAChE,kBACE,iDAAiD,aAAa,EAC5D,UACF;AAAA,IACF,eACE,+CAA+C,aAAa;AAAA,IAC9D,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,mBAAmB,EAAE,CAAC;AAAA,IACvE,0BACE,iDAAiD,mBAAmB;AAAA,IACtE,kBACE,iDAAiD,mBAAmB,EAClE,kBACF;AAAA,IACF,eACE,+CAA+C,mBAAmB;AAAA,IACpE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,UAAU,EAAE,CAAC;AAAA,IAC9D,0BACE,iDAAiD,UAAU;AAAA,IAC7D,kBACE,iDAAiD,UAAU,EACzD,iBACF;AAAA,IACF,eAAe,+CAA+C,UAAU;AAAA,IACxE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,eAAe,EAAE,CAAC;AAAA,IACnE,0BACE,iDAAiD,eAAe;AAAA,IAClE,kBACE,iDAAiD,eAAe,EAC9D,UACF;AAAA,IACF,eACE,+CAA+C,eAAe;AAAA,IAChE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,UAAU,EAAE,CAAC;AAAA,IAC9D,0BACE,iDAAiD,UAAU;AAAA,IAC7D,kBACE,iDAAiD,UAAU,EACzD,eACF;AAAA,IACF,eAAe,+CAA+C,UAAU;AAAA,IACxE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,cAAc,EAAE,CAAC;AAAA,IAClE,0BACE,iDAAiD,cAAc;AAAA,IACjE,kBACE,iDAAiD,cAAc,EAC7D,iBACF;AAAA,IACF,eACE,+CAA+C,cAAc;AAAA,IAC/D,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,YAAY,EAAE,CAAC;AAAA,IAChE,0BACE,iDAAiD,YAAY;AAAA,IAC/D,kBACE,iDAAiD,YAAY,EAC3D,iBACF;AAAA,IACF,eACE,+CAA+C,YAAY;AAAA,IAC7D,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,aAAa,EAAE,CAAC;AAAA,IACjE,0BACE,iDAAiD,aAAa;AAAA,IAChE,kBACE,iDAAiD,aAAa,EAC5D,iBACF;AAAA,IACF,eACE,+CAA+C,aAAa;AAAA,IAC9D,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,mBAAmB,EAAE,CAAC;AAAA,IACvE,0BACE,iDAAiD,mBAAmB;AAAA,IACtE,kBACE,iDAAiD,mBAAmB,EAClE,OACF;AAAA,IACF,eACE,+CAA+C,mBAAmB;AAAA,IACpE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cAAc,+CAA+C,QAAQ,EAAE,CAAC;AAAA,IACxE,0BACE,iDAAiD,QAAQ;AAAA,IAC3D,kBACE,iDAAiD,QAAQ,EAAE,UAAU;AAAA,IACvE,eAAe,+CAA+C,QAAQ;AAAA,IACtE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,kBAAkB,EAAE,CAAC;AAAA,IACtE,0BACE,iDAAiD,kBAAkB;AAAA,IACrE,kBACE,iDAAiD,kBAAkB,EACjE,iBACF;AAAA,IACF,eACE,+CAA+C,kBAAkB;AAAA,IACnE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QACE;AAAA,IACF,UACE;AAAA,IACF,cACE,+CAA+C,SAAS,EAAE,CAAC;AAAA,IAC7D,0BACE,iDAAiD,SAAS;AAAA,IAC5D,kBACE,iDAAiD,SAAS,EACxD,iBACF;AAAA,IACF,eAAe,+CAA+C,SAAS;AAAA,IACvE,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AACF;;;AC3yDF;AAAO,IAAM,0BACX;AASF,IAAM,2BAAmD;AAAA,EACvD,0BACE;AAAA,EACF,wBAAwB;AAAA,EACxB,iCACE;AAAA,EACF,uBAAuB;AAAA,EACvB,0BACE;AAAA,EACF,wBAAwB;AAAA,EACxB,6BACE;AAAA,EACF,2BACE;AAAA,EACF,6BACE;AAAA,EACF,+BACE;AAAA,EACF,yBACE;AAAA,EACF,6BACE;AAAA,EACF,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,8BACE;AAAA,EACF,iCACE;AAAA,EACF,4BACE;AAAA,EACF,yBACE;AAAA,EACF,gCACE;AAAA,EACF,kCACE;AAAA,EACF,0BACE;AAAA,EACF,kCACE;AAAA,EACF,wBAAwB;AAAA,EACxB,oCACE;AAAA,EACF,yBACE;AAAA,EACF,yBACE;AAAA,EACF,0BACE;AAAA,EACF,4BACE;AAAA,EACF,6BACE;AAAA,EACF,4BACE;AAAA,EACF,yCACE;AAAA,EACF,6CACE;AAAA,EACF,wCACE;AAAA,EACF,0CACE;AAAA,EACF,6BACE;AAAA,EACF,kCACE;AAAA,EACF,oCACE;AAAA,EACF,oCACE;AAAA,EACF,oCACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA,EACF,wCACE;AAAA,EACF,yCACE;AAAA,EACF,uCACE;AAAA,EACF,4CACE;AAAA,EACF,uCACE;AAAA,EACF,8CACE;AAAA,EACF,sDACE;AAAA,EACF,yDACE;AAAA,EACF,sDACE;AAAA,EACF,oDACE;AAAA,EACF,oDACE;AAAA,EACF,iDACE;AAAA,EACF,sDACE;AAAA,EACF,oCACE;AAAA,EACF,sCACE;AAAA,EACF,6CACE;AAAA,EACF,qCACE;AAAA,EACF,4CACE;AAAA,EACF,sCACE;AAAA,EACF,4CACE;AAAA,EACF,uDACE;AAAA,EACF,mDACE;AAAA,EACF,2DACE;AAAA,EACF,qDACE;AAAA,EACF,yDACE;AAAA,EACF,wDACE;AAAA,EACF,2DACE;AAAA,EACF,sDACE;AAAA,EACF,uDACE;AAAA,EACF,gDACE;AAAA,EACF,gDACE;AAAA,EACF,gDACE;AAAA,EACF,6DACE;AAAA,EACF,oDACE;AAAA,EACF,2CACE;AAAA,EACF,yCACE;AAAA,EACF,0CACE;AAAA,EACF,4CACE;AAAA,EACF,yCACE;AAAA,EACF,8CACE;AAAA,EACF,2CACE;AAAA,EACF,0CACE;AAAA,EACF,yCACE;AAAA,EACF,4CACE;AAAA,EACF,wCACE;AAAA,EACF,qCACE;AAAA,EACF,uCACE;AAAA,EACF,6CACE;AAAA,EACF,6CACE;AAAA,EACF,oDACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA,EACF,kCACE;AAAA,EACF,6CACE;AAAA,EACF,qCACE;AAAA,EACF,yCACE;AAAA,EACF,wCACE;AAAA,EACF,wCACE;AAAA,EACF,qCACE;AAAA,EACF,uCACE;AAAA,EACF,sCACE;AAAA,EACF,oCACE;AAAA,EACF,6CACE;AAAA,EACF,2CACE;AAAA,EACF,iCACE;AAAA,EACF,kDACE;AAAA,EACF,+CACE;AAAA,EACF,mDACE;AAAA,EACF,oDACE;AAAA,EACF,gDACE;AAAA,EACF,+CACE;AAAA,EACF,+CACE;AAAA,EACF,sDACE;AAAA,EACF,sDACE;AAAA,EACF,gEACE;AAAA,EACF,2DACE;AAAA,EACF,6DACE;AAAA,EACF,2DACE;AAAA,EACF,6DACE;AAAA,EACF,qDACE;AAAA,EACF,8CACE;AAAA,EACF,6CACE;AAAA,EACF,gDACE;AAAA,EACF,gDACE;AAAA,EACF,mDACE;AAAA,EACF,0CACE;AAAA,EACF,iDACE;AAAA,EACF,iDACE;AAAA,EACF,wDACE;AAAA,EACF,6CACE;AAAA,EACF,6CACE;AAAA,EACF,+CACE;AAAA,EACF,wDACE;AAAA,EACF,+CACE;AAAA,EACF,6CACE;AAAA,EACF,iDACE;AAAA,EACF,+CACE;AAAA,EACF,0CACE;AAAA,EACF,gDACE;AAAA,EACF,iDACE;AAAA,EACF,+CACE;AAAA,EACF,2CACE;AAAA,EACF,oDACE;AAAA,EACF,sDACE;AAAA,EACF,oDACE;AAAA,EACF,gDACE;AAAA,EACF,uDACE;AAAA,EACF,6CACE;AAAA,EACF,iDACE;AAAA,EACF,yCACE;AAAA,EACF,0DACE;AAAA,EACF,0DACE;AAAA,EACF,sDACE;AAAA,EACF,qDACE;AAAA,EACF,2DACE;AAAA,EACF,mDACE;AAAA,EACF,sDACE;AAAA,EACF,uDACE;AAAA,EACF,iCACE;AAAA,EACF,kCACE;AAAA,EACF,mCACE;AAAA,EACF,qCACE;AAAA,EACF,qCACE;AAAA,EACF,8CACE;AAAA,EACF,8CACE;AAAA,EACF,qDACE;AAAA,EACF,oDACE;AAAA,EACF,mDACE;AAAA,EACF,kDACE;AAAA,EACF,yDACE;AAAA,EACF,2CACE;AAAA,EACF,4CACE;AAAA,EACF,0DACE;AAAA,EACF,2CACE;AAAA,EACF,6CACE;AAAA,EACF,sCACE;AAAA,EACF,wCACE;AAAA,EACF,wCACE;AAAA,EACF,mCACE;AAAA,EACF,sCACE;AAAA,EACF,qCACE;AAAA,EACF,qCACE;AAAA,EACF,iDACE;AAAA,EACF,4CACE;AAAA,EACF,6CACE;AAAA,EACF,gDACE;AAAA,EACF,yCACE;AAAA,EACF,+BACE;AAAA,EACF,+BACE;AAAA,EACF,+BACE;AAAA,EACF,+BACE;AACJ;AAGO,SAAS,qBAAqB,MAAsB;AACzD,QAAM,aAAa,yBAAyB,IAAI;AAChD,MAAI,CAAC,YAAY;AACf,UAAM,IAAI,MAAM,oCAAoC,IAAI,EAAE;AAAA,EAC5D;AACA,SAAO,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","names":["res","res","anchors","c","node","i","end","value","stringify","comment","str","map","seq","require_schema","pairs","omap","require_bool","require_float","require_int","n","set","res","require_schema","tags","res","value","end","tag","i","ch","start","fs","lineCounter","fs","path","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","zeroAgentVisibilitySchema","c","c","c","c","c","nullableDateStringSchema","c","c","c","c","c","nullableDateStringSchema","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","jsonErrorSchema","c","c","c","jsonErrorSchema","c","c","c","c","c","c","c","c","c","c","c","c","stringOrStringArraySchema","c","c","c","c","c","c","c","import_yaml","asRecord","combineDistinctMessages","output","truncate","orphanToolUse","dotenvConfig","timestamp"]}
|