@paperclipai/server 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/adapters/codex-models.d.ts +4 -0
  2. package/dist/adapters/codex-models.d.ts.map +1 -0
  3. package/dist/adapters/codex-models.js +98 -0
  4. package/dist/adapters/codex-models.js.map +1 -0
  5. package/dist/adapters/http/execute.d.ts +3 -0
  6. package/dist/adapters/http/execute.d.ts.map +1 -0
  7. package/dist/adapters/http/execute.js +39 -0
  8. package/dist/adapters/http/execute.js.map +1 -0
  9. package/dist/adapters/http/index.d.ts +3 -0
  10. package/dist/adapters/http/index.d.ts.map +1 -0
  11. package/dist/adapters/http/index.js +20 -0
  12. package/dist/adapters/http/index.js.map +1 -0
  13. package/dist/adapters/http/test.d.ts +3 -0
  14. package/dist/adapters/http/test.d.ts.map +1 -0
  15. package/dist/adapters/http/test.js +106 -0
  16. package/dist/adapters/http/test.js.map +1 -0
  17. package/dist/adapters/index.d.ts +4 -0
  18. package/dist/adapters/index.d.ts.map +1 -0
  19. package/dist/adapters/index.js +3 -0
  20. package/dist/adapters/index.js.map +1 -0
  21. package/dist/adapters/process/execute.d.ts +3 -0
  22. package/dist/adapters/process/execute.d.ts.map +1 -0
  23. package/dist/adapters/process/execute.js +63 -0
  24. package/dist/adapters/process/execute.js.map +1 -0
  25. package/dist/adapters/process/index.d.ts +3 -0
  26. package/dist/adapters/process/index.d.ts.map +1 -0
  27. package/dist/adapters/process/index.js +23 -0
  28. package/dist/adapters/process/index.js.map +1 -0
  29. package/dist/adapters/process/test.d.ts +3 -0
  30. package/dist/adapters/process/test.d.ts.map +1 -0
  31. package/dist/adapters/process/test.js +77 -0
  32. package/dist/adapters/process/test.js.map +1 -0
  33. package/dist/adapters/registry.d.ts +9 -0
  34. package/dist/adapters/registry.d.ts.map +1 -0
  35. package/dist/adapters/registry.js +63 -0
  36. package/dist/adapters/registry.js.map +1 -0
  37. package/dist/adapters/types.d.ts +2 -0
  38. package/dist/adapters/types.d.ts.map +1 -0
  39. package/dist/adapters/types.js +2 -0
  40. package/dist/adapters/types.js.map +1 -0
  41. package/dist/adapters/utils.d.ts +10 -0
  42. package/dist/adapters/utils.d.ts.map +1 -0
  43. package/dist/adapters/utils.js +14 -0
  44. package/dist/adapters/utils.js.map +1 -0
  45. package/dist/agent-auth-jwt.d.ts +14 -0
  46. package/dist/agent-auth-jwt.d.ts.map +1 -0
  47. package/dist/agent-auth-jwt.js +117 -0
  48. package/dist/agent-auth-jwt.js.map +1 -0
  49. package/dist/app.d.ts +20 -0
  50. package/dist/app.d.ts.map +1 -0
  51. package/dist/app.js +127 -0
  52. package/dist/app.js.map +1 -0
  53. package/dist/auth/better-auth.d.ts +23 -0
  54. package/dist/auth/better-auth.d.ts.map +1 -0
  55. package/dist/auth/better-auth.js +80 -0
  56. package/dist/auth/better-auth.js.map +1 -0
  57. package/dist/board-claim.d.ts +23 -0
  58. package/dist/board-claim.d.ts.map +1 -0
  59. package/dist/board-claim.js +115 -0
  60. package/dist/board-claim.js.map +1 -0
  61. package/dist/config-file.d.ts +3 -0
  62. package/dist/config-file.d.ts.map +1 -0
  63. package/dist/config-file.js +16 -0
  64. package/dist/config-file.js.map +1 -0
  65. package/dist/config.d.ts +33 -0
  66. package/dist/config.d.ts.map +1 -0
  67. package/dist/config.js +114 -0
  68. package/dist/config.js.map +1 -0
  69. package/dist/errors.d.ts +12 -0
  70. package/dist/errors.d.ts.map +1 -0
  71. package/dist/errors.js +28 -0
  72. package/dist/errors.js.map +1 -0
  73. package/dist/home-paths.d.ts +11 -0
  74. package/dist/home-paths.d.ts.map +1 -0
  75. package/dist/home-paths.js +54 -0
  76. package/dist/home-paths.js.map +1 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +439 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/middleware/auth.d.ts +12 -0
  82. package/dist/middleware/auth.d.ts.map +1 -0
  83. package/dist/middleware/auth.js +124 -0
  84. package/dist/middleware/auth.js.map +1 -0
  85. package/dist/middleware/board-mutation-guard.d.ts +3 -0
  86. package/dist/middleware/board-mutation-guard.d.ts.map +1 -0
  87. package/dist/middleware/board-mutation-guard.js +60 -0
  88. package/dist/middleware/board-mutation-guard.js.map +1 -0
  89. package/dist/middleware/error-handler.d.ts +3 -0
  90. package/dist/middleware/error-handler.d.ts.map +1 -0
  91. package/dist/middleware/error-handler.js +22 -0
  92. package/dist/middleware/error-handler.js.map +1 -0
  93. package/dist/middleware/index.d.ts +4 -0
  94. package/dist/middleware/index.d.ts.map +1 -0
  95. package/dist/middleware/index.js +4 -0
  96. package/dist/middleware/index.js.map +1 -0
  97. package/dist/middleware/logger.d.ts +4 -0
  98. package/dist/middleware/logger.d.ts.map +1 -0
  99. package/dist/middleware/logger.js +37 -0
  100. package/dist/middleware/logger.js.map +1 -0
  101. package/dist/middleware/private-hostname-guard.d.ts +11 -0
  102. package/dist/middleware/private-hostname-guard.d.ts.map +1 -0
  103. package/dist/middleware/private-hostname-guard.js +78 -0
  104. package/dist/middleware/private-hostname-guard.js.map +1 -0
  105. package/dist/middleware/validate.d.ts +4 -0
  106. package/dist/middleware/validate.d.ts.map +1 -0
  107. package/dist/middleware/validate.js +7 -0
  108. package/dist/middleware/validate.js.map +1 -0
  109. package/dist/paths.d.ts +3 -0
  110. package/dist/paths.d.ts.map +1 -0
  111. package/dist/paths.js +31 -0
  112. package/dist/paths.js.map +1 -0
  113. package/dist/realtime/live-events-ws.d.ts +10 -0
  114. package/dist/realtime/live-events-ws.d.ts.map +1 -0
  115. package/dist/realtime/live-events-ws.js +185 -0
  116. package/dist/realtime/live-events-ws.js.map +1 -0
  117. package/dist/redaction.d.ts +4 -0
  118. package/dist/redaction.d.ts.map +1 -0
  119. package/dist/redaction.js +63 -0
  120. package/dist/redaction.js.map +1 -0
  121. package/dist/routes/access.d.ts +9 -0
  122. package/dist/routes/access.d.ts.map +1 -0
  123. package/dist/routes/access.js +887 -0
  124. package/dist/routes/access.js.map +1 -0
  125. package/dist/routes/activity.d.ts +3 -0
  126. package/dist/routes/activity.d.ts.map +1 -0
  127. package/dist/routes/activity.js +87 -0
  128. package/dist/routes/activity.js.map +1 -0
  129. package/dist/routes/agents.d.ts +3 -0
  130. package/dist/routes/agents.d.ts.map +1 -0
  131. package/dist/routes/agents.js +1132 -0
  132. package/dist/routes/agents.js.map +1 -0
  133. package/dist/routes/approvals.d.ts +3 -0
  134. package/dist/routes/approvals.d.ts.map +1 -0
  135. package/dist/routes/approvals.js +271 -0
  136. package/dist/routes/approvals.js.map +1 -0
  137. package/dist/routes/assets.d.ts +4 -0
  138. package/dist/routes/assets.d.ts.map +1 -0
  139. package/dist/routes/assets.js +138 -0
  140. package/dist/routes/assets.js.map +1 -0
  141. package/dist/routes/authz.d.ts +15 -0
  142. package/dist/routes/authz.d.ts.map +1 -0
  143. package/dist/routes/authz.js +40 -0
  144. package/dist/routes/authz.js.map +1 -0
  145. package/dist/routes/companies.d.ts +3 -0
  146. package/dist/routes/companies.d.ts.map +1 -0
  147. package/dist/routes/companies.js +159 -0
  148. package/dist/routes/companies.js.map +1 -0
  149. package/dist/routes/costs.d.ts +3 -0
  150. package/dist/routes/costs.d.ts.map +1 -0
  151. package/dist/routes/costs.js +113 -0
  152. package/dist/routes/costs.js.map +1 -0
  153. package/dist/routes/dashboard.d.ts +3 -0
  154. package/dist/routes/dashboard.d.ts.map +1 -0
  155. package/dist/routes/dashboard.js +15 -0
  156. package/dist/routes/dashboard.js.map +1 -0
  157. package/dist/routes/goals.d.ts +3 -0
  158. package/dist/routes/goals.d.ts.map +1 -0
  159. package/dist/routes/goals.js +95 -0
  160. package/dist/routes/goals.js.map +1 -0
  161. package/dist/routes/health.d.ts +9 -0
  162. package/dist/routes/health.d.ts.map +1 -0
  163. package/dist/routes/health.js +38 -0
  164. package/dist/routes/health.js.map +1 -0
  165. package/dist/routes/index.d.ts +15 -0
  166. package/dist/routes/index.d.ts.map +1 -0
  167. package/dist/routes/index.js +15 -0
  168. package/dist/routes/index.js.map +1 -0
  169. package/dist/routes/issues.d.ts +4 -0
  170. package/dist/routes/issues.d.ts.map +1 -0
  171. package/dist/routes/issues.js +973 -0
  172. package/dist/routes/issues.js.map +1 -0
  173. package/dist/routes/llms.d.ts +3 -0
  174. package/dist/routes/llms.d.ts.map +1 -0
  175. package/dist/routes/llms.js +78 -0
  176. package/dist/routes/llms.js.map +1 -0
  177. package/dist/routes/projects.d.ts +3 -0
  178. package/dist/routes/projects.d.ts.map +1 -0
  179. package/dist/routes/projects.js +253 -0
  180. package/dist/routes/projects.js.map +1 -0
  181. package/dist/routes/secrets.d.ts +3 -0
  182. package/dist/routes/secrets.d.ts.map +1 -0
  183. package/dist/routes/secrets.js +128 -0
  184. package/dist/routes/secrets.js.map +1 -0
  185. package/dist/routes/sidebar-badges.d.ts +3 -0
  186. package/dist/routes/sidebar-badges.d.ts.map +1 -0
  187. package/dist/routes/sidebar-badges.js +47 -0
  188. package/dist/routes/sidebar-badges.js.map +1 -0
  189. package/dist/secrets/external-stub-providers.d.ts +5 -0
  190. package/dist/secrets/external-stub-providers.d.ts.map +1 -0
  191. package/dist/secrets/external-stub-providers.js +21 -0
  192. package/dist/secrets/external-stub-providers.js.map +1 -0
  193. package/dist/secrets/local-encrypted-provider.d.ts +3 -0
  194. package/dist/secrets/local-encrypted-provider.d.ts.map +1 -0
  195. package/dist/secrets/local-encrypted-provider.js +116 -0
  196. package/dist/secrets/local-encrypted-provider.js.map +1 -0
  197. package/dist/secrets/provider-registry.d.ts +5 -0
  198. package/dist/secrets/provider-registry.d.ts.map +1 -0
  199. package/dist/secrets/provider-registry.js +20 -0
  200. package/dist/secrets/provider-registry.js.map +1 -0
  201. package/dist/secrets/types.d.ts +21 -0
  202. package/dist/secrets/types.d.ts.map +1 -0
  203. package/dist/secrets/types.js +2 -0
  204. package/dist/secrets/types.js.map +1 -0
  205. package/dist/services/access.d.ts +81 -0
  206. package/dist/services/access.d.ts.map +1 -0
  207. package/dist/services/access.js +187 -0
  208. package/dist/services/access.js.map +1 -0
  209. package/dist/services/activity-log.d.ts +14 -0
  210. package/dist/services/activity-log.d.ts.map +1 -0
  211. package/dist/services/activity-log.js +32 -0
  212. package/dist/services/activity-log.js.map +1 -0
  213. package/dist/services/activity.d.ts +764 -0
  214. package/dist/services/activity.d.ts.map +1 -0
  215. package/dist/services/activity.js +105 -0
  216. package/dist/services/activity.js.map +1 -0
  217. package/dist/services/agent-permissions.d.ts +6 -0
  218. package/dist/services/agent-permissions.d.ts.map +1 -0
  219. package/dist/services/agent-permissions.js +18 -0
  220. package/dist/services/agent-permissions.js.map +1 -0
  221. package/dist/services/agents.d.ts +1494 -0
  222. package/dist/services/agents.d.ts.map +1 -0
  223. package/dist/services/agents.js +454 -0
  224. package/dist/services/agents.js.map +1 -0
  225. package/dist/services/approvals.d.ts +540 -0
  226. package/dist/services/approvals.d.ts.map +1 -0
  227. package/dist/services/approvals.js +173 -0
  228. package/dist/services/approvals.js.map +1 -0
  229. package/dist/services/assets.d.ts +33 -0
  230. package/dist/services/assets.d.ts.map +1 -0
  231. package/dist/services/assets.js +17 -0
  232. package/dist/services/assets.js.map +1 -0
  233. package/dist/services/companies.d.ts +503 -0
  234. package/dist/services/companies.d.ts.map +1 -0
  235. package/dist/services/companies.js +120 -0
  236. package/dist/services/companies.js.map +1 -0
  237. package/dist/services/company-portability.d.ts +8 -0
  238. package/dist/services/company-portability.d.ts.map +1 -0
  239. package/dist/services/company-portability.js +851 -0
  240. package/dist/services/company-portability.js.map +1 -0
  241. package/dist/services/costs.d.ts +50 -0
  242. package/dist/services/costs.d.ts.map +1 -0
  243. package/dist/services/costs.js +166 -0
  244. package/dist/services/costs.js.map +1 -0
  245. package/dist/services/dashboard.d.ts +21 -0
  246. package/dist/services/dashboard.d.ts.map +1 -0
  247. package/dist/services/dashboard.js +96 -0
  248. package/dist/services/dashboard.js.map +1 -0
  249. package/dist/services/goals.d.ts +407 -0
  250. package/dist/services/goals.d.ts.map +1 -0
  251. package/dist/services/goals.js +29 -0
  252. package/dist/services/goals.js.map +1 -0
  253. package/dist/services/heartbeat.d.ts +1666 -0
  254. package/dist/services/heartbeat.d.ts.map +1 -0
  255. package/dist/services/heartbeat.js +1752 -0
  256. package/dist/services/heartbeat.js.map +1 -0
  257. package/dist/services/index.d.ts +20 -0
  258. package/dist/services/index.d.ts.map +1 -0
  259. package/dist/services/index.js +20 -0
  260. package/dist/services/index.js.map +1 -0
  261. package/dist/services/issue-approvals.d.ts +56 -0
  262. package/dist/services/issue-approvals.d.ts.map +1 -0
  263. package/dist/services/issue-approvals.js +153 -0
  264. package/dist/services/issue-approvals.js.map +1 -0
  265. package/dist/services/issues.d.ts +756 -0
  266. package/dist/services/issues.d.ts.map +1 -0
  267. package/dist/services/issues.js +917 -0
  268. package/dist/services/issues.js.map +1 -0
  269. package/dist/services/live-events.d.ts +12 -0
  270. package/dist/services/live-events.d.ts.map +1 -0
  271. package/dist/services/live-events.js +24 -0
  272. package/dist/services/live-events.js.map +1 -0
  273. package/dist/services/projects.d.ts +66 -0
  274. package/dist/services/projects.d.ts.map +1 -0
  275. package/dist/services/projects.js +472 -0
  276. package/dist/services/projects.js.map +1 -0
  277. package/dist/services/run-log-store.d.ts +34 -0
  278. package/dist/services/run-log-store.d.ts.map +1 -0
  279. package/dist/services/run-log-store.js +112 -0
  280. package/dist/services/run-log-store.js.map +1 -0
  281. package/dist/services/secrets.d.ts +506 -0
  282. package/dist/services/secrets.d.ts.map +1 -0
  283. package/dist/services/secrets.js +284 -0
  284. package/dist/services/secrets.js.map +1 -0
  285. package/dist/services/sidebar-badges.d.ts +9 -0
  286. package/dist/services/sidebar-badges.d.ts.map +1 -0
  287. package/dist/services/sidebar-badges.js +33 -0
  288. package/dist/services/sidebar-badges.js.map +1 -0
  289. package/dist/startup-banner.d.ts +27 -0
  290. package/dist/startup-banner.d.ts.map +1 -0
  291. package/dist/startup-banner.js +112 -0
  292. package/dist/startup-banner.js.map +1 -0
  293. package/dist/storage/index.d.ts +6 -0
  294. package/dist/storage/index.d.ts.map +1 -0
  295. package/dist/storage/index.js +29 -0
  296. package/dist/storage/index.js.map +1 -0
  297. package/dist/storage/local-disk-provider.d.ts +3 -0
  298. package/dist/storage/local-disk-provider.d.ts.map +1 -0
  299. package/dist/storage/local-disk-provider.js +79 -0
  300. package/dist/storage/local-disk-provider.js.map +1 -0
  301. package/dist/storage/provider-registry.d.ts +4 -0
  302. package/dist/storage/provider-registry.d.ts.map +1 -0
  303. package/dist/storage/provider-registry.js +15 -0
  304. package/dist/storage/provider-registry.js.map +1 -0
  305. package/dist/storage/s3-provider.d.ts +11 -0
  306. package/dist/storage/s3-provider.d.ts.map +1 -0
  307. package/dist/storage/s3-provider.js +123 -0
  308. package/dist/storage/s3-provider.js.map +1 -0
  309. package/dist/storage/service.d.ts +3 -0
  310. package/dist/storage/service.d.ts.map +1 -0
  311. package/dist/storage/service.js +120 -0
  312. package/dist/storage/service.js.map +1 -0
  313. package/dist/storage/types.d.ts +55 -0
  314. package/dist/storage/types.d.ts.map +1 -0
  315. package/dist/storage/types.js +2 -0
  316. package/dist/storage/types.js.map +1 -0
  317. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGlF,wBAAgB,cAAc,IAAI,eAAe,GAAG,IAAI,CAWvD"}
@@ -0,0 +1,16 @@
1
+ import fs from "node:fs";
2
+ import { paperclipConfigSchema } from "@paperclipai/shared";
3
+ import { resolvePaperclipConfigPath } from "./paths.js";
4
+ export function readConfigFile() {
5
+ const configPath = resolvePaperclipConfigPath();
6
+ if (!fs.existsSync(configPath))
7
+ return null;
8
+ try {
9
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
10
+ return paperclipConfigSchema.parse(raw);
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ //# sourceMappingURL=config-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,cAAc;IAC5B,MAAM,UAAU,GAAG,0BAA0B,EAAE,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type AuthBaseUrlMode, type DeploymentExposure, type DeploymentMode, type SecretProvider, type StorageProvider } from "@paperclipai/shared";
2
+ type DatabaseMode = "embedded-postgres" | "postgres";
3
+ export interface Config {
4
+ deploymentMode: DeploymentMode;
5
+ deploymentExposure: DeploymentExposure;
6
+ host: string;
7
+ port: number;
8
+ allowedHostnames: string[];
9
+ authBaseUrlMode: AuthBaseUrlMode;
10
+ authPublicBaseUrl: string | undefined;
11
+ databaseMode: DatabaseMode;
12
+ databaseUrl: string | undefined;
13
+ embeddedPostgresDataDir: string;
14
+ embeddedPostgresPort: number;
15
+ serveUi: boolean;
16
+ uiDevMiddleware: boolean;
17
+ secretsProvider: SecretProvider;
18
+ secretsStrictMode: boolean;
19
+ secretsMasterKeyFilePath: string;
20
+ storageProvider: StorageProvider;
21
+ storageLocalDiskBaseDir: string;
22
+ storageS3Bucket: string;
23
+ storageS3Region: string;
24
+ storageS3Endpoint: string | undefined;
25
+ storageS3Prefix: string;
26
+ storageS3ForcePathStyle: boolean;
27
+ heartbeatSchedulerEnabled: boolean;
28
+ heartbeatSchedulerIntervalMs: number;
29
+ companyDeletionEnabled: boolean;
30
+ }
31
+ export declare function loadConfig(): Config;
32
+ export {};
33
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAa7B,KAAK,YAAY,GAAG,mBAAmB,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,4BAA4B,EAAE,MAAM,CAAC;IACrC,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAkInC"}
package/dist/config.js ADDED
@@ -0,0 +1,114 @@
1
+ import { readConfigFile } from "./config-file.js";
2
+ import { existsSync } from "node:fs";
3
+ import { config as loadDotenv } from "dotenv";
4
+ import { resolvePaperclipEnvPath } from "./paths.js";
5
+ import { AUTH_BASE_URL_MODES, DEPLOYMENT_EXPOSURES, DEPLOYMENT_MODES, SECRET_PROVIDERS, STORAGE_PROVIDERS, } from "@paperclipai/shared";
6
+ import { resolveDefaultEmbeddedPostgresDir, resolveDefaultSecretsKeyFilePath, resolveDefaultStorageDir, resolveHomeAwarePath, } from "./home-paths.js";
7
+ const PAPERCLIP_ENV_FILE_PATH = resolvePaperclipEnvPath();
8
+ if (existsSync(PAPERCLIP_ENV_FILE_PATH)) {
9
+ loadDotenv({ path: PAPERCLIP_ENV_FILE_PATH, override: false, quiet: true });
10
+ }
11
+ export function loadConfig() {
12
+ const fileConfig = readConfigFile();
13
+ const fileDatabaseMode = (fileConfig?.database.mode === "postgres" ? "postgres" : "embedded-postgres");
14
+ const fileDbUrl = fileDatabaseMode === "postgres"
15
+ ? fileConfig?.database.connectionString
16
+ : undefined;
17
+ const fileSecrets = fileConfig?.secrets;
18
+ const fileStorage = fileConfig?.storage;
19
+ const strictModeFromEnv = process.env.PAPERCLIP_SECRETS_STRICT_MODE;
20
+ const secretsStrictMode = strictModeFromEnv !== undefined
21
+ ? strictModeFromEnv === "true"
22
+ : (fileSecrets?.strictMode ?? false);
23
+ const providerFromEnvRaw = process.env.PAPERCLIP_SECRETS_PROVIDER;
24
+ const providerFromEnv = providerFromEnvRaw && SECRET_PROVIDERS.includes(providerFromEnvRaw)
25
+ ? providerFromEnvRaw
26
+ : null;
27
+ const providerFromFile = fileSecrets?.provider;
28
+ const secretsProvider = providerFromEnv ?? providerFromFile ?? "local_encrypted";
29
+ const storageProviderFromEnvRaw = process.env.PAPERCLIP_STORAGE_PROVIDER;
30
+ const storageProviderFromEnv = storageProviderFromEnvRaw && STORAGE_PROVIDERS.includes(storageProviderFromEnvRaw)
31
+ ? storageProviderFromEnvRaw
32
+ : null;
33
+ const storageProvider = storageProviderFromEnv ?? fileStorage?.provider ?? "local_disk";
34
+ const storageLocalDiskBaseDir = resolveHomeAwarePath(process.env.PAPERCLIP_STORAGE_LOCAL_DIR ??
35
+ fileStorage?.localDisk?.baseDir ??
36
+ resolveDefaultStorageDir());
37
+ const storageS3Bucket = process.env.PAPERCLIP_STORAGE_S3_BUCKET ?? fileStorage?.s3?.bucket ?? "paperclip";
38
+ const storageS3Region = process.env.PAPERCLIP_STORAGE_S3_REGION ?? fileStorage?.s3?.region ?? "us-east-1";
39
+ const storageS3Endpoint = process.env.PAPERCLIP_STORAGE_S3_ENDPOINT ?? fileStorage?.s3?.endpoint ?? undefined;
40
+ const storageS3Prefix = process.env.PAPERCLIP_STORAGE_S3_PREFIX ?? fileStorage?.s3?.prefix ?? "";
41
+ const storageS3ForcePathStyle = process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE !== undefined
42
+ ? process.env.PAPERCLIP_STORAGE_S3_FORCE_PATH_STYLE === "true"
43
+ : (fileStorage?.s3?.forcePathStyle ?? false);
44
+ const deploymentModeFromEnvRaw = process.env.PAPERCLIP_DEPLOYMENT_MODE;
45
+ const deploymentModeFromEnv = deploymentModeFromEnvRaw && DEPLOYMENT_MODES.includes(deploymentModeFromEnvRaw)
46
+ ? deploymentModeFromEnvRaw
47
+ : null;
48
+ const deploymentMode = deploymentModeFromEnv ?? fileConfig?.server.deploymentMode ?? "local_trusted";
49
+ const deploymentExposureFromEnvRaw = process.env.PAPERCLIP_DEPLOYMENT_EXPOSURE;
50
+ const deploymentExposureFromEnv = deploymentExposureFromEnvRaw &&
51
+ DEPLOYMENT_EXPOSURES.includes(deploymentExposureFromEnvRaw)
52
+ ? deploymentExposureFromEnvRaw
53
+ : null;
54
+ const deploymentExposure = deploymentMode === "local_trusted"
55
+ ? "private"
56
+ : (deploymentExposureFromEnv ?? fileConfig?.server.exposure ?? "private");
57
+ const authBaseUrlModeFromEnvRaw = process.env.PAPERCLIP_AUTH_BASE_URL_MODE;
58
+ const authBaseUrlModeFromEnv = authBaseUrlModeFromEnvRaw &&
59
+ AUTH_BASE_URL_MODES.includes(authBaseUrlModeFromEnvRaw)
60
+ ? authBaseUrlModeFromEnvRaw
61
+ : null;
62
+ const authPublicBaseUrlRaw = process.env.PAPERCLIP_AUTH_PUBLIC_BASE_URL ??
63
+ process.env.BETTER_AUTH_URL ??
64
+ fileConfig?.auth?.publicBaseUrl;
65
+ const authPublicBaseUrl = authPublicBaseUrlRaw?.trim() || undefined;
66
+ const authBaseUrlMode = authBaseUrlModeFromEnv ??
67
+ fileConfig?.auth?.baseUrlMode ??
68
+ (authPublicBaseUrl ? "explicit" : "auto");
69
+ const allowedHostnamesFromEnvRaw = process.env.PAPERCLIP_ALLOWED_HOSTNAMES;
70
+ const allowedHostnamesFromEnv = allowedHostnamesFromEnvRaw
71
+ ? allowedHostnamesFromEnvRaw
72
+ .split(",")
73
+ .map((value) => value.trim().toLowerCase())
74
+ .filter((value) => value.length > 0)
75
+ : null;
76
+ const allowedHostnames = Array.from(new Set((allowedHostnamesFromEnv ?? fileConfig?.server.allowedHostnames ?? []).map((value) => value.trim().toLowerCase()).filter(Boolean)));
77
+ const companyDeletionEnvRaw = process.env.PAPERCLIP_ENABLE_COMPANY_DELETION;
78
+ const companyDeletionEnabled = companyDeletionEnvRaw !== undefined
79
+ ? companyDeletionEnvRaw === "true"
80
+ : deploymentMode === "local_trusted";
81
+ return {
82
+ deploymentMode,
83
+ deploymentExposure,
84
+ host: process.env.HOST ?? fileConfig?.server.host ?? "127.0.0.1",
85
+ port: Number(process.env.PORT) || fileConfig?.server.port || 3100,
86
+ allowedHostnames,
87
+ authBaseUrlMode,
88
+ authPublicBaseUrl,
89
+ databaseMode: fileDatabaseMode,
90
+ databaseUrl: process.env.DATABASE_URL ?? fileDbUrl,
91
+ embeddedPostgresDataDir: resolveHomeAwarePath(fileConfig?.database.embeddedPostgresDataDir ?? resolveDefaultEmbeddedPostgresDir()),
92
+ embeddedPostgresPort: fileConfig?.database.embeddedPostgresPort ?? 54329,
93
+ serveUi: process.env.SERVE_UI !== undefined
94
+ ? process.env.SERVE_UI === "true"
95
+ : fileConfig?.server.serveUi ?? true,
96
+ uiDevMiddleware: process.env.PAPERCLIP_UI_DEV_MIDDLEWARE === "true",
97
+ secretsProvider,
98
+ secretsStrictMode,
99
+ secretsMasterKeyFilePath: resolveHomeAwarePath(process.env.PAPERCLIP_SECRETS_MASTER_KEY_FILE ??
100
+ fileSecrets?.localEncrypted.keyFilePath ??
101
+ resolveDefaultSecretsKeyFilePath()),
102
+ storageProvider,
103
+ storageLocalDiskBaseDir,
104
+ storageS3Bucket,
105
+ storageS3Region,
106
+ storageS3Endpoint,
107
+ storageS3Prefix,
108
+ storageS3ForcePathStyle,
109
+ heartbeatSchedulerEnabled: process.env.HEARTBEAT_SCHEDULER_ENABLED !== "false",
110
+ heartbeatSchedulerIntervalMs: Math.max(10000, Number(process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS) || 30000),
111
+ companyDeletionEnabled,
112
+ };
113
+ }
114
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class HttpError extends Error {
2
+ status: number;
3
+ details?: unknown;
4
+ constructor(status: number, message: string, details?: unknown);
5
+ }
6
+ export declare function badRequest(message: string, details?: unknown): HttpError;
7
+ export declare function unauthorized(message?: string): HttpError;
8
+ export declare function forbidden(message?: string): HttpError;
9
+ export declare function notFound(message?: string): HttpError;
10
+ export declare function conflict(message: string, details?: unknown): HttpError;
11
+ export declare function unprocessable(message: string, details?: unknown): HttpError;
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEN,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAK/D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,aAE5D;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAiB,aAEpD;AAED,wBAAgB,SAAS,CAAC,OAAO,SAAc,aAE9C;AAED,wBAAgB,QAAQ,CAAC,OAAO,SAAc,aAE7C;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,aAE1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,aAE/D"}
package/dist/errors.js ADDED
@@ -0,0 +1,28 @@
1
+ export class HttpError extends Error {
2
+ status;
3
+ details;
4
+ constructor(status, message, details) {
5
+ super(message);
6
+ this.status = status;
7
+ this.details = details;
8
+ }
9
+ }
10
+ export function badRequest(message, details) {
11
+ return new HttpError(400, message, details);
12
+ }
13
+ export function unauthorized(message = "Unauthorized") {
14
+ return new HttpError(401, message);
15
+ }
16
+ export function forbidden(message = "Forbidden") {
17
+ return new HttpError(403, message);
18
+ }
19
+ export function notFound(message = "Not found") {
20
+ return new HttpError(404, message);
21
+ }
22
+ export function conflict(message, details) {
23
+ return new HttpError(409, message, details);
24
+ }
25
+ export function unprocessable(message, details) {
26
+ return new HttpError(422, message, details);
27
+ }
28
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,MAAM,CAAS;IACf,OAAO,CAAW;IAElB,YAAY,MAAc,EAAE,OAAe,EAAE,OAAiB;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,OAAiB;IAC3D,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,cAAc;IACnD,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAO,GAAG,WAAW;IAC7C,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAO,GAAG,WAAW;IAC5C,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,OAAiB;IACzD,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAiB;IAC9D,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function resolvePaperclipHomeDir(): string;
2
+ export declare function resolvePaperclipInstanceId(): string;
3
+ export declare function resolvePaperclipInstanceRoot(): string;
4
+ export declare function resolveDefaultConfigPath(): string;
5
+ export declare function resolveDefaultEmbeddedPostgresDir(): string;
6
+ export declare function resolveDefaultLogsDir(): string;
7
+ export declare function resolveDefaultSecretsKeyFilePath(): string;
8
+ export declare function resolveDefaultStorageDir(): string;
9
+ export declare function resolveDefaultAgentWorkspaceDir(agentId: string): string;
10
+ export declare function resolveHomeAwarePath(value: string): string;
11
+ //# sourceMappingURL=home-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-paths.d.ts","sourceRoot":"","sources":["../src/home-paths.ts"],"names":[],"mappings":"AAaA,wBAAgB,uBAAuB,IAAI,MAAM,CAIhD;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAMnD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,54 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ const DEFAULT_INSTANCE_ID = "default";
4
+ const INSTANCE_ID_RE = /^[a-zA-Z0-9_-]+$/;
5
+ const PATH_SEGMENT_RE = /^[a-zA-Z0-9_-]+$/;
6
+ function expandHomePrefix(value) {
7
+ if (value === "~")
8
+ return os.homedir();
9
+ if (value.startsWith("~/"))
10
+ return path.resolve(os.homedir(), value.slice(2));
11
+ return value;
12
+ }
13
+ export function resolvePaperclipHomeDir() {
14
+ const envHome = process.env.PAPERCLIP_HOME?.trim();
15
+ if (envHome)
16
+ return path.resolve(expandHomePrefix(envHome));
17
+ return path.resolve(os.homedir(), ".paperclip");
18
+ }
19
+ export function resolvePaperclipInstanceId() {
20
+ const raw = process.env.PAPERCLIP_INSTANCE_ID?.trim() || DEFAULT_INSTANCE_ID;
21
+ if (!INSTANCE_ID_RE.test(raw)) {
22
+ throw new Error(`Invalid PAPERCLIP_INSTANCE_ID '${raw}'.`);
23
+ }
24
+ return raw;
25
+ }
26
+ export function resolvePaperclipInstanceRoot() {
27
+ return path.resolve(resolvePaperclipHomeDir(), "instances", resolvePaperclipInstanceId());
28
+ }
29
+ export function resolveDefaultConfigPath() {
30
+ return path.resolve(resolvePaperclipInstanceRoot(), "config.json");
31
+ }
32
+ export function resolveDefaultEmbeddedPostgresDir() {
33
+ return path.resolve(resolvePaperclipInstanceRoot(), "db");
34
+ }
35
+ export function resolveDefaultLogsDir() {
36
+ return path.resolve(resolvePaperclipInstanceRoot(), "logs");
37
+ }
38
+ export function resolveDefaultSecretsKeyFilePath() {
39
+ return path.resolve(resolvePaperclipInstanceRoot(), "secrets", "master.key");
40
+ }
41
+ export function resolveDefaultStorageDir() {
42
+ return path.resolve(resolvePaperclipInstanceRoot(), "data", "storage");
43
+ }
44
+ export function resolveDefaultAgentWorkspaceDir(agentId) {
45
+ const trimmed = agentId.trim();
46
+ if (!PATH_SEGMENT_RE.test(trimmed)) {
47
+ throw new Error(`Invalid agent id for workspace path '${agentId}'.`);
48
+ }
49
+ return path.resolve(resolvePaperclipInstanceRoot(), "workspaces", trimmed);
50
+ }
51
+ export function resolveHomeAwarePath(value) {
52
+ return path.resolve(expandHomePrefix(value));
53
+ }
54
+ //# sourceMappingURL=home-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-paths.js","sourceRoot":"","sources":["../src/home-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC;IAC7E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,aAAa,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}