{"record":{"id":"0fbd937041099e97","repo":"HeyPuter/puter","slug":"not-found-0fbd93","errorCode":"not_found","errorMessage":"App not found","messagePattern":"App not found","errorType":"http","errorClass":"HttpError","httpStatus":404,"severity":"error","filePath":"src/backend/drivers/apps/AppDriver.js","lineNumber":276,"sourceCode":"        // through this explicit contract. Keeps any future caller that\n        // forwards raw input into `create` from spoofing the owner.\n        const app = await this.appStore.create(fields, {\n            ownerUserId: actor.user.id,\n            appOwner: actor.app?.id ?? null,\n        });\n        if (filetypes)\n            await this.appStore.setFiletypeAssociations(app.id, filetypes);\n\n        this.#emitAppChanged({ app, action: 'created' });\n\n        return this.#toClient(app, actor);\n    }\n\n    async read({ uid, id, params = {}, ...rest } = {}) {\n        const actor = this.#requireActor();\n        const app = await this.#resolve({ uid, id });\n        if (!app)\n            throw new HttpError(404, 'App not found', {\n                legacyCode: 'not_found',\n            });\n\n        await this.#checkReadAccess(app, actor);\n\n        // puter-js's `puter.apps.get(name, opts)` packages opts under `params`\n        // (see `make_driver_method` / `Apps.get`), so stats options live at\n        // `args.params.stats_period` rather than the top level. Accept both\n        // shapes for forward-compat with anything that still flattens.\n        const stats_period = params.stats_period ?? rest.stats_period;\n        const stats_grouping = params.stats_grouping ?? rest.stats_grouping;\n\n        const needsStats =\n            params.stats !== false && (stats_period || stats_grouping);\n\n        // Detailed period/grouping is per-app only — skip the batch cache\n        // and go straight to the live query. The default (no options) goes\n        // through the cached batched path.","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/HeyPuter/puter/blob/908ec23eda38526170322c3edf71ba45ecb1ca95/src/backend/drivers/apps/AppDriver.js#L258-L294","documentation":"Error \"App not found\" thrown in HeyPuter/puter.","triggerScenarios":"Thrown at src/backend/drivers/apps/AppDriver.js:276 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the app uid or name exists before calling the driver method.","List the user's apps to confirm the target app identifier."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"908ec23eda38526170322c3edf71ba45ecb1ca95","analyzedAt":"2026-08-12T20:53:15.911Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}