{"locator":"npm:@open-mercato/storage-s3","path":"@open-mercato/storage-s3","npm":"@open-mercato/storage-s3","github":null,"repoPath":"open-mercato/open-mercato#main/packages/storage-s3","kind":"module","type":"official","enterprise":false,"title":"S3-Compatible Storage","summary":"Stores attachments in Amazon S3 or an S3-compatible store such as DigitalOcean Spaces, MinIO, Cloudflare R2 or B2.","whenToUse":"Use when uploaded files must live in object storage instead of the app server disk, for example with several app instances.","whenNotToUse":null,"category":"storage-infrastructure","tags":["s3","files","attachments"],"providers":[{"name":"aws-s3","label":"Amazon S3"},{"name":"digitalocean-spaces","label":"DigitalOcean Spaces"},{"name":"minio","label":"MinIO"},{"name":"cloudflare-r2","label":"Cloudflare R2"},{"name":"backblaze-b2","label":"Backblaze B2"}],"moduleIds":["storage_s3"],"requires":[],"replaces":[],"slotConflicts":[],"renamedFrom":[],"supersededBy":null,"alternatives":[],"status":"active","listed":true,"featured":false,"license":{"spdx":"MIT","kind":"osi","mismatch":false},"version":{"latest":"0.9.0","preview":null,"publishedAt":"2026-10-09","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw==","installableFrom":"2026-10-09","gitRef":null,"recommended":{"0.9":"0.9.0","0.8":null,"next":null}},"identity":{"builtFrom":"verified","claimed":false,"source":"npm"},"compat":{"builtFor":{"range":"0.9.0","kind":"exact-pin","lines":["0.8","0.9"],"ranges":{"0.9":"0.9.0","0.8":"0.8.0","next":"0.9.0"}},"lines":{"0.9":{"status":"verified","step":null,"omVersion":"0.9.0","moduleVersion":"0.9.0","at":"2026-10-29T08:29:32Z","receipt":"r_20261029_94f6ac8d2778","since":"2026-10-29","precheck":null,"patches":[]}},"verifiedOn":["0.9"],"isolation":{"0.9":{"status":"verified","step":null,"moduleVersion":"0.9.0","at":"2026-10-28T16:21:52Z","receipt":"r_20261028_03c771dc3c02"},"0.8":{"status":"verified","step":null,"moduleVersion":"0.8.0","at":"2026-10-28T16:21:52Z","receipt":"r_20261028_9f2b44c09bd4"},"next":{"status":"verified","step":null,"moduleVersion":"0.9.0","at":"2026-10-28T16:21:52Z","receipt":"r_20261028_1638974d7ed7"}}},"anatomy":{"version":"0.9.0","coverage":"full","counts":{"entities":0,"tables":0,"migrations":0,"routes":6,"publicRoutes":1,"aclFeatures":1,"eventsEmitted":0,"eventsConsumed":0,"backendPages":0,"frontendPages":0,"widgets":0,"workers":1,"cli":2,"aiTools":0,"aiAgents":0,"extends":1},"lists":{"aclFeatures":["storage_providers.manage"],"eventsEmitted":[],"eventsConsumed":[],"env":["OM_STORAGE_S3_ALLOW_INTERNAL_ENDPOINTS","LOCALSTACK_PORT","LOCALSTACK_S3_ACCESS_KEY_ID","LOCALSTACK_S3_SECRET_ACCESS_KEY"],"hosts":[],"tables":[],"publicRoutes":["PUT /api/storage-providers/s3/signed-upload/[token]"],"credentials":[{"key":"authMode","type":"select","required":false},{"key":"accessKeyId","type":"text","required":true},{"key":"secretAccessKey","type":"secret","required":true},{"key":"sessionToken","type":"secret","required":false},{"key":"region","type":"text","required":true},{"key":"bucket","type":"text","required":true},{"key":"endpoint","type":"url","required":false},{"key":"forcePathStyle","type":"boolean","required":false}],"sdks":["@aws-sdk/client-s3","@aws-sdk/s3-request-presigner"]},"callout":"ADDS 6 ROUTES (1 PUBLIC) · 1 PERMISSION","diff":{"from":"0.8.0","added":{"tables":0,"routes":0,"publicRoutes":0,"aclFeatures":0,"env":[],"hosts":[]},"removed":{"tables":0,"routes":0,"aclFeatures":0}}},"signals":{"receipt":{"0.9":"verified","0.8":"untested","next":"untested"},"fit":{"0.9":"ok","0.8":"drift","next":"drift"},"anatomy":"full","supplyChain":{"status":"ok","reasons":[]},"hygiene":{"status":"warn","failing":["peer-exact-pin"]},"maintenance":{"status":"current","lastRelease":"2026-10-09","catchUpDays":null},"declaredVsObserved":{"status":"mismatch","notes":["Built for 0.8, 0.9; verified on 0.9."]}},"tier":"verified","quality":null,"agentPolicy":{"0.9":{"decision":"allow","reasons":[{"code":"OFFICIAL_VERIFIED","text":"Official, verified on 0.9."}]},"0.8":{"decision":"ask","reasons":[{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on 0.8. In isolation (empty preset): verified on 28 Oct."}],"consentText":"Install @open-mercato/storage-s3@0.8.0"},"next":{"decision":"ask","reasons":[{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on next. In isolation (empty preset): verified on 28 Oct."}],"consentText":"Install @open-mercato/storage-s3@0.9.0"}},"install":{"cli":"yarn add @open-mercato/storage-s3@0.9.0 && echo OM_ENABLE_STORAGE_S3=true >> .env && yarn generate","cmm":null,"needsAllowThirdParty":false,"moduleFlag":null},"stats":{"downloads30d":17162,"stars":null},"sigil":{"glyph":"0200201","phase":110,"publicRoutes":true},"links":{"page":"https://modules.openmercato.com/m/@open-mercato/storage-s3","md":"https://modules.openmercato.com/m/@open-mercato/storage-s3.md","json":"https://modules.openmercato.com/m/@open-mercato/storage-s3.json","facts":"https://modules.openmercato.com/m/@open-mercato/storage-s3/v/0.9.0/facts.json","npm":"https://www.npmjs.com/package/@open-mercato/storage-s3","repo":"https://github.com/open-mercato/open-mercato","docs":"https://docs.openmercato.com/user-guide/storage-hub"},"addedAt":"2026-10-23","updatedAt":"2026-10-29T13:10:05Z","_meta":{"com.openmercato.modules/installable":{"0.9":"0.9.0","0.8":"0.8.0","next":"0.9.0"}},"facts":{"factsVersion":1,"extractor":{"engine":"@open-mercato/cli@0.9.0 extractModuleFacts","factsContractVersion":2,"catalog":"om-modules rentgen 1","durationMs":113},"package":{"locator":"npm:@open-mercato/storage-s3","name":"@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw==","source":"npm-tarball","gitRef":null},"gate":{"installable":true,"needsModuleFlag":false,"reason":null,"modules":[{"id":"storage_s3","src":true,"dist":true}]},"kind":"module","license":{"value":"MIT","kind":"osi","mismatch":false,"sources":{"packageJson":"MIT","licenseFile":null,"moduleInfo":null,"integrationTs":"MIT"}},"omPeers":{"@open-mercato/shared":"0.9.0"},"dependencies":{"@aws-sdk/client-s3":"^3.1085.0","@aws-sdk/s3-request-presigner":"^3.1085.0","@open-mercato/core":"0.9.0","@open-mercato/queue":"0.9.0"},"agentsMd":false,"readmeExcerpt":null,"modules":[{"id":"storage_s3","title":"S3-Compatible Storage","description":"Store attachments and files in AWS S3, DigitalOcean Spaces, MinIO, or any S3-compatible object storage.","requires":[],"ejectable":null,"data":{"entities":[],"migrations":{"count":0,"first":null,"last":null},"customEntities":0},"http":{"routes":[{"method":"DELETE","path":"/api/storage-providers/s3/delete","requireAuth":true,"requireFeatures":["storage_providers.manage"],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/delete/storage-providers/s3/delete.ts","line":70}},{"method":"GET","path":"/api/storage-providers/s3/download","requireAuth":true,"requireFeatures":["storage_providers.manage"],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/get/storage-providers/s3/download.ts","line":77}},{"method":"GET","path":"/api/storage-providers/s3/list","requireAuth":true,"requireFeatures":["storage_providers.manage"],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/get/storage-providers/s3/list.ts","line":118}},{"method":"PUT","path":"/api/storage-providers/s3/signed-upload/[token]","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/put/storage-providers/s3/signed-upload/[token].ts","line":136}},{"method":"POST","path":"/api/storage-providers/s3/signed-url","requireAuth":true,"requireFeatures":["storage_providers.manage"],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/post/storage-providers/s3/signed-url.ts","line":138}},{"method":"POST","path":"/api/storage-providers/s3/upload","requireAuth":true,"requireFeatures":["storage_providers.manage"],"hasOpenApi":true,"src":{"file":"src/modules/storage_s3/api/post/storage-providers/s3/upload.ts","line":225}}],"legacyRouteFiles":6,"authResolved":1},"security":{"aclFeatures":["storage_providers.manage"],"setupDefaultRoleFeatures":true},"events":{"emits":[],"subscribes":[]},"ui":{"backendPages":[],"frontendPages":[],"widgets":0,"extensionHosts":0},"background":{"workers":[{"queue":"storage-s3-quota-recovery"}],"cli":["configure-from-env","help"]},"ai":{"tools":[],"agents":[]},"config":{"credentials":[{"key":"authMode","type":"select","required":false},{"key":"accessKeyId","type":"text","required":true},{"key":"secretAccessKey","type":"secret","required":true},{"key":"sessionToken","type":"secret","required":false},{"key":"region","type":"text","required":true},{"key":"bucket","type":"text","required":true},{"key":"endpoint","type":"url","required":false},{"key":"forcePathStyle","type":"boolean","required":false}],"env":[{"name":"OM_STORAGE_S3_ALLOW_INTERNAL_ENDPOINTS","src":{"file":"src/modules/storage_s3/lib/endpoint-safety.ts","line":173}},{"name":"LOCALSTACK_PORT","src":{"file":"src/test-helpers/s3Fixtures.ts","line":10}},{"name":"LOCALSTACK_S3_ACCESS_KEY_ID","src":{"file":"src/test-helpers/s3Fixtures.ts","line":19}},{"name":"LOCALSTACK_S3_SECRET_ACCESS_KEY","src":{"file":"src/test-helpers/s3Fixtures.ts","line":20}}]},"network":{"hosts":[],"undeclared":[]},"extends":[{"kind":"specialized-registry","target":"integration:storage_s3"}],"omImports":{"@open-mercato/core":{"modules/attachments/lib/drivers":["PrepareFilePayload","ReadFileResult","StorageDriver","StoreFilePayload","StoredFile","registerExternalCredentialEnhancer","registerExternalStorageDriver"],"modules/attachments/lib/quota-service":["AttachmentQuotaService"],"modules/attachments/lib/security":["buildAttachmentContentDisposition","canRenderInlineAttachment","detectAttachmentMimeType","hasDangerousExecutableExtension","isActiveContentAttachment","sanitizeUploadedFileName"],"modules/attachments/lib/upload-limits":["isMultipartRequestWithinUploadLimit","isMultipartUploadLimitError","parseMultipartFormDataWithinUploadLimit","resolveAttachmentMaxBytes","willExceedAttachmentTenantQuota"],"modules/directory/data/entities":["Organization"],"modules/integrations/lib/credentials-service":["CredentialsService","createCredentialsService"],"modules/integrations/lib/log-service":["IntegrationLogService","createIntegrationLogService"]},"@open-mercato/queue":{".":["JobContext","QueuedJob","WorkerMeta","createModuleQueue"]},"@open-mercato/shared":{"lib/auth/server":["getAuthFromRequest"],"lib/boolean":["parseBooleanToken","parseBooleanWithDefault"],"lib/di/container":["AppContainer","createRequestContainer"],"lib/encryption/find":["findWithDecryption"],"lib/i18n/server":["resolveTranslations"],"lib/logger":["createLogger"],"lib/openapi":["OpenApiRouteDoc"],"lib/url-safety":["HostLookup","ResolvedHostAddress","UrlSafetyReason","assertSafeOutboundUrl","assertStaticallySafeOutboundUrl","parseOutboundUrl","resolveSafeOutboundUrl"],"modules/integrations/types":["IntegrationBundle","IntegrationDefinition","IntegrationScope"],"modules/registry":["ModuleCli"],"modules/setup":["ModuleSetupConfig"]}},"collisionKeys":{"moduleId":"storage_s3","tables":[],"aclFeatures":["storage_providers.manage"],"eventIds":[],"backendRoutes":[]},"publicRoutes":1,"glyph":"0200201","lint":[{"code":"peer-exact-pin","severity":"warn","message":"Peer dependencies pin Open Mercato exactly (@open-mercato/shared 0.9.0). Use a range.","anchor":"i2 §1.4","src":null},{"code":"no-agents-md","severity":"info","message":"No AGENTS.md in the package.","anchor":"g3 §3","src":null},{"code":"public-routes","severity":"info","message":"1 of 6 routes do not require authentication.","anchor":null,"src":{"file":"src/modules/storage_s3/api/put/storage-providers/s3/signed-upload/[token].ts","line":136}},{"code":"ships-tests","severity":"info","message":"The tarball ships test files.","anchor":null,"src":null},{"code":"version-drift","severity":"info","message":"integration.ts says 1.0.0, package.json says 0.9.0.","anchor":null,"src":{"file":"src/modules/storage_s3/integration.ts","line":3}}]}],"coverage":{"routesAuthResolved":1,"integrationTs":"expanded"},"diagnostics":[]},"receipts":[{"schema":1,"id":"r_20261029_94f6ac8d2778","cellKey":"94f6ac8d27784dacf4cc2ae02bc77749e5dc9e44cabba28c6e0983bc6d49eee9","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw=="},"om":{"line":"0.9","version":"0.9.0","createApp":"create-mercato-app@0.9.0","preset":"classic"},"harness":{"version":"c349007c2b5b","node":"24.21.0","yarn":"4.17.1","runner":"ubuntu-latest","mode":"realistic","patches":[]},"baseline":{"status":"verified","receipt":"r_20261029_e5f612bd10e0"},"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":3,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"pass","sec":65,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"add","status":"pass","sec":36,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"pass","sec":21,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"pass","sec":100,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"pass","sec":47,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"pass","sec":192,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"pass","sec":5,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"pass","sec":2,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"verified","failedStep":null,"alsoFailed":[],"classification":"pass","quarantineUntil":null},"transition":{"from":null,"to":"verified","confirmed":true},"run":{"id":40842502780,"attempt":1,"url":"https://github.com/open-mercato/modules/actions/runs/40842502780/job/123342271090","at":"2026-10-29T08:29:32Z","durationSec":536},"attestation":null},{"schema":1,"id":"r_20261028_5da966bc4f81","cellKey":"5da966bc4f81798244f51b07ec26b06924458b7521c2e18853ffb7f8b2f4a3aa","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.8.0","integrity":"sha512-Rowcjii4zCORQyXq13DHPEnXCt1tIATCxSRW5qpxYp6i1DfysE6u/Tzj8AYajIeIM9XJMmnAST+2JK/FZxyU1g=="},"om":{"line":"0.8","version":"0.8.0","createApp":"create-mercato-app@0.8.0","preset":"empty"},"harness":{"version":"fc8bc31aa18c","node":"24.21.0","yarn":"4.17.1","runner":"ubuntu-latest","mode":"realistic","patches":[{"id":"agent-examples-tsconfig","why":"OM 0.8.0 template type-checks its sandboxed agent example scripts (excluded in 0.9.0 by #6695)","ref":"https://github.com/open-mercato/open-mercato/pull/6695"}]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":3,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"pass","sec":51,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"add","status":"pass","sec":13,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"pass","sec":3,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"pass","sec":23,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"pass","sec":5,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"pass","sec":47,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"pass","sec":2,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"pass","sec":1,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"verified","failedStep":null,"alsoFailed":[],"classification":"pass","quarantineUntil":null},"transition":{"from":"infra-error","to":"verified","confirmed":true},"run":{"id":40723682033,"attempt":2,"url":"https://github.com/open-mercato/modules/actions/runs/40725156139/job/122946693639","at":"2026-10-28T16:21:28Z","durationSec":264},"attestation":null},{"schema":1,"id":"r_20261028_ef07e6dc02f3","cellKey":"ef07e6dc02f38d5b2c57f106ddcc8ca4d63248eb754c6203c86a3057089cd3b2","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw=="},"om":{"line":"0.9","version":"0.9.0","createApp":"create-mercato-app@0.9.0","preset":"empty"},"harness":{"version":"fc8bc31aa18c","node":"24.21.0","yarn":"4.17.1","runner":"ubuntu-latest","mode":"realistic","patches":[{"id":"api-keys","why":"OM 0.9.0 empty preset omits api_keys (fixed on main in #7473, not in release/v0.9.x)","ref":"https://github.com/open-mercato/open-mercato/pull/7473"}]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":3,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"pass","sec":73,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"add","status":"pass","sec":18,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"pass","sec":5,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"pass","sec":35,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"pass","sec":9,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"pass","sec":74,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"pass","sec":4,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"pass","sec":1,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"verified","failedStep":null,"alsoFailed":[],"classification":"pass","quarantineUntil":null},"transition":{"from":"infra-error","to":"verified","confirmed":true},"run":{"id":40723682033,"attempt":2,"url":"https://github.com/open-mercato/modules/actions/runs/40725156139/job/122946693534","at":"2026-10-28T16:21:28Z","durationSec":310},"attestation":null},{"schema":1,"id":"r_20261028_cbb26ae3317b","cellKey":"cbb26ae3317b039329eed073a59df75bd3213eccc10c639590df483a9a352c24","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw=="},"om":{"line":"next","version":"0.10.1-develop.7650.1.fc5f8d04ca","createApp":"create-mercato-app@0.10.1-develop.7650.1.fc5f8d04ca","preset":"empty"},"harness":{"version":"fc8bc31aa18c","node":"24.21.0","yarn":"4.17.1","runner":"ubuntu-latest","mode":"realistic","patches":[]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":4,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"pass","sec":55,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"add","status":"pass","sec":19,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"pass","sec":4,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"pass","sec":24,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"pass","sec":7,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"pass","sec":53,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"pass","sec":2,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"pass","sec":1,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"verified","failedStep":null,"alsoFailed":[],"classification":"pass","quarantineUntil":null},"transition":{"from":"infra-error","to":"verified","confirmed":true},"run":{"id":40723682033,"attempt":1,"url":"https://github.com/open-mercato/modules/actions/runs/40723682033/job/122941393520","at":"2026-10-28T16:12:34Z","durationSec":361},"attestation":null},{"schema":1,"id":"r_20261028_6af62a6423db","cellKey":"6af62a6423dbe1c8d6d31f1c4a62be7d9a48d735d1f10548524f7e7300902d6e","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw=="},"om":{"line":"next","version":"0.10.1-develop.7650.1.fc5f8d04ca","createApp":"create-mercato-app@0.10.1-develop.7650.1.fc5f8d04ca","preset":"empty"},"harness":{"version":"a017a6eb89cf","node":"24.21.0","yarn":"unknown","runner":"ubuntu-latest","mode":"realistic","patches":[]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":5,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"fail","sec":0,"signature":"2dc9010d83ca8598ac4f39dc327bdbabb861fb84","excerpt":"error This project's package.json defines \"packageManager\": \"yarn@4.17.1\". However the current global version of Yarn is 1.22.22.\n\nPresence of the \"packageManager\" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.\nCorepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.","file":null,"line":null},{"name":"add","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"infra-error","failedStep":"install","alsoFailed":[],"classification":"infra","quarantineUntil":null},"transition":{"from":null,"to":"infra-error","confirmed":false},"run":{"id":40722344997,"attempt":2,"url":"https://github.com/open-mercato/modules/actions/runs/40723143827/job/122939536413","at":"2026-10-28T16:09:18Z","durationSec":147},"attestation":null},{"schema":1,"id":"r_20261028_239b7cf1c2de","cellKey":"239b7cf1c2de5ef51ddc9baafb34d7ee9addfe5d22abc48c0133c3f65501f873","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.8.0","integrity":"sha512-Rowcjii4zCORQyXq13DHPEnXCt1tIATCxSRW5qpxYp6i1DfysE6u/Tzj8AYajIeIM9XJMmnAST+2JK/FZxyU1g=="},"om":{"line":"0.8","version":"0.8.0","createApp":"create-mercato-app@0.8.0","preset":"empty"},"harness":{"version":"a017a6eb89cf","node":"24.21.0","yarn":"unknown","runner":"ubuntu-latest","mode":"realistic","patches":[]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"add","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"infra-error","failedStep":null,"alsoFailed":[],"classification":"infra","quarantineUntil":null},"transition":{"from":null,"to":"infra-error","confirmed":false},"run":{"id":40722344997,"attempt":2,"url":"https://github.com/open-mercato/modules/actions/runs/40723143827/job/122939536471","at":"2026-10-28T16:09:18Z","durationSec":249},"attestation":null},{"schema":1,"id":"r_20261028_b2e28280e503","cellKey":"b2e28280e5033dfc2693507586782b2502224e5a30c01b839d820572a2d58a50","module":{"locator":"npm:@open-mercato/storage-s3","version":"0.9.0","integrity":"sha512-NUs20ShVghtlKLTcxbvOb1sRcIzxYCrmcYbH3AdeLr6pCJEt6GSX2tREzzyebWkhdsOWAxSIAadWuhcSEyZFNw=="},"om":{"line":"0.9","version":"0.9.0","createApp":"create-mercato-app@0.9.0","preset":"empty"},"harness":{"version":"a017a6eb89cf","node":"24.21.0","yarn":"unknown","runner":"ubuntu-latest","mode":"realistic","patches":[{"id":"api-keys","why":"OM 0.9.0 empty preset omits api_keys (fixed on main in #7473, not in release/v0.9.x)","ref":"https://github.com/open-mercato/open-mercato/pull/7473"}]},"baseline":null,"requiresInstalled":[],"steps":[{"name":"scaffold","status":"pass","sec":2,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"install","status":"fail","sec":0,"signature":"2dc9010d83ca8598ac4f39dc327bdbabb861fb84","excerpt":"error This project's package.json defines \"packageManager\": \"yarn@4.17.1\". However the current global version of Yarn is 1.22.22.\n\nPresence of the \"packageManager\" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.\nCorepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.","file":null,"line":null},{"name":"add","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"generate","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"typecheck","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"initialize","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"build","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"start","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null},{"name":"smoke","status":"skipped","sec":null,"signature":null,"excerpt":null,"file":null,"line":null}],"result":{"status":"infra-error","failedStep":"install","alsoFailed":[],"classification":"infra","quarantineUntil":null},"transition":{"from":null,"to":"infra-error","confirmed":false},"run":{"id":40722344997,"attempt":2,"url":"https://github.com/open-mercato/modules/actions/runs/40723143827/job/122939536436","at":"2026-10-28T16:09:18Z","durationSec":177},"attestation":null}],"rules":[{"id":"LST-1","pass":true,"detail":"Descriptor is valid."},{"id":"LST-2","pass":true,"detail":"Stable version exists and is not deprecated."},{"id":"LST-3","pass":true,"detail":"src/modules and dist/modules pair found."},{"id":"LST-4","pass":true,"detail":"License: MIT."},{"id":"LST-5","pass":true,"detail":"No known malware or open critical advisory."},{"id":"LST-6","pass":true,"detail":"Name reviewed at merge."},{"id":"VER-1","pass":true,"detail":"Receipt on 0.9: verified (0.9.0)."},{"id":"VER-2","pass":true,"detail":"Fits statically on 0.9: ok."},{"id":"VER-3","pass":true,"detail":"Supply chain: ok."},{"id":"VER-4","pass":true,"detail":"No lint errors."},{"id":"VER-5","pass":true,"detail":"No repository in the descriptor to compare."}],"maintainers":["pat-lewczuk","patryk.andrzejewski","piotrkarwatka"]}
