diff --git a/license_header.txt b/license_header.txt
new file mode 100644
index 000000000..9eed68dac
--- /dev/null
+++ b/license_header.txt
@@ -0,0 +1,16 @@
+Copyright (C) 2024-present Puter Technologies Inc.
+
+This file is part of Puter.
+
+Puter is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published
+by the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
diff --git a/package-lock.json b/package-lock.json
index d7ace5cb1..a4073ac26 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2318,10 +2318,6 @@
"integrity": "sha512-YhVtzz7ZA/HmuaDvzZZhhUyQWBvp3/TXeY4jULssTdLJwT+tEM4BTYHXttORX+V5auvrYinjj8dNFQnby5T82w==",
"license": "MIT"
},
- "node_modules/@heyputer/puter-wisp": {
- "resolved": "src/puter-wisp",
- "link": true
- },
"node_modules/@heyputer/puter.js": {
"resolved": "src/puter-js",
"link": true
@@ -5761,6 +5757,18 @@
"node": "^20.19.0 || >=22.12.0"
}
},
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
+ "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.1",
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
@@ -20398,6 +20406,7 @@
"src/puter-wisp": {
"name": "@heyputer/puter-wisp",
"version": "1.0.0",
+ "extraneous": true,
"license": "AGPL-3.0-only"
},
"src/putility": {
diff --git a/src/backend/clients/EventClient.js b/src/backend/clients/EventClient.js
index 85c0ac4d9..3a137d12a 100644
--- a/src/backend/clients/EventClient.js
+++ b/src/backend/clients/EventClient.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterClient } from './types';
export class EventClient extends PuterClient {
diff --git a/src/backend/clients/alarm/AlarmClient.ts b/src/backend/clients/alarm/AlarmClient.ts
index 245caaa87..e7f97d98a 100644
--- a/src/backend/clients/alarm/AlarmClient.ts
+++ b/src/backend/clients/alarm/AlarmClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { event as pdEvent } from '@pagerduty/pdjs';
import { inspect } from 'node:util';
import { createHash } from 'node:crypto';
diff --git a/src/backend/clients/database/DatabaseClient.ts b/src/backend/clients/database/DatabaseClient.ts
index 2c35acf32..41ba4ea34 100644
--- a/src/backend/clients/database/DatabaseClient.ts
+++ b/src/backend/clients/database/DatabaseClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IConfig } from '../../types';
import { PuterClient } from '../types';
diff --git a/src/backend/clients/database/MySQLDatabaseClient.ts b/src/backend/clients/database/MySQLDatabaseClient.ts
index 6b6e618c6..605afbe9e 100644
--- a/src/backend/clients/database/MySQLDatabaseClient.ts
+++ b/src/backend/clients/database/MySQLDatabaseClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { createPool, type Pool } from 'mysql2';
import { AbstractDatabaseClient, type WriteResult } from './DatabaseClient';
import { SQLBatcher } from './SQLBatcher.js';
diff --git a/src/backend/clients/database/SQLBatcher.js b/src/backend/clients/database/SQLBatcher.js
index 7e272301c..d585c4a53 100644
--- a/src/backend/clients/database/SQLBatcher.js
+++ b/src/backend/clients/database/SQLBatcher.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { metrics } from '@opentelemetry/api';
const DEFAULT_MAX_QUEUE_SIZE = 1000;
diff --git a/src/backend/clients/database/SqliteDatabaseClient.ts b/src/backend/clients/database/SqliteDatabaseClient.ts
index 00c7a5d3b..03749a81e 100644
--- a/src/backend/clients/database/SqliteDatabaseClient.ts
+++ b/src/backend/clients/database/SqliteDatabaseClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { existsSync, readFileSync } from 'fs';
import { basename, extname, join, resolve } from 'path';
import { createContext, runInContext } from 'vm';
diff --git a/src/backend/clients/database/index.ts b/src/backend/clients/database/index.ts
index 7aa4aba22..f801c4910 100644
--- a/src/backend/clients/database/index.ts
+++ b/src/backend/clients/database/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export {
AbstractDatabaseClient as DatabaseClient,
type WriteResult,
diff --git a/src/backend/clients/database/migrations/0001_create-tables.sql b/src/backend/clients/database/migrations/0001_create-tables.sql
index bb447c1b5..3b79df5f8 100644
--- a/src/backend/clients/database/migrations/0001_create-tables.sql
+++ b/src/backend/clients/database/migrations/0001_create-tables.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- drop all tables
DROP TABLE IF EXISTS `monthly_usage_counts`;
diff --git a/src/backend/clients/database/migrations/0002_add-default-apps.sql b/src/backend/clients/database/migrations/0002_add-default-apps.sql
index 20c34004b..c648ed3c1 100644
--- a/src/backend/clients/database/migrations/0002_add-default-apps.sql
+++ b/src/backend/clients/database/migrations/0002_add-default-apps.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
INSERT INTO `apps` (
`uid`,
`owner_user_id`,
diff --git a/src/backend/clients/database/migrations/0003_user-permissions.sql b/src/backend/clients/database/migrations/0003_user-permissions.sql
index 81b3aa5cc..524569841 100644
--- a/src/backend/clients/database/migrations/0003_user-permissions.sql
+++ b/src/backend/clients/database/migrations/0003_user-permissions.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `user_to_user_permissions` (
"issuer_user_id" INTEGER NOT NULL,
"holder_user_id" INTEGER NOT NULL,
diff --git a/src/backend/clients/database/migrations/0004_sessions.sql b/src/backend/clients/database/migrations/0004_sessions.sql
index a5a986acf..436590172 100644
--- a/src/backend/clients/database/migrations/0004_sessions.sql
+++ b/src/backend/clients/database/migrations/0004_sessions.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `sessions` (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"user_id" INTEGER NOT NULL,
diff --git a/src/backend/clients/database/migrations/0005_background-apps.sql b/src/backend/clients/database/migrations/0005_background-apps.sql
index cc3c2385e..57b75cafb 100644
--- a/src/backend/clients/database/migrations/0005_background-apps.sql
+++ b/src/backend/clients/database/migrations/0005_background-apps.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE apps ADD COLUMN "background" BOOLEAN DEFAULT 0;
diff --git a/src/backend/clients/database/migrations/0006_update-apps.sql b/src/backend/clients/database/migrations/0006_update-apps.sql
index 07924cd2b..129003543 100644
--- a/src/backend/clients/database/migrations/0006_update-apps.sql
+++ b/src/backend/clients/database/migrations/0006_update-apps.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- Removed terminal and phoenix built-in apps; migration intentionally left empty.
diff --git a/src/backend/clients/database/migrations/0007_sessions.sql b/src/backend/clients/database/migrations/0007_sessions.sql
index d26f397fc..d3b638cc2 100644
--- a/src/backend/clients/database/migrations/0007_sessions.sql
+++ b/src/backend/clients/database/migrations/0007_sessions.sql
@@ -1,2 +1,19 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `sessions` ADD COLUMN "created_at" INTEGER DEFAULT 0;
ALTER TABLE `sessions` ADD COLUMN "last_activity" INTEGER DEFAULT 0;
diff --git a/src/backend/clients/database/migrations/0008_otp.sql b/src/backend/clients/database/migrations/0008_otp.sql
index d5143efbc..6d0c7ad25 100644
--- a/src/backend/clients/database/migrations/0008_otp.sql
+++ b/src/backend/clients/database/migrations/0008_otp.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE user ADD COLUMN "otp_secret" TEXT DEFAULT NULL;
ALTER TABLE user ADD COLUMN "otp_enabled" TINYINT(1) DEFAULT '0';
ALTER TABLE user ADD COLUMN "otp_recovery_codes" TEXT DEFAULT NULL;
diff --git a/src/backend/clients/database/migrations/0009_app-prefix-fix.sql b/src/backend/clients/database/migrations/0009_app-prefix-fix.sql
index caa1e069e..7f0ecc929 100644
--- a/src/backend/clients/database/migrations/0009_app-prefix-fix.sql
+++ b/src/backend/clients/database/migrations/0009_app-prefix-fix.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- Phoenix app removed; no prefix fix required.
diff --git a/src/backend/clients/database/migrations/0010_add-git-app.sql b/src/backend/clients/database/migrations/0010_add-git-app.sql
index d18583bec..d6920b796 100644
--- a/src/backend/clients/database/migrations/0010_add-git-app.sql
+++ b/src/backend/clients/database/migrations/0010_add-git-app.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
INSERT INTO `apps`
(`uid`, `owner_user_id`, `icon`, `name`, `title`, `description`, `godmode`, `background`, `maximize_on_start`, `index_url`, `approved_for_listing`, `approved_for_opening_items`, `approved_for_incentive_program`, `timestamp`, `last_review`, `tags`, `app_owner`)
VALUES
diff --git a/src/backend/clients/database/migrations/0011_notification.sql b/src/backend/clients/database/migrations/0011_notification.sql
index dfed0e9d8..86421ccf3 100644
--- a/src/backend/clients/database/migrations/0011_notification.sql
+++ b/src/backend/clients/database/migrations/0011_notification.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `notification` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`user_id` INTEGER NOT NULL,
diff --git a/src/backend/clients/database/migrations/0012_appmetadata.sql b/src/backend/clients/database/migrations/0012_appmetadata.sql
index 4cada8c7e..bbbde3db0 100644
--- a/src/backend/clients/database/migrations/0012_appmetadata.sql
+++ b/src/backend/clients/database/migrations/0012_appmetadata.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE apps ADD COLUMN "metadata" JSON DEFAULT NULL;
diff --git a/src/backend/clients/database/migrations/0013_protected-apps.sql b/src/backend/clients/database/migrations/0013_protected-apps.sql
index 1f6215abe..42a67b8b6 100644
--- a/src/backend/clients/database/migrations/0013_protected-apps.sql
+++ b/src/backend/clients/database/migrations/0013_protected-apps.sql
@@ -1,2 +1,19 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE apps ADD COLUMN "protected" tinyint(1) DEFAULT '0';
ALTER TABLE subdomains ADD COLUMN "protected" tinyint(1) DEFAULT '0';
diff --git a/src/backend/clients/database/migrations/0014_share.sql b/src/backend/clients/database/migrations/0014_share.sql
index 2b1b76895..4b4e544a1 100644
--- a/src/backend/clients/database/migrations/0014_share.sql
+++ b/src/backend/clients/database/migrations/0014_share.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `share` (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"uid" TEXT NOT NULL UNIQUE,
diff --git a/src/backend/clients/database/migrations/0015_group.sql b/src/backend/clients/database/migrations/0015_group.sql
index 59ea70586..9933a5a56 100644
--- a/src/backend/clients/database/migrations/0015_group.sql
+++ b/src/backend/clients/database/migrations/0015_group.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `group` (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"uid" TEXT NOT NULL UNIQUE,
diff --git a/src/backend/clients/database/migrations/0016_group-permissions.sql b/src/backend/clients/database/migrations/0016_group-permissions.sql
index 9f897442d..061bbec2e 100644
--- a/src/backend/clients/database/migrations/0016_group-permissions.sql
+++ b/src/backend/clients/database/migrations/0016_group-permissions.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `user_to_group_permissions` (
"user_id" INTEGER NOT NULL,
"group_id" INTEGER NOT NULL,
diff --git a/src/backend/clients/database/migrations/0017_publicdirs.sql b/src/backend/clients/database/migrations/0017_publicdirs.sql
index 425ce3691..6c4acb104 100644
--- a/src/backend/clients/database/migrations/0017_publicdirs.sql
+++ b/src/backend/clients/database/migrations/0017_publicdirs.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE user ADD COLUMN
"public_uuid" CHAR(36) NULL DEFAULT NULL;
ALTER TABLE user ADD COLUMN
diff --git a/src/backend/clients/database/migrations/0018_fix-0003.sql b/src/backend/clients/database/migrations/0018_fix-0003.sql
index be3a07ee9..3487ef198 100644
--- a/src/backend/clients/database/migrations/0018_fix-0003.sql
+++ b/src/backend/clients/database/migrations/0018_fix-0003.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `audit_user_to_user_permissions_new` (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
diff --git a/src/backend/clients/database/migrations/0019_fix-0016.sql b/src/backend/clients/database/migrations/0019_fix-0016.sql
index 52624d6c2..c73dfd839 100644
--- a/src/backend/clients/database/migrations/0019_fix-0016.sql
+++ b/src/backend/clients/database/migrations/0019_fix-0016.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `audit_user_to_group_permissions_new` (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
diff --git a/src/backend/clients/database/migrations/0020_dev-center.sql b/src/backend/clients/database/migrations/0020_dev-center.sql
index b82c0606a..8230c6638 100644
--- a/src/backend/clients/database/migrations/0020_dev-center.sql
+++ b/src/backend/clients/database/migrations/0020_dev-center.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
INSERT INTO `apps` (
`uid`,
`owner_user_id`,
diff --git a/src/backend/clients/database/migrations/0021_app-owner-id.sql b/src/backend/clients/database/migrations/0021_app-owner-id.sql
index 36196a96f..59340b03f 100644
--- a/src/backend/clients/database/migrations/0021_app-owner-id.sql
+++ b/src/backend/clients/database/migrations/0021_app-owner-id.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- fixing owner IDs for default apps;
-- they should all be owned by 'default_user'
diff --git a/src/backend/clients/database/migrations/0022_dev-center-max.sql b/src/backend/clients/database/migrations/0022_dev-center-max.sql
index 8aec8354d..7aeac3aeb 100644
--- a/src/backend/clients/database/migrations/0022_dev-center-max.sql
+++ b/src/backend/clients/database/migrations/0022_dev-center-max.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- fixing owner IDs for default apps;
-- they should all be owned by 'default_user'
diff --git a/src/backend/clients/database/migrations/0023_fix-kv.sql b/src/backend/clients/database/migrations/0023_fix-kv.sql
index 9d76e6d0d..5d75f0068 100644
--- a/src/backend/clients/database/migrations/0023_fix-kv.sql
+++ b/src/backend/clients/database/migrations/0023_fix-kv.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `new_kv` (
`id` INTEGER PRIMARY KEY,
`app` char(40) DEFAULT NULL,
diff --git a/src/backend/clients/database/migrations/0024_default-groups.sql b/src/backend/clients/database/migrations/0024_default-groups.sql
index e496eb0bc..613e7de06 100644
--- a/src/backend/clients/database/migrations/0024_default-groups.sql
+++ b/src/backend/clients/database/migrations/0024_default-groups.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
INSERT INTO `group` (
`uid`,
`owner_user_id`,
diff --git a/src/backend/clients/database/migrations/0028_clean-email.sql b/src/backend/clients/database/migrations/0028_clean-email.sql
index 4a08d75fc..5d42f094a 100644
--- a/src/backend/clients/database/migrations/0028_clean-email.sql
+++ b/src/backend/clients/database/migrations/0028_clean-email.sql
@@ -1,2 +1,19 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `user` ADD COLUMN `clean_email` varchar(256) DEFAULT NULL;
CREATE INDEX idx_user_clean_email ON `user` (`clean_email`);
diff --git a/src/backend/clients/database/migrations/0029_emulator_priv.sql b/src/backend/clients/database/migrations/0029_emulator_priv.sql
index ce16d0108..40c513a9a 100644
--- a/src/backend/clients/database/migrations/0029_emulator_priv.sql
+++ b/src/backend/clients/database/migrations/0029_emulator_priv.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
UPDATE apps SET godmode = 1 WHERE name = 'puter-linux';
diff --git a/src/backend/clients/database/migrations/0030_comments.sql b/src/backend/clients/database/migrations/0030_comments.sql
index 238572b24..cef238db7 100644
--- a/src/backend/clients/database/migrations/0030_comments.sql
+++ b/src/backend/clients/database/migrations/0030_comments.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `user_comments` (
`id` INTEGER PRIMARY KEY,
`uid` TEXT NOT NULL UNIQUE,
diff --git a/src/backend/clients/database/migrations/0031_audit-meta.sql b/src/backend/clients/database/migrations/0031_audit-meta.sql
index 7b0e0a55b..d50d95a23 100644
--- a/src/backend/clients/database/migrations/0031_audit-meta.sql
+++ b/src/backend/clients/database/migrations/0031_audit-meta.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `user` ADD COLUMN `audit_metadata` JSON DEFAULT NULL;
\ No newline at end of file
diff --git a/src/backend/clients/database/migrations/0032_signup_metadata.sql b/src/backend/clients/database/migrations/0032_signup_metadata.sql
index c7b6a8e78..4c13303a1 100644
--- a/src/backend/clients/database/migrations/0032_signup_metadata.sql
+++ b/src/backend/clients/database/migrations/0032_signup_metadata.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- Store IP and request data as TEXT (for JSON strings)
ALTER TABLE `user` ADD COLUMN `signup_ip` TEXT DEFAULT NULL;
ALTER TABLE `user` ADD COLUMN `signup_ip_forwarded` TEXT DEFAULT NULL;
diff --git a/src/backend/clients/database/migrations/0033_ai-usage.sql b/src/backend/clients/database/migrations/0033_ai-usage.sql
index c3521c859..f2b56ba6d 100644
--- a/src/backend/clients/database/migrations/0033_ai-usage.sql
+++ b/src/backend/clients/database/migrations/0033_ai-usage.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `ai_usage` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`user_id` INTEGER NOT NULL,
diff --git a/src/backend/clients/database/migrations/0034_app-redirect.sql b/src/backend/clients/database/migrations/0034_app-redirect.sql
index 651be6c06..4e81da1cb 100644
--- a/src/backend/clients/database/migrations/0034_app-redirect.sql
+++ b/src/backend/clients/database/migrations/0034_app-redirect.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `old_app_names` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`app_uid` char(40) NOT NULL,
diff --git a/src/backend/clients/database/migrations/0035_threads.sql b/src/backend/clients/database/migrations/0035_threads.sql
index c0d7fc1cd..b45f24a38 100644
--- a/src/backend/clients/database/migrations/0035_threads.sql
+++ b/src/backend/clients/database/migrations/0035_threads.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `thread` (
`id` INTEGER PRIMARY KEY,
`uid` TEXT NOT NULL UNIQUE,
diff --git a/src/backend/clients/database/migrations/0036_dev-to-app.sql b/src/backend/clients/database/migrations/0036_dev-to-app.sql
index 6ccfaded5..24e417eef 100644
--- a/src/backend/clients/database/migrations/0036_dev-to-app.sql
+++ b/src/backend/clients/database/migrations/0036_dev-to-app.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `dev_to_app_permissions` (
`user_id` int(10) NOT NULL,
`app_id` int(10) NOT NULL,
diff --git a/src/backend/clients/database/migrations/0037_cost.sql b/src/backend/clients/database/migrations/0037_cost.sql
index 8204cf4c3..8d21b2a7e 100644
--- a/src/backend/clients/database/migrations/0037_cost.sql
+++ b/src/backend/clients/database/migrations/0037_cost.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
CREATE TABLE `per_user_credit` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`user_id` INTEGER NOT NULL UNIQUE,
diff --git a/src/backend/clients/database/migrations/0038_custom-domains.sql b/src/backend/clients/database/migrations/0038_custom-domains.sql
index 04df78f10..7eda720fd 100644
--- a/src/backend/clients/database/migrations/0038_custom-domains.sql
+++ b/src/backend/clients/database/migrations/0038_custom-domains.sql
@@ -1,2 +1,19 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `subdomains` ADD COLUMN `domain` varchar(256) DEFAULT NULL;
-- reminder: add index
\ No newline at end of file
diff --git a/src/backend/clients/database/migrations/0039_add-expireAt-to-kv-store.sql b/src/backend/clients/database/migrations/0039_add-expireAt-to-kv-store.sql
index 1eb4ce671..906921402 100644
--- a/src/backend/clients/database/migrations/0039_add-expireAt-to-kv-store.sql
+++ b/src/backend/clients/database/migrations/0039_add-expireAt-to-kv-store.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `kv` ADD COLUMN `expireAt` TIMESTAMP DEFAULT NULL;
\ No newline at end of file
diff --git a/src/backend/clients/database/migrations/0040_add_user_metadata.sql b/src/backend/clients/database/migrations/0040_add_user_metadata.sql
index cbe94cb5c..69853ada4 100644
--- a/src/backend/clients/database/migrations/0040_add_user_metadata.sql
+++ b/src/backend/clients/database/migrations/0040_add_user_metadata.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `user` ADD COLUMN `metadata` JSON DEFAULT '{}';
\ No newline at end of file
diff --git a/src/backend/clients/database/migrations/0041_add_unique_constraint_user_uuid.sql b/src/backend/clients/database/migrations/0041_add_unique_constraint_user_uuid.sql
index b412b534c..db6544b2d 100644
--- a/src/backend/clients/database/migrations/0041_add_unique_constraint_user_uuid.sql
+++ b/src/backend/clients/database/migrations/0041_add_unique_constraint_user_uuid.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- Add UNIQUE constraint to user.uuid column to support foreign key references
-- This is required for the foreign key in _extension_purchased_items table
-- which references "user"."uuid"
diff --git a/src/backend/clients/database/migrations/0042_add_cloudflare_d1.sql b/src/backend/clients/database/migrations/0042_add_cloudflare_d1.sql
index 9611bdecd..dc6196277 100644
--- a/src/backend/clients/database/migrations/0042_add_cloudflare_d1.sql
+++ b/src/backend/clients/database/migrations/0042_add_cloudflare_d1.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE `subdomains` ADD COLUMN `database_id` varchar(40) DEFAULT NULL;
\ No newline at end of file
diff --git a/src/backend/clients/database/migrations/0043_add_dt.sql b/src/backend/clients/database/migrations/0043_add_dt.sql
index 36fece5b7..ddc8949d3 100644
--- a/src/backend/clients/database/migrations/0043_add_dt.sql
+++ b/src/backend/clients/database/migrations/0043_add_dt.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
PRAGMA foreign_keys = OFF;
CREATE TABLE user_to_app_permissions_new (
diff --git a/src/backend/clients/database/migrations/0044_dev-center-godmode.sql b/src/backend/clients/database/migrations/0044_dev-center-godmode.sql
index 2fc8385b7..ade14600d 100644
--- a/src/backend/clients/database/migrations/0044_dev-center-godmode.sql
+++ b/src/backend/clients/database/migrations/0044_dev-center-godmode.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- Enable godmode for dev-center app to allow launching editor with file_paths
-- This fixes issue #2218 where worker files couldn't be opened from DEV Center
diff --git a/src/backend/clients/database/migrations/0045_user_oidc_providers.sql b/src/backend/clients/database/migrations/0045_user_oidc_providers.sql
index b8cc6d8a6..d958e3cd1 100644
--- a/src/backend/clients/database/migrations/0045_user_oidc_providers.sql
+++ b/src/backend/clients/database/migrations/0045_user_oidc_providers.sql
@@ -1,3 +1,20 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
-- OIDC/OAuth2: link user accounts to identity providers (e.g. Google)
-- Used for "Sign in with Google" login and signup
diff --git a/src/backend/clients/database/migrations/0046_is-private-apps.sql b/src/backend/clients/database/migrations/0046_is-private-apps.sql
index e79069509..258017fa0 100644
--- a/src/backend/clients/database/migrations/0046_is-private-apps.sql
+++ b/src/backend/clients/database/migrations/0046_is-private-apps.sql
@@ -1 +1,18 @@
+-- Copyright (C) 2024-present Puter Technologies Inc.
+--
+-- This file is part of Puter.
+--
+-- Puter is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published
+-- by the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see .
+
ALTER TABLE apps ADD COLUMN "is_private" tinyint(1) DEFAULT '0';
diff --git a/src/backend/clients/dynamodb/DDBClient.ts b/src/backend/clients/dynamodb/DDBClient.ts
index 9302e40e1..ddaf5b7b9 100644
--- a/src/backend/clients/dynamodb/DDBClient.ts
+++ b/src/backend/clients/dynamodb/DDBClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
CreateTableCommand,
CreateTableCommandInput,
diff --git a/src/backend/clients/email/EmailClient.ts b/src/backend/clients/email/EmailClient.ts
index a6449803b..cd3437eae 100644
--- a/src/backend/clients/email/EmailClient.ts
+++ b/src/backend/clients/email/EmailClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import dedent from 'dedent';
import handlebars, { template } from 'handlebars';
import nodemailer from 'nodemailer';
diff --git a/src/backend/clients/email/templates.ts b/src/backend/clients/email/templates.ts
index c1110b46c..1b09e8874 100644
--- a/src/backend/clients/email/templates.ts
+++ b/src/backend/clients/email/templates.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Email template definitions. Keys are the template names; values are
* the Handlebars-compilable `subject` and `html` strings.
diff --git a/src/backend/clients/index.ts b/src/backend/clients/index.ts
index e72f67371..d600c3812 100644
--- a/src/backend/clients/index.ts
+++ b/src/backend/clients/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { AlarmClient } from './alarm/AlarmClient';
import { DatabaseClientFactory } from './database';
import { EmailClient } from './email/EmailClient';
diff --git a/src/backend/clients/redis/RedisClient.ts b/src/backend/clients/redis/RedisClient.ts
index 650456915..e40977fe2 100644
--- a/src/backend/clients/redis/RedisClient.ts
+++ b/src/backend/clients/redis/RedisClient.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Redis, { Cluster } from 'ioredis';
import MockRedis from 'ioredis-mock';
import type { IConfig, WithLifecycle } from '../../types';
diff --git a/src/backend/clients/s3/S3Client.ts b/src/backend/clients/s3/S3Client.ts
index a8d5f8d8c..005554f8e 100644
--- a/src/backend/clients/s3/S3Client.ts
+++ b/src/backend/clients/s3/S3Client.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
AbortMultipartUploadCommand,
CompleteMultipartUploadCommand,
diff --git a/src/backend/clients/types.ts b/src/backend/clients/types.ts
index 79c1d3ad2..b5c9acca3 100644
--- a/src/backend/clients/types.ts
+++ b/src/backend/clients/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IConfig, WithLifecycle } from '../types';
export interface IPuterClient {
diff --git a/src/backend/controllers/apps/AppController.js b/src/backend/controllers/apps/AppController.js
index 68dd19c5d..36f055ad3 100644
--- a/src/backend/controllers/apps/AppController.js
+++ b/src/backend/controllers/apps/AppController.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../../core/http/HttpError.js';
import { driversContainers } from '../../exports.js';
import {
diff --git a/src/backend/controllers/apps/default-app-icon.js b/src/backend/controllers/apps/default-app-icon.js
index fd3cf39ec..67fd0c4f8 100644
--- a/src/backend/controllers/apps/default-app-icon.js
+++ b/src/backend/controllers/apps/default-app-icon.js
@@ -1 +1,20 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export default 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNDgiCiAgIGhlaWdodD0iNDgiCiAgIGlkPSJzdmc2NjQ5IgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczY2NTEiPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQxMjEzMDMiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NjQiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wMDU5MTg0LDAsMCwwLjg1NzEwOTk5LC0wLjEyNzgyMjg3LDguMTA2NDc1MSkiCiAgICAgICB4MT0iMjUuMDg2MDM5IgogICAgICAgeTE9Ii0xLjM2MjM2OTEiCiAgICAgICB4Mj0iMjUuMDg2MDM5IgogICAgICAgeTI9IjE4LjI5OTMzNCIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTIxMzAzIj4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTUiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMjM1Mjk0MTIiCiAgICAgICAgIG9mZnNldD0iMC4xMTQxOTQ2OCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTkiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMTU2ODYyNzUiCiAgICAgICAgIG9mZnNldD0iMC45Mzg5NjU5OCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEzMDEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMzkyMTU2ODciCiAgICAgICAgIG9mZnNldD0iMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDM5MjQtMi0yLTUtOCIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDEyMTc2MCIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAwMDAwMDMsMCwwLDAuODM3ODM4MTMsLTEuMjQ4MTQ2ZS01LDcuODkxODg1MykiCiAgICAgICB4MT0iMjMuOTk5OTkiCiAgICAgICB5MT0iNi4wNDQ1Mjc1IgogICAgICAgeDI9IjIzLjk5OTk5IgogICAgICAgeTI9IjQxLjc2MzIyMiIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MzkyNC0yLTItNS04Ij4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTI2LTktNC05LTYiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTI4LTktOC02LTUiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMjM1Mjk0MTIiCiAgICAgICAgIG9mZnNldD0iMC4wOTMwMjMyNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTMwLTMtNS0xLTciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMTU2ODYyNzUiCiAgICAgICAgIG9mZnNldD0iMC45MDY5NzY3IiAvPgogICAgICA8c3RvcAogICAgICAgICBpZD0ic3RvcDM5MzItOC0wLTQtOCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I2ZmZmZmZjtzdG9wLW9wYWNpdHk6MC4zOTIxNTY4NyIKICAgICAgICAgb2Zmc2V0PSIxIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeGxpbms6aHJlZj0iI2QiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4yMTIyOTAzLDAsMCwxLjExNDU1MTQsLTQuNDk5OTAzLC0yLjc2MTI1MzMpIgogICAgICAgeDE9IjIzLjQ1MiIKICAgICAgIHkxPSIzMC41NTUiCiAgICAgICB4Mj0iNDMuMDA3IgogICAgICAgeTI9IjQ1LjkzMzk5OCIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImQiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3A2NSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdG9wLWNvbG9yPSIjZmZmIgogICAgICAgICBzdG9wLW9wYWNpdHk9IjAiCiAgICAgICAgIGlkPSJzdG9wNjciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQxMDYzMDUiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NTYiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4yMTk2MzY1LDAsMCwxLjMyMDM3MDgsNDAuNzg1OTE1LC0xMy4zMzg3NDQpIgogICAgICAgeDE9Ii01Ljg4NzAzMzUiCiAgICAgICB5MT0iMTkuMzQxOTE1IgogICAgICAgeDI9Ii01Ljg4NzAzMzUiCiAgICAgICB5Mj0iNDMuMzc1NzQ4IiAvPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMDYzMDUiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9IiNkYWMxOTciCiAgICAgICAgIGlkPSJzdG9wMTA2MzAxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojZTdjNTkxO3N0b3Atb3BhY2l0eToxIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3AtY29sb3I9IiNiMTk5NzQiCiAgICAgICAgIGlkPSJzdG9wMTA2MzAzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojY2ZhMjVlO3N0b3Atb3BhY2l0eToxIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50MTA2MzA1IgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTcwMyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjIxOTYzNjUsMCwwLDEuMzE1NDE2NSw0MC44MDAzMzgsLTEyLjk4MzQyMikiCiAgICAgICB4MT0iLTUuODg3MDMzNSIKICAgICAgIHkxPSIxMS40ODI5NzgiCiAgICAgICB4Mj0iLTUuODg3MDMzNSIKICAgICAgIHkyPSIyMi4xNDg4NjUiIC8+CiAgICA8cmFkaWFsR3JhZGllbnQKICAgICAgIGN4PSI1IgogICAgICAgY3k9IjQxLjUiCiAgICAgICBmeD0iNSIKICAgICAgIGZ5PSI0MS41IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAwMjg4NzEsMCwwLDEuNiwtMTguMTY3MTM4LC0xMTEuOTgyODkpIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4bGluazpocmVmPSIjZyIKICAgICAgIGlkPSJrLTAtNy0zLTktMyIKICAgICAgIHI9IjUiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJnIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBpZD0ic3RvcDEzIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3AxNSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHhsaW5rOmhyZWY9IiNoIgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTIxNzU0IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDIuMTMwNDMzMiwwLDAsMS40NTQ1NSwtODcuNzE5MDE4LC0xMy4zMjcxMSkiCiAgICAgICB4MT0iMTcuNTU0MDAxIgogICAgICAgeTE9IjQ2IgogICAgICAgeDI9IjE3LjU1NDAwMSIKICAgICAgIHkyPSIzNSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImgiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3A1NCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIuNSIKICAgICAgICAgaWQ9InN0b3A1NiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdG9wLW9wYWNpdHk9IjAiCiAgICAgICAgIGlkPSJzdG9wNTgiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50CiAgICAgICBjeD0iNSIKICAgICAgIGN5PSI0MS41IgogICAgICAgZng9IjUiCiAgICAgICBmeT0iNDEuNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wMDI4ODcxLDAsMCwxLjYsNTcuMTM5MDQ4LC0xMTEuOTgyODkpIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4bGluazpocmVmPSIjZyIKICAgICAgIGlkPSJpLTYtOS03LTgtOSIKICAgICAgIHI9IjUiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeGxpbms6aHJlZj0iI2MtMyIKICAgICAgIGlkPSJuIgogICAgICAgeDE9IjI2IgogICAgICAgeDI9IjI2IgogICAgICAgeTE9IjIyIgogICAgICAgeTI9IjgiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTMpIiAvPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iYy0zIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdG9wLWNvbG9yPSIjZmZmIgogICAgICAgICBpZD0ic3RvcDM2LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC40MjgxODMwNSIKICAgICAgICAgc3RvcC1jb2xvcj0iI2ZmZiIKICAgICAgICAgaWQ9InN0b3AzOC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNTAwOTMzMTciCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iLjY0MyIKICAgICAgICAgaWQ9InN0b3A0MC01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iLjM5MSIKICAgICAgICAgaWQ9InN0b3A0Mi0zIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNjY1NCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpZD0iZzEyMTAiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MTE4NjQzOCwwLDAsMC43NSw1MC44MDQ1NjIsNi44MTI4MzI4KSIKICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjEuMzY4NTgiPgogICAgPHJlY3QKICAgICAgIGZpbGw9InVybCgjaSkiCiAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgb3BhY2l0eT0iMC40IgogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgtMSkiCiAgICAgICB3aWR0aD0iNSIKICAgICAgIHg9IjYyLjE1NDAzIgogICAgICAgeT0iLTUzLjU4Mjg5IgogICAgICAgaWQ9InJlY3Q3Ny05LTkwLTItNy04IgogICAgICAgc3R5bGU9ImZpbGw6dXJsKCNpLTYtOS03LTgtOSk7c3Ryb2tlLXdpZHRoOjEuMzY4NTgiIC8+CiAgICA8cmVjdAogICAgICAgZmlsbD0idXJsKCNqKSIKICAgICAgIGhlaWdodD0iMTYiCiAgICAgICBvcGFjaXR5PSIwLjQiCiAgICAgICB3aWR0aD0iNDkiCiAgICAgICB4PSItNjIuMTU0MDMiCiAgICAgICB5PSIzNy41ODI4OSIKICAgICAgIGlkPSJyZWN0NzktNy0yLTAtMS00IgogICAgICAgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc1NCk7c3Ryb2tlLXdpZHRoOjEuMzY4NTgiIC8+CiAgICA8cmVjdAogICAgICAgZmlsbD0idXJsKCNrKSIKICAgICAgIGhlaWdodD0iMTYiCiAgICAgICBvcGFjaXR5PSIwLjQiCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEsLTEpIgogICAgICAgd2lkdGg9IjUiCiAgICAgICB4PSItMTMuMTU0MDI4IgogICAgICAgeT0iLTUzLjU4Mjg5IgogICAgICAgaWQ9InJlY3Q4MS0zLTgtNi03LTgiCiAgICAgICBzdHlsZT0iZmlsbDp1cmwoI2stMC03LTMtOS0zKTtzdHJva2Utd2lkdGg6MS4zNjg1OCIgLz4KICA8L2c+CiAgPHBhdGgKICAgICBpZD0icmVjdDU1MDUtMjEtMS01LTAtNi01LTEtMi01LTEwIgogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50MTcwMyk7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC4zOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDExLjU5MDkyMyw1LjUgQyA5LjIzMzkwNSw1LjUgOC4yOTM2NSw2Ljg5NjUxODMgNy4zMzYzNzgsOS4wNTgwMjUyIDYuNjAyNjI1LDEwLjcxMDQ1NyA1Ljc0ODksMTIuNDIwMTYyIDUuMDcwNjEzLDE0LjAzOTI2IDQuNzA5ODY5LDE0LjY2Njk5NCA0LjUwMDAxNCwxNS4zOTQ1MDYgNC41MDAwMTQsMTYuMTc0MDc1IGggMzkuMDAwMDAzIGMgMCwtMC43Nzk1NjkgLTAuMjA5ODU1LC0xLjUwNzA4MSAtMC41NzA1OTgsLTIuMTM0ODE1IEMgNDIuMjMyNzQ0LDEyLjQyODM2MSA0MS40MTc5MiwxMC43MDExOTIgNDAuNjYzNjUzLDkuMDU4MDI1MiAzOS42NzczNzksNi45MDk2ODc3IDM4Ljc2NjEyNiw1LjUgMzYuNDA5MTA4LDUuNSBaIiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItMyIKICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc1Nik7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC4zOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDguNzU0NTQ1LDEyIEMgNi45ODE4MTgsMTIgNC41LDEzLjU1NjQ1NyA0LjUsMTcuMzU3MTM5IHYgMjIuODU3MTI2IGMgMCwwLjE4MDAwMiAwLjAxNDU0LDAuMzU2MjQ0IDAuMDM2MDIsMC41MzAxMzQgMC4wMDUsMC4wNDAzMiAwLjAxMTk4LDAuMDgwMDEgMC4wMTgwMSwwLjExOTk3NiAwLjAyMTQyLDAuMTQwNDQzIDAuMDQ4NSwwLjI3ODg0MyAwLjA4MzEsMC40MTQzNDIgMC4wMDg5LDAuMDM0OTcgMC4wMTY2NywwLjA3MDAyIDAuMDI2MzEsMC4xMDQ2MzEgMC4wOTcxMywwLjM0MzgzNyAwLjIzMzc3MywwLjY3MDg5OCAwLjQwNzE3NCwwLjk3Mzc3MiA1LjFlLTQsOS4yOWUtNCA3LjA5ZS00LDAuMDAxOCAwLjAwMTQsMC4wMDI4IDAuNzM0MTUsMS4yODAyNTkgMi4xMDM0MTksMi4xNDAwNyAzLjY4MjUxNSwyLjE0MDA3IGggMzAuNDkwOTEyIGMgMS41NzkwOTYsMCAyLjk0ODM2NSwtMC44NTk4MTEgMy42ODI1NjUsLTIuMTQwMDY2IDMuOTZlLTQsLTkuMjllLTQgNy4wOWUtNCwtMC4wMDE5IDAuMDAxNCwtMC4wMDI4IDAuMTczNDAxLC0wLjMwMjg3NCAwLjMxMDA1LC0wLjYyOTkzNSAwLjQwNzE3NSwtMC45NzM3NzIgMC4wMDk2LC0wLjAzNDYxIDAuMDE3NTIsLTAuMDY5NjYgMC4wMjYzMSwtMC4xMDQ2MzEgMC4wMzQ2LC0wLjEzNTQ5OSAwLjA2MTY5LC0wLjI3Mzg5OCAwLjA4MzEsLTAuNDE0MzQxIDAuMDA1NywtMC4wMzk5NyAwLjAxMzEyLC0wLjA3OTY1IDAuMDE4MDEsLTAuMTE5OTc3IDAuMDIxNDksLTAuMTczODk0IDAuMDM1OTYsLTAuMzUwMTM2IDAuMDM1OTYsLTAuNTMwMTM4IFYgMTcuNzE0MjgyIGMgMCwtMi42NzU0NzUgLTEuMDYzNjM3LC01LjcxNDI4MSAtNC4yNTQ1NDYsLTUuNzE0MjgxIHoiIC8+CiAgPHBhdGgKICAgICBkPSJtIDEwLjY0NDg2MSwxMS4yOTY1MDUgaCAyNi4xNDQxODUgYyAxLjUyNjY3MywwIDIuNDcxMTgyLDAuNTI4MDExIDMuMTEwNzgyLDEuOTc5Njg1IGwgMi4yMDE3MjcsNi4wOTEzMzkgdiAyMS45NTk0MiBjIDAsMS4zODU0OTUgLTAuNzc0MzI3LDIuMDgzNTggLTIuMzAwMjkxLDIuMDgzNTggSCA3LjkwNzc3IGMgLTEuNTI1OTY0LDAgLTIuMTQ4NTQ2LC0wLjc2NzgyMiAtMi4xNDg1NDYsLTIuMTUzMzE3IFYgMTkuMzY2MTA1IGwgMi4xMzA4MTksLTYuMjIxNTYyIGMgMC40MjU0NTUsLTEuMTI0MzM2IDEuMjI4ODU1LC0xLjg0ODc1IDIuNzU0ODE4LC0xLjg0ODc1IHoiCiAgICAgZGlzcGxheT0iYmxvY2siCiAgICAgZmlsbD0ibm9uZSIKICAgICBvcGFjaXR5PSIwLjUwNSIKICAgICBvdmVyZmxvdz0idmlzaWJsZSIKICAgICBzdHJva2U9InVybCgjbSkiCiAgICAgc3Ryb2tlLXdpZHRoPSIwLjc0MTk5OCIKICAgICBzdHlsZT0ic3Ryb2tlOnVybCgjbGluZWFyR3JhZGllbnQxMjE3NTgpO21hcmtlcjpub25lIgogICAgIGlkPSJwYXRoODUtMS04LTUtNy0wIiAvPgogIDxyZWN0CiAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6bm9uZTtzdHJva2U6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc2MCk7c3Ryb2tlLXdpZHRoOjAuOTk5OTg0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgaWQ9InJlY3Q2NzQxLTUtMC0yLTMtNC0yLTQiCiAgICAgeT0iMTIuNDk5OTkyIgogICAgIHg9IjUuNDk5OTk0MyIKICAgICByeT0iMy41IgogICAgIGhlaWdodD0iMzEuMDAwMDE3IgogICAgIHdpZHRoPSIzNyIKICAgICByeD0iMy41IiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItNS0xLTQiCiAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiM4MDRiMDA7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC41Oy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJtIDExLjU5MDkyMyw1LjQ5OTk5OTUgYyAtMi4zNTcwMTgsMCAtMy4yOTcyNzMsMS4zOTE1ODQ0IC00LjI1NDU0NSwzLjU0NTQ1NDYgQyA2LjYwMjYyNSwxMC42OTIwNDggNS43NDg5LDEyLjM5NTcxMyA1LjA3MDYxMywxNC4wMDkwOTEgNC43MDk4NjksMTQuNjM0NjA3IDQuNTAwMDE0LDE1LjM1OTU0OSA0LjUwMDAxNCwxNi4xMzYzNjMgdiAyNC4xMDkwOTIgYyAwLDIuMzU3MDE4IDEuODk3NTI3LDQuMjU0NTQ2IDQuMjU0NTQ1LDQuMjU0NTQ2IGggMzAuNDkwOTEzIGMgMi4zNTcwMTgsMCA0LjI1NDU0NSwtMS44OTc1MjggNC4yNTQ1NDUsLTQuMjU0NTQ2IFYgMTYuMTM2MzYzIGMgMCwtMC43NzY4MTQgLTAuMjA5ODU1LC0xLjUwMTc1NiAtMC41NzA1OTgsLTIuMTI3MjcyIEMgNDIuMjMyNzQ0LDEyLjQwMzg4MyA0MS40MTc5MiwxMC42ODI4MTYgNDAuNjYzNjUzLDkuMDQ1NDU0MSAzOS42NzczNzksNi45MDQ3MDY4IDM4Ljc2NjEyNiw1LjQ5OTk5OTUgMzYuNDA5MTA4LDUuNDk5OTk5NSBaIiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItNS0xLTctNyIKICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjE1O3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOnVybCgjbGluZWFyR3JhZGllbnQxMjE3NjQpO3N0cm9rZS13aWR0aDowLjk5OTk5MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDQxLjU1OTA5NywxMy4xOCAzOS44NDYyNjEsOS42MDExMDA3IEMgMzkuMzY4MTczLDguNTU5Njc2MSAzOC45MjI4MjksNy43NTkzNzQ5IDM4LjQwNDc1NSw3LjI2MTE2MyAzNy44ODY2NzQsNi43NjI5NTEyIDM3LjMxMzE3Miw2LjQ5OTk5NDUgMzYuMjg5NzksNi40OTk5OTQ1IEggMTEuNzExMjE4IGMgLTEuMDI0NzMsMCAtMS42MDg4MjEsMC4yNjI2MDMyIC0yLjEyODY4MDQsMC43NTg0MTU4IEMgOS4wNjI2ODA1LDcuNzU0MjIyOCA4LjYyMDYzMSw4LjU0ODc0MjMgOC4xNTg4NDg4LDkuNTkxNDY3NyB2IDAuMDAxNDEgTCA2LjU5Nzg2MDMsMTMuMjU2NzI1IiAvPgogIDxwYXRoCiAgICAgZD0ibSAyMiw1IGggNCBWIDE5IEMgMjUuNjA2LDE5IDI1LjIxMywxOC4yMjkgMjQuODE5LDE4LjIyOSAyNC40MTYsMTguMjI5IDI0LjAxMywxOSAyMy42MDksMTkgMjMuMjg1LDE5IDIyLjk2LDE4LjMyNSAyMi42MzYsMTguMzI1IDIyLjQyNCwxOC4zMjUgMjIuMjEyLDE5IDIyLDE5IFoiCiAgICAgZmlsbD0idXJsKCNuKSIKICAgICBvcGFjaXR5PSIwLjMiCiAgICAgb3ZlcmZsb3c9InZpc2libGUiCiAgICAgc3R5bGU9ImZpbGw6dXJsKCNuKTttYXJrZXI6bm9uZSIKICAgICBpZD0icGF0aDg3IiAvPgo8L3N2Zz4K';
diff --git a/src/backend/controllers/auth/AuthController.js b/src/backend/controllers/auth/AuthController.js
index b4225def2..eeef21296 100644
--- a/src/backend/controllers/auth/AuthController.js
+++ b/src/backend/controllers/auth/AuthController.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import bcrypt from 'bcrypt';
import crypto from 'node:crypto';
import { v4 as uuidv4 } from 'uuid';
diff --git a/src/backend/controllers/broadcast/BroadcastController.ts b/src/backend/controllers/broadcast/BroadcastController.ts
index f6880befd..6442dd831 100644
--- a/src/backend/controllers/broadcast/BroadcastController.ts
+++ b/src/backend/controllers/broadcast/BroadcastController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import { Controller, Post } from '../../core/http/decorators.js';
import type { BroadcastService } from '../../services/broadcast/BroadcastService.js';
diff --git a/src/backend/controllers/desktop/DesktopController.js b/src/backend/controllers/desktop/DesktopController.js
index c7306e54d..cee2a0dd1 100644
--- a/src/backend/controllers/desktop/DesktopController.js
+++ b/src/backend/controllers/desktop/DesktopController.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../../core/http/HttpError.js';
import { PuterController } from '../types.js';
diff --git a/src/backend/controllers/drivers/DriverController.ts b/src/backend/controllers/drivers/DriverController.ts
index a9aa23bc2..78fa2185f 100644
--- a/src/backend/controllers/drivers/DriverController.ts
+++ b/src/backend/controllers/drivers/DriverController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import { Context } from '../../core/context.js';
import { Controller } from '../../core/http/decorators.js';
diff --git a/src/backend/controllers/fs/FSController.ts b/src/backend/controllers/fs/FSController.ts
index 45ef51ded..e43580070 100644
--- a/src/backend/controllers/fs/FSController.ts
+++ b/src/backend/controllers/fs/FSController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Busboy from 'busboy';
import type { Request, Response } from 'express';
import { posix as pathPosix } from 'node:path';
diff --git a/src/backend/controllers/fs/LegacyFSController.ts b/src/backend/controllers/fs/LegacyFSController.ts
index 857bc4844..61751c935 100644
--- a/src/backend/controllers/fs/LegacyFSController.ts
+++ b/src/backend/controllers/fs/LegacyFSController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Busboy from 'busboy';
import type { Request, RequestHandler, Response } from 'express';
import { contentType as contentTypeFromMime } from 'mime-types';
diff --git a/src/backend/controllers/fs/costs.ts b/src/backend/controllers/fs/costs.ts
index f125a2c3c..770e8e9fd 100644
--- a/src/backend/controllers/fs/costs.ts
+++ b/src/backend/controllers/fs/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { toMicroCents } from '../../services/metering/utils.js';
// Microcents per byte. Egress roughly matches S3 data-transfer-out
diff --git a/src/backend/controllers/fs/legacyFsHelpers.ts b/src/backend/controllers/fs/legacyFsHelpers.ts
index 595d3b685..a02650aae 100644
--- a/src/backend/controllers/fs/legacyFsHelpers.ts
+++ b/src/backend/controllers/fs/legacyFsHelpers.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import { contentType as contentTypeFromMime } from 'mime-types';
import type { FSEntry } from '../../stores/fs/FSEntry.js';
diff --git a/src/backend/controllers/fs/requestTypes.ts b/src/backend/controllers/fs/requestTypes.ts
index 4f4c381f2..ebf49d3ff 100644
--- a/src/backend/controllers/fs/requestTypes.ts
+++ b/src/backend/controllers/fs/requestTypes.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { FSEntry, FSEntryWriteInput } from '../../stores/fs/FSEntry.js';
import type { Readable } from 'node:stream';
diff --git a/src/backend/controllers/fs/types.ts b/src/backend/controllers/fs/types.ts
index 4686e9636..174696b57 100644
--- a/src/backend/controllers/fs/types.ts
+++ b/src/backend/controllers/fs/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Readable } from 'node:stream';
import type { FSEntryWriteInput } from '../../stores/fs/FSEntry.js';
import type { WriteGuiMetadata } from './requestTypes.js';
diff --git a/src/backend/controllers/homepage/HomepageController.ts b/src/backend/controllers/homepage/HomepageController.ts
index c6817c992..bd51a082f 100644
--- a/src/backend/controllers/homepage/HomepageController.ts
+++ b/src/backend/controllers/homepage/HomepageController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import express from 'express';
import path from 'node:path';
import { PuterController } from '../types.js';
diff --git a/src/backend/controllers/hosting/HostingController.js b/src/backend/controllers/hosting/HostingController.js
index fa5169bd7..32fa2cef8 100644
--- a/src/backend/controllers/hosting/HostingController.js
+++ b/src/backend/controllers/hosting/HostingController.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../../core/http/HttpError.js';
import { PuterController } from '../types.js';
diff --git a/src/backend/controllers/index.ts b/src/backend/controllers/index.ts
index 22905a53c..cffffad4a 100644
--- a/src/backend/controllers/index.ts
+++ b/src/backend/controllers/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { AppController } from './apps/AppController.js';
import { AuthController } from './auth/AuthController.js';
import { BroadcastController } from './broadcast/BroadcastController.js';
diff --git a/src/backend/controllers/notification/NotificationController.ts b/src/backend/controllers/notification/NotificationController.ts
index 37d797c02..a9858f029 100644
--- a/src/backend/controllers/notification/NotificationController.ts
+++ b/src/backend/controllers/notification/NotificationController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import { Controller, Post } from '../../core/http/decorators.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/controllers/oidc/OIDCController.ts b/src/backend/controllers/oidc/OIDCController.ts
index 782c4fc6c..3c49490a3 100644
--- a/src/backend/controllers/oidc/OIDCController.ts
+++ b/src/backend/controllers/oidc/OIDCController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import { HttpError } from '../../core/http/HttpError.js';
import type { PuterRouter } from '../../core/http/PuterRouter.js';
diff --git a/src/backend/controllers/peer/PeerController.ts b/src/backend/controllers/peer/PeerController.ts
index 48f7e19fe..488d7d975 100644
--- a/src/backend/controllers/peer/PeerController.ts
+++ b/src/backend/controllers/peer/PeerController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import type { Actor } from '../../core/actor.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/controllers/peer/costs.ts b/src/backend/controllers/peer/costs.ts
index 04c103bc1..1326a5618 100644
--- a/src/backend/controllers/peer/costs.ts
+++ b/src/backend/controllers/peer/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per byte of TURN egress ($0.05/GB).
export const PEER_COSTS = {
'turn:egress-bytes': 0.005,
diff --git a/src/backend/controllers/puterai/PuterAIController.ts b/src/backend/controllers/puterai/PuterAIController.ts
index 03057bfcf..5bb70fa92 100644
--- a/src/backend/controllers/puterai/PuterAIController.ts
+++ b/src/backend/controllers/puterai/PuterAIController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import crypto from 'node:crypto';
import { Readable } from 'node:stream';
import type { Request, Response } from 'express';
diff --git a/src/backend/controllers/share/ShareController.ts b/src/backend/controllers/share/ShareController.ts
index 803d6691c..6f4ea62b6 100644
--- a/src/backend/controllers/share/ShareController.ts
+++ b/src/backend/controllers/share/ShareController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// import type { Request, Response } from 'express';
// import { HttpError } from '../../core/http/HttpError.js';
import type { PuterRouter } from '../../core/http/PuterRouter.js';
diff --git a/src/backend/controllers/static/StaticAssetsController.ts b/src/backend/controllers/static/StaticAssetsController.ts
index 965692c1c..dabd7bf7a 100644
--- a/src/backend/controllers/static/StaticAssetsController.ts
+++ b/src/backend/controllers/static/StaticAssetsController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import express from 'express';
import { existsSync } from 'node:fs';
import path from 'node:path';
diff --git a/src/backend/controllers/static/StaticPagesController.ts b/src/backend/controllers/static/StaticPagesController.ts
index 6ed5137b1..929e00f8e 100644
--- a/src/backend/controllers/static/StaticPagesController.ts
+++ b/src/backend/controllers/static/StaticPagesController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterController } from '../types.js';
import type { PuterRouter } from '../../core/http/PuterRouter';
import { promoteToVerifiedGroup } from '../../util/userProvisioning.js';
diff --git a/src/backend/controllers/system/SystemController.js b/src/backend/controllers/system/SystemController.js
index 12e171f4c..377244dc6 100644
--- a/src/backend/controllers/system/SystemController.js
+++ b/src/backend/controllers/system/SystemController.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../../core/http/HttpError.js';
import { PuterController } from '../types.js';
diff --git a/src/backend/controllers/types.ts b/src/backend/controllers/types.ts
index 5d3bb2d25..3236355eb 100644
--- a/src/backend/controllers/types.ts
+++ b/src/backend/controllers/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { puterClients } from '../clients';
import type { PuterRouter } from '../core/http/PuterRouter';
import type { puterDrivers } from '../drivers';
diff --git a/src/backend/controllers/webdav/WebDAVController.ts b/src/backend/controllers/webdav/WebDAVController.ts
index 72df3895e..985ed2d43 100644
--- a/src/backend/controllers/webdav/WebDAVController.ts
+++ b/src/backend/controllers/webdav/WebDAVController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { compare as bcryptCompare } from 'bcrypt';
import type { Request, Response } from 'express';
import { posix as pathPosix } from 'node:path';
diff --git a/src/backend/controllers/webdav/locks.ts b/src/backend/controllers/webdav/locks.ts
index 27588421f..15b5b47cc 100644
--- a/src/backend/controllers/webdav/locks.ts
+++ b/src/backend/controllers/webdav/locks.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { randomUUID } from 'node:crypto';
import { posix as pathPosix } from 'node:path';
import type { Cluster } from 'ioredis';
diff --git a/src/backend/controllers/wisp/WispController.ts b/src/backend/controllers/wisp/WispController.ts
index 92bd27d49..543115de5 100644
--- a/src/backend/controllers/wisp/WispController.ts
+++ b/src/backend/controllers/wisp/WispController.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, Response } from 'express';
import { HttpError } from '../../core/http/HttpError.js';
import type { PuterRouter } from '../../core/http/PuterRouter.js';
diff --git a/src/backend/core/actor.ts b/src/backend/core/actor.ts
index 871943d79..bf2c780f8 100644
--- a/src/backend/core/actor.ts
+++ b/src/backend/core/actor.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Minimal actor shape used by stores and services.
*
diff --git a/src/backend/core/context.ts b/src/backend/core/context.ts
index e58052e50..62d3b2ec9 100644
--- a/src/backend/core/context.ts
+++ b/src/backend/core/context.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { AsyncLocalStorage } from 'node:async_hooks';
import type { Request } from 'express';
import type { Actor } from './actor';
diff --git a/src/backend/core/http/HttpError.ts b/src/backend/core/http/HttpError.ts
index 74917d34c..1cc9e8380 100644
--- a/src/backend/core/http/HttpError.ts
+++ b/src/backend/core/http/HttpError.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Options accepted by `HttpError`. All optional.
*/
diff --git a/src/backend/core/http/PuterRouter.ts b/src/backend/core/http/PuterRouter.ts
index 75c75832f..9d6feffe8 100644
--- a/src/backend/core/http/PuterRouter.ts
+++ b/src/backend/core/http/PuterRouter.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import type {
RouteDescriptor,
diff --git a/src/backend/core/http/__typecheck__.ts b/src/backend/core/http/__typecheck__.ts
index 2c1bd5052..e11ba5c66 100644
--- a/src/backend/core/http/__typecheck__.ts
+++ b/src/backend/core/http/__typecheck__.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Compile-time narrowing checks for PuterRouter type ergonomics.
*
diff --git a/src/backend/core/http/decorators.ts b/src/backend/core/http/decorators.ts
index f5584e075..d1c1a90b5 100644
--- a/src/backend/core/http/decorators.ts
+++ b/src/backend/core/http/decorators.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import type { PuterRouter } from './PuterRouter';
import {
diff --git a/src/backend/core/http/expressAugmentation.ts b/src/backend/core/http/expressAugmentation.ts
index 7d044c393..249bd5295 100644
--- a/src/backend/core/http/expressAugmentation.ts
+++ b/src/backend/core/http/expressAugmentation.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Actor } from '../actor';
/**
diff --git a/src/backend/core/http/index.ts b/src/backend/core/http/index.ts
index e3a90376c..28a57afeb 100644
--- a/src/backend/core/http/index.ts
+++ b/src/backend/core/http/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export { HttpError, isHttpError, type HttpErrorOptions } from './HttpError';
export { PuterRouter } from './PuterRouter';
export {
diff --git a/src/backend/core/http/middleware/antiCsrf.js b/src/backend/core/http/middleware/antiCsrf.js
index 8b2ebcd88..4ae10201c 100644
--- a/src/backend/core/http/middleware/antiCsrf.js
+++ b/src/backend/core/http/middleware/antiCsrf.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import crypto from 'node:crypto';
import { HttpError } from '../HttpError.js';
diff --git a/src/backend/core/http/middleware/authProbe.ts b/src/backend/core/http/middleware/authProbe.ts
index d2b8eebb5..17693aa3b 100644
--- a/src/backend/core/http/middleware/authProbe.ts
+++ b/src/backend/core/http/middleware/authProbe.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, RequestHandler } from 'express';
import type { AuthService } from '../../../services/auth/AuthService';
diff --git a/src/backend/core/http/middleware/captcha.js b/src/backend/core/http/middleware/captcha.js
index da3b7767f..f6f5dbed6 100644
--- a/src/backend/core/http/middleware/captcha.js
+++ b/src/backend/core/http/middleware/captcha.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import crypto from 'node:crypto';
import { HttpError } from '../HttpError.js';
import svgCaptcha from 'svg-captcha';
diff --git a/src/backend/core/http/middleware/errorHandler.ts b/src/backend/core/http/middleware/errorHandler.ts
index f5cd33b1d..34101a079 100644
--- a/src/backend/core/http/middleware/errorHandler.ts
+++ b/src/backend/core/http/middleware/errorHandler.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { ErrorRequestHandler, RequestHandler } from 'express';
import { HttpError, isHttpError } from '../HttpError';
diff --git a/src/backend/core/http/middleware/gates.ts b/src/backend/core/http/middleware/gates.ts
index 810a3f2a3..c9397f68b 100644
--- a/src/backend/core/http/middleware/gates.ts
+++ b/src/backend/core/http/middleware/gates.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, RequestHandler } from 'express';
import { HttpError } from '../HttpError';
diff --git a/src/backend/core/http/middleware/hostRedirects.ts b/src/backend/core/http/middleware/hostRedirects.ts
index e49be1f5d..d2cb0b99a 100644
--- a/src/backend/core/http/middleware/hostRedirects.ts
+++ b/src/backend/core/http/middleware/hostRedirects.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import { stat } from 'node:fs/promises';
import path from 'node:path';
diff --git a/src/backend/core/http/middleware/notFoundHandler.ts b/src/backend/core/http/middleware/notFoundHandler.ts
index 0201a32c7..230d80ad4 100644
--- a/src/backend/core/http/middleware/notFoundHandler.ts
+++ b/src/backend/core/http/middleware/notFoundHandler.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import { HttpError } from '../HttpError';
diff --git a/src/backend/core/http/middleware/privateAppGate.ts b/src/backend/core/http/middleware/privateAppGate.ts
index e2a697f92..0d34da2bb 100644
--- a/src/backend/core/http/middleware/privateAppGate.ts
+++ b/src/backend/core/http/middleware/privateAppGate.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request } from 'express';
import type { AuthService } from '../../../services/auth/AuthService';
import type { IConfig } from '../../../types';
diff --git a/src/backend/core/http/middleware/puterSite.ts b/src/backend/core/http/middleware/puterSite.ts
index dea85531e..7b468d84d 100644
--- a/src/backend/core/http/middleware/puterSite.ts
+++ b/src/backend/core/http/middleware/puterSite.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import { contentType as contentTypeFromMime } from 'mime-types';
import { posix as pathPosix } from 'node:path';
diff --git a/src/backend/core/http/middleware/rateLimit.js b/src/backend/core/http/middleware/rateLimit.js
index 8a70062cb..354b2a1f3 100644
--- a/src/backend/core/http/middleware/rateLimit.js
+++ b/src/backend/core/http/middleware/rateLimit.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import crypto from 'node:crypto';
import { HttpError } from '../HttpError.js';
diff --git a/src/backend/core/http/middleware/requestContext.ts b/src/backend/core/http/middleware/requestContext.ts
index b2d20b665..4f13a60cb 100644
--- a/src/backend/core/http/middleware/requestContext.ts
+++ b/src/backend/core/http/middleware/requestContext.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import type { RequestHandler } from 'express';
import { runWithContext } from '../../context';
diff --git a/src/backend/core/http/middleware/userProtected.ts b/src/backend/core/http/middleware/userProtected.ts
index 0bf509af9..6339f9448 100644
--- a/src/backend/core/http/middleware/userProtected.ts
+++ b/src/backend/core/http/middleware/userProtected.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Request, RequestHandler, Response, NextFunction } from 'express';
import bcrypt from 'bcrypt';
import { HttpError } from '../HttpError';
diff --git a/src/backend/core/http/types.ts b/src/backend/core/http/types.ts
index 74154afff..581bac9be 100644
--- a/src/backend/core/http/types.ts
+++ b/src/backend/core/http/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { NextFunction, Request, RequestHandler, Response } from 'express';
import type { Actor } from '../actor';
diff --git a/src/backend/core/http/vendorTypes.d.ts b/src/backend/core/http/vendorTypes.d.ts
index 73ee49168..37a71d0e7 100644
--- a/src/backend/core/http/vendorTypes.d.ts
+++ b/src/backend/core/http/vendorTypes.d.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Ambient type declarations for third-party packages that don't ship
* their own `.d.ts`. Keeps `tsc --noEmit` clean without pulling in
diff --git a/src/backend/core/index.ts b/src/backend/core/index.ts
index 4a4ef5235..70da6fd9c 100644
--- a/src/backend/core/index.ts
+++ b/src/backend/core/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export { Context, runWithContext, type KnownContextFields } from './context';
export {
type Actor,
diff --git a/src/backend/data/subPolicies/index.ts b/src/backend/data/subPolicies/index.ts
index 7da8715dd..9edb66663 100644
--- a/src/backend/data/subPolicies/index.ts
+++ b/src/backend/data/subPolicies/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { REGISTERED_USER_FREE } from './registeredUserFreePolicy.js';
import { TEMP_USER_FREE } from './tempUserFreePolicy.js';
diff --git a/src/backend/data/subPolicies/registeredUserFreePolicy.ts b/src/backend/data/subPolicies/registeredUserFreePolicy.ts
index df51f6426..5ae8fa087 100644
--- a/src/backend/data/subPolicies/registeredUserFreePolicy.ts
+++ b/src/backend/data/subPolicies/registeredUserFreePolicy.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { DEFAULT_FREE_SUBSCRIPTION } from '../../services/metering/consts.js';
import { toMicroCents } from '../../services/metering/utils.js';
diff --git a/src/backend/data/subPolicies/tempUserFreePolicy.ts b/src/backend/data/subPolicies/tempUserFreePolicy.ts
index b6c86d718..f0b795957 100644
--- a/src/backend/data/subPolicies/tempUserFreePolicy.ts
+++ b/src/backend/data/subPolicies/tempUserFreePolicy.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { DEFAULT_TEMP_SUBSCRIPTION } from '../../services/metering/consts.js';
import { toMicroCents } from '../../services/metering/utils.js';
diff --git a/src/backend/drivers/ai-chat/ChatCompletionDriver.ts b/src/backend/drivers/ai-chat/ChatCompletionDriver.ts
index d7702be90..dd42d9c84 100644
--- a/src/backend/drivers/ai-chat/ChatCompletionDriver.ts
+++ b/src/backend/drivers/ai-chat/ChatCompletionDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PassThrough } from 'node:stream';
import crypto from 'node:crypto';
import { Context } from '../../core/context.js';
diff --git a/src/backend/drivers/ai-chat/providers/ChatProvider.ts b/src/backend/drivers/ai-chat/providers/ChatProvider.ts
index 07cbe5832..13ec46993 100644
--- a/src/backend/drivers/ai-chat/providers/ChatProvider.ts
+++ b/src/backend/drivers/ai-chat/providers/ChatProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type {
IChatModel,
IChatProvider,
diff --git a/src/backend/drivers/ai-chat/providers/claude/ClaudeProvider.ts b/src/backend/drivers/ai-chat/providers/claude/ClaudeProvider.ts
index 2919ca3c9..61bedacde 100644
--- a/src/backend/drivers/ai-chat/providers/claude/ClaudeProvider.ts
+++ b/src/backend/drivers/ai-chat/providers/claude/ClaudeProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Anthropic from '@anthropic-ai/sdk';
import type { Message } from '@anthropic-ai/sdk/resources';
import type { BetaUsage } from '@anthropic-ai/sdk/resources/beta.js';
diff --git a/src/backend/drivers/ai-chat/providers/claude/fileUpload.ts b/src/backend/drivers/ai-chat/providers/claude/fileUpload.ts
index ccb73704e..de3cc64d8 100644
--- a/src/backend/drivers/ai-chat/providers/claude/fileUpload.ts
+++ b/src/backend/drivers/ai-chat/providers/claude/fileUpload.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Anthropic, { toFile } from '@anthropic-ai/sdk';
import type { Actor } from '../../../../core/actor.js';
import type { FSService } from '../../../../services/fs/FSService.js';
diff --git a/src/backend/drivers/ai-chat/providers/claude/models.ts b/src/backend/drivers/ai-chat/providers/claude/models.ts
index 91da27128..8470e3288 100644
--- a/src/backend/drivers/ai-chat/providers/claude/models.ts
+++ b/src/backend/drivers/ai-chat/providers/claude/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/deepseek/models.ts b/src/backend/drivers/ai-chat/providers/deepseek/models.ts
index 70f367e5e..8bc3a9a25 100644
--- a/src/backend/drivers/ai-chat/providers/deepseek/models.ts
+++ b/src/backend/drivers/ai-chat/providers/deepseek/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/gemini/GeminiChatProvider.ts b/src/backend/drivers/ai-chat/providers/gemini/GeminiChatProvider.ts
index 564bd2c82..4afaffbe9 100644
--- a/src/backend/drivers/ai-chat/providers/gemini/GeminiChatProvider.ts
+++ b/src/backend/drivers/ai-chat/providers/gemini/GeminiChatProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Preamble: Before this we used Gemini's SDK directly and as we found out
// its actually kind of terrible. So we use the openai sdk now
import openai, { OpenAI } from 'openai';
diff --git a/src/backend/drivers/ai-chat/providers/gemini/models.ts b/src/backend/drivers/ai-chat/providers/gemini/models.ts
index 0847e834c..c2c440e2c 100644
--- a/src/backend/drivers/ai-chat/providers/gemini/models.ts
+++ b/src/backend/drivers/ai-chat/providers/gemini/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/groq/models.ts b/src/backend/drivers/ai-chat/providers/groq/models.ts
index 73556285d..36fe9c7f8 100644
--- a/src/backend/drivers/ai-chat/providers/groq/models.ts
+++ b/src/backend/drivers/ai-chat/providers/groq/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/mistral/models.ts b/src/backend/drivers/ai-chat/providers/mistral/models.ts
index 0d46a9dd8..2d16cb091 100644
--- a/src/backend/drivers/ai-chat/providers/mistral/models.ts
+++ b/src/backend/drivers/ai-chat/providers/mistral/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/openai/fileUpload.ts b/src/backend/drivers/ai-chat/providers/openai/fileUpload.ts
index 55c22da69..cf5f39b8f 100644
--- a/src/backend/drivers/ai-chat/providers/openai/fileUpload.ts
+++ b/src/backend/drivers/ai-chat/providers/openai/fileUpload.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Actor } from '../../../../core/actor.js';
import type { FSService } from '../../../../services/fs/FSService.js';
import type { FSEntryStore } from '../../../../stores/fs/FSEntryStore.js';
diff --git a/src/backend/drivers/ai-chat/providers/openai/models.ts b/src/backend/drivers/ai-chat/providers/openai/models.ts
index be965d806..266527606 100644
--- a/src/backend/drivers/ai-chat/providers/openai/models.ts
+++ b/src/backend/drivers/ai-chat/providers/openai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// TODO DS: centralize somewhere
import type { IChatModel } from '../../types.js';
diff --git a/src/backend/drivers/ai-chat/providers/openrouter/modelOverrides.ts b/src/backend/drivers/ai-chat/providers/openrouter/modelOverrides.ts
index 04d982752..34e0c7a1c 100644
--- a/src/backend/drivers/ai-chat/providers/openrouter/modelOverrides.ts
+++ b/src/backend/drivers/ai-chat/providers/openrouter/modelOverrides.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { toMicroCents } from '../../../../services/metering/utils.js';
import type { IChatModel } from '../../types.js';
diff --git a/src/backend/drivers/ai-chat/providers/xai/models.ts b/src/backend/drivers/ai-chat/providers/xai/models.ts
index 449c910b1..02e2b158f 100644
--- a/src/backend/drivers/ai-chat/providers/xai/models.ts
+++ b/src/backend/drivers/ai-chat/providers/xai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
// Hardcoded from https://models.dev/api.json
diff --git a/src/backend/drivers/ai-chat/providers/zai/models.ts b/src/backend/drivers/ai-chat/providers/zai/models.ts
index 9312aa71f..de516a6f8 100644
--- a/src/backend/drivers/ai-chat/providers/zai/models.ts
+++ b/src/backend/drivers/ai-chat/providers/zai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IChatModel } from '../../types.js';
const CENTS_PER_USD = 100;
diff --git a/src/backend/drivers/ai-chat/types.ts b/src/backend/drivers/ai-chat/types.ts
index a4196d2d3..fdb178ef9 100644
--- a/src/backend/drivers/ai-chat/types.ts
+++ b/src/backend/drivers/ai-chat/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Types for the `puter-chat-completion` driver interface.
*
diff --git a/src/backend/drivers/ai-chat/utils/FunctionCalling.js b/src/backend/drivers/ai-chat/utils/FunctionCalling.js
index 6f3c6e234..ea75643ef 100644
--- a/src/backend/drivers/ai-chat/utils/FunctionCalling.js
+++ b/src/backend/drivers/ai-chat/utils/FunctionCalling.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export const normalize_json_schema = (schema) => {
if (!schema) return schema;
diff --git a/src/backend/drivers/ai-chat/utils/Messages.js b/src/backend/drivers/ai-chat/utils/Messages.js
index 6b5056b01..a7a032e97 100644
--- a/src/backend/drivers/ai-chat/utils/Messages.js
+++ b/src/backend/drivers/ai-chat/utils/Messages.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '@heyputer/backend/src/core/http';
/**
diff --git a/src/backend/drivers/ai-chat/utils/OpenAIUtil.js b/src/backend/drivers/ai-chat/utils/OpenAIUtil.js
index 8a042178e..f464dc05f 100644
--- a/src/backend/drivers/ai-chat/utils/OpenAIUtil.js
+++ b/src/backend/drivers/ai-chat/utils/OpenAIUtil.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Process input messages from Puter's normalized format to OpenAI's format
* May make changes in-place.
diff --git a/src/backend/drivers/ai-chat/utils/Streaming.js b/src/backend/drivers/ai-chat/utils/Streaming.js
index c9ba8fc81..95a11dc87 100644
--- a/src/backend/drivers/ai-chat/utils/Streaming.js
+++ b/src/backend/drivers/ai-chat/utils/Streaming.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export class AIChatConstructStream {
constructor(chatStream, params) {
this.chatStream = chatStream;
diff --git a/src/backend/drivers/ai-image/ImageGenerationDriver.ts b/src/backend/drivers/ai-image/ImageGenerationDriver.ts
index ae787a008..8f70a23b8 100644
--- a/src/backend/drivers/ai-image/ImageGenerationDriver.ts
+++ b/src/backend/drivers/ai-image/ImageGenerationDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import crypto from 'node:crypto';
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-image/providers/ImageProvider.ts b/src/backend/drivers/ai-image/providers/ImageProvider.ts
index 670696d59..95d500be2 100644
--- a/src/backend/drivers/ai-image/providers/ImageProvider.ts
+++ b/src/backend/drivers/ai-image/providers/ImageProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Base class for image generation providers.
*
diff --git a/src/backend/drivers/ai-image/providers/openai/models.ts b/src/backend/drivers/ai-image/providers/openai/models.ts
index 16821f01d..046a66f3d 100644
--- a/src/backend/drivers/ai-image/providers/openai/models.ts
+++ b/src/backend/drivers/ai-image/providers/openai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IImageModel } from '../../types.js';
export const OPEN_AI_IMAGE_GENERATION_MODELS: IImageModel[] = [
diff --git a/src/backend/drivers/ai-image/providers/replicate/ReplicateImageGenerationProvider.ts b/src/backend/drivers/ai-image/providers/replicate/ReplicateImageGenerationProvider.ts
index ea379db65..661a75abc 100644
--- a/src/backend/drivers/ai-image/providers/replicate/ReplicateImageGenerationProvider.ts
+++ b/src/backend/drivers/ai-image/providers/replicate/ReplicateImageGenerationProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import Replicate from 'replicate';
import sharp from 'sharp';
import type { Actor } from '../../../../core/actor.js';
diff --git a/src/backend/drivers/ai-image/providers/replicate/models.ts b/src/backend/drivers/ai-image/providers/replicate/models.ts
index e3e55b95c..5a63e559a 100644
--- a/src/backend/drivers/ai-image/providers/replicate/models.ts
+++ b/src/backend/drivers/ai-image/providers/replicate/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { IImageModel } from '../../types.js';
export type ReplicateBillingScheme = 'per-image' | 'megapixel';
diff --git a/src/backend/drivers/ai-image/providers/xai/models.ts b/src/backend/drivers/ai-image/providers/xai/models.ts
index 5cff084b6..038549bfd 100644
--- a/src/backend/drivers/ai-image/providers/xai/models.ts
+++ b/src/backend/drivers/ai-image/providers/xai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IImageModel } from '../../types.js';
export const XAI_IMAGE_GENERATION_MODELS: IImageModel[] = [
diff --git a/src/backend/drivers/ai-image/types.ts b/src/backend/drivers/ai-image/types.ts
index dfd058783..f08403968 100644
--- a/src/backend/drivers/ai-image/types.ts
+++ b/src/backend/drivers/ai-image/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Types for the `puter-image-generation` driver interface.
*/
diff --git a/src/backend/drivers/ai-ocr/OCRDriver.ts b/src/backend/drivers/ai-ocr/OCRDriver.ts
index fda5e92b2..fd48df47a 100644
--- a/src/backend/drivers/ai-ocr/OCRDriver.ts
+++ b/src/backend/drivers/ai-ocr/OCRDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
AnalyzeDocumentCommand,
InvalidS3ObjectException,
diff --git a/src/backend/drivers/ai-ocr/costs.ts b/src/backend/drivers/ai-ocr/costs.ts
index d006e07b9..335dca77d 100644
--- a/src/backend/drivers/ai-ocr/costs.ts
+++ b/src/backend/drivers/ai-ocr/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per page — Textract $1.50/1000 pages = 150,000 µ¢/page.
// Mistral OCR $1/1000 pages, annotations $3/1000 pages.
export const OCR_COSTS = {
diff --git a/src/backend/drivers/ai-speech2speech/VoiceChangerDriver.ts b/src/backend/drivers/ai-speech2speech/VoiceChangerDriver.ts
index 4ed490f7b..9b94858a1 100644
--- a/src/backend/drivers/ai-speech2speech/VoiceChangerDriver.ts
+++ b/src/backend/drivers/ai-speech2speech/VoiceChangerDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Readable } from 'node:stream';
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-speech2speech/costs.ts b/src/backend/drivers/ai-speech2speech/costs.ts
index e585c3e7b..47fb6e3c9 100644
--- a/src/backend/drivers/ai-speech2speech/costs.ts
+++ b/src/backend/drivers/ai-speech2speech/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per second of audio, per ElevenLabs speech-to-speech model.
// Values mirror the ElevenLabs scale tier (per-unit × 0.9).
export const VOICE_CHANGER_COSTS: Record = {
diff --git a/src/backend/drivers/ai-speech2txt/SpeechToTextDriver.ts b/src/backend/drivers/ai-speech2txt/SpeechToTextDriver.ts
index 0af70dccb..bc28658a3 100644
--- a/src/backend/drivers/ai-speech2txt/SpeechToTextDriver.ts
+++ b/src/backend/drivers/ai-speech2txt/SpeechToTextDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import OpenAI, { toFile } from 'openai';
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-speech2txt/costs.ts b/src/backend/drivers/ai-speech2txt/costs.ts
index 6d11a8e88..969180a40 100644
--- a/src/backend/drivers/ai-speech2txt/costs.ts
+++ b/src/backend/drivers/ai-speech2txt/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per second of audio, per OpenAI transcription model.
export const SPEECH_TO_TEXT_COSTS: Record = {
'openai:gpt-4o-transcribe:second': 10000,
diff --git a/src/backend/drivers/ai-tts/TTSDriver.ts b/src/backend/drivers/ai-tts/TTSDriver.ts
index 9584ff276..023a9af0b 100644
--- a/src/backend/drivers/ai-tts/TTSDriver.ts
+++ b/src/backend/drivers/ai-tts/TTSDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
import type { DriverStreamResult } from '../meta.js';
diff --git a/src/backend/drivers/ai-tts/providers/TTSProvider.ts b/src/backend/drivers/ai-tts/providers/TTSProvider.ts
index e8246d2cc..661fbd74c 100644
--- a/src/backend/drivers/ai-tts/providers/TTSProvider.ts
+++ b/src/backend/drivers/ai-tts/providers/TTSProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Abstract base for TTS providers. Each provider wraps a single upstream
* API (OpenAI, ElevenLabs, AWS Polly) and exposes the unified
diff --git a/src/backend/drivers/ai-tts/providers/awsPolly/AWSPollyTTSProvider.ts b/src/backend/drivers/ai-tts/providers/awsPolly/AWSPollyTTSProvider.ts
index 594d6cf03..90a751771 100644
--- a/src/backend/drivers/ai-tts/providers/awsPolly/AWSPollyTTSProvider.ts
+++ b/src/backend/drivers/ai-tts/providers/awsPolly/AWSPollyTTSProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
PollyClient,
SynthesizeSpeechCommand,
diff --git a/src/backend/drivers/ai-tts/providers/awsPolly/costs.ts b/src/backend/drivers/ai-tts/providers/awsPolly/costs.ts
index ad82a0bed..dbba79220 100644
--- a/src/backend/drivers/ai-tts/providers/awsPolly/costs.ts
+++ b/src/backend/drivers/ai-tts/providers/awsPolly/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per character, per Polly engine.
export const AWS_POLLY_COSTS: Record = {
standard: 400, // $4.00 per 1M characters
diff --git a/src/backend/drivers/ai-tts/providers/elevenlabs/ElevenLabsTTSProvider.ts b/src/backend/drivers/ai-tts/providers/elevenlabs/ElevenLabsTTSProvider.ts
index 0a7badb13..9a4c58ce5 100644
--- a/src/backend/drivers/ai-tts/providers/elevenlabs/ElevenLabsTTSProvider.ts
+++ b/src/backend/drivers/ai-tts/providers/elevenlabs/ElevenLabsTTSProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Readable } from 'node:stream';
import { HttpError } from '../../../../core/http/HttpError.js';
import { Context } from '../../../../core/context.js';
diff --git a/src/backend/drivers/ai-tts/providers/elevenlabs/costs.ts b/src/backend/drivers/ai-tts/providers/elevenlabs/costs.ts
index a10ae521a..e331dae34 100644
--- a/src/backend/drivers/ai-tts/providers/elevenlabs/costs.ts
+++ b/src/backend/drivers/ai-tts/providers/elevenlabs/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per character for TTS synthesis, per model. Values mirror the
// ElevenLabs scale tier (per-additional-char × 0.9). Seconds-based costs
// for speech-to-speech live on VoiceChangerDriver.
diff --git a/src/backend/drivers/ai-tts/providers/openai/OpenAITTSProvider.ts b/src/backend/drivers/ai-tts/providers/openai/OpenAITTSProvider.ts
index 1fde0287d..60379653c 100644
--- a/src/backend/drivers/ai-tts/providers/openai/OpenAITTSProvider.ts
+++ b/src/backend/drivers/ai-tts/providers/openai/OpenAITTSProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import OpenAI from 'openai';
import { Readable } from 'node:stream';
import { HttpError } from '../../../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-tts/providers/openai/costs.ts b/src/backend/drivers/ai-tts/providers/openai/costs.ts
index 370c763ab..9aae76254 100644
--- a/src/backend/drivers/ai-tts/providers/openai/costs.ts
+++ b/src/backend/drivers/ai-tts/providers/openai/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per character, per OpenAI TTS model.
export const OPENAI_TTS_COSTS: Record = {
'gpt-4o-mini-tts': 1500,
diff --git a/src/backend/drivers/ai-tts/types.ts b/src/backend/drivers/ai-tts/types.ts
index 0bd6eb215..797d11af3 100644
--- a/src/backend/drivers/ai-tts/types.ts
+++ b/src/backend/drivers/ai-tts/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Types for the `puter-tts` driver interface.
*/
diff --git a/src/backend/drivers/ai-video/VideoGenerationDriver.ts b/src/backend/drivers/ai-video/VideoGenerationDriver.ts
index a3c8912a6..83fc85ce9 100644
--- a/src/backend/drivers/ai-video/VideoGenerationDriver.ts
+++ b/src/backend/drivers/ai-video/VideoGenerationDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
import { PuterDriver } from '../types.js';
diff --git a/src/backend/drivers/ai-video/providers/VideoProvider.ts b/src/backend/drivers/ai-video/providers/VideoProvider.ts
index 3ac8da260..0baa54038 100644
--- a/src/backend/drivers/ai-video/providers/VideoProvider.ts
+++ b/src/backend/drivers/ai-video/providers/VideoProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type {
IVideoModel,
IVideoProvider,
diff --git a/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.ts b/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.ts
index 6817862ec..c526eca51 100644
--- a/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.ts
+++ b/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
GenerateVideosOperation,
GenerateVideosParameters,
diff --git a/src/backend/drivers/ai-video/providers/gemini/models.ts b/src/backend/drivers/ai-video/providers/gemini/models.ts
index 66fbb1e04..49e9f7297 100644
--- a/src/backend/drivers/ai-video/providers/gemini/models.ts
+++ b/src/backend/drivers/ai-video/providers/gemini/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { IVideoModel } from '../../types.js';
export interface IGeminiVideoModel extends IVideoModel {
diff --git a/src/backend/drivers/ai-video/providers/openai/OpenAIVideoProvider.ts b/src/backend/drivers/ai-video/providers/openai/OpenAIVideoProvider.ts
index 5cafbbfa7..7aa160c63 100644
--- a/src/backend/drivers/ai-video/providers/openai/OpenAIVideoProvider.ts
+++ b/src/backend/drivers/ai-video/providers/openai/OpenAIVideoProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import OpenAI from 'openai';
import { Context } from '../../../../core/context.js';
import { HttpError } from '../../../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-video/providers/openai/models.ts b/src/backend/drivers/ai-video/providers/openai/models.ts
index 6867c9a76..c13a5d8ff 100644
--- a/src/backend/drivers/ai-video/providers/openai/models.ts
+++ b/src/backend/drivers/ai-video/providers/openai/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { IVideoModel } from '../../types.js';
export const OPENAI_VIDEO_ALLOWED_SECONDS = [4, 8, 12] as const;
diff --git a/src/backend/drivers/ai-video/providers/together/TogetherVideoProvider.ts b/src/backend/drivers/ai-video/providers/together/TogetherVideoProvider.ts
index ceb88acf1..ff6002b1a 100644
--- a/src/backend/drivers/ai-video/providers/together/TogetherVideoProvider.ts
+++ b/src/backend/drivers/ai-video/providers/together/TogetherVideoProvider.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Together } from 'together-ai';
import { Context } from '../../../../core/context.js';
import { HttpError } from '../../../../core/http/HttpError.js';
diff --git a/src/backend/drivers/ai-video/providers/together/models.ts b/src/backend/drivers/ai-video/providers/together/models.ts
index c3e309a90..24343f970 100644
--- a/src/backend/drivers/ai-video/providers/together/models.ts
+++ b/src/backend/drivers/ai-video/providers/together/models.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { IVideoModel } from '../../types.js';
interface ITogetherVideoModel extends IVideoModel {
diff --git a/src/backend/drivers/ai-video/types.ts b/src/backend/drivers/ai-video/types.ts
index ac017d7dd..a7900458a 100644
--- a/src/backend/drivers/ai-video/types.ts
+++ b/src/backend/drivers/ai-video/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Types for the `puter-video-generation` driver interface.
*/
diff --git a/src/backend/drivers/apps/AppDriver.js b/src/backend/drivers/apps/AppDriver.js
index 0f2f87486..1e7183686 100644
--- a/src/backend/drivers/apps/AppDriver.js
+++ b/src/backend/drivers/apps/AppDriver.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
import {
diff --git a/src/backend/drivers/decorators.ts b/src/backend/drivers/decorators.ts
index 74998894e..d62353d70 100644
--- a/src/backend/drivers/decorators.ts
+++ b/src/backend/drivers/decorators.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
DRIVER_DEFAULT_KEY,
DRIVER_INTERFACE_KEY,
diff --git a/src/backend/drivers/index.ts b/src/backend/drivers/index.ts
index 06858a21d..53e224495 100644
--- a/src/backend/drivers/index.ts
+++ b/src/backend/drivers/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IPuterDriverRegistry } from './types';
import { ChatCompletionDriver } from './ai-chat/ChatCompletionDriver';
import { ImageGenerationDriver } from './ai-image/ImageGenerationDriver';
diff --git a/src/backend/drivers/kv/KVStoreDriver.ts b/src/backend/drivers/kv/KVStoreDriver.ts
index cc1a02845..136a1676a 100644
--- a/src/backend/drivers/kv/KVStoreDriver.ts
+++ b/src/backend/drivers/kv/KVStoreDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../../core/http/HttpError.js';
import { Context } from '../../core/context.js';
import { PuterDriver } from '../types.js';
diff --git a/src/backend/drivers/kv/costs.ts b/src/backend/drivers/kv/costs.ts
index eb2310876..2385dafd5 100644
--- a/src/backend/drivers/kv/costs.ts
+++ b/src/backend/drivers/kv/costs.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Microcents per underlying DynamoDB capacity unit, as reported by
// SystemKVStore.KVUsage. Cost is `KV_COSTS[op] * usage.`.
export const KV_COSTS = {
diff --git a/src/backend/drivers/meta.ts b/src/backend/drivers/meta.ts
index 3bbb664a0..d93b7fe32 100644
--- a/src/backend/drivers/meta.ts
+++ b/src/backend/drivers/meta.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Readable } from 'node:stream';
import type { WithLifecycle } from '../types';
diff --git a/src/backend/drivers/notification/NotificationDriver.ts b/src/backend/drivers/notification/NotificationDriver.ts
index d201151b2..079154102 100644
--- a/src/backend/drivers/notification/NotificationDriver.ts
+++ b/src/backend/drivers/notification/NotificationDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
import { PuterDriver } from '../types.js';
diff --git a/src/backend/drivers/subdomain/SubdomainDriver.ts b/src/backend/drivers/subdomain/SubdomainDriver.ts
index 091dd4650..dd8494fd6 100644
--- a/src/backend/drivers/subdomain/SubdomainDriver.ts
+++ b/src/backend/drivers/subdomain/SubdomainDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/drivers/types.ts b/src/backend/drivers/types.ts
index 9fc0d8cee..d56022c7b 100644
--- a/src/backend/drivers/types.ts
+++ b/src/backend/drivers/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { puterClients } from '../clients';
import type { puterServices } from '../services';
import type { puterStores } from '../stores';
diff --git a/src/backend/drivers/util/fileInput.ts b/src/backend/drivers/util/fileInput.ts
index 9fd7c65f2..475aafdbc 100644
--- a/src/backend/drivers/util/fileInput.ts
+++ b/src/backend/drivers/util/fileInput.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import type { Actor } from '../../core/actor.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/drivers/workers/WorkerDriver.ts b/src/backend/drivers/workers/WorkerDriver.ts
index a55137325..761d349f8 100644
--- a/src/backend/drivers/workers/WorkerDriver.ts
+++ b/src/backend/drivers/workers/WorkerDriver.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { readFileSync } from 'node:fs';
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/exports.ts b/src/backend/exports.ts
index 769cf57a0..00b62778a 100644
--- a/src/backend/exports.ts
+++ b/src/backend/exports.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { IPuterClientRegistry } from './clients/types';
import type { IPuterControllerRegistry } from './controllers/types';
import type { IPuterDriverRegistry } from './drivers/types';
diff --git a/src/backend/extensions.ts b/src/backend/extensions.ts
index 11d2f27c5..7a8e8bdc3 100644
--- a/src/backend/extensions.ts
+++ b/src/backend/extensions.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { RequestHandler } from 'express';
import type { puterClients } from './clients';
import type { IPuterClientRegistry } from './clients/types';
diff --git a/src/backend/index.ts b/src/backend/index.ts
index 81124a584..9d5f66519 100644
--- a/src/backend/index.ts
+++ b/src/backend/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { existsSync, readFileSync } from 'node:fs';
import path from 'node:path';
import { puterClients } from './clients';
diff --git a/src/backend/server.ts b/src/backend/server.ts
index 4d0bba9ac..1aa6fff17 100644
--- a/src/backend/server.ts
+++ b/src/backend/server.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/* eslint-disable @typescript-eslint/no-explicit-any */
import compression from 'compression';
import cookieParser from 'cookie-parser';
diff --git a/src/backend/services/acl/ACLService.ts b/src/backend/services/acl/ACLService.ts
index 6ba7da82b..48fe3dff3 100644
--- a/src/backend/services/acl/ACLService.ts
+++ b/src/backend/services/acl/ACLService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { LayerInstances } from '../../types';
import type { puterServices } from '../index';
import { PuterService } from '../types';
diff --git a/src/backend/services/appIcon/AppIconService.ts b/src/backend/services/appIcon/AppIconService.ts
index 766c4dfcf..5707eaee8 100644
--- a/src/backend/services/appIcon/AppIconService.ts
+++ b/src/backend/services/appIcon/AppIconService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Readable } from 'node:stream';
import type { LayerInstances } from '../../types';
import type { puterServices } from '../index';
diff --git a/src/backend/services/apps/AppPermissionService.ts b/src/backend/services/apps/AppPermissionService.ts
index da65cf028..6a40c5c26 100644
--- a/src/backend/services/apps/AppPermissionService.ts
+++ b/src/backend/services/apps/AppPermissionService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Context } from '../../core/context.js';
import { HttpError } from '../../core/http/HttpError.js';
import {
diff --git a/src/backend/services/apps/RecommendedAppsService.ts b/src/backend/services/apps/RecommendedAppsService.ts
index 92d9dda91..8b55bdd82 100644
--- a/src/backend/services/apps/RecommendedAppsService.ts
+++ b/src/backend/services/apps/RecommendedAppsService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { getAppIconUrl } from '../../util/appIcon.js';
import { PuterService } from '../types.js';
diff --git a/src/backend/services/apps/SuggestedAppsService.ts b/src/backend/services/apps/SuggestedAppsService.ts
index bcd26f974..e734fbf4c 100644
--- a/src/backend/services/apps/SuggestedAppsService.ts
+++ b/src/backend/services/apps/SuggestedAppsService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import { getAppIconUrl } from '../../util/appIcon.js';
import { PuterService } from '../types.js';
diff --git a/src/backend/services/auth/AuthService.test.ts b/src/backend/services/auth/AuthService.test.ts
index 11fdaf0d4..7d8c2833c 100644
--- a/src/backend/services/auth/AuthService.test.ts
+++ b/src/backend/services/auth/AuthService.test.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { describe, expect, it } from 'vitest';
import type { Actor } from '../../core/actor.js';
import { AuthService } from './AuthService.js';
diff --git a/src/backend/services/auth/AuthService.ts b/src/backend/services/auth/AuthService.ts
index b07f3ad66..f133bfde2 100644
--- a/src/backend/services/auth/AuthService.ts
+++ b/src/backend/services/auth/AuthService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
import type { Actor } from '../../core/actor';
import { HttpError } from '../../core/http/HttpError.js';
diff --git a/src/backend/services/auth/OIDCService.ts b/src/backend/services/auth/OIDCService.ts
index 2f41c6a59..2eeebcf68 100644
--- a/src/backend/services/auth/OIDCService.ts
+++ b/src/backend/services/auth/OIDCService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { LayerInstances } from '../../types';
import type { puterServices } from '../index';
import type { UserRow } from '../../stores/user/UserStore';
diff --git a/src/backend/services/auth/OTPUtil.js b/src/backend/services/auth/OTPUtil.js
index c87b7b707..d6944dae9 100644
--- a/src/backend/services/auth/OTPUtil.js
+++ b/src/backend/services/auth/OTPUtil.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { TOTP } from 'otpauth';
import crypto from 'node:crypto';
import { encode } from 'hi-base32';
diff --git a/src/backend/services/auth/TokenService.ts b/src/backend/services/auth/TokenService.ts
index 4f10207bf..693017728 100644
--- a/src/backend/services/auth/TokenService.ts
+++ b/src/backend/services/auth/TokenService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import jwt, { type SignOptions } from 'jsonwebtoken';
import { PuterService } from '../types';
diff --git a/src/backend/services/auth/types.ts b/src/backend/services/auth/types.ts
index d0829f92a..5b3523641 100644
--- a/src/backend/services/auth/types.ts
+++ b/src/backend/services/auth/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Express `Request` augmentations live in `core/http/expressAugmentation.ts`
// — auth-related fields (`actor`, `token`) are declared there alongside the
// other request-level fields populated by global middleware.
diff --git a/src/backend/services/broadcast/BroadcastService.ts b/src/backend/services/broadcast/BroadcastService.ts
index 842ff7758..de6a8d752 100644
--- a/src/backend/services/broadcast/BroadcastService.ts
+++ b/src/backend/services/broadcast/BroadcastService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import axios from 'axios';
import { createHmac, timingSafeEqual } from 'node:crypto';
import { Agent as HttpsAgent } from 'node:https';
diff --git a/src/backend/services/fs/FSService.ts b/src/backend/services/fs/FSService.ts
index ba71c1d7e..283e706db 100644
--- a/src/backend/services/fs/FSService.ts
+++ b/src/backend/services/fs/FSService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import { createHash } from 'node:crypto';
import { Readable, Transform } from 'node:stream';
diff --git a/src/backend/services/fs/cacheInvalidation.ts b/src/backend/services/fs/cacheInvalidation.ts
index 8109fb679..4db22059a 100644
--- a/src/backend/services/fs/cacheInvalidation.ts
+++ b/src/backend/services/fs/cacheInvalidation.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { EventClient } from '../../clients/EventClient.js';
import type { FSEntryStore } from '../../stores/fs/FSEntryStore.js';
import type {
diff --git a/src/backend/services/fs/eventTypes.ts b/src/backend/services/fs/eventTypes.ts
index 831766019..4e2bdce9e 100644
--- a/src/backend/services/fs/eventTypes.ts
+++ b/src/backend/services/fs/eventTypes.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export interface OuterGuiItemEventResponse {
path?: string;
old_path?: string;
diff --git a/src/backend/services/fs/resolveNode.ts b/src/backend/services/fs/resolveNode.ts
index 043225792..34092d3e8 100644
--- a/src/backend/services/fs/resolveNode.ts
+++ b/src/backend/services/fs/resolveNode.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { posix as pathPosix } from 'node:path';
import { HttpError } from '../../core/http/HttpError.js';
import type { FSEntry } from '../../stores/fs/FSEntry.js';
diff --git a/src/backend/services/fs/rootListing.ts b/src/backend/services/fs/rootListing.ts
index dd1f77870..3f75ded48 100644
--- a/src/backend/services/fs/rootListing.ts
+++ b/src/backend/services/fs/rootListing.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Actor } from '../../core/actor.js';
import type { FSEntry } from '../../stores/fs/FSEntry.js';
import type { FSEntryStore } from '../../stores/fs/FSEntryStore.js';
diff --git a/src/backend/services/fs/types.ts b/src/backend/services/fs/types.ts
index 80006e156..85ea48b47 100644
--- a/src/backend/services/fs/types.ts
+++ b/src/backend/services/fs/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Readable } from 'node:stream';
import type { FSEntry, FSEntryWriteInput } from '../../stores/fs/FSEntry.js';
import type {
diff --git a/src/backend/services/health/ServerHealthService.ts b/src/backend/services/health/ServerHealthService.ts
index a3a709608..79738846b 100644
--- a/src/backend/services/health/ServerHealthService.ts
+++ b/src/backend/services/health/ServerHealthService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterService } from '../types';
import type { SocketService } from '../socket/SocketService';
diff --git a/src/backend/services/homepage/PuterHomepageService.ts b/src/backend/services/homepage/PuterHomepageService.ts
index bdf53d4d4..983709a01 100644
--- a/src/backend/services/homepage/PuterHomepageService.ts
+++ b/src/backend/services/homepage/PuterHomepageService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { encode } from 'html-entities';
import { readFile } from 'node:fs/promises';
import path from 'node:path';
diff --git a/src/backend/services/index.ts b/src/backend/services/index.ts
index fbebf1d6e..cc3e105fc 100644
--- a/src/backend/services/index.ts
+++ b/src/backend/services/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { ACLService } from './acl/ACLService';
import { AppPermissionService } from './apps/AppPermissionService';
import { RecommendedAppsService } from './apps/RecommendedAppsService';
diff --git a/src/backend/services/metering/MeteringService.ts b/src/backend/services/metering/MeteringService.ts
index f34fa16f1..96e9774e2 100644
--- a/src/backend/services/metering/MeteringService.ts
+++ b/src/backend/services/metering/MeteringService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import murmurhash from 'murmurhash';
import { PuterService } from '../types';
import type { Actor } from '../../core/actor';
diff --git a/src/backend/services/metering/consts.ts b/src/backend/services/metering/consts.ts
index d40d4860e..e63cc4a79 100644
--- a/src/backend/services/metering/consts.ts
+++ b/src/backend/services/metering/consts.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export const GLOBAL_APP_KEY = 'os-global';
export const METRICS_PREFIX = 'metering';
export const POLICY_PREFIX = 'policy';
diff --git a/src/backend/services/metering/types.ts b/src/backend/services/metering/types.ts
index 9d777c701..bfa5a6b8e 100644
--- a/src/backend/services/metering/types.ts
+++ b/src/backend/services/metering/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export interface UsageAddons {
purchasedCredits: number;
consumedPurchaseCredits: number;
diff --git a/src/backend/services/metering/utils.ts b/src/backend/services/metering/utils.ts
index ff70ef1e4..c41b3a081 100644
--- a/src/backend/services/metering/utils.ts
+++ b/src/backend/services/metering/utils.ts
@@ -1,2 +1,21 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export const toMicroCents = (dollars: number): number =>
dollars * 1_000_000 * 100;
diff --git a/src/backend/services/notification/NotificationService.ts b/src/backend/services/notification/NotificationService.ts
index 8a92b119b..ddf6d3f4c 100644
--- a/src/backend/services/notification/NotificationService.ts
+++ b/src/backend/services/notification/NotificationService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterService } from '../types.js';
diff --git a/src/backend/services/permission/PermissionService.test.ts b/src/backend/services/permission/PermissionService.test.ts
index b260e5b43..6742ea809 100644
--- a/src/backend/services/permission/PermissionService.test.ts
+++ b/src/backend/services/permission/PermissionService.test.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { describe, expect, it } from 'vitest';
import type { Actor } from '../../core/actor.js';
import { PermissionService } from './PermissionService.js';
diff --git a/src/backend/services/permission/PermissionService.ts b/src/backend/services/permission/PermissionService.ts
index d69ab6aa2..9a5c94f11 100644
--- a/src/backend/services/permission/PermissionService.ts
+++ b/src/backend/services/permission/PermissionService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterService } from '../types';
import type { Actor, ActorUser } from '../../core/actor';
import { actorUid, isSystemActor, userRelatedActor } from '../../core/actor';
diff --git a/src/backend/services/permission/consts.ts b/src/backend/services/permission/consts.ts
index 8d745095b..76e7263ef 100644
--- a/src/backend/services/permission/consts.ts
+++ b/src/backend/services/permission/consts.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export const MANAGE_PERM_PREFIX = 'manage';
export const PERM_KEY_PREFIX = 'perm';
diff --git a/src/backend/services/permission/permissionUtil.ts b/src/backend/services/permission/permissionUtil.ts
index 13ba604c0..8508788af 100644
--- a/src/backend/services/permission/permissionUtil.ts
+++ b/src/backend/services/permission/permissionUtil.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Actor } from '../../core/actor';
import { MANAGE_PERM_PREFIX } from './consts';
diff --git a/src/backend/services/selfhosted/DefaultUserService.ts b/src/backend/services/selfhosted/DefaultUserService.ts
index 974399555..7a6ee6151 100644
--- a/src/backend/services/selfhosted/DefaultUserService.ts
+++ b/src/backend/services/selfhosted/DefaultUserService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import bcrypt from 'bcrypt';
import crypto from 'node:crypto';
import { v4 as uuidv4 } from 'uuid';
diff --git a/src/backend/services/socket/SocketService.ts b/src/backend/services/socket/SocketService.ts
index c450fab5b..838286d81 100644
--- a/src/backend/services/socket/SocketService.ts
+++ b/src/backend/services/socket/SocketService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Server as HttpServer } from 'node:http';
import { createAdapter } from '@socket.io/redis-streams-adapter';
import { Server as SocketIOServer, type Socket } from 'socket.io';
diff --git a/src/backend/services/subdomain/SubdomainPermissionService.ts b/src/backend/services/subdomain/SubdomainPermissionService.ts
index 791d025b7..159da750b 100644
--- a/src/backend/services/subdomain/SubdomainPermissionService.ts
+++ b/src/backend/services/subdomain/SubdomainPermissionService.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PermissionUtil } from '../permission/permissionUtil.js';
import type { LayerInstances } from '../../types.js';
import type { puterStores } from '../../stores/index.js';
diff --git a/src/backend/services/types.ts b/src/backend/services/types.ts
index 663842c43..875d5ee6b 100644
--- a/src/backend/services/types.ts
+++ b/src/backend/services/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { puterClients } from '../clients';
import type { puterStores } from '../stores';
import type { IConfig, LayerInstances, WithLifecycle } from '../types';
diff --git a/src/backend/stores/app/AppStore.js b/src/backend/stores/app/AppStore.js
index 51327889f..aa26cea74 100644
--- a/src/backend/stores/app/AppStore.js
+++ b/src/backend/stores/app/AppStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/fs/FSEntry.ts b/src/backend/stores/fs/FSEntry.ts
index 629a4b550..12317c7cf 100644
--- a/src/backend/stores/fs/FSEntry.ts
+++ b/src/backend/stores/fs/FSEntry.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export interface FSEntry {
id: number;
uuid: string;
diff --git a/src/backend/stores/fs/FSEntryStore.ts b/src/backend/stores/fs/FSEntryStore.ts
index 6ae312319..393e745c6 100644
--- a/src/backend/stores/fs/FSEntryStore.ts
+++ b/src/backend/stores/fs/FSEntryStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { statfs } from 'node:fs/promises';
import { posix as pathPosix } from 'node:path';
import { v4 as uuidv4 } from 'uuid';
diff --git a/src/backend/stores/fs/S3ObjectStore.ts b/src/backend/stores/fs/S3ObjectStore.ts
index 48deeee62..1c9a0aeec 100644
--- a/src/backend/stores/fs/S3ObjectStore.ts
+++ b/src/backend/stores/fs/S3ObjectStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import {
AbortMultipartUploadCommand,
CompleteMultipartUploadCommand,
diff --git a/src/backend/stores/fs/pendingUploadSessionHelpers.ts b/src/backend/stores/fs/pendingUploadSessionHelpers.ts
index b7e18a763..411c909e8 100644
--- a/src/backend/stores/fs/pendingUploadSessionHelpers.ts
+++ b/src/backend/stores/fs/pendingUploadSessionHelpers.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PendingUploadCreateInput, PendingUploadSession } from './FSEntry.js';
export type PendingUploadSessionStatus =
diff --git a/src/backend/stores/fs/s3Types.ts b/src/backend/stores/fs/s3Types.ts
index 912d833f8..d9be1ab32 100644
--- a/src/backend/stores/fs/s3Types.ts
+++ b/src/backend/stores/fs/s3Types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { Readable } from 'node:stream';
export interface SignedUploadInput {
diff --git a/src/backend/stores/fs/types.ts b/src/backend/stores/fs/types.ts
index d2bb7aa2e..b31ba1fb5 100644
--- a/src/backend/stores/fs/types.ts
+++ b/src/backend/stores/fs/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { FSEntryCreateInput } from './FSEntry.js';
export interface FSEntryRow {
diff --git a/src/backend/stores/group/GroupStore.ts b/src/backend/stores/group/GroupStore.ts
index e43f502d3..cc29f5d8e 100644
--- a/src/backend/stores/group/GroupStore.ts
+++ b/src/backend/stores/group/GroupStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/index.ts b/src/backend/stores/index.ts
index 7ef8efd59..880fb48bc 100644
--- a/src/backend/stores/index.ts
+++ b/src/backend/stores/index.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { AppStore } from './app/AppStore.js';
import { FSEntryStore } from './fs/FSEntryStore.js';
import { GroupStore } from './group/GroupStore.js';
diff --git a/src/backend/stores/notification/NotificationStore.js b/src/backend/stores/notification/NotificationStore.js
index 4a3bc9f26..5491cb757 100644
--- a/src/backend/stores/notification/NotificationStore.js
+++ b/src/backend/stores/notification/NotificationStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/oidc/OIDCStore.js b/src/backend/stores/oidc/OIDCStore.js
index 59a49064c..8da4014dd 100644
--- a/src/backend/stores/oidc/OIDCStore.js
+++ b/src/backend/stores/oidc/OIDCStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterStore } from '../types';
/**
diff --git a/src/backend/stores/permission/PermissionStore.ts b/src/backend/stores/permission/PermissionStore.ts
index 6b9bdb90d..ce55f0f56 100644
--- a/src/backend/stores/permission/PermissionStore.ts
+++ b/src/backend/stores/permission/PermissionStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterStore } from '../types';
import type { LayerInstances } from '../../types';
import type { puterStores } from '../index';
diff --git a/src/backend/stores/session/SessionStore.js b/src/backend/stores/session/SessionStore.js
index af6b8d8d9..1a8d096a8 100644
--- a/src/backend/stores/session/SessionStore.js
+++ b/src/backend/stores/session/SessionStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/share/ShareStore.js b/src/backend/stores/share/ShareStore.js
index 48dbb3e45..84bcff4ea 100644
--- a/src/backend/stores/share/ShareStore.js
+++ b/src/backend/stores/share/ShareStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/subdomain/SubdomainStore.js b/src/backend/stores/subdomain/SubdomainStore.js
index 2cdaf7221..bfe72a040 100644
--- a/src/backend/stores/subdomain/SubdomainStore.js
+++ b/src/backend/stores/subdomain/SubdomainStore.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import { PuterStore } from '../types';
diff --git a/src/backend/stores/systemKv/SystemKVStore.ts b/src/backend/stores/systemKv/SystemKVStore.ts
index 50a1bf737..7a7e3f14e 100644
--- a/src/backend/stores/systemKv/SystemKVStore.ts
+++ b/src/backend/stores/systemKv/SystemKVStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterStore } from '../types';
import type { Actor } from '../../core/actor';
import {
diff --git a/src/backend/stores/systemKv/tableDefinition.ts b/src/backend/stores/systemKv/tableDefinition.ts
index 1add3dd41..9f118430a 100644
--- a/src/backend/stores/systemKv/tableDefinition.ts
+++ b/src/backend/stores/systemKv/tableDefinition.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { CreateTableCommandInput } from '@aws-sdk/client-dynamodb';
export const PUTER_KV_STORE_TABLE_DEFINITION: CreateTableCommandInput = {
diff --git a/src/backend/stores/types.ts b/src/backend/stores/types.ts
index 6104090d8..0eafd2f55 100644
--- a/src/backend/stores/types.ts
+++ b/src/backend/stores/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { puterClients } from '../clients';
import type { IConfig, LayerInstances, WithLifecycle } from '../types';
diff --git a/src/backend/stores/user/UserStore.ts b/src/backend/stores/user/UserStore.ts
index c32004fff..7ee8061fb 100644
--- a/src/backend/stores/user/UserStore.ts
+++ b/src/backend/stores/user/UserStore.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PuterStore } from '../types';
// ── Types ────────────────────────────────────────────────────────────
diff --git a/src/backend/telemetry.ts b/src/backend/telemetry.ts
index e15d1f37f..3e7c8dd9e 100644
--- a/src/backend/telemetry.ts
+++ b/src/backend/telemetry.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';
diff --git a/src/backend/types.ts b/src/backend/types.ts
index 125e0d241..2f9a821ac 100644
--- a/src/backend/types.ts
+++ b/src/backend/types.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { PuterRouter } from './core/http/PuterRouter';
export interface IAWSCredentials {
diff --git a/src/backend/util/appIcon.ts b/src/backend/util/appIcon.ts
index 6afe9c69d..34ef9b21f 100644
--- a/src/backend/util/appIcon.ts
+++ b/src/backend/util/appIcon.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// Always routes through the backend `/app-icon//` endpoint rather
// than the `puter-app-icons` subdomain directly. Some apps (especially those
// imported with a URL icon column that predates the sharp pipeline) only have
diff --git a/src/backend/util/concurrency.ts b/src/backend/util/concurrency.ts
index 47f276d54..283dec38b 100644
--- a/src/backend/util/concurrency.ts
+++ b/src/backend/util/concurrency.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export async function runWithConcurrencyLimit(
values: TInput[],
concurrency: number,
diff --git a/src/backend/util/email.ts b/src/backend/util/email.ts
index 438b69b83..207b6d673 100644
--- a/src/backend/util/email.ts
+++ b/src/backend/util/email.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Email normalization + block-list check. Stateless — used by
* AuthController (signup / change-email / save-account).
diff --git a/src/backend/util/fileSigning.ts b/src/backend/util/fileSigning.ts
index fe2e3fcce..64e86ffe2 100644
--- a/src/backend/util/fileSigning.ts
+++ b/src/backend/util/fileSigning.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { createHash } from 'node:crypto';
import { HttpError } from '../core/http/HttpError.js';
import type { FSEntry } from '../stores/fs/FSEntry.js';
diff --git a/src/backend/util/kvSingleton.ts b/src/backend/util/kvSingleton.ts
index ce381696a..5ce24cbfb 100644
--- a/src/backend/util/kvSingleton.ts
+++ b/src/backend/util/kvSingleton.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import kvjs from '@heyputer/kv.js';
export const kv = new kvjs();
diff --git a/src/backend/util/nativeImport.ts b/src/backend/util/nativeImport.ts
index a8041b452..1dee3c137 100644
--- a/src/backend/util/nativeImport.ts
+++ b/src/backend/util/nativeImport.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
export const nativeImport = new Function(
'specifier',
'return import(specifier)',
diff --git a/src/backend/util/privateLaunchAccess.ts b/src/backend/util/privateLaunchAccess.ts
index 06a28d93d..9b5770c28 100644
--- a/src/backend/util/privateLaunchAccess.ts
+++ b/src/backend/util/privateLaunchAccess.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import type { EventClient } from '../clients/EventClient';
/**
diff --git a/src/backend/util/secureHttp.test.ts b/src/backend/util/secureHttp.test.ts
index bbaa9ea0c..bda7e74cb 100644
--- a/src/backend/util/secureHttp.test.ts
+++ b/src/backend/util/secureHttp.test.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { describe, expect, it } from 'vitest';
import { isPublicResolvedAddress, validateUrlNoIP } from './secureHttp.js';
diff --git a/src/backend/util/secureHttp.ts b/src/backend/util/secureHttp.ts
index 65b2b99d5..30bd79232 100644
--- a/src/backend/util/secureHttp.ts
+++ b/src/backend/util/secureHttp.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Resolver } from 'node:dns';
import net, { BlockList } from 'node:net';
import { Agent as UndiciAgent } from 'undici';
diff --git a/src/backend/util/span.ts b/src/backend/util/span.ts
index 5402451f9..ce36ad19f 100644
--- a/src/backend/util/span.ts
+++ b/src/backend/util/span.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { type Attributes, SpanStatusCode, trace } from '@opentelemetry/api';
const tracer = trace.getTracer('puter-backend');
diff --git a/src/backend/util/taskbarItems.ts b/src/backend/util/taskbarItems.ts
index 1b820edd3..fd809284c 100644
--- a/src/backend/util/taskbarItems.ts
+++ b/src/backend/util/taskbarItems.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { getAppIconUrl } from './appIcon.js';
interface TaskbarEntry {
diff --git a/src/backend/util/userProvisioning.ts b/src/backend/util/userProvisioning.ts
index 0977d9866..cdb2689e7 100644
--- a/src/backend/util/userProvisioning.ts
+++ b/src/backend/util/userProvisioning.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { v4 as uuidv4 } from 'uuid';
import type { AbstractDatabaseClient } from '../clients/database/DatabaseClient';
import type { GroupStore } from '../stores/group/GroupStore';
diff --git a/src/backend/util/validation.js b/src/backend/util/validation.js
index 280a315f5..6ad19b670 100644
--- a/src/backend/util/validation.js
+++ b/src/backend/util/validation.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { HttpError } from '../core/http/HttpError.js';
/**
diff --git a/src/backend/vitest.bench.config.js b/src/backend/vitest.bench.config.js
index e0b1a9c3f..4aadeded5 100644
--- a/src/backend/vitest.bench.config.js
+++ b/src/backend/vitest.bench.config.js
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
// vitest.bench.config.ts - Vitest benchmark configuration for Puter backend
diff --git a/src/backend/vitest.bench.config.ts b/src/backend/vitest.bench.config.ts
index 603d050f3..84c49ea64 100644
--- a/src/backend/vitest.bench.config.ts
+++ b/src/backend/vitest.bench.config.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// vitest.bench.config.ts - Vitest benchmark configuration for Puter backend
import { defineConfig } from 'vitest/config';
diff --git a/src/backend/vitest.config.ts b/src/backend/vitest.config.ts
index 07594245f..097f09c0f 100644
--- a/src/backend/vitest.config.ts
+++ b/src/backend/vitest.config.ts
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// vite.config.ts - Vite configuration for Puter API tests (TypeScript)
import { loadEnv } from 'vite';
import { defineConfig } from 'vitest/config';