@promptbook/cli 0.112.0-102 → 0.112.0-104

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 (54) hide show
  1. package/apps/agents-server/README.md +0 -6
  2. package/apps/agents-server/src/app/AddAgentButton.tsx +0 -5
  3. package/apps/agents-server/src/app/actions.ts +50 -0
  4. package/apps/agents-server/src/app/admin/image-generator-test/ImageAttachmentsEditor.tsx +11 -6
  5. package/apps/agents-server/src/app/admin/metadata/MetadataClient.tsx +13 -15
  6. package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +13 -14
  7. package/apps/agents-server/src/app/agents/[agentName]/AgentProfileChat.tsx +3 -4
  8. package/apps/agents-server/src/app/api/health/route.ts +18 -0
  9. package/apps/agents-server/src/app/api/upload/route.ts +110 -383
  10. package/apps/agents-server/src/components/AgentProfile/AgentProfile.tsx +1 -4
  11. package/apps/agents-server/src/components/Header/Header.tsx +0 -11
  12. package/apps/agents-server/src/components/Header/useHeaderAgentMenus.tsx +0 -5
  13. package/apps/agents-server/src/components/NewAgentDialog/useNewAgentDialog.tsx +39 -16
  14. package/apps/agents-server/src/constants/defaultAgentAvatarVisual.ts +1 -1
  15. package/apps/agents-server/src/database/migrations/2026-06-0200-default-agent-avatar-visual-octopus3d3.sql +16 -0
  16. package/apps/agents-server/src/middleware.ts +2 -1
  17. package/apps/agents-server/src/tools/$provideCdnForServer.ts +87 -49
  18. package/apps/agents-server/src/utils/agentRouting/resolveAgentRouteTarget.ts +27 -4
  19. package/apps/agents-server/src/utils/cdn/classes/DigitalOceanSpaces.ts +17 -49
  20. package/apps/agents-server/src/utils/cdn/classes/TrackedFilesStorage.ts +5 -2
  21. package/apps/agents-server/src/utils/cdn/interfaces/IFilesStorage.ts +5 -0
  22. package/apps/agents-server/src/utils/defaultAgents/defaultAgents.ts +168 -0
  23. package/apps/agents-server/src/utils/defaultAgents/installDefaultAgents.ts +139 -0
  24. package/apps/agents-server/src/utils/shareTargetPayloads.ts +15 -63
  25. package/apps/agents-server/src/utils/upload/createBookEditorUploadHandler.ts +23 -150
  26. package/apps/agents-server/src/utils/upload/uploadFileToServer.ts +113 -0
  27. package/esm/index.es.js +711 -41
  28. package/esm/index.es.js.map +1 -1
  29. package/esm/scripts/run-codex-prompts/common/waitForPause.d.ts +12 -0
  30. package/esm/scripts/run-codex-prompts/main/runPromptRound.d.ts +2 -1
  31. package/esm/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +1 -0
  32. package/esm/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -1
  33. package/esm/src/avatars/types/AvatarVisualDefinition.d.ts +1 -1
  34. package/esm/src/avatars/visuals/octopus3d3AvatarVisual.d.ts +7 -0
  35. package/esm/src/version.d.ts +1 -1
  36. package/package.json +1 -1
  37. package/src/avatars/types/AvatarVisualDefinition.ts +1 -0
  38. package/src/avatars/visuals/avatarVisualRegistry.ts +2 -0
  39. package/src/avatars/visuals/octopus3d3AvatarVisual.ts +903 -0
  40. package/src/book-components/Chat/MarkdownContent/MarkdownContent.tsx +1 -3
  41. package/src/other/templates/getTemplatesPipelineCollection.ts +799 -809
  42. package/src/utils/agents/resolveAgentAvatarImageUrl.ts +1 -1
  43. package/src/version.ts +2 -2
  44. package/src/versions.txt +1 -0
  45. package/umd/index.umd.js +711 -41
  46. package/umd/index.umd.js.map +1 -1
  47. package/umd/scripts/run-codex-prompts/common/waitForPause.d.ts +12 -0
  48. package/umd/scripts/run-codex-prompts/main/runPromptRound.d.ts +2 -1
  49. package/umd/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +1 -0
  50. package/umd/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -1
  51. package/umd/src/avatars/types/AvatarVisualDefinition.d.ts +1 -1
  52. package/umd/src/avatars/visuals/octopus3d3AvatarVisual.d.ts +7 -0
  53. package/umd/src/version.d.ts +1 -1
  54. package/apps/agents-server/src/utils/cdn/resolveCdnStorageProvider.ts +0 -40
@@ -0,0 +1,113 @@
1
+ 'use client';
2
+
3
+ import type { number_percent } from '@promptbook-local/types';
4
+
5
+ /**
6
+ * Progress callback invoked during file uploads.
7
+ *
8
+ * @private used by chat, book editor, and admin upload surfaces.
9
+ */
10
+ export type FileUploadProgressCallback = (
11
+ progress: number_percent,
12
+ stats?: {
13
+ loadedBytes: number;
14
+ totalBytes: number;
15
+ },
16
+ ) => void;
17
+
18
+ /**
19
+ * Options for uploading one file through the Agents Server upload endpoint.
20
+ *
21
+ * @private used by browser upload helpers.
22
+ */
23
+ export type ServerFileUploadOptions = {
24
+ file: File;
25
+ pathname: string;
26
+ purpose?: string;
27
+ contentType?: string;
28
+ abortSignal?: AbortSignal;
29
+ onProgress?: FileUploadProgressCallback;
30
+ };
31
+
32
+ /**
33
+ * Response returned by the Agents Server upload endpoint.
34
+ *
35
+ * @private used by browser upload helpers.
36
+ */
37
+ export type ServerFileUploadResult = {
38
+ url: string;
39
+ pathname: string;
40
+ contentType: string;
41
+ size: number;
42
+ };
43
+
44
+ /**
45
+ * Builds the default CDN key used for user-uploaded files.
46
+ *
47
+ * @private shared by browser upload surfaces.
48
+ */
49
+ export function buildDefaultUserFileUploadPath(normalizedFilename: string): string {
50
+ return `user/files/${normalizedFilename}`;
51
+ }
52
+
53
+ /**
54
+ * Uploads one browser file to `/api/upload` using normal multipart form data.
55
+ *
56
+ * @private shared by browser upload surfaces.
57
+ */
58
+ export function uploadFileToServer(options: ServerFileUploadOptions): Promise<ServerFileUploadResult> {
59
+ const { file, pathname, purpose = 'GENERIC_UPLOAD', contentType = file.type || 'application/octet-stream' } = options;
60
+
61
+ return new Promise((resolve, reject) => {
62
+ const request = new XMLHttpRequest();
63
+ const formData = new FormData();
64
+
65
+ formData.append('file', file);
66
+ formData.append('pathname', pathname);
67
+ formData.append('purpose', purpose);
68
+ formData.append('contentType', contentType);
69
+
70
+ request.open('POST', '/api/upload');
71
+ request.responseType = 'json';
72
+
73
+ request.upload.onprogress = (event) => {
74
+ if (!event.lengthComputable || !options.onProgress) {
75
+ return;
76
+ }
77
+
78
+ options.onProgress(event.loaded / event.total, {
79
+ loadedBytes: event.loaded,
80
+ totalBytes: event.total,
81
+ });
82
+ };
83
+
84
+ request.onload = () => {
85
+ const responseBody = request.response as Partial<ServerFileUploadResult> & { error?: string } | null;
86
+
87
+ if (request.status >= 200 && request.status < 300 && responseBody?.url) {
88
+ options.onProgress?.(1 as number_percent, {
89
+ loadedBytes: file.size,
90
+ totalBytes: file.size,
91
+ });
92
+
93
+ resolve(responseBody as ServerFileUploadResult);
94
+ return;
95
+ }
96
+
97
+ reject(new Error(responseBody?.error || `File upload failed with HTTP ${request.status}.`));
98
+ };
99
+
100
+ request.onerror = () => reject(new Error('File upload failed.'));
101
+ request.onabort = () => reject(new DOMException('File upload was aborted.', 'AbortError'));
102
+
103
+ options.abortSignal?.addEventListener(
104
+ 'abort',
105
+ () => {
106
+ request.abort();
107
+ },
108
+ { once: true },
109
+ );
110
+
111
+ request.send(formData);
112
+ });
113
+ }