@ourofoundation/ouro-js 3.8.0 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/chunk-3DGJ27WL.js +2 -0
  2. package/dist/chunk-3DGJ27WL.js.map +1 -0
  3. package/dist/{chunk-RRDGLT3N.cjs → chunk-3JPOAQ2M.cjs} +2 -2
  4. package/dist/{chunk-RRDGLT3N.cjs.map → chunk-3JPOAQ2M.cjs.map} +1 -1
  5. package/dist/{chunk-APZA6MIM.js → chunk-5CPECQKN.js} +2 -2
  6. package/dist/{chunk-APZA6MIM.js.map → chunk-5CPECQKN.js.map} +1 -1
  7. package/dist/{chunk-RNBIB6S7.cjs → chunk-AIIAIQ6L.cjs} +2 -2
  8. package/dist/{chunk-RNBIB6S7.cjs.map → chunk-AIIAIQ6L.cjs.map} +1 -1
  9. package/dist/chunk-AJ2O7ER6.js +2 -0
  10. package/dist/chunk-AJ2O7ER6.js.map +1 -0
  11. package/dist/{chunk-G6GCUGMM.js → chunk-CDJH4OT5.js} +2 -2
  12. package/dist/chunk-CDJH4OT5.js.map +1 -0
  13. package/dist/{chunk-23FTPTDP.cjs → chunk-DSJ23DIB.cjs} +2 -2
  14. package/dist/{chunk-23FTPTDP.cjs.map → chunk-DSJ23DIB.cjs.map} +1 -1
  15. package/dist/{chunk-N3HC2ASR.cjs → chunk-E2FDUS3B.cjs} +2 -2
  16. package/dist/{chunk-N3HC2ASR.cjs.map → chunk-E2FDUS3B.cjs.map} +1 -1
  17. package/dist/{chunk-CXMEZGVG.js → chunk-EC376C5T.js} +2 -2
  18. package/dist/{chunk-CXMEZGVG.js.map → chunk-EC376C5T.js.map} +1 -1
  19. package/dist/{chunk-U5JVCESS.js → chunk-FGEMQEEM.js} +2 -2
  20. package/dist/{chunk-U5JVCESS.js.map → chunk-FGEMQEEM.js.map} +1 -1
  21. package/dist/{chunk-BELCP7OL.cjs → chunk-KU5AWMS5.cjs} +2 -2
  22. package/dist/{chunk-BELCP7OL.cjs.map → chunk-KU5AWMS5.cjs.map} +1 -1
  23. package/dist/{chunk-RQUVICCB.cjs → chunk-LHCGBWFP.cjs} +2 -2
  24. package/dist/{chunk-RQUVICCB.cjs.map → chunk-LHCGBWFP.cjs.map} +1 -1
  25. package/dist/{chunk-6OO4SOWL.js → chunk-LXDNBUOU.js} +2 -2
  26. package/dist/{chunk-6OO4SOWL.js.map → chunk-LXDNBUOU.js.map} +1 -1
  27. package/dist/{chunk-GT7CSIDN.js → chunk-MKRXM63S.js} +2 -2
  28. package/dist/{chunk-GT7CSIDN.js.map → chunk-MKRXM63S.js.map} +1 -1
  29. package/dist/{chunk-5CKFMTWZ.js → chunk-O4LSX56P.js} +2 -2
  30. package/dist/{chunk-5CKFMTWZ.js.map → chunk-O4LSX56P.js.map} +1 -1
  31. package/dist/{chunk-EIB2YGN3.js → chunk-OCG3P3PJ.js} +2 -2
  32. package/dist/{chunk-EIB2YGN3.js.map → chunk-OCG3P3PJ.js.map} +1 -1
  33. package/dist/chunk-OCMBP3U7.cjs +2 -0
  34. package/dist/chunk-OCMBP3U7.cjs.map +1 -0
  35. package/dist/{chunk-GX6RCMZR.js → chunk-PGCNGDPK.js} +2 -2
  36. package/dist/{chunk-GX6RCMZR.js.map → chunk-PGCNGDPK.js.map} +1 -1
  37. package/dist/chunk-PJLIO4PA.cjs +7 -0
  38. package/dist/chunk-PJLIO4PA.cjs.map +1 -0
  39. package/dist/{chunk-O6RFWCC4.cjs → chunk-PVUBGWOI.cjs} +2 -2
  40. package/dist/{chunk-O6RFWCC4.cjs.map → chunk-PVUBGWOI.cjs.map} +1 -1
  41. package/dist/chunk-Q4IXX6KS.js +7 -0
  42. package/dist/chunk-Q4IXX6KS.js.map +1 -0
  43. package/dist/{chunk-7R5EIIIR.cjs → chunk-RMMMRN4X.cjs} +2 -2
  44. package/dist/{chunk-7R5EIIIR.cjs.map → chunk-RMMMRN4X.cjs.map} +1 -1
  45. package/dist/{chunk-3UE4H5TR.js → chunk-RS5H4XDK.js} +2 -2
  46. package/dist/{chunk-3UE4H5TR.js.map → chunk-RS5H4XDK.js.map} +1 -1
  47. package/dist/{chunk-NVKZLT3M.cjs → chunk-T6UO42TO.cjs} +2 -2
  48. package/dist/{chunk-NVKZLT3M.cjs.map → chunk-T6UO42TO.cjs.map} +1 -1
  49. package/dist/{chunk-M2ZH6MMH.cjs → chunk-U6XOT6XH.cjs} +2 -2
  50. package/dist/{chunk-M2ZH6MMH.cjs.map → chunk-U6XOT6XH.cjs.map} +1 -1
  51. package/dist/{chunk-QUBJLDJY.js → chunk-W6KXPYCB.js} +2 -2
  52. package/dist/{chunk-QUBJLDJY.js.map → chunk-W6KXPYCB.js.map} +1 -1
  53. package/dist/{chunk-W4V643O5.cjs → chunk-XEA4DDOE.cjs} +2 -2
  54. package/dist/{chunk-W4V643O5.cjs.map → chunk-XEA4DDOE.cjs.map} +1 -1
  55. package/dist/chunk-XL2RQ3DZ.cjs +2 -0
  56. package/dist/chunk-XL2RQ3DZ.cjs.map +1 -0
  57. package/dist/{chunk-M5ZLLARC.js → chunk-Y6BK75KP.js} +2 -2
  58. package/dist/{chunk-M5ZLLARC.js.map → chunk-Y6BK75KP.js.map} +1 -1
  59. package/dist/{chunk-L6SVUDFH.cjs → chunk-YTCAK2AH.cjs} +2 -2
  60. package/dist/chunk-YTCAK2AH.cjs.map +1 -0
  61. package/dist/index.cjs +1 -1
  62. package/dist/index.d.cts +1 -1
  63. package/dist/index.d.ts +1 -1
  64. package/dist/index.js +1 -1
  65. package/dist/schema/assets.cjs +1 -1
  66. package/dist/schema/assets.js +1 -1
  67. package/dist/schema/comments.cjs +1 -1
  68. package/dist/schema/comments.js +1 -1
  69. package/dist/schema/conversations.cjs +1 -1
  70. package/dist/schema/conversations.js +1 -1
  71. package/dist/schema/datasets.cjs +1 -1
  72. package/dist/schema/datasets.js +1 -1
  73. package/dist/schema/files.cjs +1 -1
  74. package/dist/schema/files.d.cts +1 -1
  75. package/dist/schema/files.d.ts +1 -1
  76. package/dist/schema/files.js +1 -1
  77. package/dist/schema/notifications.cjs +1 -1
  78. package/dist/schema/notifications.js +1 -1
  79. package/dist/schema/organizations.cjs +1 -1
  80. package/dist/schema/organizations.js +1 -1
  81. package/dist/schema/posts.cjs +1 -1
  82. package/dist/schema/posts.js +1 -1
  83. package/dist/schema/quests.cjs +1 -1
  84. package/dist/schema/quests.js +1 -1
  85. package/dist/schema/services.cjs +1 -1
  86. package/dist/schema/services.js +1 -1
  87. package/dist/schema/teams.cjs +1 -1
  88. package/dist/schema/teams.js +1 -1
  89. package/dist/schema/users.cjs +1 -1
  90. package/dist/schema/users.d.cts +0 -5
  91. package/dist/schema/users.d.ts +0 -5
  92. package/dist/schema/users.js +1 -1
  93. package/dist/utils/air/index.cjs +1 -1
  94. package/dist/utils/air/index.d.cts +23 -1
  95. package/dist/utils/air/index.d.ts +23 -1
  96. package/dist/utils/air/index.js +1 -1
  97. package/dist/utils/air/markdown-parser.cjs +1 -1
  98. package/dist/utils/air/markdown-parser.js +1 -1
  99. package/dist/utils/quest-submission.cjs +1 -1
  100. package/dist/utils/quest-submission.js +1 -1
  101. package/package.json +2 -2
  102. package/tests/files.test.mjs +29 -0
  103. package/tests/markdown-parser.test.mjs +52 -0
  104. package/tests/users.test.mjs +13 -0
  105. package/dist/chunk-AUDVUOLX.js +0 -2
  106. package/dist/chunk-AUDVUOLX.js.map +0 -1
  107. package/dist/chunk-CRUIBV5F.js +0 -2
  108. package/dist/chunk-CRUIBV5F.js.map +0 -1
  109. package/dist/chunk-EVQAA7RQ.cjs +0 -2
  110. package/dist/chunk-EVQAA7RQ.cjs.map +0 -1
  111. package/dist/chunk-G6GCUGMM.js.map +0 -1
  112. package/dist/chunk-KXYKN3TY.js +0 -7
  113. package/dist/chunk-KXYKN3TY.js.map +0 -1
  114. package/dist/chunk-L6SVUDFH.cjs.map +0 -1
  115. package/dist/chunk-NSKBXBRD.cjs +0 -7
  116. package/dist/chunk-NSKBXBRD.cjs.map +0 -1
  117. package/dist/chunk-SZWAE35B.cjs +0 -2
  118. package/dist/chunk-SZWAE35B.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","RelationTypeSchema","zodEnum","CitationSchema","array","number","AttributionSchema","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","PriceCurrencySchema","StatusSchema","SourceSchema","boolean","DEFAULT_ATTRIBUTION","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","value","UpdateAssetSchema"],"mappings":"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","file":"chunk-GX6RCMZR.js","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n enum as zodEnum,\n nullable,\n optional,\n boolean,\n record,\n type z,\n any\n} from \"zod\";\n\nimport {\n AssetTypeSchema,\n MonetizationSchema,\n PriceCurrencySchema,\n StatusSchema,\n SourceSchema,\n VisibilitySchema,\n} from \"./common\";\nimport { OrganizationsSchema } from \"./organizations\";\nimport { TeamSchema } from \"./teams\";\nimport { ProfileSchema } from \"./users\";\nimport { uuidv7 } from \"uuidv7\";\nimport { GLOBAL_ORG_ID, GLOBAL_TEAM_ID } from \"./constants\";\n\ntype AssetConfigInput = {\n org_id?: string | null;\n visibility?: z.infer<typeof VisibilitySchema> | null;\n};\n\nconst normalizeAssetConfigForParsing = <T extends AssetConfigInput>(\n input: T\n): T => {\n if (input.org_id === GLOBAL_ORG_ID && input.visibility === \"organization\") {\n return { ...input, visibility: \"public\" as T[\"visibility\"] };\n }\n return input;\n};\n\n/** Type-specific / incidental metadata only (not attribution). */\nconst AssetMetadataSchema = object({\n source: optional(nullable(string())),\n /** When present on a comment, the id of the comment the user directly replied to (for reply-to-reply; parent_id is the top-level comment). */\n reply_to_comment_id: optional(nullable(string())),\n})\n\nconst RelationTypeSchema = zodEnum([\n \"IsSupplementTo\",\n \"IsDerivedFrom\",\n \"References\",\n \"IsVariantFormOf\",\n \"IsIdenticalTo\",\n])\n\nconst CitationSchema = object({\n doi: optional(nullable(string())),\n title: optional(nullable(string())),\n authors: optional(nullable(array(string()))),\n year: optional(nullable(number())),\n venue: optional(nullable(string())),\n url: optional(nullable(string())),\n bibtex: optional(nullable(string())),\n source: optional(nullable(string())),\n})\n\n/** Provenance, related-work citation, and (later) this asset's minted DOI. */\nconst AttributionSchema = object({\n originality: optional(\n zodEnum([\"original\", \"derivative\", \"third-party\"])\n ).default(\"original\"),\n external_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n doi_url: optional(nullable(string())),\n citation: optional(nullable(CitationSchema)),\n relation_type: optional(nullable(RelationTypeSchema)),\n /** This asset's DOI — reserved for minting; never the related paper's DOI. */\n doi: optional(nullable(string())),\n})\n\nconst AssetSchema = object({\n id: uuid(),\n user_id: uuid(),\n user: optional(ProfileSchema.partial()),\n org_id: uuid(),\n organization: optional(OrganizationsSchema.partial()),\n team_id: uuid(),\n team: optional(TeamSchema.partial()),\n parent_id: optional(nullable(uuid())),\n parent: optional(record(string(), any())),\n license_id: string(),\n license: optional(record(string(), any())),\n asset_type: AssetTypeSchema,\n name: string(),\n name_url_slug: optional(nullable(string())),\n slug: optional(nullable(string())),\n // Rich description: store both editor json and plain text\n description: optional(\n nullable(\n object({\n json: record(string(), any()),\n text: string(),\n })\n )\n ),\n visibility: VisibilitySchema,\n monetization: MonetizationSchema,\n price: optional(nullable(number())),\n unit_cost: optional(nullable(number())),\n cost_accounting: optional(nullable(zodEnum([\"fixed\", \"variable\"]))),\n cost_unit: optional(nullable(string())),\n price_currency: optional(PriceCurrencySchema),\n stripe_product_id: optional(nullable(string())),\n stripe_price_id: optional(nullable(string())),\n stripe_meter_id: optional(nullable(string())),\n metadata: optional(nullable(AssetMetadataSchema)),\n // NOT NULL in DB; always present after 20260720_assets_attribution.\n attribution: AttributionSchema,\n preview: optional(nullable(array(record(string(), any())))),\n state: StatusSchema,\n source: SourceSchema,\n is_pinned_in_team: optional(boolean().default(false)),\n created_at: string(),\n last_updated: string(),\n});\n\nconst DEFAULT_ATTRIBUTION = { originality: \"original\" as const };\n\nconst CreateAssetSchema = AssetSchema.partial()\n .omit({\n user_id: true,\n user: true,\n organization: true,\n license: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n id: uuid().default(() => uuidv7()),\n team_id: nullable(uuid())\n .default(GLOBAL_TEAM_ID),\n org_id: nullable(uuid())\n .default(GLOBAL_ORG_ID),\n name: string()\n .min(1, { message: \"Name cannot be empty\" })\n .max(255, { message: \"Name must be less than 255 characters\" }),\n name_url_slug: optional(nullable(string())),\n state: StatusSchema.optional().default(\"success\"),\n source: SourceSchema.default(\"web\"),\n visibility: VisibilitySchema.optional().default(\"public\"),\n // Column is NOT NULL; coerce omitted/null so create_asset_with_content\n // never inserts an explicit null (which bypasses the DB default).\n attribution: optional(nullable(AttributionSchema)).transform((value) =>\n AttributionSchema.parse(value ?? DEFAULT_ATTRIBUTION)\n ),\n created_at: string().default(() => new Date().toISOString()),\n last_updated: string().default(() => new Date().toISOString()),\n });\n\nconst UpdateAssetSchema = AssetSchema.partial().omit({\n id: true,\n user_id: true,\n created_at: true,\n user: true,\n organization: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n AssetMetadataSchema,\n AttributionSchema,\n CitationSchema,\n RelationTypeSchema,\n AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n DEFAULT_ATTRIBUTION,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Attribution = z.infer<typeof AttributionSchema>;\nexport type Citation = z.infer<typeof CitationSchema>;\nexport type RelationType = z.infer<typeof RelationTypeSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
1
+ {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","RelationTypeSchema","zodEnum","CitationSchema","array","number","AttributionSchema","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","PriceCurrencySchema","StatusSchema","SourceSchema","boolean","DEFAULT_ATTRIBUTION","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","value","UpdateAssetSchema"],"mappings":"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","file":"chunk-PGCNGDPK.js","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n enum as zodEnum,\n nullable,\n optional,\n boolean,\n record,\n type z,\n any\n} from \"zod\";\n\nimport {\n AssetTypeSchema,\n MonetizationSchema,\n PriceCurrencySchema,\n StatusSchema,\n SourceSchema,\n VisibilitySchema,\n} from \"./common\";\nimport { OrganizationsSchema } from \"./organizations\";\nimport { TeamSchema } from \"./teams\";\nimport { ProfileSchema } from \"./users\";\nimport { uuidv7 } from \"uuidv7\";\nimport { GLOBAL_ORG_ID, GLOBAL_TEAM_ID } from \"./constants\";\n\ntype AssetConfigInput = {\n org_id?: string | null;\n visibility?: z.infer<typeof VisibilitySchema> | null;\n};\n\nconst normalizeAssetConfigForParsing = <T extends AssetConfigInput>(\n input: T\n): T => {\n if (input.org_id === GLOBAL_ORG_ID && input.visibility === \"organization\") {\n return { ...input, visibility: \"public\" as T[\"visibility\"] };\n }\n return input;\n};\n\n/** Type-specific / incidental metadata only (not attribution). */\nconst AssetMetadataSchema = object({\n source: optional(nullable(string())),\n /** When present on a comment, the id of the comment the user directly replied to (for reply-to-reply; parent_id is the top-level comment). */\n reply_to_comment_id: optional(nullable(string())),\n})\n\nconst RelationTypeSchema = zodEnum([\n \"IsSupplementTo\",\n \"IsDerivedFrom\",\n \"References\",\n \"IsVariantFormOf\",\n \"IsIdenticalTo\",\n])\n\nconst CitationSchema = object({\n doi: optional(nullable(string())),\n title: optional(nullable(string())),\n authors: optional(nullable(array(string()))),\n year: optional(nullable(number())),\n venue: optional(nullable(string())),\n url: optional(nullable(string())),\n bibtex: optional(nullable(string())),\n source: optional(nullable(string())),\n})\n\n/** Provenance, related-work citation, and (later) this asset's minted DOI. */\nconst AttributionSchema = object({\n originality: optional(\n zodEnum([\"original\", \"derivative\", \"third-party\"])\n ).default(\"original\"),\n external_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n doi_url: optional(nullable(string())),\n citation: optional(nullable(CitationSchema)),\n relation_type: optional(nullable(RelationTypeSchema)),\n /** This asset's DOI — reserved for minting; never the related paper's DOI. */\n doi: optional(nullable(string())),\n})\n\nconst AssetSchema = object({\n id: uuid(),\n user_id: uuid(),\n user: optional(ProfileSchema.partial()),\n org_id: uuid(),\n organization: optional(OrganizationsSchema.partial()),\n team_id: uuid(),\n team: optional(TeamSchema.partial()),\n parent_id: optional(nullable(uuid())),\n parent: optional(record(string(), any())),\n license_id: string(),\n license: optional(record(string(), any())),\n asset_type: AssetTypeSchema,\n name: string(),\n name_url_slug: optional(nullable(string())),\n slug: optional(nullable(string())),\n // Rich description: store both editor json and plain text\n description: optional(\n nullable(\n object({\n json: record(string(), any()),\n text: string(),\n })\n )\n ),\n visibility: VisibilitySchema,\n monetization: MonetizationSchema,\n price: optional(nullable(number())),\n unit_cost: optional(nullable(number())),\n cost_accounting: optional(nullable(zodEnum([\"fixed\", \"variable\"]))),\n cost_unit: optional(nullable(string())),\n price_currency: optional(PriceCurrencySchema),\n stripe_product_id: optional(nullable(string())),\n stripe_price_id: optional(nullable(string())),\n stripe_meter_id: optional(nullable(string())),\n metadata: optional(nullable(AssetMetadataSchema)),\n // NOT NULL in DB; always present after 20260720_assets_attribution.\n attribution: AttributionSchema,\n preview: optional(nullable(array(record(string(), any())))),\n state: StatusSchema,\n source: SourceSchema,\n is_pinned_in_team: optional(boolean().default(false)),\n created_at: string(),\n last_updated: string(),\n});\n\nconst DEFAULT_ATTRIBUTION = { originality: \"original\" as const };\n\nconst CreateAssetSchema = AssetSchema.partial()\n .omit({\n user_id: true,\n user: true,\n organization: true,\n license: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n id: uuid().default(() => uuidv7()),\n team_id: nullable(uuid())\n .default(GLOBAL_TEAM_ID),\n org_id: nullable(uuid())\n .default(GLOBAL_ORG_ID),\n name: string()\n .min(1, { message: \"Name cannot be empty\" })\n .max(255, { message: \"Name must be less than 255 characters\" }),\n name_url_slug: optional(nullable(string())),\n state: StatusSchema.optional().default(\"success\"),\n source: SourceSchema.default(\"web\"),\n visibility: VisibilitySchema.optional().default(\"public\"),\n // Column is NOT NULL; coerce omitted/null so create_asset_with_content\n // never inserts an explicit null (which bypasses the DB default).\n attribution: optional(nullable(AttributionSchema)).transform((value) =>\n AttributionSchema.parse(value ?? DEFAULT_ATTRIBUTION)\n ),\n created_at: string().default(() => new Date().toISOString()),\n last_updated: string().default(() => new Date().toISOString()),\n });\n\nconst UpdateAssetSchema = AssetSchema.partial().omit({\n id: true,\n user_id: true,\n created_at: true,\n user: true,\n organization: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n AssetMetadataSchema,\n AttributionSchema,\n CitationSchema,\n RelationTypeSchema,\n AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n DEFAULT_ATTRIBUTION,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Attribution = z.infer<typeof AttributionSchema>;\nexport type Citation = z.infer<typeof CitationSchema>;\nexport type RelationType = z.infer<typeof RelationTypeSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';var marked=require('marked');function o(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,t){return `<span data-latex="${o(e)}" data-display-mode="${t}"></span>`}var p={name:"katexBlock",level:"block",start(e){let t=e.match(/\\\[/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\]/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\[([\s\S]*?)\\\]/.exec(e);if(n)return {type:"katexBlock",raw:n[0],latex:n[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let t=e.match(/\\\(/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\)/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\(([\s\S]*?)\\\)/.exec(e);if(n)return {type:"katexInline",raw:n[0],latex:n[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},k={name:"assetComponent",level:"block",start(e){var t;return (t=e.match(/^```assetComponent/))==null?void 0:t.index},end(e){var t;return (t=e.match(/^```/))==null?void 0:t.index},tokenizer(e,t){let n=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(n)return {type:"assetComponent",raw:n[0],properties:n[1],tokens:[]}},renderer(e){let t;try{t=JSON.parse(e.properties);}catch(n){console.error("Invalid JSON in assetComponent properties:",n),t={};}return `
2
+ <asset-component ${Object.entries(t).map(([n,s])=>{let i=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${n}="${i}"`}).join(" ")}></asset-component>`}},y={name:"userMention",level:"inline",start(e){let t=e.match(/`\{@|(?<![`])\{@/);return t?t.index:void 0},end(e){var t,r,n;return (n=(t=e.match(/\}`/))==null?void 0:t.index)!=null?n:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,t){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let n=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(n)return {type:"userMention",raw:n[0],username:n[1]}},renderer(e){let t=o(e.username);return `<user-mention username="${t}" data-label="${t}"></user-mention>`}},f="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",h=new RegExp(`^\\[(post|dataset|file|service|route|quest|asset|action):(${f})\\](?!\\()`,"i"),x={name:"assetWikiLink",level:"inline",start(e){let t=e.match(/\[(?:post|dataset|file|service|route|quest|asset|action):/i);return t?t.index:void 0},tokenizer(e){let t=h.exec(e);if(!t)return;let r=`${t[1].toLowerCase()}:${t[2]}`;return {type:"assetWikiLink",raw:t[0],href:r}},renderer(e){let t=o(e.href);return `<a href="${t}">${t}</a>`}};marked.marked.use({gfm:true,extensions:[k,y,x,p,m],renderer:{list(e){var t;return !e.ordered&&((t=e.items)==null?void 0:t.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
+ ${e.items.map(n=>{let s=n.tokens.filter(u=>u.type!=="checkbox"),a=this.parser.parse(s,!!n.loose);n.loose||(a=`<p>${a}</p>`);let i=n.checked?"true":"false",d=n.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${i}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
+ `)}
5
+ </ul>
6
+ `:false}}});function $(e){return marked.marked.parse(e)}exports.a=$;//# sourceMappingURL=chunk-PJLIO4PA.cjs.map
7
+ //# sourceMappingURL=chunk-PJLIO4PA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","UUID_RE","ASSET_WIKI_LINK_TOKEN","assetWikiLinkExtension","href","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"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","file":"chunk-PJLIO4PA.cjs","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\n/** UUID-shaped ids (v4 and v7) used in typed asset shorthands. */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/**\n * Collapsed `[dataset:<uuid>]` form. `(?!\\\\()` leaves `[label](dataset:<uuid>)`\n * to the built-in markdown link tokenizer.\n */\nconst ASSET_WIKI_LINK_TOKEN = new RegExp(\n `^\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"i\"\n);\n\nconst assetWikiLinkExtension = {\n name: \"assetWikiLink\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(\n /\\[(?:post|dataset|file|service|route|quest|asset|action):/i\n );\n return m ? m.index : undefined;\n },\n tokenizer(src: string) {\n const match = ASSET_WIKI_LINK_TOKEN.exec(src);\n if (!match) return;\n const href = `${match[1].toLowerCase()}:${match[2]}`;\n return {\n type: \"assetWikiLink\",\n raw: match[0],\n href,\n };\n },\n renderer(token: any) {\n const href = escapeHtmlAttr(token.href);\n return `<a href=\"${href}\">${href}</a>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n assetWikiLinkExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk7R5EIIIR_cjs=require('./chunk-7R5EIIIR.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),zod=require('zod');var y=zod.object({type:zod.string(),size:zod.number(),path:zod.string(),extension:zod.string(),name:zod.string(),id:zod.uuid(),bucket:zod.enum(["public-files","files"])}),_=zod.enum(["asset","action"]),x=zod.record(zod.string(),zod.object({kind:_,asset_type:zod.optional(chunkYFEGRZXL_cjs.a)})),z=zod.record(zod.string(),zod.object({values:zod.array(zod.string())})),F=zod.object({table_name:zod.string(),schema:zod.literal("datasets").default("datasets"),columns:zod.array(zod.string()),refs:zod.optional(zod.nullable(x)),enum_columns:zod.optional(zod.nullable(z))}),w=zod.object({column_name:zod.string(),data_type:zod.string(),fk_constraint_name:zod.optional(zod.nullable(zod.string())),foreign_table_schema:zod.optional(zod.nullable(zod.string())),foreign_table_name:zod.optional(zod.nullable(zod.string())),foreign_column_name:zod.optional(zod.nullable(zod.string())),semantic_type:zod.optional(zod.nullable(zod.enum(["reference","enum"]))),ref_kind:zod.optional(zod.nullable(_)),asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),enum_values:zod.optional(zod.nullable(zod.array(zod.string())))}),v=zod.object({kind:zod.literal("asset"),id:zod.uuid(),asset_type:chunkYFEGRZXL_cjs.a,name:zod.nullable(zod.string()),web_url:zod.nullable(zod.string())}),C=zod.object({kind:zod.literal("action"),id:zod.uuid(),status:zod.nullable(zod.string()),route_id:zod.nullable(zod.uuid()),route_name:zod.nullable(zod.string()),name:zod.nullable(zod.string()),web_url:zod.nullable(zod.string()),created_at:zod.nullable(zod.string())}),b=zod.discriminatedUnion("kind",[v,C]),M=zod.record(zod.string(),zod.record(zod.string(),b)),u=F.extend(chunk7R5EIIIR_cjs.b.partial().shape),g=chunk7R5EIIIR_cjs.f.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u.extend({...y.partial().shape}),preview:zod.array(zod.record(zod.string(),zod.any()))}),K=chunk7R5EIIIR_cjs.h.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u.extend({...y.shape}),preview:zod.array(zod.record(zod.string(),zod.any()))}).transform(m=>chunk7R5EIIIR_cjs.a(m)),U=chunk7R5EIIIR_cjs.h.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u,preview:zod.array(zod.record(zod.string(),zod.any()))}).transform(m=>chunk7R5EIIIR_cjs.a(m)),j=g.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({asset_type:zod.literal("dataset").default("dataset"),last_updated:zod.string().default(()=>new Date().toISOString())}).transform(m=>chunk7R5EIIIR_cjs.a(m));exports.a=_;exports.b=x;exports.c=z;exports.d=w;exports.e=b;exports.f=M;exports.g=g;exports.h=K;exports.i=U;exports.j=j;//# sourceMappingURL=chunk-O6RFWCC4.cjs.map
2
- //# sourceMappingURL=chunk-O6RFWCC4.cjs.map
1
+ 'use strict';var chunkRMMMRN4X_cjs=require('./chunk-RMMMRN4X.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),zod=require('zod');var y=zod.object({type:zod.string(),size:zod.number(),path:zod.string(),extension:zod.string(),name:zod.string(),id:zod.uuid(),bucket:zod.enum(["public-files","files"])}),_=zod.enum(["asset","action"]),x=zod.record(zod.string(),zod.object({kind:_,asset_type:zod.optional(chunkYFEGRZXL_cjs.a)})),z=zod.record(zod.string(),zod.object({values:zod.array(zod.string())})),F=zod.object({table_name:zod.string(),schema:zod.literal("datasets").default("datasets"),columns:zod.array(zod.string()),refs:zod.optional(zod.nullable(x)),enum_columns:zod.optional(zod.nullable(z))}),w=zod.object({column_name:zod.string(),data_type:zod.string(),fk_constraint_name:zod.optional(zod.nullable(zod.string())),foreign_table_schema:zod.optional(zod.nullable(zod.string())),foreign_table_name:zod.optional(zod.nullable(zod.string())),foreign_column_name:zod.optional(zod.nullable(zod.string())),semantic_type:zod.optional(zod.nullable(zod.enum(["reference","enum"]))),ref_kind:zod.optional(zod.nullable(_)),asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),enum_values:zod.optional(zod.nullable(zod.array(zod.string())))}),v=zod.object({kind:zod.literal("asset"),id:zod.uuid(),asset_type:chunkYFEGRZXL_cjs.a,name:zod.nullable(zod.string()),web_url:zod.nullable(zod.string())}),C=zod.object({kind:zod.literal("action"),id:zod.uuid(),status:zod.nullable(zod.string()),route_id:zod.nullable(zod.uuid()),route_name:zod.nullable(zod.string()),name:zod.nullable(zod.string()),web_url:zod.nullable(zod.string()),created_at:zod.nullable(zod.string())}),b=zod.discriminatedUnion("kind",[v,C]),M=zod.record(zod.string(),zod.record(zod.string(),b)),u=F.extend(chunkRMMMRN4X_cjs.b.partial().shape),g=chunkRMMMRN4X_cjs.f.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u.extend({...y.partial().shape}),preview:zod.array(zod.record(zod.string(),zod.any()))}),K=chunkRMMMRN4X_cjs.h.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u.extend({...y.shape}),preview:zod.array(zod.record(zod.string(),zod.any()))}).transform(m=>chunkRMMMRN4X_cjs.a(m)),U=chunkRMMMRN4X_cjs.h.extend({asset_type:zod.literal("dataset").default("dataset"),metadata:u,preview:zod.array(zod.record(zod.string(),zod.any()))}).transform(m=>chunkRMMMRN4X_cjs.a(m)),j=g.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({asset_type:zod.literal("dataset").default("dataset"),last_updated:zod.string().default(()=>new Date().toISOString())}).transform(m=>chunkRMMMRN4X_cjs.a(m));exports.a=_;exports.b=x;exports.c=z;exports.d=w;exports.e=b;exports.f=M;exports.g=g;exports.h=K;exports.i=U;exports.j=j;//# sourceMappingURL=chunk-PVUBGWOI.cjs.map
2
+ //# sourceMappingURL=chunk-PVUBGWOI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/datasets.ts"],"names":["DatasetFromFileMetadataSchema","object","string","number","uuid","zodEnum","RefKindSchema","DatasetRefsSchema","record","optional","AssetTypeSchema","DatasetEnumColumnsSchema","array","BaseDatasetMetadataSchema","literal","nullable","EnrichedDatasetSchemaFieldSchema","ResolvedAssetRefSchema","ResolvedActionRefSchema","ResolvedRefSchema","discriminatedUnion","ResolvedRefsSchema","DatasetMetadataSchema","AssetMetadataSchema","DatasetSchema","AssetSchema","any","CreateDatasetFromFileSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","CreateDatasetFromSchemaSchema","updateDatasetSchema"],"mappings":"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","file":"chunk-O6RFWCC4.cjs","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n literal,\n record,\n optional,\n nullable,\n discriminatedUnion,\n type z,\n any,\n enum as zodEnum\n} from \"zod\";\n\nimport {\n AssetSchema,\n CreateAssetSchema,\n AssetMetadataSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { AssetTypeSchema } from \"./common\";\n\nconst DatasetFromFileMetadataSchema = object({\n type: string(),\n size: number(),\n path: string(),\n extension: string(),\n name: string(),\n id: uuid(), // storage file object id,\n bucket: zodEnum([\"public-files\", \"files\"]),\n});\n\n/**\n * The kind of object a dataset reference column points at. The FK target table\n * is the source of truth: public.assets -> \"asset\", public.actions -> \"action\".\n */\nconst RefKindSchema = zodEnum([\"asset\", \"action\"]);\n\n/**\n * Per-column reference declarations.\n *\n * A column becomes a reference when the backend adds a real Postgres FK to a\n * referenceable table. `kind` selects the target table; `asset_type` is an\n * optional target-type hint that only applies when `kind` is \"asset\".\n */\nconst DatasetRefsSchema = record(\n string(),\n object({\n kind: RefKindSchema,\n asset_type: optional(AssetTypeSchema),\n })\n);\n\n/**\n * Per-column enum declarations.\n *\n * Enum columns are stored as ordinary dataset columns plus a Postgres CHECK\n * constraint. The values are surfaced in schema reads so agents can query with\n * known categorical values.\n */\nconst DatasetEnumColumnsSchema = record(\n string(),\n object({\n values: array(string()),\n })\n);\n\nconst BaseDatasetMetadataSchema = object({\n table_name: string(),\n schema: literal(\"datasets\").default(\"datasets\"),\n columns: array(string()),\n refs: optional(nullable(DatasetRefsSchema)),\n enum_columns: optional(nullable(DatasetEnumColumnsSchema)),\n});\n\n/**\n * A single column from GET /datasets/:id/schema, enriched server-side.\n *\n * The FK fields come straight from get_table_schema. `semantic_type` is pure\n * inference: \"reference\" when the column has an FK to a referenceable table,\n * with `ref_kind` naming which one (\"asset\" | \"action\"). The optional\n * `asset_type` is the declared target-type hint from metadata.refs (display +\n * soft validation only, asset kind only). `semantic_type: \"enum\"` comes from\n * metadata.enum_columns and exposes its known values.\n */\nconst EnrichedDatasetSchemaFieldSchema = object({\n column_name: string(),\n data_type: string(),\n fk_constraint_name: optional(nullable(string())),\n foreign_table_schema: optional(nullable(string())),\n foreign_table_name: optional(nullable(string())),\n foreign_column_name: optional(nullable(string())),\n semantic_type: optional(nullable(zodEnum([\"reference\", \"enum\"]))),\n ref_kind: optional(nullable(RefKindSchema)),\n asset_type: optional(nullable(AssetTypeSchema)),\n enum_values: optional(nullable(array(string()))),\n});\n\n/**\n * A resolved reference returned in the `resolved_refs` sidecar of\n * GET /datasets/:id/data?resolve_refs=true. Discriminated on `kind` so asset\n * and action references share one vocabulary while carrying kind-specific\n * fields.\n */\nconst ResolvedAssetRefSchema = object({\n kind: literal(\"asset\"),\n id: uuid(),\n asset_type: AssetTypeSchema,\n name: nullable(string()),\n web_url: nullable(string()),\n});\n\nconst ResolvedActionRefSchema = object({\n kind: literal(\"action\"),\n id: uuid(),\n status: nullable(string()),\n route_id: nullable(uuid()),\n route_name: nullable(string()),\n name: nullable(string()),\n web_url: nullable(string()),\n created_at: nullable(string()),\n});\n\nconst ResolvedRefSchema = discriminatedUnion(\"kind\", [\n ResolvedAssetRefSchema,\n ResolvedActionRefSchema,\n]);\n\n/** column -> (referenced uuid -> resolved reference). */\nconst ResolvedRefsSchema = record(\n string(),\n record(string(), ResolvedRefSchema)\n);\n\nconst DatasetMetadataSchema = BaseDatasetMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst DatasetSchema = AssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema.extend({\n ...DatasetFromFileMetadataSchema.partial().shape,\n }),\n preview: array(record(string(), any())),\n});\n\nconst CreateDatasetFromFileSchema = CreateAssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema.extend({\n ...DatasetFromFileMetadataSchema.shape,\n }),\n preview: array(record(string(), any())),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst CreateDatasetFromSchemaSchema = CreateAssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema,\n preview: array(record(string(), any())),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst updateDatasetSchema = DatasetSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n DatasetSchema,\n CreateDatasetFromFileSchema,\n CreateDatasetFromSchemaSchema,\n updateDatasetSchema,\n RefKindSchema,\n DatasetRefsSchema,\n DatasetEnumColumnsSchema,\n EnrichedDatasetSchemaFieldSchema,\n ResolvedRefSchema,\n ResolvedRefsSchema,\n};\nexport type Dataset = z.infer<typeof DatasetSchema>;\nexport type CreateFromFileDataset = z.infer<typeof CreateDatasetFromFileSchema>;\nexport type CreateFromSchemaDataset = z.infer<typeof CreateDatasetFromSchemaSchema>;\nexport type UpdateDataset = z.infer<typeof updateDatasetSchema>;\nexport type RefKind = z.infer<typeof RefKindSchema>;\nexport type DatasetRefs = z.infer<typeof DatasetRefsSchema>;\nexport type DatasetEnumColumns = z.infer<typeof DatasetEnumColumnsSchema>;\nexport type EnrichedDatasetSchemaField = z.infer<\n typeof EnrichedDatasetSchemaFieldSchema\n>;\nexport type ResolvedRef = z.infer<typeof ResolvedRefSchema>;\nexport type ResolvedRefs = z.infer<typeof ResolvedRefsSchema>;\n"]}
1
+ {"version":3,"sources":["../src/schema/datasets.ts"],"names":["DatasetFromFileMetadataSchema","object","string","number","uuid","zodEnum","RefKindSchema","DatasetRefsSchema","record","optional","AssetTypeSchema","DatasetEnumColumnsSchema","array","BaseDatasetMetadataSchema","literal","nullable","EnrichedDatasetSchemaFieldSchema","ResolvedAssetRefSchema","ResolvedActionRefSchema","ResolvedRefSchema","discriminatedUnion","ResolvedRefsSchema","DatasetMetadataSchema","AssetMetadataSchema","DatasetSchema","AssetSchema","any","CreateDatasetFromFileSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","CreateDatasetFromSchemaSchema","updateDatasetSchema"],"mappings":"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","file":"chunk-PVUBGWOI.cjs","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n literal,\n record,\n optional,\n nullable,\n discriminatedUnion,\n type z,\n any,\n enum as zodEnum\n} from \"zod\";\n\nimport {\n AssetSchema,\n CreateAssetSchema,\n AssetMetadataSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { AssetTypeSchema } from \"./common\";\n\nconst DatasetFromFileMetadataSchema = object({\n type: string(),\n size: number(),\n path: string(),\n extension: string(),\n name: string(),\n id: uuid(), // storage file object id,\n bucket: zodEnum([\"public-files\", \"files\"]),\n});\n\n/**\n * The kind of object a dataset reference column points at. The FK target table\n * is the source of truth: public.assets -> \"asset\", public.actions -> \"action\".\n */\nconst RefKindSchema = zodEnum([\"asset\", \"action\"]);\n\n/**\n * Per-column reference declarations.\n *\n * A column becomes a reference when the backend adds a real Postgres FK to a\n * referenceable table. `kind` selects the target table; `asset_type` is an\n * optional target-type hint that only applies when `kind` is \"asset\".\n */\nconst DatasetRefsSchema = record(\n string(),\n object({\n kind: RefKindSchema,\n asset_type: optional(AssetTypeSchema),\n })\n);\n\n/**\n * Per-column enum declarations.\n *\n * Enum columns are stored as ordinary dataset columns plus a Postgres CHECK\n * constraint. The values are surfaced in schema reads so agents can query with\n * known categorical values.\n */\nconst DatasetEnumColumnsSchema = record(\n string(),\n object({\n values: array(string()),\n })\n);\n\nconst BaseDatasetMetadataSchema = object({\n table_name: string(),\n schema: literal(\"datasets\").default(\"datasets\"),\n columns: array(string()),\n refs: optional(nullable(DatasetRefsSchema)),\n enum_columns: optional(nullable(DatasetEnumColumnsSchema)),\n});\n\n/**\n * A single column from GET /datasets/:id/schema, enriched server-side.\n *\n * The FK fields come straight from get_table_schema. `semantic_type` is pure\n * inference: \"reference\" when the column has an FK to a referenceable table,\n * with `ref_kind` naming which one (\"asset\" | \"action\"). The optional\n * `asset_type` is the declared target-type hint from metadata.refs (display +\n * soft validation only, asset kind only). `semantic_type: \"enum\"` comes from\n * metadata.enum_columns and exposes its known values.\n */\nconst EnrichedDatasetSchemaFieldSchema = object({\n column_name: string(),\n data_type: string(),\n fk_constraint_name: optional(nullable(string())),\n foreign_table_schema: optional(nullable(string())),\n foreign_table_name: optional(nullable(string())),\n foreign_column_name: optional(nullable(string())),\n semantic_type: optional(nullable(zodEnum([\"reference\", \"enum\"]))),\n ref_kind: optional(nullable(RefKindSchema)),\n asset_type: optional(nullable(AssetTypeSchema)),\n enum_values: optional(nullable(array(string()))),\n});\n\n/**\n * A resolved reference returned in the `resolved_refs` sidecar of\n * GET /datasets/:id/data?resolve_refs=true. Discriminated on `kind` so asset\n * and action references share one vocabulary while carrying kind-specific\n * fields.\n */\nconst ResolvedAssetRefSchema = object({\n kind: literal(\"asset\"),\n id: uuid(),\n asset_type: AssetTypeSchema,\n name: nullable(string()),\n web_url: nullable(string()),\n});\n\nconst ResolvedActionRefSchema = object({\n kind: literal(\"action\"),\n id: uuid(),\n status: nullable(string()),\n route_id: nullable(uuid()),\n route_name: nullable(string()),\n name: nullable(string()),\n web_url: nullable(string()),\n created_at: nullable(string()),\n});\n\nconst ResolvedRefSchema = discriminatedUnion(\"kind\", [\n ResolvedAssetRefSchema,\n ResolvedActionRefSchema,\n]);\n\n/** column -> (referenced uuid -> resolved reference). */\nconst ResolvedRefsSchema = record(\n string(),\n record(string(), ResolvedRefSchema)\n);\n\nconst DatasetMetadataSchema = BaseDatasetMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst DatasetSchema = AssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema.extend({\n ...DatasetFromFileMetadataSchema.partial().shape,\n }),\n preview: array(record(string(), any())),\n});\n\nconst CreateDatasetFromFileSchema = CreateAssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema.extend({\n ...DatasetFromFileMetadataSchema.shape,\n }),\n preview: array(record(string(), any())),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst CreateDatasetFromSchemaSchema = CreateAssetSchema.extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n metadata: DatasetMetadataSchema,\n preview: array(record(string(), any())),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst updateDatasetSchema = DatasetSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n asset_type: literal(\"dataset\").default(\"dataset\"),\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n DatasetSchema,\n CreateDatasetFromFileSchema,\n CreateDatasetFromSchemaSchema,\n updateDatasetSchema,\n RefKindSchema,\n DatasetRefsSchema,\n DatasetEnumColumnsSchema,\n EnrichedDatasetSchemaFieldSchema,\n ResolvedRefSchema,\n ResolvedRefsSchema,\n};\nexport type Dataset = z.infer<typeof DatasetSchema>;\nexport type CreateFromFileDataset = z.infer<typeof CreateDatasetFromFileSchema>;\nexport type CreateFromSchemaDataset = z.infer<typeof CreateDatasetFromSchemaSchema>;\nexport type UpdateDataset = z.infer<typeof updateDatasetSchema>;\nexport type RefKind = z.infer<typeof RefKindSchema>;\nexport type DatasetRefs = z.infer<typeof DatasetRefsSchema>;\nexport type DatasetEnumColumns = z.infer<typeof DatasetEnumColumnsSchema>;\nexport type EnrichedDatasetSchemaField = z.infer<\n typeof EnrichedDatasetSchemaFieldSchema\n>;\nexport type ResolvedRef = z.infer<typeof ResolvedRefSchema>;\nexport type ResolvedRefs = z.infer<typeof ResolvedRefsSchema>;\n"]}
@@ -0,0 +1,7 @@
1
+ import {marked}from'marked';function o(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,t){return `<span data-latex="${o(e)}" data-display-mode="${t}"></span>`}var p={name:"katexBlock",level:"block",start(e){let t=e.match(/\\\[/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\]/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\[([\s\S]*?)\\\]/.exec(e);if(n)return {type:"katexBlock",raw:n[0],latex:n[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let t=e.match(/\\\(/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\)/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\(([\s\S]*?)\\\)/.exec(e);if(n)return {type:"katexInline",raw:n[0],latex:n[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},k={name:"assetComponent",level:"block",start(e){var t;return (t=e.match(/^```assetComponent/))==null?void 0:t.index},end(e){var t;return (t=e.match(/^```/))==null?void 0:t.index},tokenizer(e,t){let n=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(n)return {type:"assetComponent",raw:n[0],properties:n[1],tokens:[]}},renderer(e){let t;try{t=JSON.parse(e.properties);}catch(n){console.error("Invalid JSON in assetComponent properties:",n),t={};}return `
2
+ <asset-component ${Object.entries(t).map(([n,s])=>{let i=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${n}="${i}"`}).join(" ")}></asset-component>`}},y={name:"userMention",level:"inline",start(e){let t=e.match(/`\{@|(?<![`])\{@/);return t?t.index:void 0},end(e){var t,r,n;return (n=(t=e.match(/\}`/))==null?void 0:t.index)!=null?n:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,t){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let n=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(n)return {type:"userMention",raw:n[0],username:n[1]}},renderer(e){let t=o(e.username);return `<user-mention username="${t}" data-label="${t}"></user-mention>`}},f="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",h=new RegExp(`^\\[(post|dataset|file|service|route|quest|asset|action):(${f})\\](?!\\()`,"i"),x={name:"assetWikiLink",level:"inline",start(e){let t=e.match(/\[(?:post|dataset|file|service|route|quest|asset|action):/i);return t?t.index:void 0},tokenizer(e){let t=h.exec(e);if(!t)return;let r=`${t[1].toLowerCase()}:${t[2]}`;return {type:"assetWikiLink",raw:t[0],href:r}},renderer(e){let t=o(e.href);return `<a href="${t}">${t}</a>`}};marked.use({gfm:true,extensions:[k,y,x,p,m],renderer:{list(e){var t;return !e.ordered&&((t=e.items)==null?void 0:t.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
+ ${e.items.map(n=>{let s=n.tokens.filter(u=>u.type!=="checkbox"),a=this.parser.parse(s,!!n.loose);n.loose||(a=`<p>${a}</p>`);let i=n.checked?"true":"false",d=n.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${i}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
+ `)}
5
+ </ul>
6
+ `:false}}});function $(e){return marked.parse(e)}export{$ as a};//# sourceMappingURL=chunk-Q4IXX6KS.js.map
7
+ //# sourceMappingURL=chunk-Q4IXX6KS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","UUID_RE","ASSET_WIKI_LINK_TOKEN","assetWikiLinkExtension","href","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"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","file":"chunk-Q4IXX6KS.js","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\n/** UUID-shaped ids (v4 and v7) used in typed asset shorthands. */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/**\n * Collapsed `[dataset:<uuid>]` form. `(?!\\\\()` leaves `[label](dataset:<uuid>)`\n * to the built-in markdown link tokenizer.\n */\nconst ASSET_WIKI_LINK_TOKEN = new RegExp(\n `^\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"i\"\n);\n\nconst assetWikiLinkExtension = {\n name: \"assetWikiLink\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(\n /\\[(?:post|dataset|file|service|route|quest|asset|action):/i\n );\n return m ? m.index : undefined;\n },\n tokenizer(src: string) {\n const match = ASSET_WIKI_LINK_TOKEN.exec(src);\n if (!match) return;\n const href = `${match[1].toLowerCase()}:${match[2]}`;\n return {\n type: \"assetWikiLink\",\n raw: match[0],\n href,\n };\n },\n renderer(token: any) {\n const href = escapeHtmlAttr(token.href);\n return `<a href=\"${href}\">${href}</a>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n assetWikiLinkExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkRRDGLT3N_cjs=require('./chunk-RRDGLT3N.cjs'),chunkBELCP7OL_cjs=require('./chunk-BELCP7OL.cjs'),chunkL6SVUDFH_cjs=require('./chunk-L6SVUDFH.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),chunk7HF5VHUN_cjs=require('./chunk-7HF5VHUN.cjs'),zod=require('zod'),uuidv7=require('uuidv7');var C=a=>a.org_id===chunk7HF5VHUN_cjs.b&&a.visibility==="organization"?{...a,visibility:"public"}:a,v=zod.object({source:zod.optional(zod.nullable(zod.string())),reply_to_comment_id:zod.optional(zod.nullable(zod.string()))}),O=zod.enum(["IsSupplementTo","IsDerivedFrom","References","IsVariantFormOf","IsIdenticalTo"]),D=zod.object({doi:zod.optional(zod.nullable(zod.string())),title:zod.optional(zod.nullable(zod.string())),authors:zod.optional(zod.nullable(zod.array(zod.string()))),year:zod.optional(zod.nullable(zod.number())),venue:zod.optional(zod.nullable(zod.string())),url:zod.optional(zod.nullable(zod.string())),bibtex:zod.optional(zod.nullable(zod.string())),source:zod.optional(zod.nullable(zod.string()))}),d=zod.object({originality:zod.optional(zod.enum(["original","derivative","third-party"])).default("original"),external_url:zod.optional(zod.nullable(zod.string())),github_url:zod.optional(zod.nullable(zod.string())),paper_url:zod.optional(zod.nullable(zod.string())),doi_url:zod.optional(zod.nullable(zod.string())),citation:zod.optional(zod.nullable(D)),relation_type:zod.optional(zod.nullable(O)),doi:zod.optional(zod.nullable(zod.string()))}),T=zod.object({id:zod.uuid(),user_id:zod.uuid(),user:zod.optional(chunkL6SVUDFH_cjs.b.partial()),org_id:zod.uuid(),organization:zod.optional(chunkBELCP7OL_cjs.c.partial()),team_id:zod.uuid(),team:zod.optional(chunkRRDGLT3N_cjs.a.partial()),parent_id:zod.optional(zod.nullable(zod.uuid())),parent:zod.optional(zod.record(zod.string(),zod.any())),license_id:zod.string(),license:zod.optional(zod.record(zod.string(),zod.any())),asset_type:chunkYFEGRZXL_cjs.a,name:zod.string(),name_url_slug:zod.optional(zod.nullable(zod.string())),slug:zod.optional(zod.nullable(zod.string())),description:zod.optional(zod.nullable(zod.object({json:zod.record(zod.string(),zod.any()),text:zod.string()}))),visibility:chunkYFEGRZXL_cjs.b,monetization:chunkYFEGRZXL_cjs.d,price:zod.optional(zod.nullable(zod.number())),unit_cost:zod.optional(zod.nullable(zod.number())),cost_accounting:zod.optional(zod.nullable(zod.enum(["fixed","variable"]))),cost_unit:zod.optional(zod.nullable(zod.string())),price_currency:zod.optional(chunkYFEGRZXL_cjs.e),stripe_product_id:zod.optional(zod.nullable(zod.string())),stripe_price_id:zod.optional(zod.nullable(zod.string())),stripe_meter_id:zod.optional(zod.nullable(zod.string())),metadata:zod.optional(zod.nullable(v)),attribution:d,preview:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),state:chunkYFEGRZXL_cjs.j,source:chunkYFEGRZXL_cjs.k,is_pinned_in_team:zod.optional(zod.boolean().default(false)),created_at:zod.string(),last_updated:zod.string()}),R={originality:"original"},G=T.partial().omit({user_id:true,user:true,organization:true,license:true,team:true,slug:true,is_pinned_in_team:true}).extend({id:zod.uuid().default(()=>uuidv7.uuidv7()),team_id:zod.nullable(zod.uuid()).default(chunk7HF5VHUN_cjs.c),org_id:zod.nullable(zod.uuid()).default(chunk7HF5VHUN_cjs.b),name:zod.string().min(1,{message:"Name cannot be empty"}).max(255,{message:"Name must be less than 255 characters"}),name_url_slug:zod.optional(zod.nullable(zod.string())),state:chunkYFEGRZXL_cjs.j.optional().default("success"),source:chunkYFEGRZXL_cjs.k.default("web"),visibility:chunkYFEGRZXL_cjs.b.optional().default("public"),attribution:zod.optional(zod.nullable(d)).transform(a=>d.parse(a!=null?a:R)),created_at:zod.string().default(()=>new Date().toISOString()),last_updated:zod.string().default(()=>new Date().toISOString())}),N=T.partial().omit({id:true,user_id:true,created_at:true,user:true,organization:true,team:true,slug:true,is_pinned_in_team:true}).transform(a=>C(a));exports.a=C;exports.b=v;exports.c=O;exports.d=D;exports.e=d;exports.f=T;exports.g=R;exports.h=G;exports.i=N;//# sourceMappingURL=chunk-7R5EIIIR.cjs.map
2
- //# sourceMappingURL=chunk-7R5EIIIR.cjs.map
1
+ 'use strict';var chunk3JPOAQ2M_cjs=require('./chunk-3JPOAQ2M.cjs'),chunkKU5AWMS5_cjs=require('./chunk-KU5AWMS5.cjs'),chunkYTCAK2AH_cjs=require('./chunk-YTCAK2AH.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),chunk7HF5VHUN_cjs=require('./chunk-7HF5VHUN.cjs'),zod=require('zod'),uuidv7=require('uuidv7');var C=a=>a.org_id===chunk7HF5VHUN_cjs.b&&a.visibility==="organization"?{...a,visibility:"public"}:a,v=zod.object({source:zod.optional(zod.nullable(zod.string())),reply_to_comment_id:zod.optional(zod.nullable(zod.string()))}),O=zod.enum(["IsSupplementTo","IsDerivedFrom","References","IsVariantFormOf","IsIdenticalTo"]),D=zod.object({doi:zod.optional(zod.nullable(zod.string())),title:zod.optional(zod.nullable(zod.string())),authors:zod.optional(zod.nullable(zod.array(zod.string()))),year:zod.optional(zod.nullable(zod.number())),venue:zod.optional(zod.nullable(zod.string())),url:zod.optional(zod.nullable(zod.string())),bibtex:zod.optional(zod.nullable(zod.string())),source:zod.optional(zod.nullable(zod.string()))}),d=zod.object({originality:zod.optional(zod.enum(["original","derivative","third-party"])).default("original"),external_url:zod.optional(zod.nullable(zod.string())),github_url:zod.optional(zod.nullable(zod.string())),paper_url:zod.optional(zod.nullable(zod.string())),doi_url:zod.optional(zod.nullable(zod.string())),citation:zod.optional(zod.nullable(D)),relation_type:zod.optional(zod.nullable(O)),doi:zod.optional(zod.nullable(zod.string()))}),T=zod.object({id:zod.uuid(),user_id:zod.uuid(),user:zod.optional(chunkYTCAK2AH_cjs.b.partial()),org_id:zod.uuid(),organization:zod.optional(chunkKU5AWMS5_cjs.c.partial()),team_id:zod.uuid(),team:zod.optional(chunk3JPOAQ2M_cjs.a.partial()),parent_id:zod.optional(zod.nullable(zod.uuid())),parent:zod.optional(zod.record(zod.string(),zod.any())),license_id:zod.string(),license:zod.optional(zod.record(zod.string(),zod.any())),asset_type:chunkYFEGRZXL_cjs.a,name:zod.string(),name_url_slug:zod.optional(zod.nullable(zod.string())),slug:zod.optional(zod.nullable(zod.string())),description:zod.optional(zod.nullable(zod.object({json:zod.record(zod.string(),zod.any()),text:zod.string()}))),visibility:chunkYFEGRZXL_cjs.b,monetization:chunkYFEGRZXL_cjs.d,price:zod.optional(zod.nullable(zod.number())),unit_cost:zod.optional(zod.nullable(zod.number())),cost_accounting:zod.optional(zod.nullable(zod.enum(["fixed","variable"]))),cost_unit:zod.optional(zod.nullable(zod.string())),price_currency:zod.optional(chunkYFEGRZXL_cjs.e),stripe_product_id:zod.optional(zod.nullable(zod.string())),stripe_price_id:zod.optional(zod.nullable(zod.string())),stripe_meter_id:zod.optional(zod.nullable(zod.string())),metadata:zod.optional(zod.nullable(v)),attribution:d,preview:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),state:chunkYFEGRZXL_cjs.j,source:chunkYFEGRZXL_cjs.k,is_pinned_in_team:zod.optional(zod.boolean().default(false)),created_at:zod.string(),last_updated:zod.string()}),R={originality:"original"},G=T.partial().omit({user_id:true,user:true,organization:true,license:true,team:true,slug:true,is_pinned_in_team:true}).extend({id:zod.uuid().default(()=>uuidv7.uuidv7()),team_id:zod.nullable(zod.uuid()).default(chunk7HF5VHUN_cjs.c),org_id:zod.nullable(zod.uuid()).default(chunk7HF5VHUN_cjs.b),name:zod.string().min(1,{message:"Name cannot be empty"}).max(255,{message:"Name must be less than 255 characters"}),name_url_slug:zod.optional(zod.nullable(zod.string())),state:chunkYFEGRZXL_cjs.j.optional().default("success"),source:chunkYFEGRZXL_cjs.k.default("web"),visibility:chunkYFEGRZXL_cjs.b.optional().default("public"),attribution:zod.optional(zod.nullable(d)).transform(a=>d.parse(a!=null?a:R)),created_at:zod.string().default(()=>new Date().toISOString()),last_updated:zod.string().default(()=>new Date().toISOString())}),N=T.partial().omit({id:true,user_id:true,created_at:true,user:true,organization:true,team:true,slug:true,is_pinned_in_team:true}).transform(a=>C(a));exports.a=C;exports.b=v;exports.c=O;exports.d=D;exports.e=d;exports.f=T;exports.g=R;exports.h=G;exports.i=N;//# sourceMappingURL=chunk-RMMMRN4X.cjs.map
2
+ //# sourceMappingURL=chunk-RMMMRN4X.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","RelationTypeSchema","zodEnum","CitationSchema","array","number","AttributionSchema","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","PriceCurrencySchema","StatusSchema","SourceSchema","boolean","DEFAULT_ATTRIBUTION","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","value","UpdateAssetSchema"],"mappings":"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","file":"chunk-7R5EIIIR.cjs","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n enum as zodEnum,\n nullable,\n optional,\n boolean,\n record,\n type z,\n any\n} from \"zod\";\n\nimport {\n AssetTypeSchema,\n MonetizationSchema,\n PriceCurrencySchema,\n StatusSchema,\n SourceSchema,\n VisibilitySchema,\n} from \"./common\";\nimport { OrganizationsSchema } from \"./organizations\";\nimport { TeamSchema } from \"./teams\";\nimport { ProfileSchema } from \"./users\";\nimport { uuidv7 } from \"uuidv7\";\nimport { GLOBAL_ORG_ID, GLOBAL_TEAM_ID } from \"./constants\";\n\ntype AssetConfigInput = {\n org_id?: string | null;\n visibility?: z.infer<typeof VisibilitySchema> | null;\n};\n\nconst normalizeAssetConfigForParsing = <T extends AssetConfigInput>(\n input: T\n): T => {\n if (input.org_id === GLOBAL_ORG_ID && input.visibility === \"organization\") {\n return { ...input, visibility: \"public\" as T[\"visibility\"] };\n }\n return input;\n};\n\n/** Type-specific / incidental metadata only (not attribution). */\nconst AssetMetadataSchema = object({\n source: optional(nullable(string())),\n /** When present on a comment, the id of the comment the user directly replied to (for reply-to-reply; parent_id is the top-level comment). */\n reply_to_comment_id: optional(nullable(string())),\n})\n\nconst RelationTypeSchema = zodEnum([\n \"IsSupplementTo\",\n \"IsDerivedFrom\",\n \"References\",\n \"IsVariantFormOf\",\n \"IsIdenticalTo\",\n])\n\nconst CitationSchema = object({\n doi: optional(nullable(string())),\n title: optional(nullable(string())),\n authors: optional(nullable(array(string()))),\n year: optional(nullable(number())),\n venue: optional(nullable(string())),\n url: optional(nullable(string())),\n bibtex: optional(nullable(string())),\n source: optional(nullable(string())),\n})\n\n/** Provenance, related-work citation, and (later) this asset's minted DOI. */\nconst AttributionSchema = object({\n originality: optional(\n zodEnum([\"original\", \"derivative\", \"third-party\"])\n ).default(\"original\"),\n external_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n doi_url: optional(nullable(string())),\n citation: optional(nullable(CitationSchema)),\n relation_type: optional(nullable(RelationTypeSchema)),\n /** This asset's DOI — reserved for minting; never the related paper's DOI. */\n doi: optional(nullable(string())),\n})\n\nconst AssetSchema = object({\n id: uuid(),\n user_id: uuid(),\n user: optional(ProfileSchema.partial()),\n org_id: uuid(),\n organization: optional(OrganizationsSchema.partial()),\n team_id: uuid(),\n team: optional(TeamSchema.partial()),\n parent_id: optional(nullable(uuid())),\n parent: optional(record(string(), any())),\n license_id: string(),\n license: optional(record(string(), any())),\n asset_type: AssetTypeSchema,\n name: string(),\n name_url_slug: optional(nullable(string())),\n slug: optional(nullable(string())),\n // Rich description: store both editor json and plain text\n description: optional(\n nullable(\n object({\n json: record(string(), any()),\n text: string(),\n })\n )\n ),\n visibility: VisibilitySchema,\n monetization: MonetizationSchema,\n price: optional(nullable(number())),\n unit_cost: optional(nullable(number())),\n cost_accounting: optional(nullable(zodEnum([\"fixed\", \"variable\"]))),\n cost_unit: optional(nullable(string())),\n price_currency: optional(PriceCurrencySchema),\n stripe_product_id: optional(nullable(string())),\n stripe_price_id: optional(nullable(string())),\n stripe_meter_id: optional(nullable(string())),\n metadata: optional(nullable(AssetMetadataSchema)),\n // NOT NULL in DB; always present after 20260720_assets_attribution.\n attribution: AttributionSchema,\n preview: optional(nullable(array(record(string(), any())))),\n state: StatusSchema,\n source: SourceSchema,\n is_pinned_in_team: optional(boolean().default(false)),\n created_at: string(),\n last_updated: string(),\n});\n\nconst DEFAULT_ATTRIBUTION = { originality: \"original\" as const };\n\nconst CreateAssetSchema = AssetSchema.partial()\n .omit({\n user_id: true,\n user: true,\n organization: true,\n license: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n id: uuid().default(() => uuidv7()),\n team_id: nullable(uuid())\n .default(GLOBAL_TEAM_ID),\n org_id: nullable(uuid())\n .default(GLOBAL_ORG_ID),\n name: string()\n .min(1, { message: \"Name cannot be empty\" })\n .max(255, { message: \"Name must be less than 255 characters\" }),\n name_url_slug: optional(nullable(string())),\n state: StatusSchema.optional().default(\"success\"),\n source: SourceSchema.default(\"web\"),\n visibility: VisibilitySchema.optional().default(\"public\"),\n // Column is NOT NULL; coerce omitted/null so create_asset_with_content\n // never inserts an explicit null (which bypasses the DB default).\n attribution: optional(nullable(AttributionSchema)).transform((value) =>\n AttributionSchema.parse(value ?? DEFAULT_ATTRIBUTION)\n ),\n created_at: string().default(() => new Date().toISOString()),\n last_updated: string().default(() => new Date().toISOString()),\n });\n\nconst UpdateAssetSchema = AssetSchema.partial().omit({\n id: true,\n user_id: true,\n created_at: true,\n user: true,\n organization: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n AssetMetadataSchema,\n AttributionSchema,\n CitationSchema,\n RelationTypeSchema,\n AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n DEFAULT_ATTRIBUTION,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Attribution = z.infer<typeof AttributionSchema>;\nexport type Citation = z.infer<typeof CitationSchema>;\nexport type RelationType = z.infer<typeof RelationTypeSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
1
+ {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","RelationTypeSchema","zodEnum","CitationSchema","array","number","AttributionSchema","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","PriceCurrencySchema","StatusSchema","SourceSchema","boolean","DEFAULT_ATTRIBUTION","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","value","UpdateAssetSchema"],"mappings":"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","file":"chunk-RMMMRN4X.cjs","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n enum as zodEnum,\n nullable,\n optional,\n boolean,\n record,\n type z,\n any\n} from \"zod\";\n\nimport {\n AssetTypeSchema,\n MonetizationSchema,\n PriceCurrencySchema,\n StatusSchema,\n SourceSchema,\n VisibilitySchema,\n} from \"./common\";\nimport { OrganizationsSchema } from \"./organizations\";\nimport { TeamSchema } from \"./teams\";\nimport { ProfileSchema } from \"./users\";\nimport { uuidv7 } from \"uuidv7\";\nimport { GLOBAL_ORG_ID, GLOBAL_TEAM_ID } from \"./constants\";\n\ntype AssetConfigInput = {\n org_id?: string | null;\n visibility?: z.infer<typeof VisibilitySchema> | null;\n};\n\nconst normalizeAssetConfigForParsing = <T extends AssetConfigInput>(\n input: T\n): T => {\n if (input.org_id === GLOBAL_ORG_ID && input.visibility === \"organization\") {\n return { ...input, visibility: \"public\" as T[\"visibility\"] };\n }\n return input;\n};\n\n/** Type-specific / incidental metadata only (not attribution). */\nconst AssetMetadataSchema = object({\n source: optional(nullable(string())),\n /** When present on a comment, the id of the comment the user directly replied to (for reply-to-reply; parent_id is the top-level comment). */\n reply_to_comment_id: optional(nullable(string())),\n})\n\nconst RelationTypeSchema = zodEnum([\n \"IsSupplementTo\",\n \"IsDerivedFrom\",\n \"References\",\n \"IsVariantFormOf\",\n \"IsIdenticalTo\",\n])\n\nconst CitationSchema = object({\n doi: optional(nullable(string())),\n title: optional(nullable(string())),\n authors: optional(nullable(array(string()))),\n year: optional(nullable(number())),\n venue: optional(nullable(string())),\n url: optional(nullable(string())),\n bibtex: optional(nullable(string())),\n source: optional(nullable(string())),\n})\n\n/** Provenance, related-work citation, and (later) this asset's minted DOI. */\nconst AttributionSchema = object({\n originality: optional(\n zodEnum([\"original\", \"derivative\", \"third-party\"])\n ).default(\"original\"),\n external_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n doi_url: optional(nullable(string())),\n citation: optional(nullable(CitationSchema)),\n relation_type: optional(nullable(RelationTypeSchema)),\n /** This asset's DOI — reserved for minting; never the related paper's DOI. */\n doi: optional(nullable(string())),\n})\n\nconst AssetSchema = object({\n id: uuid(),\n user_id: uuid(),\n user: optional(ProfileSchema.partial()),\n org_id: uuid(),\n organization: optional(OrganizationsSchema.partial()),\n team_id: uuid(),\n team: optional(TeamSchema.partial()),\n parent_id: optional(nullable(uuid())),\n parent: optional(record(string(), any())),\n license_id: string(),\n license: optional(record(string(), any())),\n asset_type: AssetTypeSchema,\n name: string(),\n name_url_slug: optional(nullable(string())),\n slug: optional(nullable(string())),\n // Rich description: store both editor json and plain text\n description: optional(\n nullable(\n object({\n json: record(string(), any()),\n text: string(),\n })\n )\n ),\n visibility: VisibilitySchema,\n monetization: MonetizationSchema,\n price: optional(nullable(number())),\n unit_cost: optional(nullable(number())),\n cost_accounting: optional(nullable(zodEnum([\"fixed\", \"variable\"]))),\n cost_unit: optional(nullable(string())),\n price_currency: optional(PriceCurrencySchema),\n stripe_product_id: optional(nullable(string())),\n stripe_price_id: optional(nullable(string())),\n stripe_meter_id: optional(nullable(string())),\n metadata: optional(nullable(AssetMetadataSchema)),\n // NOT NULL in DB; always present after 20260720_assets_attribution.\n attribution: AttributionSchema,\n preview: optional(nullable(array(record(string(), any())))),\n state: StatusSchema,\n source: SourceSchema,\n is_pinned_in_team: optional(boolean().default(false)),\n created_at: string(),\n last_updated: string(),\n});\n\nconst DEFAULT_ATTRIBUTION = { originality: \"original\" as const };\n\nconst CreateAssetSchema = AssetSchema.partial()\n .omit({\n user_id: true,\n user: true,\n organization: true,\n license: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n id: uuid().default(() => uuidv7()),\n team_id: nullable(uuid())\n .default(GLOBAL_TEAM_ID),\n org_id: nullable(uuid())\n .default(GLOBAL_ORG_ID),\n name: string()\n .min(1, { message: \"Name cannot be empty\" })\n .max(255, { message: \"Name must be less than 255 characters\" }),\n name_url_slug: optional(nullable(string())),\n state: StatusSchema.optional().default(\"success\"),\n source: SourceSchema.default(\"web\"),\n visibility: VisibilitySchema.optional().default(\"public\"),\n // Column is NOT NULL; coerce omitted/null so create_asset_with_content\n // never inserts an explicit null (which bypasses the DB default).\n attribution: optional(nullable(AttributionSchema)).transform((value) =>\n AttributionSchema.parse(value ?? DEFAULT_ATTRIBUTION)\n ),\n created_at: string().default(() => new Date().toISOString()),\n last_updated: string().default(() => new Date().toISOString()),\n });\n\nconst UpdateAssetSchema = AssetSchema.partial().omit({\n id: true,\n user_id: true,\n created_at: true,\n user: true,\n organization: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n AssetMetadataSchema,\n AttributionSchema,\n CitationSchema,\n RelationTypeSchema,\n AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n DEFAULT_ATTRIBUTION,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Attribution = z.infer<typeof AttributionSchema>;\nexport type Citation = z.infer<typeof CitationSchema>;\nexport type RelationType = z.infer<typeof RelationTypeSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$2}from'./chunk-OU4JKY4M.js';import {b as b$1,f,h,a as a$1}from'./chunk-GX6RCMZR.js';import {b as b$2}from'./chunk-G6GCUGMM.js';import {a,l,j}from'./chunk-33C7IDRP.js';import {enum as _enum,object,optional,string,nullable,array,boolean,any,record,number,uuid}from'zod';var D=_enum(["Personal Access Token","Ouro","None","OAuth 2.0"]),I=object({authentication:D,base_url:string(),version:optional(nullable(string())),spec_path:optional(nullable(string())),spec_url:optional(nullable(string())),auth_url:optional(nullable(string()))}),g=I.extend(b$1.partial().shape),M=f.extend({asset_type:a.refine(u=>u==="service"),metadata:g}),G=h.extend({asset_type:a.refine(u=>u==="service"),metadata:g}).transform(u=>a$1(u)),J=M.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({last_updated:string().default(()=>new Date().toISOString())}).transform(u=>a$1(u)),z=_enum(["sync","async"]),m=_enum(["file","dataset","post"]),b=_enum(a$2),O=object({asset_type:m,primary:optional(boolean()),input_filter:optional(nullable(b)),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),k=object({asset_type:m,primary:optional(boolean()),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),T=record(string(),O),E=record(string(),k),C=object({id:string(),user_id:string(),service_id:string(),path:string(),method:l,summary:optional(nullable(string())),parameters:optional(nullable(array(record(string(),any())))),request_body:optional(nullable(record(string(),any()))),responses:optional(nullable(array(record(string(),any())))),input_assets:optional(nullable(T)),input_type:optional(nullable(m)),input_filter:optional(nullable(b)),input_file_extension:optional(nullable(string())),input_file_extensions:optional(nullable(array(string()))),output_assets:optional(nullable(E)),output_type:optional(nullable(m)),output_file_extension:optional(nullable(string())),security:optional(nullable(record(string(),any()))),rate_limit:optional(nullable(number())),execution_mode:optional(z).default("sync"),observed_execution_mode:optional(nullable(z)),last_updated:string()}),F=object({avg_ack_ms:optional(nullable(number())),p95_ack_ms:optional(nullable(number())),avg_completion_ms:optional(nullable(number())),p95_completion_ms:optional(nullable(number())),latency_sample_count:optional(nullable(number()))}),K=f.extend({asset_type:a.refine(u=>u==="route"),route:C,metrics:optional(nullable(F))}),w=object({id:uuid(),user_id:uuid(),route_id:uuid(),metadata:optional(nullable(record(string(),any()))),response:optional(nullable(record(string(),any()))),side_effects:boolean().default(true),input_asset_id:optional(nullable(uuid())),output_asset_id:optional(nullable(uuid())),input_asset:optional(nullable(f)),input_assets:optional(nullable(array(record(string(),any())))),output_asset:optional(nullable(f)),output_assets:optional(nullable(array(record(string(),any())))),webhook_url:optional(nullable(string())),webhook_token:optional(nullable(string())),status:j,created_at:string(),last_updated:string(),started_at:optional(nullable(string())),ack_at:optional(nullable(string())),upstream_status_code:optional(nullable(number())),finished_at:optional(nullable(string()))}),v=object({name:string(),asset_id:optional(nullable(uuid())),asset_type:optional(a),is_primary:optional(boolean()),asset:optional(nullable(f.partial()))}),P=f.partial().extend({route:optional(nullable(object({output_type:optional(nullable(a)),output_assets:optional(nullable(any())),output_file_extension:optional(nullable(string())),input_assets:optional(nullable(any()))})))}),q=object({id:uuid(),total_cents:optional(nullable(number())),unit_cost_cents:optional(nullable(number())),quantity:optional(nullable(number())),cost_unit:optional(nullable(string())),status:optional(nullable(string())),stripe_invoice_id:optional(nullable(string())),created_at:optional(string())}),B=object({id:uuid(),type:optional(nullable(string())),value:optional(nullable(number())),status:optional(nullable(string())),metadata:optional(nullable(record(string(),any()))),created_at:optional(string())}),Q=w.extend({user:optional(nullable(b$2.partial())),route:optional(nullable(P)),input_assets:optional(nullable(array(v))),output_assets:optional(nullable(array(v))),usage_record:optional(nullable(q)),btc_charges:optional(nullable(array(B)))});export{M as a,G as b,J as c,z as d,O as e,k as f,T as g,E as h,F as i,K as j,w as k,v as l,P as m,Q as n};//# sourceMappingURL=chunk-3UE4H5TR.js.map
2
- //# sourceMappingURL=chunk-3UE4H5TR.js.map
1
+ import {a as a$2}from'./chunk-OU4JKY4M.js';import {b as b$1,f,h,a as a$1}from'./chunk-PGCNGDPK.js';import {b as b$2}from'./chunk-CDJH4OT5.js';import {a,l,j}from'./chunk-33C7IDRP.js';import {enum as _enum,object,optional,string,nullable,array,boolean,any,record,number,uuid}from'zod';var D=_enum(["Personal Access Token","Ouro","None","OAuth 2.0"]),I=object({authentication:D,base_url:string(),version:optional(nullable(string())),spec_path:optional(nullable(string())),spec_url:optional(nullable(string())),auth_url:optional(nullable(string()))}),g=I.extend(b$1.partial().shape),M=f.extend({asset_type:a.refine(u=>u==="service"),metadata:g}),G=h.extend({asset_type:a.refine(u=>u==="service"),metadata:g}).transform(u=>a$1(u)),J=M.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({last_updated:string().default(()=>new Date().toISOString())}).transform(u=>a$1(u)),z=_enum(["sync","async"]),m=_enum(["file","dataset","post"]),b=_enum(a$2),O=object({asset_type:m,primary:optional(boolean()),input_filter:optional(nullable(b)),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),k=object({asset_type:m,primary:optional(boolean()),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),T=record(string(),O),E=record(string(),k),C=object({id:string(),user_id:string(),service_id:string(),path:string(),method:l,summary:optional(nullable(string())),parameters:optional(nullable(array(record(string(),any())))),request_body:optional(nullable(record(string(),any()))),responses:optional(nullable(array(record(string(),any())))),input_assets:optional(nullable(T)),input_type:optional(nullable(m)),input_filter:optional(nullable(b)),input_file_extension:optional(nullable(string())),input_file_extensions:optional(nullable(array(string()))),output_assets:optional(nullable(E)),output_type:optional(nullable(m)),output_file_extension:optional(nullable(string())),security:optional(nullable(record(string(),any()))),rate_limit:optional(nullable(number())),execution_mode:optional(z).default("sync"),observed_execution_mode:optional(nullable(z)),last_updated:string()}),F=object({avg_ack_ms:optional(nullable(number())),p95_ack_ms:optional(nullable(number())),avg_completion_ms:optional(nullable(number())),p95_completion_ms:optional(nullable(number())),latency_sample_count:optional(nullable(number()))}),K=f.extend({asset_type:a.refine(u=>u==="route"),route:C,metrics:optional(nullable(F))}),w=object({id:uuid(),user_id:uuid(),route_id:uuid(),metadata:optional(nullable(record(string(),any()))),response:optional(nullable(record(string(),any()))),side_effects:boolean().default(true),input_asset_id:optional(nullable(uuid())),output_asset_id:optional(nullable(uuid())),input_asset:optional(nullable(f)),input_assets:optional(nullable(array(record(string(),any())))),output_asset:optional(nullable(f)),output_assets:optional(nullable(array(record(string(),any())))),webhook_url:optional(nullable(string())),webhook_token:optional(nullable(string())),status:j,created_at:string(),last_updated:string(),started_at:optional(nullable(string())),ack_at:optional(nullable(string())),upstream_status_code:optional(nullable(number())),finished_at:optional(nullable(string()))}),v=object({name:string(),asset_id:optional(nullable(uuid())),asset_type:optional(a),is_primary:optional(boolean()),asset:optional(nullable(f.partial()))}),P=f.partial().extend({route:optional(nullable(object({output_type:optional(nullable(a)),output_assets:optional(nullable(any())),output_file_extension:optional(nullable(string())),input_assets:optional(nullable(any()))})))}),q=object({id:uuid(),total_cents:optional(nullable(number())),unit_cost_cents:optional(nullable(number())),quantity:optional(nullable(number())),cost_unit:optional(nullable(string())),status:optional(nullable(string())),stripe_invoice_id:optional(nullable(string())),created_at:optional(string())}),B=object({id:uuid(),type:optional(nullable(string())),value:optional(nullable(number())),status:optional(nullable(string())),metadata:optional(nullable(record(string(),any()))),created_at:optional(string())}),Q=w.extend({user:optional(nullable(b$2.partial())),route:optional(nullable(P)),input_assets:optional(nullable(array(v))),output_assets:optional(nullable(array(v))),usage_record:optional(nullable(q)),btc_charges:optional(nullable(array(B)))});export{M as a,G as b,J as c,z as d,O as e,k as f,T as g,E as h,F as i,K as j,w as k,v as l,P as m,Q as n};//# sourceMappingURL=chunk-RS5H4XDK.js.map
2
+ //# sourceMappingURL=chunk-RS5H4XDK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/services.ts"],"names":["AuthType","zodEnum","BaseServiceMetadataSchema","object","string","optional","nullable","ServiceMetadataSchema","AssetMetadataSchema","ServiceSchema","AssetSchema","AssetTypeSchema","x","CreateServiceSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","UpdateServiceSchema","ExecutionModeSchema","RouteAssetType","RouteInputFilter","FILE_FILTERS","RouteInputAssetDeclarationSchema","boolean","array","any","RouteOutputAssetDeclarationSchema","RouteInputAssetsSchema","record","RouteOutputAssetsSchema","RouteDetailSchema","HttpMethodSchema","number","RouteMetricsSchema","RouteSchema","ActionSchema","uuid","StatusSchema","ActionAssetRefSchema","ReadActionRouteSchema","ActionUsageRecordSchema","ActionBtcChargeSchema","ReadActionSchema","ProfileSchema"],"mappings":"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","file":"chunk-3UE4H5TR.js","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n type z,\n record,\n any,\n enum as zodEnum,\n optional,\n nullable,\n boolean\n} from \"zod\";\n\nimport { AssetTypeSchema, HttpMethodSchema, StatusSchema } from \"./common\";\nimport {\n AssetMetadataSchema,\n AssetSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { ProfileSchema } from \"./users\";\nimport { FILE_FILTERS } from \"../utils/files\";\n\nconst AuthType = zodEnum([\"Personal Access Token\", \"Ouro\", \"None\", \"OAuth 2.0\"]);\n\nconst BaseServiceMetadataSchema = object({\n authentication: AuthType,\n base_url: string(),\n version: optional(nullable(string())),\n spec_path: optional(nullable(string())),\n spec_url: optional(nullable(string())),\n auth_url: optional(nullable(string())),\n});\n\nconst ServiceMetadataSchema = BaseServiceMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst ServiceSchema = AssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"service\" === x),\n metadata: ServiceMetadataSchema,\n});\n\nconst CreateServiceSchema = CreateAssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"service\" === x),\n metadata: ServiceMetadataSchema,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateServiceSchema = ServiceSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nconst ExecutionModeSchema = zodEnum([\"sync\", \"async\"]);\n\n// Asset type accepted in keyed `input_assets` / `output_assets` declarations.\nconst RouteAssetType = zodEnum([\"file\", \"dataset\", \"post\"]);\n\n// File-type filter accepted on file-input declarations.\nconst RouteInputFilter = zodEnum(FILE_FILTERS);\n\n// Shape of a single keyed declaration in `routes.input_assets`. Plural\n// declarations are canonical; the legacy `input_type` and `input_file_*`\n// columns on the route row stay in sync as primary projections.\nconst RouteInputAssetDeclarationSchema = object({\n asset_type: RouteAssetType,\n primary: optional(boolean()),\n input_filter: optional(nullable(RouteInputFilter)),\n file_extensions: optional(nullable(array(string()))),\n contains_file_extensions: optional(nullable(array(string()))),\n}).catchall(any());\n\n// Shape of a single keyed declaration in `routes.output_assets`.\nconst RouteOutputAssetDeclarationSchema = object({\n asset_type: RouteAssetType,\n primary: optional(boolean()),\n file_extensions: optional(nullable(array(string()))),\n contains_file_extensions: optional(nullable(array(string()))),\n}).catchall(any());\n\nconst RouteInputAssetsSchema = record(\n string(),\n RouteInputAssetDeclarationSchema\n);\n\nconst RouteOutputAssetsSchema = record(\n string(),\n RouteOutputAssetDeclarationSchema\n);\n\nconst RouteDetailSchema = object({\n id: string(),\n user_id: string(),\n service_id: string(),\n path: string(),\n method: HttpMethodSchema,\n summary: optional(nullable(string())),\n parameters: optional(nullable(array(record(string(), any())))),\n request_body: optional(nullable(record(string(), any()))),\n responses: optional(nullable(array(record(string(), any())))),\n // Canonical plural input declarations keyed by request body field name.\n input_assets: optional(nullable(RouteInputAssetsSchema)),\n // Legacy primary projection — kept synchronized with `input_assets` for\n // older clients, indexing, and quick asset-type lookups.\n input_type: optional(nullable(RouteAssetType)),\n input_filter: optional(nullable(RouteInputFilter)),\n input_file_extension: optional(nullable(string())),\n input_file_extensions: optional(nullable(array(string()))),\n // Canonical plural output declarations keyed by response body field name.\n output_assets: optional(nullable(RouteOutputAssetsSchema)),\n // Legacy primary projection — kept synchronized with `output_assets`.\n output_type: optional(nullable(RouteAssetType)),\n output_file_extension: optional(nullable(string())),\n security: optional(nullable(record(string(), any()))),\n rate_limit: optional(nullable(number())),\n // Author-declared execution model: 'sync' = upstream returns the result\n // inline; 'async' = upstream returns 202 quickly and webhooks completion.\n execution_mode: optional(ExecutionModeSchema).default(\"sync\"),\n // Empirical mode derived by the platform from recent action history; null\n // until enough samples have been observed. When this differs from\n // execution_mode the route is misconfigured.\n observed_execution_mode: optional(nullable(ExecutionModeSchema)),\n last_updated: string(),\n});\n\n// Per-route latency aggregates surfaced from asset_metrics. All fields are\n// nullable because they don't exist until the platform has observed at least\n// one completed action for the route.\nconst RouteMetricsSchema = object({\n // Average HTTP-hop latency in milliseconds: time from request start until\n // upstream returned 200 or 202.\n avg_ack_ms: optional(nullable(number())),\n p95_ack_ms: optional(nullable(number())),\n // Average end-to-end latency in milliseconds: started_at to finished_at,\n // includes webhook completion for async routes. This is the value an\n // agent should consider when deciding whether to wait or poll.\n avg_completion_ms: optional(nullable(number())),\n p95_completion_ms: optional(nullable(number())),\n latency_sample_count: optional(nullable(number())),\n});\n\nconst RouteSchema = AssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"route\" === x),\n route: RouteDetailSchema,\n // Latency aggregates joined from asset_metrics; null when no samples yet.\n metrics: optional(nullable(RouteMetricsSchema)),\n});\n\nconst ActionSchema = object({\n id: uuid(),\n user_id: uuid(),\n route_id: uuid(),\n metadata: optional(nullable(record(string(), any()))),\n response: optional(nullable(record(string(), any()))),\n side_effects: boolean().default(true),\n input_asset_id: optional(nullable(uuid())),\n output_asset_id: optional(nullable(uuid())),\n input_asset: optional(nullable(AssetSchema)),\n input_assets: optional(nullable(array(record(string(), any())))),\n output_asset: optional(nullable(AssetSchema)),\n output_assets: optional(nullable(array(record(string(), any())))),\n webhook_url: optional(nullable(string())),\n webhook_token: optional(nullable(string())),\n status: StatusSchema,\n created_at: string(),\n last_updated: string(),\n started_at: optional(nullable(string())),\n // When the upstream service first responded (200 or 202). For sync routes\n // this is approximately equal to finished_at; for async routes the gap\n // between ack_at and finished_at is the out-of-band wait time.\n ack_at: optional(nullable(string())),\n // HTTP status code returned by the upstream service at ack time.\n upstream_status_code: optional(nullable(number())),\n finished_at: optional(nullable(string())),\n});\n\n/**\n * Row from `action_assets` after `prepareActionResponse` splits by direction.\n * Nested `asset` may briefly be null under RLS / replication lag.\n */\nconst ActionAssetRefSchema = object({\n name: string(),\n asset_id: optional(nullable(uuid())),\n asset_type: optional(AssetTypeSchema),\n is_primary: optional(boolean()),\n asset: optional(nullable(AssetSchema.partial())),\n});\n\n/** Joined route asset on action reads (not a full Route). */\nconst ReadActionRouteSchema = AssetSchema.partial().extend({\n route: optional(\n nullable(\n object({\n output_type: optional(nullable(AssetTypeSchema)),\n output_assets: optional(nullable(any())),\n output_file_extension: optional(nullable(string())),\n input_assets: optional(nullable(any())),\n })\n )\n ),\n});\n\nconst ActionUsageRecordSchema = object({\n id: uuid(),\n total_cents: optional(nullable(number())),\n unit_cost_cents: optional(nullable(number())),\n quantity: optional(nullable(number())),\n cost_unit: optional(nullable(string())),\n status: optional(nullable(string())),\n stripe_invoice_id: optional(nullable(string())),\n created_at: optional(string()),\n});\n\nconst ActionBtcChargeSchema = object({\n id: uuid(),\n type: optional(nullable(string())),\n value: optional(nullable(number())),\n status: optional(nullable(string())),\n metadata: optional(nullable(record(string(), any()))),\n created_at: optional(string()),\n});\n\n/** Action as returned from read APIs, with joins and split action_assets. */\nconst ReadActionSchema = ActionSchema.extend({\n user: optional(nullable(ProfileSchema.partial())),\n route: optional(nullable(ReadActionRouteSchema)),\n input_assets: optional(nullable(array(ActionAssetRefSchema))),\n output_assets: optional(nullable(array(ActionAssetRefSchema))),\n usage_record: optional(nullable(ActionUsageRecordSchema)),\n btc_charges: optional(nullable(array(ActionBtcChargeSchema))),\n});\n\nexport {\n RouteSchema,\n RouteInputAssetDeclarationSchema,\n RouteOutputAssetDeclarationSchema,\n RouteInputAssetsSchema,\n RouteOutputAssetsSchema,\n ServiceSchema,\n CreateServiceSchema,\n UpdateServiceSchema,\n ActionSchema,\n ActionAssetRefSchema,\n ReadActionRouteSchema,\n ReadActionSchema,\n RouteMetricsSchema,\n ExecutionModeSchema,\n};\nexport type Service = z.infer<typeof ServiceSchema>;\nexport type Route = z.infer<typeof RouteSchema>;\nexport type RouteDetail = z.infer<typeof RouteDetailSchema>;\nexport type RouteMetrics = z.infer<typeof RouteMetricsSchema>;\nexport type RouteInputAssetDeclaration = z.infer<typeof RouteInputAssetDeclarationSchema>;\nexport type RouteOutputAssetDeclaration = z.infer<typeof RouteOutputAssetDeclarationSchema>;\nexport type RouteInputAssets = z.infer<typeof RouteInputAssetsSchema>;\nexport type RouteOutputAssets = z.infer<typeof RouteOutputAssetsSchema>;\nexport type ExecutionMode = z.infer<typeof ExecutionModeSchema>;\nexport type AuthType = z.infer<typeof AuthType>;\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionAssetRef = z.infer<typeof ActionAssetRefSchema>;\nexport type ReadActionRoute = z.infer<typeof ReadActionRouteSchema>;\nexport type ReadAction = z.infer<typeof ReadActionSchema>;\n"]}
1
+ {"version":3,"sources":["../src/schema/services.ts"],"names":["AuthType","zodEnum","BaseServiceMetadataSchema","object","string","optional","nullable","ServiceMetadataSchema","AssetMetadataSchema","ServiceSchema","AssetSchema","AssetTypeSchema","x","CreateServiceSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","UpdateServiceSchema","ExecutionModeSchema","RouteAssetType","RouteInputFilter","FILE_FILTERS","RouteInputAssetDeclarationSchema","boolean","array","any","RouteOutputAssetDeclarationSchema","RouteInputAssetsSchema","record","RouteOutputAssetsSchema","RouteDetailSchema","HttpMethodSchema","number","RouteMetricsSchema","RouteSchema","ActionSchema","uuid","StatusSchema","ActionAssetRefSchema","ReadActionRouteSchema","ActionUsageRecordSchema","ActionBtcChargeSchema","ReadActionSchema","ProfileSchema"],"mappings":"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","file":"chunk-RS5H4XDK.js","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n array,\n type z,\n record,\n any,\n enum as zodEnum,\n optional,\n nullable,\n boolean\n} from \"zod\";\n\nimport { AssetTypeSchema, HttpMethodSchema, StatusSchema } from \"./common\";\nimport {\n AssetMetadataSchema,\n AssetSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { ProfileSchema } from \"./users\";\nimport { FILE_FILTERS } from \"../utils/files\";\n\nconst AuthType = zodEnum([\"Personal Access Token\", \"Ouro\", \"None\", \"OAuth 2.0\"]);\n\nconst BaseServiceMetadataSchema = object({\n authentication: AuthType,\n base_url: string(),\n version: optional(nullable(string())),\n spec_path: optional(nullable(string())),\n spec_url: optional(nullable(string())),\n auth_url: optional(nullable(string())),\n});\n\nconst ServiceMetadataSchema = BaseServiceMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst ServiceSchema = AssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"service\" === x),\n metadata: ServiceMetadataSchema,\n});\n\nconst CreateServiceSchema = CreateAssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"service\" === x),\n metadata: ServiceMetadataSchema,\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateServiceSchema = ServiceSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nconst ExecutionModeSchema = zodEnum([\"sync\", \"async\"]);\n\n// Asset type accepted in keyed `input_assets` / `output_assets` declarations.\nconst RouteAssetType = zodEnum([\"file\", \"dataset\", \"post\"]);\n\n// File-type filter accepted on file-input declarations.\nconst RouteInputFilter = zodEnum(FILE_FILTERS);\n\n// Shape of a single keyed declaration in `routes.input_assets`. Plural\n// declarations are canonical; the legacy `input_type` and `input_file_*`\n// columns on the route row stay in sync as primary projections.\nconst RouteInputAssetDeclarationSchema = object({\n asset_type: RouteAssetType,\n primary: optional(boolean()),\n input_filter: optional(nullable(RouteInputFilter)),\n file_extensions: optional(nullable(array(string()))),\n contains_file_extensions: optional(nullable(array(string()))),\n}).catchall(any());\n\n// Shape of a single keyed declaration in `routes.output_assets`.\nconst RouteOutputAssetDeclarationSchema = object({\n asset_type: RouteAssetType,\n primary: optional(boolean()),\n file_extensions: optional(nullable(array(string()))),\n contains_file_extensions: optional(nullable(array(string()))),\n}).catchall(any());\n\nconst RouteInputAssetsSchema = record(\n string(),\n RouteInputAssetDeclarationSchema\n);\n\nconst RouteOutputAssetsSchema = record(\n string(),\n RouteOutputAssetDeclarationSchema\n);\n\nconst RouteDetailSchema = object({\n id: string(),\n user_id: string(),\n service_id: string(),\n path: string(),\n method: HttpMethodSchema,\n summary: optional(nullable(string())),\n parameters: optional(nullable(array(record(string(), any())))),\n request_body: optional(nullable(record(string(), any()))),\n responses: optional(nullable(array(record(string(), any())))),\n // Canonical plural input declarations keyed by request body field name.\n input_assets: optional(nullable(RouteInputAssetsSchema)),\n // Legacy primary projection — kept synchronized with `input_assets` for\n // older clients, indexing, and quick asset-type lookups.\n input_type: optional(nullable(RouteAssetType)),\n input_filter: optional(nullable(RouteInputFilter)),\n input_file_extension: optional(nullable(string())),\n input_file_extensions: optional(nullable(array(string()))),\n // Canonical plural output declarations keyed by response body field name.\n output_assets: optional(nullable(RouteOutputAssetsSchema)),\n // Legacy primary projection — kept synchronized with `output_assets`.\n output_type: optional(nullable(RouteAssetType)),\n output_file_extension: optional(nullable(string())),\n security: optional(nullable(record(string(), any()))),\n rate_limit: optional(nullable(number())),\n // Author-declared execution model: 'sync' = upstream returns the result\n // inline; 'async' = upstream returns 202 quickly and webhooks completion.\n execution_mode: optional(ExecutionModeSchema).default(\"sync\"),\n // Empirical mode derived by the platform from recent action history; null\n // until enough samples have been observed. When this differs from\n // execution_mode the route is misconfigured.\n observed_execution_mode: optional(nullable(ExecutionModeSchema)),\n last_updated: string(),\n});\n\n// Per-route latency aggregates surfaced from asset_metrics. All fields are\n// nullable because they don't exist until the platform has observed at least\n// one completed action for the route.\nconst RouteMetricsSchema = object({\n // Average HTTP-hop latency in milliseconds: time from request start until\n // upstream returned 200 or 202.\n avg_ack_ms: optional(nullable(number())),\n p95_ack_ms: optional(nullable(number())),\n // Average end-to-end latency in milliseconds: started_at to finished_at,\n // includes webhook completion for async routes. This is the value an\n // agent should consider when deciding whether to wait or poll.\n avg_completion_ms: optional(nullable(number())),\n p95_completion_ms: optional(nullable(number())),\n latency_sample_count: optional(nullable(number())),\n});\n\nconst RouteSchema = AssetSchema.extend({\n asset_type: AssetTypeSchema.refine((x) => \"route\" === x),\n route: RouteDetailSchema,\n // Latency aggregates joined from asset_metrics; null when no samples yet.\n metrics: optional(nullable(RouteMetricsSchema)),\n});\n\nconst ActionSchema = object({\n id: uuid(),\n user_id: uuid(),\n route_id: uuid(),\n metadata: optional(nullable(record(string(), any()))),\n response: optional(nullable(record(string(), any()))),\n side_effects: boolean().default(true),\n input_asset_id: optional(nullable(uuid())),\n output_asset_id: optional(nullable(uuid())),\n input_asset: optional(nullable(AssetSchema)),\n input_assets: optional(nullable(array(record(string(), any())))),\n output_asset: optional(nullable(AssetSchema)),\n output_assets: optional(nullable(array(record(string(), any())))),\n webhook_url: optional(nullable(string())),\n webhook_token: optional(nullable(string())),\n status: StatusSchema,\n created_at: string(),\n last_updated: string(),\n started_at: optional(nullable(string())),\n // When the upstream service first responded (200 or 202). For sync routes\n // this is approximately equal to finished_at; for async routes the gap\n // between ack_at and finished_at is the out-of-band wait time.\n ack_at: optional(nullable(string())),\n // HTTP status code returned by the upstream service at ack time.\n upstream_status_code: optional(nullable(number())),\n finished_at: optional(nullable(string())),\n});\n\n/**\n * Row from `action_assets` after `prepareActionResponse` splits by direction.\n * Nested `asset` may briefly be null under RLS / replication lag.\n */\nconst ActionAssetRefSchema = object({\n name: string(),\n asset_id: optional(nullable(uuid())),\n asset_type: optional(AssetTypeSchema),\n is_primary: optional(boolean()),\n asset: optional(nullable(AssetSchema.partial())),\n});\n\n/** Joined route asset on action reads (not a full Route). */\nconst ReadActionRouteSchema = AssetSchema.partial().extend({\n route: optional(\n nullable(\n object({\n output_type: optional(nullable(AssetTypeSchema)),\n output_assets: optional(nullable(any())),\n output_file_extension: optional(nullable(string())),\n input_assets: optional(nullable(any())),\n })\n )\n ),\n});\n\nconst ActionUsageRecordSchema = object({\n id: uuid(),\n total_cents: optional(nullable(number())),\n unit_cost_cents: optional(nullable(number())),\n quantity: optional(nullable(number())),\n cost_unit: optional(nullable(string())),\n status: optional(nullable(string())),\n stripe_invoice_id: optional(nullable(string())),\n created_at: optional(string()),\n});\n\nconst ActionBtcChargeSchema = object({\n id: uuid(),\n type: optional(nullable(string())),\n value: optional(nullable(number())),\n status: optional(nullable(string())),\n metadata: optional(nullable(record(string(), any()))),\n created_at: optional(string()),\n});\n\n/** Action as returned from read APIs, with joins and split action_assets. */\nconst ReadActionSchema = ActionSchema.extend({\n user: optional(nullable(ProfileSchema.partial())),\n route: optional(nullable(ReadActionRouteSchema)),\n input_assets: optional(nullable(array(ActionAssetRefSchema))),\n output_assets: optional(nullable(array(ActionAssetRefSchema))),\n usage_record: optional(nullable(ActionUsageRecordSchema)),\n btc_charges: optional(nullable(array(ActionBtcChargeSchema))),\n});\n\nexport {\n RouteSchema,\n RouteInputAssetDeclarationSchema,\n RouteOutputAssetDeclarationSchema,\n RouteInputAssetsSchema,\n RouteOutputAssetsSchema,\n ServiceSchema,\n CreateServiceSchema,\n UpdateServiceSchema,\n ActionSchema,\n ActionAssetRefSchema,\n ReadActionRouteSchema,\n ReadActionSchema,\n RouteMetricsSchema,\n ExecutionModeSchema,\n};\nexport type Service = z.infer<typeof ServiceSchema>;\nexport type Route = z.infer<typeof RouteSchema>;\nexport type RouteDetail = z.infer<typeof RouteDetailSchema>;\nexport type RouteMetrics = z.infer<typeof RouteMetricsSchema>;\nexport type RouteInputAssetDeclaration = z.infer<typeof RouteInputAssetDeclarationSchema>;\nexport type RouteOutputAssetDeclaration = z.infer<typeof RouteOutputAssetDeclarationSchema>;\nexport type RouteInputAssets = z.infer<typeof RouteInputAssetsSchema>;\nexport type RouteOutputAssets = z.infer<typeof RouteOutputAssetsSchema>;\nexport type ExecutionMode = z.infer<typeof ExecutionModeSchema>;\nexport type AuthType = z.infer<typeof AuthType>;\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionAssetRef = z.infer<typeof ActionAssetRefSchema>;\nexport type ReadActionRoute = z.infer<typeof ReadActionRouteSchema>;\nexport type ReadAction = z.infer<typeof ReadActionSchema>;\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkM2ZH6MMH_cjs=require('./chunk-M2ZH6MMH.cjs'),chunk7R5EIIIR_cjs=require('./chunk-7R5EIIIR.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),zod=require('zod');var w=zod.enum(["closable","continuous"]),E=zod.enum(["draft","open","closed","cancelled"]),l=zod.enum(["pending","in_progress","done","skipped"]),I=zod.enum(["btc","usd"]),q=zod.enum(["skipped","running","passed","failed","errored"]),k=zod.enum(["submitted","accepted","rejected"]),C=zod.enum(["desc","asc"]),T=zod.object({type:zod.string(),content:zod.optional(zod.array(zod.any())),attrs:zod.optional(zod.record(zod.string(),zod.any())),marks:zod.optional(zod.array(zod.any())),text:zod.optional(zod.string())}),d=zod.object({json:zod.object({type:zod.literal("doc"),content:zod.array(T)}),text:zod.string()}),A=zod.object({id:zod.uuid(),quest_id:zod.uuid(),description:d,status:l.default("pending"),auto_skipped:zod.optional(zod.nullable(zod.string().or(zod.any()))),status_before_auto_skip:zod.optional(zod.nullable(l)),sort_order:zod.number().default(0),type:zod.string().default("task"),created_by:zod.uuid(),assignee_id:zod.optional(zod.nullable(zod.uuid())),expected_asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),reward_xp:zod.number().int().nonnegative().default(0),reward_currency:I.default("btc"),reward_amount:zod.number().int().nonnegative().default(0),child_quest_id:zod.optional(zod.nullable(zod.uuid())),eval_route_id:zod.optional(zod.nullable(zod.uuid())),eval_score_path:zod.optional(zod.nullable(zod.string())),eval_categories_path:zod.optional(zod.nullable(zod.string())),eval_pass_min:zod.optional(zod.nullable(zod.number())),eval_pass_max:zod.optional(zod.nullable(zod.number())),leaderboard_enabled:zod.optional(zod.boolean()).default(false),leaderboard_order:zod.optional(C).default("desc"),submission_assets:zod.optional(zod.nullable(zod.record(zod.string(),chunkM2ZH6MMH_cjs.d))),eval_static_inputs:zod.optional(zod.nullable(chunkM2ZH6MMH_cjs.a)),notes:zod.optional(zod.nullable(zod.string())),contributor_keys:zod.optional(zod.nullable(zod.array(zod.object({key:zod.string(),required:zod.boolean().default(true),filters:zod.object({assetType:zod.optional(zod.string()),fileType:zod.optional(zod.string()),extensions:zod.optional(zod.array(zod.string())),hasConstraints:zod.boolean().default(false)})})))),created_at:zod.string(),updated_at:zod.string()}),R=A,x=zod.object({description:zod.union([zod.string().min(1,{message:"Item description cannot be empty"}),d]),type:zod.optional(zod.string()).default("task"),sort_order:zod.optional(zod.number().int()),assignee_id:zod.optional(zod.nullable(zod.uuid())),expected_asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),reward_xp:zod.optional(zod.number().int().nonnegative()).default(0),reward_currency:zod.optional(I).default("btc"),reward_amount:zod.optional(zod.number().int().nonnegative()).default(0),child_quest_id:zod.optional(zod.nullable(zod.uuid())),eval_route_id:zod.optional(zod.nullable(zod.uuid())),eval_score_path:zod.optional(zod.nullable(zod.string())),eval_categories_path:zod.optional(zod.nullable(zod.string())),eval_pass_min:zod.optional(zod.nullable(zod.number())),eval_pass_max:zod.optional(zod.nullable(zod.number())),leaderboard_enabled:zod.optional(zod.boolean()).default(false),leaderboard_order:zod.optional(C).default("desc"),submission_assets:zod.optional(zod.nullable(zod.record(zod.string(),chunkM2ZH6MMH_cjs.d))),eval_static_inputs:zod.optional(zod.nullable(chunkM2ZH6MMH_cjs.a)),notes:zod.optional(zod.nullable(zod.string()))}),U=zod.union([zod.string().min(1,{message:"Item description cannot be empty"}).transform(u=>x.parse({description:u})),x]),j=zod.object({type:w.default("closable"),status:E.default("open"),max_xp_per_contributor:zod.optional(zod.nullable(zod.number().int().nonnegative())),closed_at:zod.optional(zod.nullable(zod.string()))}),O=chunk7R5EIIIR_cjs.f.extend({asset_type:zod.literal("quest").default("quest"),metadata:zod.optional(zod.nullable(chunk7R5EIIIR_cjs.b.partial())),quest:zod.optional(j.partial()),items:zod.optional(zod.array(R.partial())),progress:zod.optional(zod.object({total:zod.number(),resolved:zod.number(),remaining:zod.number(),items:zod.optional(zod.array(zod.object({id:zod.string(),status:l,waiting_on:zod.optional(zod.nullable(zod.string())),waiting_until:zod.optional(zod.nullable(zod.string())),waiting_check_every:zod.optional(zod.nullable(zod.string()))}).partial()))}))}),Z=chunk7R5EIIIR_cjs.h.extend({asset_type:zod.literal("quest").default("quest"),name:zod.optional(zod.nullable(zod.string())).default(null),description:zod.optional(zod.nullable(d)),type:w.default("closable"),status:E.default("open"),max_xp_per_contributor:zod.optional(zod.nullable(zod.number().int().nonnegative())),items:zod.optional(zod.array(U)).default([])}).transform(u=>chunk7R5EIIIR_cjs.a(u)),F=O.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,items:true,progress:true,is_pinned_in_team:true}).extend({asset_type:zod.literal("quest").default("quest"),last_updated:zod.string().default(()=>new Date().toISOString())}).transform(u=>chunk7R5EIIIR_cjs.a(u)),M=x.partial().extend({status:zod.optional(l)}),N=zod.object({id:zod.uuid(),quest_id:zod.uuid(),user_id:zod.uuid(),item_id:zod.optional(zod.nullable(zod.uuid())),asset_id:zod.optional(zod.nullable(zod.uuid())),asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),assets:zod.optional(zod.nullable(chunkM2ZH6MMH_cjs.a)),description:zod.optional(zod.nullable(d)),review:zod.optional(zod.nullable(d)),status:k,reviewer_id:zod.optional(zod.nullable(zod.uuid())),reviewed_at:zod.optional(zod.nullable(zod.string())),eval_action_id:zod.optional(zod.nullable(zod.uuid())),eval_score:zod.optional(zod.nullable(zod.number())),eval_category_scores:zod.optional(zod.nullable(zod.record(zod.string(),zod.number()))),eval_status:zod.optional(zod.nullable(q)),created_at:zod.string(),updated_at:zod.string()}),P=zod.object({item_id:zod.uuid(),assets:zod.optional(zod.nullable(chunkM2ZH6MMH_cjs.c)),description:zod.optional(zod.nullable(zod.union([zod.string(),d])))}),G=zod.object({status:zod.enum(["accepted","rejected"]),review:zod.optional(zod.nullable(zod.union([zod.string(),d])))});exports.a=w;exports.b=E;exports.c=l;exports.d=I;exports.e=q;exports.f=k;exports.g=C;exports.h=A;exports.i=R;exports.j=x;exports.k=U;exports.l=O;exports.m=Z;exports.n=F;exports.o=M;exports.p=N;exports.q=P;exports.r=G;//# sourceMappingURL=chunk-NVKZLT3M.cjs.map
2
- //# sourceMappingURL=chunk-NVKZLT3M.cjs.map
1
+ 'use strict';var chunkU6XOT6XH_cjs=require('./chunk-U6XOT6XH.cjs'),chunkRMMMRN4X_cjs=require('./chunk-RMMMRN4X.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),zod=require('zod');var w=zod.enum(["closable","continuous"]),E=zod.enum(["draft","open","closed","cancelled"]),l=zod.enum(["pending","in_progress","done","skipped"]),I=zod.enum(["btc","usd"]),q=zod.enum(["skipped","running","passed","failed","errored"]),k=zod.enum(["submitted","accepted","rejected"]),C=zod.enum(["desc","asc"]),T=zod.object({type:zod.string(),content:zod.optional(zod.array(zod.any())),attrs:zod.optional(zod.record(zod.string(),zod.any())),marks:zod.optional(zod.array(zod.any())),text:zod.optional(zod.string())}),d=zod.object({json:zod.object({type:zod.literal("doc"),content:zod.array(T)}),text:zod.string()}),A=zod.object({id:zod.uuid(),quest_id:zod.uuid(),description:d,status:l.default("pending"),auto_skipped:zod.optional(zod.nullable(zod.string().or(zod.any()))),status_before_auto_skip:zod.optional(zod.nullable(l)),sort_order:zod.number().default(0),type:zod.string().default("task"),created_by:zod.uuid(),assignee_id:zod.optional(zod.nullable(zod.uuid())),expected_asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),reward_xp:zod.number().int().nonnegative().default(0),reward_currency:I.default("btc"),reward_amount:zod.number().int().nonnegative().default(0),child_quest_id:zod.optional(zod.nullable(zod.uuid())),eval_route_id:zod.optional(zod.nullable(zod.uuid())),eval_score_path:zod.optional(zod.nullable(zod.string())),eval_categories_path:zod.optional(zod.nullable(zod.string())),eval_pass_min:zod.optional(zod.nullable(zod.number())),eval_pass_max:zod.optional(zod.nullable(zod.number())),leaderboard_enabled:zod.optional(zod.boolean()).default(false),leaderboard_order:zod.optional(C).default("desc"),submission_assets:zod.optional(zod.nullable(zod.record(zod.string(),chunkU6XOT6XH_cjs.d))),eval_static_inputs:zod.optional(zod.nullable(chunkU6XOT6XH_cjs.a)),notes:zod.optional(zod.nullable(zod.string())),contributor_keys:zod.optional(zod.nullable(zod.array(zod.object({key:zod.string(),required:zod.boolean().default(true),filters:zod.object({assetType:zod.optional(zod.string()),fileType:zod.optional(zod.string()),extensions:zod.optional(zod.array(zod.string())),hasConstraints:zod.boolean().default(false)})})))),created_at:zod.string(),updated_at:zod.string()}),R=A,x=zod.object({description:zod.union([zod.string().min(1,{message:"Item description cannot be empty"}),d]),type:zod.optional(zod.string()).default("task"),sort_order:zod.optional(zod.number().int()),assignee_id:zod.optional(zod.nullable(zod.uuid())),expected_asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),reward_xp:zod.optional(zod.number().int().nonnegative()).default(0),reward_currency:zod.optional(I).default("btc"),reward_amount:zod.optional(zod.number().int().nonnegative()).default(0),child_quest_id:zod.optional(zod.nullable(zod.uuid())),eval_route_id:zod.optional(zod.nullable(zod.uuid())),eval_score_path:zod.optional(zod.nullable(zod.string())),eval_categories_path:zod.optional(zod.nullable(zod.string())),eval_pass_min:zod.optional(zod.nullable(zod.number())),eval_pass_max:zod.optional(zod.nullable(zod.number())),leaderboard_enabled:zod.optional(zod.boolean()).default(false),leaderboard_order:zod.optional(C).default("desc"),submission_assets:zod.optional(zod.nullable(zod.record(zod.string(),chunkU6XOT6XH_cjs.d))),eval_static_inputs:zod.optional(zod.nullable(chunkU6XOT6XH_cjs.a)),notes:zod.optional(zod.nullable(zod.string()))}),U=zod.union([zod.string().min(1,{message:"Item description cannot be empty"}).transform(u=>x.parse({description:u})),x]),j=zod.object({type:w.default("closable"),status:E.default("open"),max_xp_per_contributor:zod.optional(zod.nullable(zod.number().int().nonnegative())),closed_at:zod.optional(zod.nullable(zod.string()))}),O=chunkRMMMRN4X_cjs.f.extend({asset_type:zod.literal("quest").default("quest"),metadata:zod.optional(zod.nullable(chunkRMMMRN4X_cjs.b.partial())),quest:zod.optional(j.partial()),items:zod.optional(zod.array(R.partial())),progress:zod.optional(zod.object({total:zod.number(),resolved:zod.number(),remaining:zod.number(),items:zod.optional(zod.array(zod.object({id:zod.string(),status:l,waiting_on:zod.optional(zod.nullable(zod.string())),waiting_until:zod.optional(zod.nullable(zod.string())),waiting_check_every:zod.optional(zod.nullable(zod.string()))}).partial()))}))}),Z=chunkRMMMRN4X_cjs.h.extend({asset_type:zod.literal("quest").default("quest"),name:zod.optional(zod.nullable(zod.string())).default(null),description:zod.optional(zod.nullable(d)),type:w.default("closable"),status:E.default("open"),max_xp_per_contributor:zod.optional(zod.nullable(zod.number().int().nonnegative())),items:zod.optional(zod.array(U)).default([])}).transform(u=>chunkRMMMRN4X_cjs.a(u)),F=O.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,items:true,progress:true,is_pinned_in_team:true}).extend({asset_type:zod.literal("quest").default("quest"),last_updated:zod.string().default(()=>new Date().toISOString())}).transform(u=>chunkRMMMRN4X_cjs.a(u)),M=x.partial().extend({status:zod.optional(l)}),N=zod.object({id:zod.uuid(),quest_id:zod.uuid(),user_id:zod.uuid(),item_id:zod.optional(zod.nullable(zod.uuid())),asset_id:zod.optional(zod.nullable(zod.uuid())),asset_type:zod.optional(zod.nullable(chunkYFEGRZXL_cjs.a)),assets:zod.optional(zod.nullable(chunkU6XOT6XH_cjs.a)),description:zod.optional(zod.nullable(d)),review:zod.optional(zod.nullable(d)),status:k,reviewer_id:zod.optional(zod.nullable(zod.uuid())),reviewed_at:zod.optional(zod.nullable(zod.string())),eval_action_id:zod.optional(zod.nullable(zod.uuid())),eval_score:zod.optional(zod.nullable(zod.number())),eval_category_scores:zod.optional(zod.nullable(zod.record(zod.string(),zod.number()))),eval_status:zod.optional(zod.nullable(q)),created_at:zod.string(),updated_at:zod.string()}),P=zod.object({item_id:zod.uuid(),assets:zod.optional(zod.nullable(chunkU6XOT6XH_cjs.c)),description:zod.optional(zod.nullable(zod.union([zod.string(),d])))}),G=zod.object({status:zod.enum(["accepted","rejected"]),review:zod.optional(zod.nullable(zod.union([zod.string(),d])))});exports.a=w;exports.b=E;exports.c=l;exports.d=I;exports.e=q;exports.f=k;exports.g=C;exports.h=A;exports.i=R;exports.j=x;exports.k=U;exports.l=O;exports.m=Z;exports.n=F;exports.o=M;exports.p=N;exports.q=P;exports.r=G;//# sourceMappingURL=chunk-T6UO42TO.cjs.map
2
+ //# sourceMappingURL=chunk-T6UO42TO.cjs.map