@ourofoundation/ouro-js 3.5.8 → 3.7.0

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 (110) hide show
  1. package/dist/{chunk-6GPIZJ4T.cjs → chunk-57RRLX7P.cjs} +2 -2
  2. package/dist/{chunk-6GPIZJ4T.cjs.map → chunk-57RRLX7P.cjs.map} +1 -1
  3. package/dist/chunk-5EQ5LO7V.cjs +2 -0
  4. package/dist/chunk-5EQ5LO7V.cjs.map +1 -0
  5. package/dist/chunk-7EKD5NQB.js +2 -0
  6. package/dist/{chunk-IWOXGKK4.js.map → chunk-7EKD5NQB.js.map} +1 -1
  7. package/dist/{chunk-YKA3RUTN.cjs → chunk-AI2FA44G.cjs} +2 -2
  8. package/dist/{chunk-YKA3RUTN.cjs.map → chunk-AI2FA44G.cjs.map} +1 -1
  9. package/dist/chunk-AWBCE7ME.cjs +2 -0
  10. package/dist/chunk-AWBCE7ME.cjs.map +1 -0
  11. package/dist/chunk-DY5QSBE4.js +2 -0
  12. package/dist/chunk-DY5QSBE4.js.map +1 -0
  13. package/dist/{chunk-DBEBXFQI.cjs → chunk-HW6FGPTA.cjs} +2 -2
  14. package/dist/{chunk-DBEBXFQI.cjs.map → chunk-HW6FGPTA.cjs.map} +1 -1
  15. package/dist/{chunk-G3VMEPTP.js → chunk-ITF5WQQB.js} +2 -2
  16. package/dist/{chunk-G3VMEPTP.js.map → chunk-ITF5WQQB.js.map} +1 -1
  17. package/dist/{chunk-USO3MLKI.cjs → chunk-IVO3RQUN.cjs} +2 -2
  18. package/dist/chunk-IVO3RQUN.cjs.map +1 -0
  19. package/dist/chunk-JUELSRCY.js +2 -0
  20. package/dist/{chunk-4UE3XIYR.js.map → chunk-JUELSRCY.js.map} +1 -1
  21. package/dist/chunk-KHERHT26.cjs +2 -0
  22. package/dist/chunk-KHERHT26.cjs.map +1 -0
  23. package/dist/{chunk-F5CWCYOP.cjs → chunk-NTWSEN2H.cjs} +2 -2
  24. package/dist/{chunk-F5CWCYOP.cjs.map → chunk-NTWSEN2H.cjs.map} +1 -1
  25. package/dist/chunk-OU4JKY4M.js +2 -0
  26. package/dist/chunk-OU4JKY4M.js.map +1 -0
  27. package/dist/chunk-QBL6KIST.js +2 -0
  28. package/dist/{chunk-WNYOQITO.js.map → chunk-QBL6KIST.js.map} +1 -1
  29. package/dist/{chunk-6ZJQTECB.cjs → chunk-QNERXSMJ.cjs} +2 -2
  30. package/dist/{chunk-6ZJQTECB.cjs.map → chunk-QNERXSMJ.cjs.map} +1 -1
  31. package/dist/chunk-QSOXS57A.cjs +2 -0
  32. package/dist/chunk-QSOXS57A.cjs.map +1 -0
  33. package/dist/chunk-RD6EPK44.js +2 -0
  34. package/dist/{chunk-KCVE35IO.js.map → chunk-RD6EPK44.js.map} +1 -1
  35. package/dist/{chunk-FRMPLGE4.cjs → chunk-SY5IKIT6.cjs} +2 -2
  36. package/dist/{chunk-FRMPLGE4.cjs.map → chunk-SY5IKIT6.cjs.map} +1 -1
  37. package/dist/chunk-T3HVRQBB.js +2 -0
  38. package/dist/chunk-T3HVRQBB.js.map +1 -0
  39. package/dist/chunk-TGOXRPF5.js +2 -0
  40. package/dist/chunk-TGOXRPF5.js.map +1 -0
  41. package/dist/{chunk-TYOQ32UV.js → chunk-TMNFNVTZ.js} +2 -2
  42. package/dist/{chunk-TYOQ32UV.js.map → chunk-TMNFNVTZ.js.map} +1 -1
  43. package/dist/chunk-ZC2VDKSH.js +2 -0
  44. package/dist/chunk-ZC2VDKSH.js.map +1 -0
  45. package/dist/index.cjs +1 -1
  46. package/dist/index.d.cts +2 -1
  47. package/dist/index.d.ts +2 -1
  48. package/dist/index.js +1 -1
  49. package/dist/schema/assets.cjs +1 -1
  50. package/dist/schema/assets.d.cts +175 -45
  51. package/dist/schema/assets.d.ts +175 -45
  52. package/dist/schema/assets.js +1 -1
  53. package/dist/schema/comments.cjs +1 -1
  54. package/dist/schema/comments.d.cts +95 -27
  55. package/dist/schema/comments.d.ts +95 -27
  56. package/dist/schema/comments.js +1 -1
  57. package/dist/schema/conversations.cjs +1 -1
  58. package/dist/schema/conversations.d.cts +163 -47
  59. package/dist/schema/conversations.d.ts +163 -47
  60. package/dist/schema/conversations.js +1 -1
  61. package/dist/schema/datasets.cjs +1 -1
  62. package/dist/schema/datasets.d.cts +230 -66
  63. package/dist/schema/datasets.d.ts +230 -66
  64. package/dist/schema/datasets.js +1 -1
  65. package/dist/schema/files.cjs +1 -1
  66. package/dist/schema/files.d.cts +230 -66
  67. package/dist/schema/files.d.ts +230 -66
  68. package/dist/schema/files.js +1 -1
  69. package/dist/schema/posts.cjs +1 -1
  70. package/dist/schema/posts.d.cts +250 -74
  71. package/dist/schema/posts.d.ts +250 -74
  72. package/dist/schema/posts.js +1 -1
  73. package/dist/schema/quests.cjs +1 -1
  74. package/dist/schema/quests.d.cts +164 -48
  75. package/dist/schema/quests.d.ts +164 -48
  76. package/dist/schema/quests.js +1 -1
  77. package/dist/schema/services.cjs +1 -1
  78. package/dist/schema/services.d.cts +247 -71
  79. package/dist/schema/services.d.ts +247 -71
  80. package/dist/schema/services.js +1 -1
  81. package/dist/utils/air/index.cjs +1 -1
  82. package/dist/utils/air/index.js +1 -1
  83. package/dist/utils/files.cjs +2 -0
  84. package/dist/utils/files.cjs.map +1 -0
  85. package/dist/utils/files.d.cts +18 -0
  86. package/dist/utils/files.d.ts +18 -0
  87. package/dist/utils/files.js +2 -0
  88. package/dist/utils/files.js.map +1 -0
  89. package/dist/utils/quest-submission.cjs +1 -1
  90. package/dist/utils/quest-submission.js +1 -1
  91. package/package.json +2 -2
  92. package/dist/chunk-4UE3XIYR.js +0 -2
  93. package/dist/chunk-IWOXGKK4.js +0 -2
  94. package/dist/chunk-KCVE35IO.js +0 -2
  95. package/dist/chunk-LQOKGPEK.js +0 -2
  96. package/dist/chunk-LQOKGPEK.js.map +0 -1
  97. package/dist/chunk-MLTO7TMM.js +0 -2
  98. package/dist/chunk-MLTO7TMM.js.map +0 -1
  99. package/dist/chunk-NABNY2EN.js +0 -2
  100. package/dist/chunk-NABNY2EN.js.map +0 -1
  101. package/dist/chunk-ROMY5WNQ.cjs +0 -2
  102. package/dist/chunk-ROMY5WNQ.cjs.map +0 -1
  103. package/dist/chunk-SR5UZ4NP.js +0 -2
  104. package/dist/chunk-SR5UZ4NP.js.map +0 -1
  105. package/dist/chunk-TUZS3DKI.cjs +0 -2
  106. package/dist/chunk-TUZS3DKI.cjs.map +0 -1
  107. package/dist/chunk-USO3MLKI.cjs.map +0 -1
  108. package/dist/chunk-V73EW77Y.cjs +0 -2
  109. package/dist/chunk-V73EW77Y.cjs.map +0 -1
  110. package/dist/chunk-WNYOQITO.js +0 -2
@@ -1,2 +0,0 @@
1
- import {b as b$1,c,d as d$1,a as a$1}from'./chunk-SR5UZ4NP.js';import {a,j}from'./chunk-WRHPQNEL.js';import {enum as _enum,object,optional,string,nullable,array,boolean,any,record,number,uuid}from'zod';var v=_enum(["Personal Access Token","Ouro","None","OAuth 2.0"]),z=object({authentication:v,base_url:string(),version:optional(nullable(string())),spec_path:optional(nullable(string())),spec_url:optional(nullable(string())),auth_url:optional(nullable(string()))}),A=z.extend(b$1.partial().shape),D=c.extend({asset_type:a.refine(n=>n==="service"),metadata:A}),C=d$1.extend({asset_type:a.refine(n=>n==="service"),metadata:A}).transform(n=>a$1(n)),w=D.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(n=>a$1(n)),x=_enum(["sync","async"]),d=_enum(["file","dataset","post"]),R=_enum(["audio","video","image","pdf","3d model","atomic structure"]),T=object({asset_type:d,primary:optional(boolean()),input_filter:optional(nullable(R)),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),O=object({asset_type:d,primary:optional(boolean()),file_extensions:optional(nullable(array(string()))),contains_file_extensions:optional(nullable(array(string())))}).catchall(any()),b=record(string(),T),g=record(string(),O),M=object({id:string(),user_id:string(),service_id:string(),path:string(),method:_enum(["GET","POST","PUT","PATCH","DELETE"]),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(b)),input_type:optional(nullable(d)),input_filter:optional(nullable(R)),input_file_extension:optional(nullable(string())),input_file_extensions:optional(nullable(array(string()))),output_assets:optional(nullable(g)),output_type:optional(nullable(d)),output_file_extension:optional(nullable(string())),security:optional(nullable(record(string(),any()))),rate_limit:optional(nullable(number())),execution_mode:optional(x).default("sync"),observed_execution_mode:optional(nullable(x)),last_updated:string()}),E=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()))}),F=c.extend({asset_type:a.refine(n=>n==="route"),route:M,metrics:optional(nullable(E))}),U=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(c)),input_assets:optional(nullable(array(record(string(),any())))),output_asset:optional(nullable(c)),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()))});export{D as a,C as b,w as c,x as d,T as e,O as f,b as g,g as h,E as i,F as j,U as k};//# sourceMappingURL=chunk-MLTO7TMM.js.map
2
- //# sourceMappingURL=chunk-MLTO7TMM.js.map
@@ -1 +0,0 @@
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","RouteInputAssetDeclarationSchema","boolean","array","any","RouteOutputAssetDeclarationSchema","RouteInputAssetsSchema","record","RouteOutputAssetsSchema","RouteDetailSchema","number","RouteMetricsSchema","RouteSchema","ActionSchema","uuid","StatusSchema"],"mappings":"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","file":"chunk-MLTO7TMM.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, StatusSchema } from \"./common\";\nimport {\n AssetMetadataSchema,\n AssetSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\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([\n \"audio\",\n \"video\",\n \"image\",\n \"pdf\",\n \"3d model\",\n \"atomic structure\",\n]);\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: zodEnum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"]),\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\nexport {\n RouteSchema,\n RouteInputAssetDeclarationSchema,\n RouteOutputAssetDeclarationSchema,\n RouteInputAssetsSchema,\n RouteOutputAssetsSchema,\n ServiceSchema,\n CreateServiceSchema,\n UpdateServiceSchema,\n ActionSchema,\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>;\n"]}
@@ -1,2 +0,0 @@
1
- import {a,d,c as c$1}from'./chunk-TYOQ32UV.js';import {c,b,d as d$1,a as a$2}from'./chunk-SR5UZ4NP.js';import {a as a$1}from'./chunk-WRHPQNEL.js';import {enum as _enum,object,optional,string,array,any,record,literal,number,uuid,nullable,boolean,union}from'zod';var z=_enum(["closable","continuous"]),E=_enum(["draft","open","closed","cancelled"]),_=_enum(["pending","in_progress","done","skipped"]),C=_enum(["btc","usd"]),I=_enum(["skipped","running","passed","failed","errored"]),q=_enum(["submitted","accepted","rejected"]),k=object({type:string(),content:optional(array(any())),attrs:optional(record(string(),any())),marks:optional(array(any())),text:optional(string())}),p=object({json:object({type:literal("doc"),content:array(k)}),text:string()}),T=object({id:uuid(),quest_id:uuid(),description:string(),status:_.default("pending"),auto_skipped:optional(nullable(string().or(any()))),status_before_auto_skip:optional(nullable(_)),sort_order:number().default(0),type:string().default("task"),created_by:uuid(),assignee_id:optional(nullable(uuid())),expected_asset_type:optional(nullable(a$1)),reward_xp:number().int().nonnegative().default(0),reward_currency:C.default("btc"),reward_amount:number().int().nonnegative().default(0),child_quest_id:optional(nullable(uuid())),eval_route_id:optional(nullable(uuid())),eval_score_path:optional(nullable(string())),eval_pass_min:optional(nullable(number())),eval_pass_max:optional(nullable(number())),submission_assets:optional(nullable(record(string(),d))),eval_static_inputs:optional(nullable(a)),notes:optional(nullable(string())),contributor_keys:optional(nullable(array(object({key:string(),required:boolean().default(true),filters:object({assetType:optional(string()),fileType:optional(string()),extensions:optional(array(string())),hasConstraints:boolean().default(false)})})))),created_at:string(),updated_at:string()}),A=T,S=object({description:string().min(1,{message:"Item description cannot be empty"}),type:optional(string()).default("task"),sort_order:optional(number().int()),assignee_id:optional(nullable(uuid())),expected_asset_type:optional(nullable(a$1)),reward_xp:optional(number().int().nonnegative()).default(0),reward_currency:optional(C).default("btc"),reward_amount:optional(number().int().nonnegative()).default(0),child_quest_id:optional(nullable(uuid())),eval_route_id:optional(nullable(uuid())),eval_score_path:optional(nullable(string())),eval_pass_min:optional(nullable(number())),eval_pass_max:optional(nullable(number())),submission_assets:optional(nullable(record(string(),d))),eval_static_inputs:optional(nullable(a)),notes:optional(nullable(string()))}),R=union([string().transform(u=>({description:u})),S]).pipe(S),U=object({type:z.default("closable"),status:E.default("open"),max_xp_per_contributor:optional(nullable(number().int().nonnegative())),closed_at:optional(nullable(string()))}),j=c.extend({asset_type:literal("quest").default("quest"),metadata:optional(nullable(b.partial())),quest:optional(U.partial()),items:optional(array(A.partial())),progress:optional(object({total:number(),done:number(),remaining:number(),items:optional(array(object({id:string(),status:_,waiting_on:optional(nullable(string())),waiting_until:optional(nullable(string())),waiting_check_every:optional(nullable(string()))}).partial()))}))}),Z=d$1.extend({asset_type:literal("quest").default("quest"),name:optional(nullable(string())).default(null),description:optional(nullable(p)),type:z.default("closable"),status:E.default("open"),max_xp_per_contributor:optional(nullable(number().int().nonnegative())),items:optional(array(R)).default([])}).transform(u=>a$2(u)),F=j.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:literal("quest").default("quest"),last_updated:string().default(()=>new Date().toISOString())}).transform(u=>a$2(u)),M=S.partial().extend({status:optional(_)}),N=object({id:uuid(),quest_id:uuid(),user_id:uuid(),item_id:optional(nullable(uuid())),asset_id:optional(nullable(uuid())),asset_type:optional(nullable(a$1)),assets:optional(nullable(a)),description:optional(nullable(p)),review:optional(nullable(p)),status:q,reviewer_id:optional(nullable(uuid())),reviewed_at:optional(nullable(string())),eval_action_id:optional(nullable(uuid())),eval_score:optional(nullable(number())),eval_status:optional(nullable(I)),created_at:string(),updated_at:string()}),P=object({item_id:uuid(),assets:optional(nullable(c$1)),description:optional(nullable(union([string(),p])))}),G=object({status:_enum(["accepted","rejected"]),review:optional(nullable(union([string(),p])))});export{z as a,E as b,_ as c,C as d,I as e,q as f,T as g,A as h,S as i,R as j,j as k,Z as l,F as m,M as n,N as o,P as p,G as q};//# sourceMappingURL=chunk-NABNY2EN.js.map
2
- //# sourceMappingURL=chunk-NABNY2EN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schema/quests.ts"],"names":["QuestTypeSchema","zodEnum","QuestStatusSchema","QuestItemStatusSchema","RewardCurrencySchema","EntryEvalStatusSchema","EntryStatusSchema","TipTapNode","object","string","optional","array","any","record","ContentSchema","literal","QuestItemBaseSchema","uuid","nullable","number","AssetTypeSchema","QuestSubmissionAssetDeclarationSchema","KeyedAssetRefsSchema","zodBoolean","QuestItemSchema","CreateQuestItemObjectSchema","CreateQuestItemSchema","union","s","QuestSpecificsSchema","QuestSchema","AssetSchema","AssetMetadataSchema","CreateQuestSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","UpdateQuestSchema","UpdateQuestItemSchema","EntrySchema","CreateEntrySchema","KeyedAssetInputSchema","ReviewEntrySchema"],"mappings":"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","file":"chunk-NABNY2EN.js","sourcesContent":["import {\n object,\n string,\n number,\n array,\n literal,\n record,\n type z,\n any,\n optional,\n nullable,\n union,\n uuid,\n boolean as zodBoolean,\n enum as zodEnum,\n type ZodType,\n} from \"zod\";\n\nimport {\n AssetSchema,\n AssetMetadataSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { AssetTypeSchema } from \"./common\";\nimport {\n KeyedAssetRefsSchema,\n KeyedAssetInputSchema,\n QuestSubmissionAssetDeclarationSchema,\n} from \"../utils/quest-submission\";\n\n// ── Enums ──────────────────────────────────────────────────────────────\n\n/** closable: one active entry per item per user; continuous: unlimited per item */\nconst QuestTypeSchema = zodEnum([\"closable\", \"continuous\"]);\nconst QuestStatusSchema = zodEnum([\"draft\", \"open\", \"closed\", \"cancelled\"]);\n\nconst QuestItemStatusSchema = zodEnum([\n \"pending\",\n \"in_progress\",\n \"done\",\n \"skipped\",\n]);\n\nconst RewardCurrencySchema = zodEnum([\"btc\", \"usd\"]);\n\nconst EntryEvalStatusSchema = zodEnum([\n \"skipped\",\n \"running\",\n \"passed\",\n \"failed\",\n \"errored\",\n]);\n\nconst EntryStatusSchema = zodEnum([\"submitted\", \"accepted\", \"rejected\"]);\n\n// ── Content (TipTap) ───────────────────────────────────────────────────\n// Posts/quests share the same rich description shape: { json, text }.\n// We mirror it locally here so the quest schema doesn't depend on posts.\n\nconst TipTapNode: ZodType<any> = object({\n type: string(),\n content: optional(array(any())),\n attrs: optional(record(string(), any())),\n marks: optional(array(any())),\n text: optional(string()),\n});\n\nconst ContentSchema = object({\n json: object({\n type: literal(\"doc\"),\n content: array(TipTapNode),\n }),\n text: string(),\n});\n\n// ── Quest items ────────────────────────────────────────────────────────\n\nconst QuestItemBaseSchema = object({\n id: uuid(),\n quest_id: uuid(),\n description: string(),\n status: QuestItemStatusSchema.default(\"pending\"),\n auto_skipped: optional(nullable(string().or(any()))),\n status_before_auto_skip: optional(nullable(QuestItemStatusSchema)),\n sort_order: number().default(0),\n type: string().default(\"task\"),\n created_by: uuid(),\n assignee_id: optional(nullable(uuid())),\n expected_asset_type: optional(nullable(AssetTypeSchema)),\n reward_xp: number().int().nonnegative().default(0),\n reward_currency: RewardCurrencySchema.default(\"btc\"),\n reward_amount: number().int().nonnegative().default(0),\n child_quest_id: optional(nullable(uuid())),\n eval_route_id: optional(nullable(uuid())),\n eval_score_path: optional(nullable(string())),\n eval_pass_min: optional(nullable(number())),\n eval_pass_max: optional(nullable(number())),\n submission_assets: optional(\n nullable(record(string(), QuestSubmissionAssetDeclarationSchema)),\n ),\n eval_static_inputs: optional(nullable(KeyedAssetRefsSchema)),\n notes: optional(nullable(string())),\n contributor_keys: optional(\n nullable(\n array(\n object({\n key: string(),\n required: zodBoolean().default(true),\n filters: object({\n assetType: optional(string()),\n fileType: optional(string()),\n extensions: optional(array(string())),\n hasConstraints: zodBoolean().default(false),\n }),\n }),\n ),\n ),\n ),\n created_at: string(),\n updated_at: string(),\n});\n\nconst QuestItemSchema = QuestItemBaseSchema;\n\n/**\n * Shape used by `POST /quests/create` (inline items) and\n * `POST /quests/:id/items` (batch add). The controller fills in\n * `quest_id`, `created_by`, and lifecycle-derived fields\n * (`auto_skipped`, `status_before_auto_skip`).\n *\n * Accepts a plain description string as a convenience — it's lifted\n * into `{ description }` by the `union` below.\n */\nconst CreateQuestItemObjectSchema = object({\n description: string().min(1, { message: \"Item description cannot be empty\" }),\n type: optional(string()).default(\"task\"),\n sort_order: optional(number().int()),\n assignee_id: optional(nullable(uuid())),\n expected_asset_type: optional(nullable(AssetTypeSchema)),\n reward_xp: optional(number().int().nonnegative()).default(0),\n reward_currency: optional(RewardCurrencySchema).default(\"btc\"),\n // Amount is in minor units of `reward_currency`: sats for BTC, cents\n // for USD. Both fit in JS numbers comfortably for our reward sizes;\n // the underlying column is `bigint`.\n reward_amount: optional(number().int().nonnegative()).default(0),\n child_quest_id: optional(nullable(uuid())),\n eval_route_id: optional(nullable(uuid())),\n eval_score_path: optional(nullable(string())),\n eval_pass_min: optional(nullable(number())),\n eval_pass_max: optional(nullable(number())),\n submission_assets: optional(\n nullable(record(string(), QuestSubmissionAssetDeclarationSchema)),\n ),\n eval_static_inputs: optional(nullable(KeyedAssetRefsSchema)),\n notes: optional(nullable(string())),\n});\n\nconst CreateQuestItemSchema = union([\n string().transform((s) => ({ description: s })),\n CreateQuestItemObjectSchema,\n]).pipe(CreateQuestItemObjectSchema);\n\n// ── Quest ──────────────────────────────────────────────────────────────\n\nconst QuestSpecificsSchema = object({\n type: QuestTypeSchema.default(\"closable\"),\n status: QuestStatusSchema.default(\"open\"),\n max_xp_per_contributor: optional(nullable(number().int().nonnegative())),\n closed_at: optional(nullable(string())),\n});\n\nconst QuestSchema = AssetSchema.extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n metadata: optional(nullable(AssetMetadataSchema.partial())),\n // List and detail both nest specifics under `quest`. Detail also hoists\n // full items to the top level. Progress (counts + bar segments) is always\n // top-level `progress` on list and detail responses.\n quest: optional(QuestSpecificsSchema.partial()),\n items: optional(array(QuestItemSchema.partial())),\n progress: optional(\n object({\n total: number(),\n done: number(),\n remaining: number(),\n // Lightweight per-item segments for progress bars (list + detail).\n items: optional(\n array(\n object({\n id: string(),\n status: QuestItemStatusSchema,\n waiting_on: optional(nullable(string())),\n waiting_until: optional(nullable(string())),\n waiting_check_every: optional(nullable(string())),\n }).partial()\n )\n ),\n })\n ),\n});\n\n/**\n * Schema used by the backend controller and SDK clients to validate /\n * default the body of `POST /quests/create`. Mirrors how\n * `CreatePostSchema` defaults `org_id`/`team_id` so non-frontend callers\n * don't have to know about `GLOBAL_ORG_ID`.\n *\n * The `items` field accepts either plain strings or full item objects —\n * the backend `createQuestItems`/`createQuest` paths already handle both\n * shapes, and `CreateQuestItemSchema` normalizes strings into\n * `{ description }`.\n */\nconst CreateQuestSchema = CreateAssetSchema.extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n name: optional(nullable(string())).default(null),\n description: optional(nullable(ContentSchema)),\n type: QuestTypeSchema.default(\"closable\"),\n status: QuestStatusSchema.default(\"open\"),\n max_xp_per_contributor: optional(nullable(number().int().nonnegative())),\n items: optional(array(CreateQuestItemSchema)).default([]),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateQuestSchema = QuestSchema.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 items: true,\n progress: true,\n is_pinned_in_team: true,\n })\n .extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateQuestItemSchema = CreateQuestItemObjectSchema.partial().extend({\n status: optional(QuestItemStatusSchema),\n});\n\n// ── Entries ────────────────────────────────────────────────────────────\n\nconst EntrySchema = object({\n id: uuid(),\n quest_id: uuid(),\n user_id: uuid(),\n item_id: optional(nullable(uuid())),\n asset_id: optional(nullable(uuid())),\n asset_type: optional(nullable(AssetTypeSchema)),\n assets: optional(nullable(KeyedAssetRefsSchema)),\n description: optional(nullable(ContentSchema)),\n review: optional(nullable(ContentSchema)),\n status: EntryStatusSchema,\n reviewer_id: optional(nullable(uuid())),\n reviewed_at: optional(nullable(string())),\n eval_action_id: optional(nullable(uuid())),\n eval_score: optional(nullable(number())),\n eval_status: optional(nullable(EntryEvalStatusSchema)),\n created_at: string(),\n updated_at: string(),\n});\n\nconst CreateEntrySchema = object({\n item_id: uuid(),\n assets: optional(nullable(KeyedAssetInputSchema)),\n description: optional(nullable(union([string(), ContentSchema]))),\n});\n\nconst ReviewEntrySchema = object({\n status: zodEnum([\"accepted\", \"rejected\"]),\n review: optional(nullable(union([string(), ContentSchema]))),\n});\n\n// ── Exports ────────────────────────────────────────────────────────────\n\nexport {\n KeyedAssetRefsSchema,\n KeyedAssetInputSchema,\n QuestSubmissionAssetDeclarationSchema,\n QuestTypeSchema,\n QuestStatusSchema,\n QuestItemStatusSchema,\n RewardCurrencySchema,\n EntryEvalStatusSchema,\n EntryStatusSchema,\n QuestSchema,\n QuestItemSchema,\n QuestItemBaseSchema,\n CreateQuestSchema,\n CreateQuestItemSchema,\n CreateQuestItemObjectSchema,\n UpdateQuestSchema,\n UpdateQuestItemSchema,\n EntrySchema,\n CreateEntrySchema,\n ReviewEntrySchema,\n};\n\nexport type QuestType = z.infer<typeof QuestTypeSchema>;\nexport type QuestStatus = z.infer<typeof QuestStatusSchema>;\nexport type QuestItemStatus = z.infer<typeof QuestItemStatusSchema>;\nexport type RewardCurrency = z.infer<typeof RewardCurrencySchema>;\nexport type EntryEvalStatus = z.infer<typeof EntryEvalStatusSchema>;\nexport type EntryStatus = z.infer<typeof EntryStatusSchema>;\nexport type Quest = z.infer<typeof QuestSchema>;\nexport type QuestItem = z.infer<typeof QuestItemSchema>;\nexport type CreateQuest = z.infer<typeof CreateQuestSchema>;\nexport type CreateQuestItem = z.infer<typeof CreateQuestItemSchema>;\nexport type UpdateQuest = z.infer<typeof UpdateQuestSchema>;\nexport type UpdateQuestItem = z.infer<typeof UpdateQuestItemSchema>;\nexport type Entry = z.infer<typeof EntrySchema>;\nexport type CreateEntry = z.infer<typeof CreateEntrySchema>;\nexport type ReviewEntry = z.infer<typeof ReviewEntrySchema>;\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkUY43EQTO_cjs=require('./chunk-UY43EQTO.cjs'),chunkVOY623ZD_cjs=require('./chunk-VOY623ZD.cjs'),chunkGY6SLMMJ_cjs=require('./chunk-GY6SLMMJ.cjs'),chunk43KB23BA_cjs=require('./chunk-43KB23BA.cjs'),chunk7HF5VHUN_cjs=require('./chunk-7HF5VHUN.cjs'),zod=require('zod'),uuidv7=require('uuidv7');var C=r=>r.org_id===chunk7HF5VHUN_cjs.b&&r.visibility==="organization"?{...r,visibility:"public"}:r,T=zod.object({doi_url:zod.optional(zod.nullable(zod.string())),external_url:zod.optional(zod.nullable(zod.string())),paper_url:zod.optional(zod.nullable(zod.string())),github_url:zod.optional(zod.nullable(zod.string())),originality:zod.enum(["original","derivative","third-party"]),source:zod.optional(zod.nullable(zod.string())),reply_to_comment_id:zod.optional(zod.nullable(zod.string()))}),A=zod.object({id:zod.uuid(),user_id:zod.uuid(),user:zod.optional(chunkGY6SLMMJ_cjs.b.partial()),org_id:zod.uuid(),organization:zod.optional(chunkVOY623ZD_cjs.c.partial()),team_id:zod.uuid(),team:zod.optional(chunkUY43EQTO_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:chunk43KB23BA_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:chunk43KB23BA_cjs.b,monetization:chunk43KB23BA_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(chunk43KB23BA_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(T)),preview:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),state:chunk43KB23BA_cjs.j,source:chunk43KB23BA_cjs.k,is_pinned_in_team:zod.optional(zod.boolean().default(false)),created_at:zod.string(),last_updated:zod.string()}),P=A.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:chunk43KB23BA_cjs.j.optional().default("success"),source:chunk43KB23BA_cjs.k.default("web"),visibility:chunk43KB23BA_cjs.b.optional().default("public"),created_at:zod.string().default(()=>new Date().toISOString()),last_updated:zod.string().default(()=>new Date().toISOString())}),U=A.partial().omit({id:true,user_id:true,created_at:true,user:true,organization:true,team:true,slug:true,is_pinned_in_team:true}).transform(r=>C(r));exports.a=C;exports.b=T;exports.c=A;exports.d=P;exports.e=U;//# sourceMappingURL=chunk-ROMY5WNQ.cjs.map
2
- //# sourceMappingURL=chunk-ROMY5WNQ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","zodEnum","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","number","PriceCurrencySchema","array","StatusSchema","SourceSchema","boolean","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","UpdateAssetSchema","value"],"mappings":"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","file":"chunk-ROMY5WNQ.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\nconst AssetMetadataSchema = object({\n doi_url: optional(nullable(string())),\n external_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n originality: zodEnum([\"original\", \"derivative\", \"third-party\"]),\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 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 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 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 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 AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
@@ -1,2 +0,0 @@
1
- import {a as a$1}from'./chunk-CF56NFUG.js';import {c}from'./chunk-WLGOABHV.js';import {b as b$1}from'./chunk-3N56ERWF.js';import {k,j,d,b,a,e}from'./chunk-WRHPQNEL.js';import {b as b$2,c as c$1}from'./chunk-DUBPWSCA.js';import {object,optional,enum as _enum,nullable,string,uuid,boolean,array,record,any,number}from'zod';import {uuidv7}from'uuidv7';var C=r=>r.org_id===b$2&&r.visibility==="organization"?{...r,visibility:"public"}:r,T=object({doi_url:optional(nullable(string())),external_url:optional(nullable(string())),paper_url:optional(nullable(string())),github_url:optional(nullable(string())),originality:_enum(["original","derivative","third-party"]),source:optional(nullable(string())),reply_to_comment_id:optional(nullable(string()))}),A=object({id:uuid(),user_id:uuid(),user:optional(b$1.partial()),org_id:uuid(),organization:optional(c.partial()),team_id:uuid(),team:optional(a$1.partial()),parent_id:optional(nullable(uuid())),parent:optional(record(string(),any())),license_id:string(),license:optional(record(string(),any())),asset_type:a,name:string(),name_url_slug:optional(nullable(string())),slug:optional(nullable(string())),description:optional(nullable(object({json:record(string(),any()),text:string()}))),visibility:b,monetization:d,price:optional(nullable(number())),unit_cost:optional(nullable(number())),cost_accounting:optional(nullable(_enum(["fixed","variable"]))),cost_unit:optional(nullable(string())),price_currency:optional(e),stripe_product_id:optional(nullable(string())),stripe_price_id:optional(nullable(string())),stripe_meter_id:optional(nullable(string())),metadata:optional(nullable(T)),preview:optional(nullable(array(record(string(),any())))),state:j,source:k,is_pinned_in_team:optional(boolean().default(false)),created_at:string(),last_updated:string()}),P=A.partial().omit({user_id:true,user:true,organization:true,license:true,team:true,slug:true,is_pinned_in_team:true}).extend({id:uuid().default(()=>uuidv7()),team_id:nullable(uuid()).default(c$1),org_id:nullable(uuid()).default(b$2),name:string().min(1,{message:"Name cannot be empty"}).max(255,{message:"Name must be less than 255 characters"}),name_url_slug:optional(nullable(string())),state:j.optional().default("success"),source:k.default("web"),visibility:b.optional().default("public"),created_at:string().default(()=>new Date().toISOString()),last_updated:string().default(()=>new Date().toISOString())}),U=A.partial().omit({id:true,user_id:true,created_at:true,user:true,organization:true,team:true,slug:true,is_pinned_in_team:true}).transform(r=>C(r));export{C as a,T as b,A as c,P as d,U as e};//# sourceMappingURL=chunk-SR5UZ4NP.js.map
2
- //# sourceMappingURL=chunk-SR5UZ4NP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schema/assets.ts"],"names":["normalizeAssetConfigForParsing","input","GLOBAL_ORG_ID","AssetMetadataSchema","object","optional","nullable","string","zodEnum","AssetSchema","uuid","ProfileSchema","OrganizationsSchema","TeamSchema","record","any","AssetTypeSchema","VisibilitySchema","MonetizationSchema","number","PriceCurrencySchema","array","StatusSchema","SourceSchema","boolean","CreateAssetSchema","uuidv7","GLOBAL_TEAM_ID","UpdateAssetSchema","value"],"mappings":"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","file":"chunk-SR5UZ4NP.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\nconst AssetMetadataSchema = object({\n doi_url: optional(nullable(string())),\n external_url: optional(nullable(string())),\n paper_url: optional(nullable(string())),\n github_url: optional(nullable(string())),\n originality: zodEnum([\"original\", \"derivative\", \"third-party\"]),\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 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 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 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 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 AssetSchema,\n CreateAssetSchema,\n UpdateAssetSchema,\n normalizeAssetConfigForParsing,\n};\nexport type AssetMetadata = z.infer<typeof AssetMetadataSchema>;\nexport type Asset = z.infer<typeof AssetSchema>;\nexport type CreateAsset = z.infer<typeof CreateAssetSchema>;\nexport type UpdateAsset = z.infer<typeof UpdateAssetSchema>;\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';function T(e){return e==="default"?"card":e==="chart"?"preview":e==="preview"||e==="interactive"||e==="card"||e==="list"?e:"card"}function E(e){let s={};if(e.displayConfig&&(s=typeof e.displayConfig=="string"?JSON.parse(e.displayConfig):{...e.displayConfig}),s.visualizationId===void 0&&e.visualizationId&&(s.visualizationId=e.visualizationId),s.filters===void 0&&e.filters){let r=e.filters;s.filters=typeof r=="string"?JSON.parse(r):r;}return s}var v="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",C=new RegExp(`^(post|dataset|file|service|route):(${v})$`,"i"),h=new RegExp(`^asset:(${v})$`,"i"),A=new Set(["post","dataset","file","service","route"]);function I(e){let s=C.exec(e);if(s){let l=s[1].toLowerCase();return A.has(l)?{id:s[2],assetType:l,legacy:false}:null}let r=h.exec(e);return r?{id:r[1],legacy:true}:null}function x(e,s){let r;try{if(e.startsWith("/"))r=e;else {let c=new URL(e);if(s){let g=new URL(s).host;if(c.host!==g)return null}r=c.pathname;}}catch{return null}let l=r.match(/^\/(\w+)s\/([^/]+)\/([^/?#]+)/);if(!l)return null;let[,o,d,p]=l;return A.has(o)?{assetType:o,entity:decodeURIComponent(d),slug:decodeURIComponent(p)}:null}var y=e=>Array.isArray(e)?e.map(y):e!=null&&e.content?Array.isArray(e.content)?e.content.map(y).flat():y(e.content):e;function k(e,s){var g;if(!e||!(e!=null&&e.content))return {users:[],assets:[],linkedAssets:[]};let r=e.content.map(y).flat(),l=r.filter(t=>t.type==="mention").map(t=>{var n,i,f;return {user_id:(n=t.attrs)==null?void 0:n.id,username:((i=t.attrs)==null?void 0:i.label)||((f=t.attrs)==null?void 0:f.username)}}).reduce((t,n)=>(t.some(i=>i.user_id&&n.user_id&&i.user_id===n.user_id||i.username&&n.username&&i.username===n.username)||t.push(n),t),[]),o=r.filter(t=>{var n,i;return t.type==="assetComponent"&&((n=t.attrs)==null?void 0:n.id)&&!((i=t.attrs)!=null&&i.partial)}).map(({attrs:t})=>({id:t.id,assetType:t.assetType,via:"embed"})).reduce((t,n)=>(t.some(i=>i.id===n.id)||t.push(n),t),[]),d=[],p=new Set(o.map(t=>t.id)),c=new Set;for(let t of r){if((t==null?void 0:t.type)!=="text"||!(t!=null&&t.marks))continue;let n=t.marks.find(a=>a.type==="link");if(!((g=n==null?void 0:n.attrs)!=null&&g.href))continue;let i=n.attrs.href,f=I(i);if(f){let a=f.id;p.has(a)||(p.add(a),f.legacy?o.push({id:a,via:"link",legacy:true}):o.push({id:a,assetType:f.assetType,via:"link",legacy:false}));continue}let u=x(i,s==null?void 0:s.siteUrl);if(u){let a=`${u.assetType}:${u.entity}:${u.slug}`;c.has(a)||(c.add(a),d.push(u));}}return {users:l,assets:o,linkedAssets:d}}exports.a=T;exports.b=E;exports.c=I;exports.d=x;exports.e=k;//# sourceMappingURL=chunk-TUZS3DKI.cjs.map
2
- //# sourceMappingURL=chunk-TUZS3DKI.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/air/index.ts"],"names":["normalizeViewMode","raw","resolveDisplayConfig","attrs","base","UUID_RE","TYPED_ASSET_LINK_RE","LEGACY_ASSET_LINK_RE","VALID_ASSET_TYPES","parseAssetLinkShorthand","href","typed","assetType","legacy","parseOuroAssetUrl","siteUrl","pathname","url","siteHost","match","entity","slug","extractContent","item","getReferencesInContent","json","options","_a","content","users","_b","_c","unique","u","assets","linkedAssets","seenAssetIds","a","seenLinkedKeys","linkMark","m","shorthand","id","parsed","key"],"mappings":"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","file":"chunk-TUZS3DKI.cjs","sourcesContent":["import { Content } from \"../../schema/posts\";\nimport { Profile } from \"../../schema/users\";\n\nexport interface DataFilter {\n column: string;\n value: string;\n operator: string;\n active?: boolean;\n}\n\nexport interface DisplayConfig {\n /** Dataset: ID of a saved visualization to render instead of the default chart. */\n visualizationId?: string | null;\n /** Dataset: column filters applied to the data. */\n filters?: DataFilter[];\n /** Route: ID of a specific action to preview (status, logs, side-effect assets). */\n actionId?: string | null;\n /** Route: author-provided defaults for an interactive route form. */\n defaultValues?: Record<string, unknown>;\n}\n\n/**\n * Normalize legacy viewMode values to the current set.\n * \"chart\" → \"preview\", \"default\" → \"card\", anything else → \"card\".\n */\nexport function normalizeViewMode(\n raw: string | undefined | null\n): \"card\" | \"preview\" | \"interactive\" | \"list\" {\n if (raw === \"default\") return \"card\";\n if (raw === \"chart\") return \"preview\";\n if (\n raw === \"preview\" ||\n raw === \"interactive\" ||\n raw === \"card\" ||\n raw === \"list\"\n )\n return raw;\n return \"card\";\n}\n\n/**\n * Build a DisplayConfig from node/element attributes, handling the legacy\n * flat `visualizationId` / `filters` attrs and the new `displayConfig` object.\n * Prefers values inside `displayConfig` when present.\n */\nexport function resolveDisplayConfig(attrs: {\n displayConfig?: DisplayConfig | string | null;\n visualizationId?: string | null;\n filters?: DataFilter[] | string | null;\n}): DisplayConfig {\n let base: DisplayConfig = {};\n\n if (attrs.displayConfig) {\n base =\n typeof attrs.displayConfig === \"string\"\n ? JSON.parse(attrs.displayConfig)\n : { ...attrs.displayConfig };\n }\n\n // Fall back to legacy flat attrs when displayConfig doesn't carry them\n if (base.visualizationId === undefined && attrs.visualizationId) {\n base.visualizationId = attrs.visualizationId;\n }\n if (base.filters === undefined && attrs.filters) {\n const raw = attrs.filters;\n base.filters =\n typeof raw === \"string\" ? JSON.parse(raw) : raw;\n }\n\n return base;\n}\n\nexport interface InlineAssetAttrs {\n id: string;\n assetType: string;\n viewMode: \"card\" | \"preview\" | \"interactive\" | \"list\";\n displayConfig?: DisplayConfig | null;\n /** @deprecated Use displayConfig.filters */\n filters?: any;\n /** @deprecated Use displayConfig.visualizationId */\n visualizationId?: string | null;\n partial?: boolean;\n}\n\n/** Assets pulled from Air JSON: embedded blocks or link href shorthands. */\nexport type ExtractedContentAsset =\n | { id: string; assetType: string; via: \"embed\" }\n | { id: string; assetType: string; via: \"link\"; legacy: false }\n | { id: string; via: \"link\"; legacy: true };\n\ninterface LinkedAssetRef {\n assetType: string;\n entity: string;\n slug: string;\n}\n\n/** UUID v4 pattern for inline link hrefs */\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/** Shorthand link hrefs: `post:<uuid>`, `file:<uuid>`, … (preferred over legacy `asset:<uuid>`). */\nconst TYPED_ASSET_LINK_RE = new RegExp(\n `^(post|dataset|file|service|route):(${UUID_RE})$`,\n \"i\"\n);\n\n/** @deprecated Prefer `post:<uuid>` etc.; still supported and resolved server-side. */\nconst LEGACY_ASSET_LINK_RE = new RegExp(`^asset:(${UUID_RE})$`, \"i\");\n\nconst VALID_ASSET_TYPES = new Set([\n \"post\",\n \"dataset\",\n \"file\",\n \"service\",\n \"route\",\n]);\n\n/**\n * Parse an inline link `href` for Ouro asset shorthands.\n * - `post:<uuid>`, `file:<uuid>`, … → typed (asset type known from prefix)\n * - `asset:<uuid>` → legacy (type resolved via DB when creating connections)\n */\nfunction parseAssetLinkShorthand(\n href: string\n):\n | { id: string; assetType: string; legacy: false }\n | { id: string; legacy: true }\n | null {\n const typed = TYPED_ASSET_LINK_RE.exec(href);\n if (typed) {\n const assetType = typed[1].toLowerCase();\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n return { id: typed[2], assetType, legacy: false };\n }\n const legacy = LEGACY_ASSET_LINK_RE.exec(href);\n if (legacy) return { id: legacy[1], legacy: true };\n return null;\n}\n\n/**\n * Parse an Ouro site URL into its asset components.\n * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)\n * and relative paths (/posts/entity/slug).\n */\nfunction parseOuroAssetUrl(\n href: string,\n siteUrl?: string\n): LinkedAssetRef | null {\n let pathname: string;\n try {\n if (href.startsWith(\"/\")) {\n pathname = href;\n } else {\n const url = new URL(href);\n if (siteUrl) {\n const siteHost = new URL(siteUrl).host;\n if (url.host !== siteHost) return null;\n }\n pathname = url.pathname;\n }\n } catch {\n return null;\n }\n\n // Pattern: /{assetType}s/{entity}/{slug}\n const match = pathname.match(\n /^\\/(\\w+)s\\/([^/]+)\\/([^/?#]+)/\n );\n if (!match) return null;\n\n const [, assetType, entity, slug] = match;\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n\n return { assetType, entity: decodeURIComponent(entity), slug: decodeURIComponent(slug) };\n}\n\nconst extractContent = (item: any): any => {\n if (Array.isArray(item)) return item.map(extractContent);\n if (item?.content) {\n if (Array.isArray(item.content))\n return item.content.map(extractContent).flat();\n else return extractContent(item.content);\n } else return item; // leaf\n};\n\nfunction getReferencesInContent(\n json: Content[\"json\"],\n options?: { siteUrl?: string }\n) {\n if (!json || !json?.content)\n return { users: [], assets: [], linkedAssets: [] };\n const content = json.content.map(extractContent).flat();\n\n const users = content\n .filter((item: any) => item.type === \"mention\")\n .map((item: any) => ({\n user_id: item.attrs?.id,\n username: item.attrs?.label || item.attrs?.username,\n }))\n .reduce((unique: any[], item: any) => {\n if (\n !unique.some(\n (u) =>\n (u.user_id && item.user_id && u.user_id === item.user_id) ||\n (u.username && item.username && u.username === item.username)\n )\n ) {\n unique.push(item);\n }\n return unique;\n }, []) as Partial<Profile>[];\n\n const assets: ExtractedContentAsset[] = content\n .filter(\n (item: any) =>\n item.type === \"assetComponent\" && item.attrs?.id && !item.attrs?.partial\n )\n .map(({ attrs }: { attrs: InlineAssetAttrs }) => ({\n id: attrs.id,\n assetType: attrs.assetType,\n via: \"embed\" as const,\n }))\n .reduce((unique: ExtractedContentAsset[], item: ExtractedContentAsset) => {\n if (!unique.some((u) => u.id === item.id)) {\n unique.push(item);\n }\n return unique;\n }, []);\n\n // Extract asset references from link marks\n const linkedAssets: LinkedAssetRef[] = [];\n const seenAssetIds = new Set(assets.map((a) => a.id));\n const seenLinkedKeys = new Set<string>();\n\n for (const item of content) {\n if (item?.type !== \"text\" || !item?.marks) continue;\n const linkMark = item.marks.find((m: any) => m.type === \"link\");\n if (!linkMark?.attrs?.href) continue;\n\n const href: string = linkMark.attrs.href;\n\n const shorthand = parseAssetLinkShorthand(href);\n if (shorthand) {\n const id = shorthand.id;\n if (!seenAssetIds.has(id)) {\n seenAssetIds.add(id);\n if (shorthand.legacy) {\n assets.push({ id, via: \"link\", legacy: true });\n } else {\n assets.push({\n id,\n assetType: shorthand.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n continue;\n }\n\n // Check for Ouro site URLs\n const parsed = parseOuroAssetUrl(href, options?.siteUrl);\n if (parsed) {\n const key = `${parsed.assetType}:${parsed.entity}:${parsed.slug}`;\n if (!seenLinkedKeys.has(key)) {\n seenLinkedKeys.add(key);\n linkedAssets.push(parsed);\n }\n }\n }\n\n return {\n users,\n assets,\n linkedAssets,\n };\n}\n\nexport {\n getReferencesInContent,\n parseAssetLinkShorthand,\n parseOuroAssetUrl,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schema/quests.ts"],"names":["QuestTypeSchema","zodEnum","QuestStatusSchema","QuestItemStatusSchema","RewardCurrencySchema","EntryEvalStatusSchema","EntryStatusSchema","TipTapNode","object","string","optional","array","any","record","ContentSchema","literal","QuestItemBaseSchema","uuid","nullable","number","AssetTypeSchema","QuestSubmissionAssetDeclarationSchema","KeyedAssetRefsSchema","zodBoolean","QuestItemSchema","CreateQuestItemObjectSchema","CreateQuestItemSchema","union","s","QuestSpecificsSchema","QuestSchema","AssetSchema","AssetMetadataSchema","CreateQuestSchema","CreateAssetSchema","value","normalizeAssetConfigForParsing","UpdateQuestSchema","UpdateQuestItemSchema","EntrySchema","CreateEntrySchema","KeyedAssetInputSchema","ReviewEntrySchema"],"mappings":"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","file":"chunk-USO3MLKI.cjs","sourcesContent":["import {\n object,\n string,\n number,\n array,\n literal,\n record,\n type z,\n any,\n optional,\n nullable,\n union,\n uuid,\n boolean as zodBoolean,\n enum as zodEnum,\n type ZodType,\n} from \"zod\";\n\nimport {\n AssetSchema,\n AssetMetadataSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\nimport { AssetTypeSchema } from \"./common\";\nimport {\n KeyedAssetRefsSchema,\n KeyedAssetInputSchema,\n QuestSubmissionAssetDeclarationSchema,\n} from \"../utils/quest-submission\";\n\n// ── Enums ──────────────────────────────────────────────────────────────\n\n/** closable: one active entry per item per user; continuous: unlimited per item */\nconst QuestTypeSchema = zodEnum([\"closable\", \"continuous\"]);\nconst QuestStatusSchema = zodEnum([\"draft\", \"open\", \"closed\", \"cancelled\"]);\n\nconst QuestItemStatusSchema = zodEnum([\n \"pending\",\n \"in_progress\",\n \"done\",\n \"skipped\",\n]);\n\nconst RewardCurrencySchema = zodEnum([\"btc\", \"usd\"]);\n\nconst EntryEvalStatusSchema = zodEnum([\n \"skipped\",\n \"running\",\n \"passed\",\n \"failed\",\n \"errored\",\n]);\n\nconst EntryStatusSchema = zodEnum([\"submitted\", \"accepted\", \"rejected\"]);\n\n// ── Content (TipTap) ───────────────────────────────────────────────────\n// Posts/quests share the same rich description shape: { json, text }.\n// We mirror it locally here so the quest schema doesn't depend on posts.\n\nconst TipTapNode: ZodType<any> = object({\n type: string(),\n content: optional(array(any())),\n attrs: optional(record(string(), any())),\n marks: optional(array(any())),\n text: optional(string()),\n});\n\nconst ContentSchema = object({\n json: object({\n type: literal(\"doc\"),\n content: array(TipTapNode),\n }),\n text: string(),\n});\n\n// ── Quest items ────────────────────────────────────────────────────────\n\nconst QuestItemBaseSchema = object({\n id: uuid(),\n quest_id: uuid(),\n description: string(),\n status: QuestItemStatusSchema.default(\"pending\"),\n auto_skipped: optional(nullable(string().or(any()))),\n status_before_auto_skip: optional(nullable(QuestItemStatusSchema)),\n sort_order: number().default(0),\n type: string().default(\"task\"),\n created_by: uuid(),\n assignee_id: optional(nullable(uuid())),\n expected_asset_type: optional(nullable(AssetTypeSchema)),\n reward_xp: number().int().nonnegative().default(0),\n reward_currency: RewardCurrencySchema.default(\"btc\"),\n reward_amount: number().int().nonnegative().default(0),\n child_quest_id: optional(nullable(uuid())),\n eval_route_id: optional(nullable(uuid())),\n eval_score_path: optional(nullable(string())),\n eval_pass_min: optional(nullable(number())),\n eval_pass_max: optional(nullable(number())),\n submission_assets: optional(\n nullable(record(string(), QuestSubmissionAssetDeclarationSchema)),\n ),\n eval_static_inputs: optional(nullable(KeyedAssetRefsSchema)),\n notes: optional(nullable(string())),\n contributor_keys: optional(\n nullable(\n array(\n object({\n key: string(),\n required: zodBoolean().default(true),\n filters: object({\n assetType: optional(string()),\n fileType: optional(string()),\n extensions: optional(array(string())),\n hasConstraints: zodBoolean().default(false),\n }),\n }),\n ),\n ),\n ),\n created_at: string(),\n updated_at: string(),\n});\n\nconst QuestItemSchema = QuestItemBaseSchema;\n\n/**\n * Shape used by `POST /quests/create` (inline items) and\n * `POST /quests/:id/items` (batch add). The controller fills in\n * `quest_id`, `created_by`, and lifecycle-derived fields\n * (`auto_skipped`, `status_before_auto_skip`).\n *\n * Accepts a plain description string as a convenience — it's lifted\n * into `{ description }` by the `union` below.\n */\nconst CreateQuestItemObjectSchema = object({\n description: string().min(1, { message: \"Item description cannot be empty\" }),\n type: optional(string()).default(\"task\"),\n sort_order: optional(number().int()),\n assignee_id: optional(nullable(uuid())),\n expected_asset_type: optional(nullable(AssetTypeSchema)),\n reward_xp: optional(number().int().nonnegative()).default(0),\n reward_currency: optional(RewardCurrencySchema).default(\"btc\"),\n // Amount is in minor units of `reward_currency`: sats for BTC, cents\n // for USD. Both fit in JS numbers comfortably for our reward sizes;\n // the underlying column is `bigint`.\n reward_amount: optional(number().int().nonnegative()).default(0),\n child_quest_id: optional(nullable(uuid())),\n eval_route_id: optional(nullable(uuid())),\n eval_score_path: optional(nullable(string())),\n eval_pass_min: optional(nullable(number())),\n eval_pass_max: optional(nullable(number())),\n submission_assets: optional(\n nullable(record(string(), QuestSubmissionAssetDeclarationSchema)),\n ),\n eval_static_inputs: optional(nullable(KeyedAssetRefsSchema)),\n notes: optional(nullable(string())),\n});\n\nconst CreateQuestItemSchema = union([\n string().transform((s) => ({ description: s })),\n CreateQuestItemObjectSchema,\n]).pipe(CreateQuestItemObjectSchema);\n\n// ── Quest ──────────────────────────────────────────────────────────────\n\nconst QuestSpecificsSchema = object({\n type: QuestTypeSchema.default(\"closable\"),\n status: QuestStatusSchema.default(\"open\"),\n max_xp_per_contributor: optional(nullable(number().int().nonnegative())),\n closed_at: optional(nullable(string())),\n});\n\nconst QuestSchema = AssetSchema.extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n metadata: optional(nullable(AssetMetadataSchema.partial())),\n // List and detail both nest specifics under `quest`. Detail also hoists\n // full items to the top level. Progress (counts + bar segments) is always\n // top-level `progress` on list and detail responses.\n quest: optional(QuestSpecificsSchema.partial()),\n items: optional(array(QuestItemSchema.partial())),\n progress: optional(\n object({\n total: number(),\n done: number(),\n remaining: number(),\n // Lightweight per-item segments for progress bars (list + detail).\n items: optional(\n array(\n object({\n id: string(),\n status: QuestItemStatusSchema,\n waiting_on: optional(nullable(string())),\n waiting_until: optional(nullable(string())),\n waiting_check_every: optional(nullable(string())),\n }).partial()\n )\n ),\n })\n ),\n});\n\n/**\n * Schema used by the backend controller and SDK clients to validate /\n * default the body of `POST /quests/create`. Mirrors how\n * `CreatePostSchema` defaults `org_id`/`team_id` so non-frontend callers\n * don't have to know about `GLOBAL_ORG_ID`.\n *\n * The `items` field accepts either plain strings or full item objects —\n * the backend `createQuestItems`/`createQuest` paths already handle both\n * shapes, and `CreateQuestItemSchema` normalizes strings into\n * `{ description }`.\n */\nconst CreateQuestSchema = CreateAssetSchema.extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n name: optional(nullable(string())).default(null),\n description: optional(nullable(ContentSchema)),\n type: QuestTypeSchema.default(\"closable\"),\n status: QuestStatusSchema.default(\"open\"),\n max_xp_per_contributor: optional(nullable(number().int().nonnegative())),\n items: optional(array(CreateQuestItemSchema)).default([]),\n}).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateQuestSchema = QuestSchema.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 items: true,\n progress: true,\n is_pinned_in_team: true,\n })\n .extend({\n asset_type: literal(\"quest\").default(\"quest\"),\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nconst UpdateQuestItemSchema = CreateQuestItemObjectSchema.partial().extend({\n status: optional(QuestItemStatusSchema),\n});\n\n// ── Entries ────────────────────────────────────────────────────────────\n\nconst EntrySchema = object({\n id: uuid(),\n quest_id: uuid(),\n user_id: uuid(),\n item_id: optional(nullable(uuid())),\n asset_id: optional(nullable(uuid())),\n asset_type: optional(nullable(AssetTypeSchema)),\n assets: optional(nullable(KeyedAssetRefsSchema)),\n description: optional(nullable(ContentSchema)),\n review: optional(nullable(ContentSchema)),\n status: EntryStatusSchema,\n reviewer_id: optional(nullable(uuid())),\n reviewed_at: optional(nullable(string())),\n eval_action_id: optional(nullable(uuid())),\n eval_score: optional(nullable(number())),\n eval_status: optional(nullable(EntryEvalStatusSchema)),\n created_at: string(),\n updated_at: string(),\n});\n\nconst CreateEntrySchema = object({\n item_id: uuid(),\n assets: optional(nullable(KeyedAssetInputSchema)),\n description: optional(nullable(union([string(), ContentSchema]))),\n});\n\nconst ReviewEntrySchema = object({\n status: zodEnum([\"accepted\", \"rejected\"]),\n review: optional(nullable(union([string(), ContentSchema]))),\n});\n\n// ── Exports ────────────────────────────────────────────────────────────\n\nexport {\n KeyedAssetRefsSchema,\n KeyedAssetInputSchema,\n QuestSubmissionAssetDeclarationSchema,\n QuestTypeSchema,\n QuestStatusSchema,\n QuestItemStatusSchema,\n RewardCurrencySchema,\n EntryEvalStatusSchema,\n EntryStatusSchema,\n QuestSchema,\n QuestItemSchema,\n QuestItemBaseSchema,\n CreateQuestSchema,\n CreateQuestItemSchema,\n CreateQuestItemObjectSchema,\n UpdateQuestSchema,\n UpdateQuestItemSchema,\n EntrySchema,\n CreateEntrySchema,\n ReviewEntrySchema,\n};\n\nexport type QuestType = z.infer<typeof QuestTypeSchema>;\nexport type QuestStatus = z.infer<typeof QuestStatusSchema>;\nexport type QuestItemStatus = z.infer<typeof QuestItemStatusSchema>;\nexport type RewardCurrency = z.infer<typeof RewardCurrencySchema>;\nexport type EntryEvalStatus = z.infer<typeof EntryEvalStatusSchema>;\nexport type EntryStatus = z.infer<typeof EntryStatusSchema>;\nexport type Quest = z.infer<typeof QuestSchema>;\nexport type QuestItem = z.infer<typeof QuestItemSchema>;\nexport type CreateQuest = z.infer<typeof CreateQuestSchema>;\nexport type CreateQuestItem = z.infer<typeof CreateQuestItemSchema>;\nexport type UpdateQuest = z.infer<typeof UpdateQuestSchema>;\nexport type UpdateQuestItem = z.infer<typeof UpdateQuestItemSchema>;\nexport type Entry = z.infer<typeof EntrySchema>;\nexport type CreateEntry = z.infer<typeof CreateEntrySchema>;\nexport type ReviewEntry = z.infer<typeof ReviewEntrySchema>;\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkROMY5WNQ_cjs=require('./chunk-ROMY5WNQ.cjs'),chunk43KB23BA_cjs=require('./chunk-43KB23BA.cjs'),zod=require('zod');var v=zod.enum(["Personal Access Token","Ouro","None","OAuth 2.0"]),z=zod.object({authentication:v,base_url:zod.string(),version:zod.optional(zod.nullable(zod.string())),spec_path:zod.optional(zod.nullable(zod.string())),spec_url:zod.optional(zod.nullable(zod.string())),auth_url:zod.optional(zod.nullable(zod.string()))}),A=z.extend(chunkROMY5WNQ_cjs.b.partial().shape),D=chunkROMY5WNQ_cjs.c.extend({asset_type:chunk43KB23BA_cjs.a.refine(n=>n==="service"),metadata:A}),C=chunkROMY5WNQ_cjs.d.extend({asset_type:chunk43KB23BA_cjs.a.refine(n=>n==="service"),metadata:A}).transform(n=>chunkROMY5WNQ_cjs.a(n)),w=D.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:zod.string().default(()=>new Date().toISOString())}).transform(n=>chunkROMY5WNQ_cjs.a(n)),x=zod.enum(["sync","async"]),d=zod.enum(["file","dataset","post"]),R=zod.enum(["audio","video","image","pdf","3d model","atomic structure"]),T=zod.object({asset_type:d,primary:zod.optional(zod.boolean()),input_filter:zod.optional(zod.nullable(R)),file_extensions:zod.optional(zod.nullable(zod.array(zod.string()))),contains_file_extensions:zod.optional(zod.nullable(zod.array(zod.string())))}).catchall(zod.any()),O=zod.object({asset_type:d,primary:zod.optional(zod.boolean()),file_extensions:zod.optional(zod.nullable(zod.array(zod.string()))),contains_file_extensions:zod.optional(zod.nullable(zod.array(zod.string())))}).catchall(zod.any()),b=zod.record(zod.string(),T),g=zod.record(zod.string(),O),M=zod.object({id:zod.string(),user_id:zod.string(),service_id:zod.string(),path:zod.string(),method:zod.enum(["GET","POST","PUT","PATCH","DELETE"]),summary:zod.optional(zod.nullable(zod.string())),parameters:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),request_body:zod.optional(zod.nullable(zod.record(zod.string(),zod.any()))),responses:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),input_assets:zod.optional(zod.nullable(b)),input_type:zod.optional(zod.nullable(d)),input_filter:zod.optional(zod.nullable(R)),input_file_extension:zod.optional(zod.nullable(zod.string())),input_file_extensions:zod.optional(zod.nullable(zod.array(zod.string()))),output_assets:zod.optional(zod.nullable(g)),output_type:zod.optional(zod.nullable(d)),output_file_extension:zod.optional(zod.nullable(zod.string())),security:zod.optional(zod.nullable(zod.record(zod.string(),zod.any()))),rate_limit:zod.optional(zod.nullable(zod.number())),execution_mode:zod.optional(x).default("sync"),observed_execution_mode:zod.optional(zod.nullable(x)),last_updated:zod.string()}),E=zod.object({avg_ack_ms:zod.optional(zod.nullable(zod.number())),p95_ack_ms:zod.optional(zod.nullable(zod.number())),avg_completion_ms:zod.optional(zod.nullable(zod.number())),p95_completion_ms:zod.optional(zod.nullable(zod.number())),latency_sample_count:zod.optional(zod.nullable(zod.number()))}),F=chunkROMY5WNQ_cjs.c.extend({asset_type:chunk43KB23BA_cjs.a.refine(n=>n==="route"),route:M,metrics:zod.optional(zod.nullable(E))}),U=zod.object({id:zod.uuid(),user_id:zod.uuid(),route_id:zod.uuid(),metadata:zod.optional(zod.nullable(zod.record(zod.string(),zod.any()))),response:zod.optional(zod.nullable(zod.record(zod.string(),zod.any()))),side_effects:zod.boolean().default(true),input_asset_id:zod.optional(zod.nullable(zod.uuid())),output_asset_id:zod.optional(zod.nullable(zod.uuid())),input_asset:zod.optional(zod.nullable(chunkROMY5WNQ_cjs.c)),input_assets:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),output_asset:zod.optional(zod.nullable(chunkROMY5WNQ_cjs.c)),output_assets:zod.optional(zod.nullable(zod.array(zod.record(zod.string(),zod.any())))),webhook_url:zod.optional(zod.nullable(zod.string())),webhook_token:zod.optional(zod.nullable(zod.string())),status:chunk43KB23BA_cjs.j,created_at:zod.string(),last_updated:zod.string(),started_at:zod.optional(zod.nullable(zod.string())),ack_at:zod.optional(zod.nullable(zod.string())),upstream_status_code:zod.optional(zod.nullable(zod.number())),finished_at:zod.optional(zod.nullable(zod.string()))});exports.a=D;exports.b=C;exports.c=w;exports.d=x;exports.e=T;exports.f=O;exports.g=b;exports.h=g;exports.i=E;exports.j=F;exports.k=U;//# sourceMappingURL=chunk-V73EW77Y.cjs.map
2
- //# sourceMappingURL=chunk-V73EW77Y.cjs.map
@@ -1 +0,0 @@
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","RouteInputAssetDeclarationSchema","boolean","array","any","RouteOutputAssetDeclarationSchema","RouteInputAssetsSchema","record","RouteOutputAssetsSchema","RouteDetailSchema","number","RouteMetricsSchema","RouteSchema","ActionSchema","uuid","StatusSchema"],"mappings":"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","file":"chunk-V73EW77Y.cjs","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, StatusSchema } from \"./common\";\nimport {\n AssetMetadataSchema,\n AssetSchema,\n CreateAssetSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\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([\n \"audio\",\n \"video\",\n \"image\",\n \"pdf\",\n \"3d model\",\n \"atomic structure\",\n]);\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: zodEnum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"]),\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\nexport {\n RouteSchema,\n RouteInputAssetDeclarationSchema,\n RouteOutputAssetDeclarationSchema,\n RouteInputAssetsSchema,\n RouteOutputAssetsSchema,\n ServiceSchema,\n CreateServiceSchema,\n UpdateServiceSchema,\n ActionSchema,\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>;\n"]}
@@ -1,2 +0,0 @@
1
- import {b as b$1,c,d,a as a$1}from'./chunk-SR5UZ4NP.js';import {a}from'./chunk-WRHPQNEL.js';import {object,enum as _enum,uuid,string,number,record,optional,array,literal,nullable,discriminatedUnion,any}from'zod';var y=object({type:string(),size:number(),path:string(),extension:string(),name:string(),id:uuid(),bucket:_enum(["public-files","files"])}),_=_enum(["asset","action"]),x=record(string(),object({kind:_,asset_type:optional(a)})),z=record(string(),object({values:array(string())})),F=object({table_name:string(),schema:literal("datasets").default("datasets"),columns:array(string()),refs:optional(nullable(x)),enum_columns:optional(nullable(z))}),w=object({column_name:string(),data_type:string(),fk_constraint_name:optional(nullable(string())),foreign_table_schema:optional(nullable(string())),foreign_table_name:optional(nullable(string())),foreign_column_name:optional(nullable(string())),semantic_type:optional(nullable(_enum(["reference","enum"]))),ref_kind:optional(nullable(_)),asset_type:optional(nullable(a)),enum_values:optional(nullable(array(string())))}),v=object({kind:literal("asset"),id:uuid(),asset_type:a,name:nullable(string()),web_url:nullable(string())}),C=object({kind:literal("action"),id:uuid(),status:nullable(string()),route_id:nullable(uuid()),route_name:nullable(string()),name:nullable(string()),web_url:nullable(string()),created_at:nullable(string())}),b=discriminatedUnion("kind",[v,C]),M=record(string(),record(string(),b)),u=F.extend(b$1.partial().shape),g=c.extend({asset_type:literal("dataset").default("dataset"),metadata:u.extend({...y.partial().shape}),preview:array(record(string(),any()))}),K=d.extend({asset_type:literal("dataset").default("dataset"),metadata:u.extend({...y.shape}),preview:array(record(string(),any()))}).transform(m=>a$1(m)),U=d.extend({asset_type:literal("dataset").default("dataset"),metadata:u,preview:array(record(string(),any()))}).transform(m=>a$1(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:literal("dataset").default("dataset"),last_updated:string().default(()=>new Date().toISOString())}).transform(m=>a$1(m));export{_ as a,x as b,z as c,w as d,b as e,M as f,g,K as h,U as i,j};//# sourceMappingURL=chunk-WNYOQITO.js.map
2
- //# sourceMappingURL=chunk-WNYOQITO.js.map