@shumai-one/shumai-agent 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/shumai-agent-app.js +2 -2
- package/package.json +7 -7
package/bin/shumai-agent-app.js
CHANGED
|
@@ -13416,7 +13416,7 @@ The user did not explicitly mention you, but is replying in a thread where you a
|
|
|
13416
13416
|
INNER JOIN ancestor d ON d.parent_id = a.id
|
|
13417
13417
|
)
|
|
13418
13418
|
SELECT id, name, type FROM ancestor;
|
|
13419
|
-
`,U=[];for(let Z of F){if(Z.id===Q.id||Z.type==="root"||Z.type==="version_stack")continue;U.push({id:Z.id,name:Z.name})}let G=(await this.toAssetInfos([Q]))[0];if(G.ancestorFolders=U,G.media){if(G.media.imageTranscodes)for(let Z of G.media.imageTranscodes)Z.url=await yF.presign(process.env.S3_BUCKET||"shumai",Z.key,"GET");if(G.media.videoTranscodes)for(let Z of G.media.videoTranscodes)Z.url=await yF.presign(process.env.S3_BUCKET||"shumai",Z.key,"GET");if(G.media.original?.key)G.media.original.downloadUrl=await yF.presign(process.env.S3_BUCKET||"shumai",G.media.original.key,"GET")}return G}async getAssetContext(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{projectId:!0,project:{select:{teamId:!0}},teamRootFolder:{select:{id:!0}}}});if(!Q)return null;if(Q.project)return{teamId:Q.project.teamId,projectId:Q.projectId??void 0};if(Q.teamRootFolder)return{teamId:Q.teamRootFolder.id};return null}async resolveTargetAssetId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{type:!0,targetId:!0}});if(Q?.type===AF.symlink&&Q.targetId)return Q.targetId;return B}async resolveLatestVersionId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{id:!0,type:!0,targetId:!0}});if(!Q)return B;let{id:F,type:U}=Q;if(Q.type===AF.symlink&&Q.targetId){let I=await this.prismaClient.asset.findUnique({where:{id:Q.targetId},select:{id:!0,type:!0}});if(I)F=I.id,U=I.type}if(U===AF.version_stack){let I=await this.prismaClient.asset.findFirst({where:{parentId:F,isDeleted:!1},orderBy:{sortIndex:"
|
|
13419
|
+
`,U=[];for(let Z of F){if(Z.id===Q.id||Z.type==="root"||Z.type==="version_stack")continue;U.push({id:Z.id,name:Z.name})}let G=(await this.toAssetInfos([Q]))[0];if(G.ancestorFolders=U,G.media){if(G.media.imageTranscodes)for(let Z of G.media.imageTranscodes)Z.url=await yF.presign(process.env.S3_BUCKET||"shumai",Z.key,"GET");if(G.media.videoTranscodes)for(let Z of G.media.videoTranscodes)Z.url=await yF.presign(process.env.S3_BUCKET||"shumai",Z.key,"GET");if(G.media.original?.key)G.media.original.downloadUrl=await yF.presign(process.env.S3_BUCKET||"shumai",G.media.original.key,"GET")}return G}async getAssetContext(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{projectId:!0,project:{select:{teamId:!0}},teamRootFolder:{select:{id:!0}}}});if(!Q)return null;if(Q.project)return{teamId:Q.project.teamId,projectId:Q.projectId??void 0};if(Q.teamRootFolder)return{teamId:Q.teamRootFolder.id};return null}async resolveTargetAssetId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{type:!0,targetId:!0}});if(Q?.type===AF.symlink&&Q.targetId)return Q.targetId;return B}async resolveLatestVersionId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{id:!0,type:!0,targetId:!0}});if(!Q)return B;let{id:F,type:U}=Q;if(Q.type===AF.symlink&&Q.targetId){let I=await this.prismaClient.asset.findUnique({where:{id:Q.targetId},select:{id:!0,type:!0}});if(I)F=I.id,U=I.type}if(U===AF.version_stack){let I=await this.prismaClient.asset.findFirst({where:{parentId:F,isDeleted:!1},orderBy:{sortIndex:"asc"},select:{id:!0}});if(I)return I.id}return F}async updateAssetName(B){let Q=await this.prismaClient.asset.update({where:{id:B.id},data:{name:B.name},include:{creator:!0,metadataValues:!0,target:{include:{creator:!0,metadataValues:!0,storageKey:!0,children:{include:{creator:!0,metadataValues:!0,storageKey:!0},take:3,orderBy:{sortIndex:"asc"}}}},children:{include:{creator:!0,metadataValues:!0,storageKey:!0},take:3,orderBy:{sortIndex:"asc"}},storageKey:!0}});return(await this.toAssetInfos([Q]))[0]}async updateAssetOrder(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B}});if(!F)throw Error("Asset not found");let U=null,I=null;if(Q.beforeIndex)I=Q.beforeIndex,U=(await this.prismaClient.asset.findFirst({where:{parentId:F.parentId,sortIndex:{lt:Q.beforeIndex},id:{not:B}},orderBy:{sortIndex:"desc"}}))?.sortIndex||null;else if(Q.afterIndex)U=Q.afterIndex,I=(await this.prismaClient.asset.findFirst({where:{parentId:F.parentId,sortIndex:{gt:Q.afterIndex},id:{not:B}},orderBy:{sortIndex:"asc"}}))?.sortIndex||null;let G=yX(U,I);return await this.prismaClient.asset.update({where:{id:B},data:{sortIndex:G}}),this.getAsset({assetId:B})}async deleteAssets(B){for(let Q of B)await this.prismaClient.$transaction(async(F)=>{let U=await F.asset.findUnique({where:{id:Q},include:{project:{include:{team:!0}}}});if(!U)throw Error("Asset not found");if(!U.parentId)throw Error("Asset has no parent");await F.asset.update({where:{id:U.parentId},data:{fileCount:{decrement:1}}});let G=(await F.$queryRaw`
|
|
13420
13420
|
WITH RECURSIVE descendant AS (
|
|
13421
13421
|
SELECT id, parent_id FROM assets WHERE parent_id = ${U.id}
|
|
13422
13422
|
UNION ALL
|
|
@@ -13465,7 +13465,7 @@ The user did not explicitly mention you, but is replying in a thread where you a
|
|
|
13465
13465
|
WHERE a.is_deleted = false
|
|
13466
13466
|
)
|
|
13467
13467
|
SELECT id, name, type, parent_id AS "parentId", storage_key_id AS "storageKeyId", sort_index AS "sortIndex", target_id AS "targetId" FROM descendant;
|
|
13468
|
-
`,I=U.filter((J)=>J.type==="symlink"),G=[];if(I.length>0){let J=I.map((w)=>w.targetId).filter((w)=>!!w);if(J.length>0)G=(await this.prismaClient.asset.findMany({where:{id:{in:J},isDeleted:!1}})).map((M)=>({id:M.id,name:M.name,type:M.type,parentId:M.parentId,storageKeyId:M.storageKeyId,sortIndex:M.sortIndex,targetId:M.targetId}))}let W=[...U.filter((J)=>J.type!=="symlink"),...G].filter((J)=>J.type!=="folder"&&J.type!=="root"&&J.type!=="share_root"&&J.type!=="share"),g=new Set(W.filter((J)=>J.type==="version_stack").map((J)=>J.id)),V=new Map,b=[];for(let J of W){if(J.type==="version_stack")continue;if(J.parentId&&g.has(J.parentId)){let w=V.get(J.parentId)||[];w.push(J),V.set(J.parentId,w)}else b.push(J)}let X=[];for(let J of V.values())if(J.sort((w,M)=>{if(!w.sortIndex||!M.sortIndex)return 0;return w.sortIndex<M.sortIndex?-1:w.sortIndex>M.sortIndex?1:0}),J.length>0)X.push(J[0]);let C=[...b,...X],N=new Map;for(let J of C)N.set(J.id,J);let R=Array.from(N.values()),A=R.map((J)=>J.storageKeyId).filter((J)=>!!J),Y=await this.prismaClient.storageKey.findMany({where:{id:{in:A}}}),L=new Map(Y.map((J)=>[J.id,J.key]));return(await Promise.all(R.map(async(J)=>{let w=J.storageKeyId?L.get(J.storageKeyId):null;if(!w)return null;let M=await yF.presign(process.env.S3_BUCKET||"shumai",w,"GET",!0);return{id:J.id,name:J.name,url:M}}))).filter((J)=>!!J)}async getDownloadUrl(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B},select:{storageKey:{select:{key:!0}}}});if(!F?.storageKey?.key)throw Error("Asset not found or has no storage key");let U=F.storageKey.key,I=U.substring(0,U.lastIndexOf("/")+1);if(Q.includes("..")||!Q.startsWith(I))throw Error("Key does not belong to this asset");return yF.presign(process.env.S3_BUCKET||"shumai",Q,"GET",!0)}async toPreviewInfo(B){if(!B.media)return null;let Q=void 0;if(B.mediaType?.startsWith("image/")&&B.media.thumbnail?.key)Q=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.thumbnail.key,"GET");else if(B.mediaType?.startsWith("video/")&&B.media.poster?.key)Q=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.poster.key,"GET");let F=void 0;if(B.media.sprite?.key)F=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.sprite.key,"GET");return{mediaType:B.mediaType,thumbnailUrl:Q,originalHeight:B.media.metadata?.originalHeight,originalWidth:B.media.metadata?.originalWidth,spriteUrl:F}}async toCommentInfo(B){let Q=[];if("replies"in B&&B.replies)for(let Z of B.replies)Q.push(await this.toCommentInfo(Z));let F=[];if(B.attachments){for(let Z of B.attachments)if(Z.asset?.storageKey?.key){let W=await yF.presign(process.env.S3_BUCKET||"shumai",Z.asset.storageKey.key,"GET");F.push({id:Z.id,assetId:Z.asset.id,url:W,mediaType:Z.asset.mediaType})}}let U=[],I=(B.message||"").match(/<@([^>]+)>/g);if(I){let Z=I.map((g)=>g.replace("<@","").replace(">","")),W=await this.prismaClient.user.findMany({where:{id:{in:Z}}});for(let g of W)U.push({id:g.id,name:g.name,image:await MX(g.image)})}let G={id:"",name:""};if(B.sessionId)G.id=B.creatorId||"",G.name=B.creator?.name||"Ai Bot",G.image=await MX(B.creator?.image);else if(B.creator)G.id=B.creator.id,G.name=B.creator.name,G.image=await MX(B.creator.image);return{id:B.id,assetId:B.assetId,message:B.message,annotations:B.annotation,second:B.second,creator:G,replies:Q,attachments:F,mentions:U,createdAt:B.createdAt.toISOString(),updatedAt:B.updatedAt.toISOString(),sessionId:B.sessionId}}}var TX=new X2Q;function JzF(B){if(!B)return yX(null,null);return yX(B,null)}class wp{prismaClient;constructor(B=VB){this.prismaClient=B}async createVersionStack(B){let{fileIds:Q,projectId:F,creatorId:U}=B;if(!Q||Q.length===0)throw Error("no file ids provided");return await this.prismaClient.$transaction(async(I)=>{let G=await I.asset.findMany({where:{id:{in:Q}},include:{parent:!0}});if(G.length!==Q.length)throw Error("some files not found");let Z=void 0,W=0;for(let N of G){if(N.type!==AF.file)throw Error(`asset ${N.id} is not a file`);if(!N.parentId)throw Error(`file ${N.id} does not have a parent`);if(Z===void 0)Z=N.parentId;else if(N.parentId!==Z)throw Error("files do not have the same parent");W+=N.sizeByte}if(!Z)throw Error("files do not have a parent");if(!await I.asset.findUnique({where:{id:Z}}))throw Error("parent not found");let b=G.find((N)=>N.id===Q[0])?.sortIndex||null,X=await I.asset.create({data:{type:AF.version_stack,fileCount:G.length,sizeByte:W,status:"uploaded",projectId:F,creatorId:U,parentId:Z,sortIndex:b}}),C=null;for(let N of Q)C=JzF(C),await I.asset.update({where:{id:N},data:{parentId:X.id,sortIndex:C}});return await I.asset.update({where:{id:Z},data:{fileCount:{decrement:G.length-1}}}),X})}async changeStackFileVersion(B){let{stackId:Q,fileId:F,beforeId:U}=B;await this.prismaClient.$transaction(async(I)=>{let G=await I.asset.findUnique({where:{id:Q}});if(!G)throw Error("stack not found");if(G.type!==AF.version_stack)throw Error("asset is not a version stack");let Z=await I.asset.findUnique({where:{id:F}});if(!Z)throw Error("file not found");if(Z.parentId!==Q)throw Error("file is not in the stack");let W;if(U==="-1"){let g=await I.asset.findFirst({where:{parentId:Q},orderBy:{sortIndex:"desc"}});W=yX(g?.sortIndex||null,null)}else{let g=await I.asset.findUnique({where:{id:U}});if(!g)throw Error("before_id file not found");if(g.parentId!==Q)throw Error("before_id file is not in the stack");let b=(await I.asset.findFirst({where:{parentId:Q,sortIndex:{lt:g.sortIndex}},orderBy:{sortIndex:"desc"}}))?.sortIndex||null;if(b&&b>=g.sortIndex)b=null;W=yX(b,g.sortIndex)}await I.asset.update({where:{id:F},data:{sortIndex:W}})})}}var ayI=new wp;L2B();Tb();async function y5Q(B,Q){let F;if(!B.database){let U=mX(B),I=Object.keys(U).reduce((Z,W)=>{return Z[W]=[],Z},{}),{memoryAdapter:G}=await Promise.resolve().then(() => (S5Q(),w5Q));F=G(I)(B)}else if(typeof B.database==="function")F=B.database(B);else F=await Q(B);if(!F.transaction)ZF.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),F.transaction=async(U)=>{return U(F)};return F}PU();async function WEQ(B){return y5Q(B,async(Q)=>{let{createKyselyAdapter:F}=await Promise.resolve().then(() => (TAB(),MAB)),{kysely:U,databaseType:I,transaction:G}=await F(Q);if(!U)throw new OQ("Failed to initialize database adapter");let{kyselyAdapter:Z}=await Promise.resolve().then(() => (TAB(),MAB));return Z(U,{type:I||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:G})(Q)})}function gEQ(B){let Q=mX(B),F={};for(let U in Q){let I=Q[U],G=I.fields,Z={};if(Object.entries(G).forEach(([W,g])=>{if(Z[g.fieldName||W]=g,g.references){let V=Q[g.references.model];if(V)Z[g.fieldName||W].references={...g.references,model:V.modelName,field:g.references.field}}}),F[I.modelName]){F[I.modelName].fields={...F[I.modelName].fields,...Z};continue}F[I.modelName]={fields:Z,order:I.order||1/0}}return F}Tb();ea();Sk();_7();var OhF={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function chF(B,Q,F){function U(G){return G.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return B.toLowerCase().includes("json");let I=OhF[F];return(Array.isArray(Q)?I.string.map((G)=>G.toLowerCase()):I[Q].map((G)=>G.toLowerCase())).includes(U(B))}async function KhF(B){try{let Q=await TF`SHOW search_path`.execute(B),F=Q.rows[0]?.search_path??Q.rows[0]?.searchPath;if(F)return F.split(",").map((U)=>U.trim()).map((U)=>U.replace(/^["']|["']$/g,"")).filter((U)=>!U.startsWith("$")&&!U.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function VEQ(B){let Q=gEQ(B),F=JJ(B.logger),{kysely:U,databaseType:I}=await yAB(B);if(!I)F.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),I="sqlite";if(!U)F.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let G="public";if(I==="postgres"){G=await KhF(U),F.debug(`PostgreSQL migration: Using schema '${G}' (from search_path)`);try{let w=await TF`
|
|
13468
|
+
`,I=U.filter((J)=>J.type==="symlink"),G=[];if(I.length>0){let J=I.map((w)=>w.targetId).filter((w)=>!!w);if(J.length>0)G=(await this.prismaClient.asset.findMany({where:{id:{in:J},isDeleted:!1}})).map((M)=>({id:M.id,name:M.name,type:M.type,parentId:M.parentId,storageKeyId:M.storageKeyId,sortIndex:M.sortIndex,targetId:M.targetId}))}let W=[...U.filter((J)=>J.type!=="symlink"),...G].filter((J)=>J.type!=="folder"&&J.type!=="root"&&J.type!=="share_root"&&J.type!=="share"),g=new Set(W.filter((J)=>J.type==="version_stack").map((J)=>J.id)),V=new Map,b=[];for(let J of W){if(J.type==="version_stack")continue;if(J.parentId&&g.has(J.parentId)){let w=V.get(J.parentId)||[];w.push(J),V.set(J.parentId,w)}else b.push(J)}let X=[];for(let J of V.values())if(J.sort((w,M)=>{if(!w.sortIndex||!M.sortIndex)return 0;return w.sortIndex<M.sortIndex?-1:w.sortIndex>M.sortIndex?1:0}),J.length>0)X.push(J[0]);let C=[...b,...X],N=new Map;for(let J of C)N.set(J.id,J);let R=Array.from(N.values()),A=R.map((J)=>J.storageKeyId).filter((J)=>!!J),Y=await this.prismaClient.storageKey.findMany({where:{id:{in:A}}}),L=new Map(Y.map((J)=>[J.id,J.key]));return(await Promise.all(R.map(async(J)=>{let w=J.storageKeyId?L.get(J.storageKeyId):null;if(!w)return null;let M=await yF.presign(process.env.S3_BUCKET||"shumai",w,"GET",!0);return{id:J.id,name:J.name,url:M}}))).filter((J)=>!!J)}async getDownloadUrl(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B},select:{storageKey:{select:{key:!0}}}});if(!F?.storageKey?.key)throw Error("Asset not found or has no storage key");let U=F.storageKey.key,I=U.substring(0,U.lastIndexOf("/")+1);if(Q.includes("..")||!Q.startsWith(I))throw Error("Key does not belong to this asset");return yF.presign(process.env.S3_BUCKET||"shumai",Q,"GET",!0)}async toPreviewInfo(B){if(!B.media)return null;let Q=void 0;if(B.mediaType?.startsWith("image/")&&B.media.thumbnail?.key)Q=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.thumbnail.key,"GET");else if(B.mediaType?.startsWith("video/")&&B.media.poster?.key)Q=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.poster.key,"GET");let F=void 0;if(B.media.sprite?.key)F=await yF.presign(process.env.S3_BUCKET||"shumai",B.media.sprite.key,"GET");return{mediaType:B.mediaType,thumbnailUrl:Q,originalHeight:B.media.metadata?.originalHeight,originalWidth:B.media.metadata?.originalWidth,spriteUrl:F,duration:B.media.metadata?.duration}}async toCommentInfo(B){let Q=[];if("replies"in B&&B.replies)for(let Z of B.replies)Q.push(await this.toCommentInfo(Z));let F=[];if(B.attachments){for(let Z of B.attachments)if(Z.asset?.storageKey?.key){let W=await yF.presign(process.env.S3_BUCKET||"shumai",Z.asset.storageKey.key,"GET");F.push({id:Z.id,assetId:Z.asset.id,url:W,mediaType:Z.asset.mediaType})}}let U=[],I=(B.message||"").match(/<@([^>]+)>/g);if(I){let Z=I.map((g)=>g.replace("<@","").replace(">","")),W=await this.prismaClient.user.findMany({where:{id:{in:Z}}});for(let g of W)U.push({id:g.id,name:g.name,image:await MX(g.image)})}let G={id:"",name:""};if(B.sessionId)G.id=B.creatorId||"",G.name=B.creator?.name||"Ai Bot",G.image=await MX(B.creator?.image);else if(B.creator)G.id=B.creator.id,G.name=B.creator.name,G.image=await MX(B.creator.image);return{id:B.id,assetId:B.assetId,message:B.message,annotations:B.annotation,second:B.second,creator:G,replies:Q,attachments:F,mentions:U,createdAt:B.createdAt.toISOString(),updatedAt:B.updatedAt.toISOString(),sessionId:B.sessionId}}}var TX=new X2Q;function JzF(B){if(!B)return yX(null,null);return yX(B,null)}class wp{prismaClient;constructor(B=VB){this.prismaClient=B}async createVersionStack(B){let{fileIds:Q,projectId:F,creatorId:U}=B;if(!Q||Q.length===0)throw Error("no file ids provided");return await this.prismaClient.$transaction(async(I)=>{let G=await I.asset.findMany({where:{id:{in:Q}},include:{parent:!0}});if(G.length!==Q.length)throw Error("some files not found");let Z=void 0,W=0;for(let N of G){if(N.type!==AF.file)throw Error(`asset ${N.id} is not a file`);if(!N.parentId)throw Error(`file ${N.id} does not have a parent`);if(Z===void 0)Z=N.parentId;else if(N.parentId!==Z)throw Error("files do not have the same parent");W+=N.sizeByte}if(!Z)throw Error("files do not have a parent");if(!await I.asset.findUnique({where:{id:Z}}))throw Error("parent not found");let b=G.find((N)=>N.id===Q[0])?.sortIndex||null,X=await I.asset.create({data:{type:AF.version_stack,fileCount:G.length,sizeByte:W,status:"uploaded",projectId:F,creatorId:U,parentId:Z,sortIndex:b}}),C=null;for(let N of Q)C=JzF(C),await I.asset.update({where:{id:N},data:{parentId:X.id,sortIndex:C}});return await I.asset.update({where:{id:Z},data:{fileCount:{decrement:G.length-1}}}),X})}async changeStackFileVersion(B){let{stackId:Q,fileId:F,beforeId:U}=B;await this.prismaClient.$transaction(async(I)=>{let G=await I.asset.findUnique({where:{id:Q}});if(!G)throw Error("stack not found");if(G.type!==AF.version_stack)throw Error("asset is not a version stack");let Z=await I.asset.findUnique({where:{id:F}});if(!Z)throw Error("file not found");if(Z.parentId!==Q)throw Error("file is not in the stack");let W;if(U==="-1"){let g=await I.asset.findFirst({where:{parentId:Q},orderBy:{sortIndex:"desc"}});W=yX(g?.sortIndex||null,null)}else{let g=await I.asset.findUnique({where:{id:U}});if(!g)throw Error("before_id file not found");if(g.parentId!==Q)throw Error("before_id file is not in the stack");let b=(await I.asset.findFirst({where:{parentId:Q,sortIndex:{lt:g.sortIndex}},orderBy:{sortIndex:"desc"}}))?.sortIndex||null;if(b&&b>=g.sortIndex)b=null;W=yX(b,g.sortIndex)}await I.asset.update({where:{id:F},data:{sortIndex:W}})})}}var ayI=new wp;L2B();Tb();async function y5Q(B,Q){let F;if(!B.database){let U=mX(B),I=Object.keys(U).reduce((Z,W)=>{return Z[W]=[],Z},{}),{memoryAdapter:G}=await Promise.resolve().then(() => (S5Q(),w5Q));F=G(I)(B)}else if(typeof B.database==="function")F=B.database(B);else F=await Q(B);if(!F.transaction)ZF.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),F.transaction=async(U)=>{return U(F)};return F}PU();async function WEQ(B){return y5Q(B,async(Q)=>{let{createKyselyAdapter:F}=await Promise.resolve().then(() => (TAB(),MAB)),{kysely:U,databaseType:I,transaction:G}=await F(Q);if(!U)throw new OQ("Failed to initialize database adapter");let{kyselyAdapter:Z}=await Promise.resolve().then(() => (TAB(),MAB));return Z(U,{type:I||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:G})(Q)})}function gEQ(B){let Q=mX(B),F={};for(let U in Q){let I=Q[U],G=I.fields,Z={};if(Object.entries(G).forEach(([W,g])=>{if(Z[g.fieldName||W]=g,g.references){let V=Q[g.references.model];if(V)Z[g.fieldName||W].references={...g.references,model:V.modelName,field:g.references.field}}}),F[I.modelName]){F[I.modelName].fields={...F[I.modelName].fields,...Z};continue}F[I.modelName]={fields:Z,order:I.order||1/0}}return F}Tb();ea();Sk();_7();var OhF={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function chF(B,Q,F){function U(G){return G.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return B.toLowerCase().includes("json");let I=OhF[F];return(Array.isArray(Q)?I.string.map((G)=>G.toLowerCase()):I[Q].map((G)=>G.toLowerCase())).includes(U(B))}async function KhF(B){try{let Q=await TF`SHOW search_path`.execute(B),F=Q.rows[0]?.search_path??Q.rows[0]?.searchPath;if(F)return F.split(",").map((U)=>U.trim()).map((U)=>U.replace(/^["']|["']$/g,"")).filter((U)=>!U.startsWith("$")&&!U.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function VEQ(B){let Q=gEQ(B),F=JJ(B.logger),{kysely:U,databaseType:I}=await yAB(B);if(!I)F.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),I="sqlite";if(!U)F.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let G="public";if(I==="postgres"){G=await KhF(U),F.debug(`PostgreSQL migration: Using schema '${G}' (from search_path)`);try{let w=await TF`
|
|
13469
13469
|
SELECT schema_name
|
|
13470
13470
|
FROM information_schema.schemata
|
|
13471
13471
|
WHERE schema_name = ${G}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shumai-one/shumai-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "AI worker agent for the shumai media workspace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"zod": "4.4.3"
|
|
27
27
|
},
|
|
28
28
|
"optionalDependencies": {
|
|
29
|
-
"@shumai-one/shumai-agent-darwin-arm64": "0.1.
|
|
30
|
-
"@shumai-one/shumai-agent-darwin-x64": "0.1.
|
|
31
|
-
"@shumai-one/shumai-agent-linux-arm64": "0.1.
|
|
32
|
-
"@shumai-one/shumai-agent-linux-x64": "0.1.
|
|
33
|
-
"@shumai-one/shumai-agent-win32-arm64": "0.1.
|
|
34
|
-
"@shumai-one/shumai-agent-win32-x64": "0.1.
|
|
29
|
+
"@shumai-one/shumai-agent-darwin-arm64": "0.1.6",
|
|
30
|
+
"@shumai-one/shumai-agent-darwin-x64": "0.1.6",
|
|
31
|
+
"@shumai-one/shumai-agent-linux-arm64": "0.1.6",
|
|
32
|
+
"@shumai-one/shumai-agent-linux-x64": "0.1.6",
|
|
33
|
+
"@shumai-one/shumai-agent-win32-arm64": "0.1.6",
|
|
34
|
+
"@shumai-one/shumai-agent-win32-x64": "0.1.6"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|