@promptbook/cli 0.112.0-101 → 0.112.0-103
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.
- package/apps/agents-server/package.json +1 -1
- package/apps/agents-server/scripts/prerender-homepage.js +76 -1
- package/apps/agents-server/src/app/actions.ts +0 -6
- package/apps/agents-server/src/app/admin/about/page.tsx +1 -1
- package/apps/agents-server/src/app/admin/image-generator-test/ImageAttachmentsEditor.tsx +11 -6
- package/apps/agents-server/src/app/admin/login-methods/shibboleth/page.tsx +365 -0
- package/apps/agents-server/src/app/admin/metadata/MetadataClient.tsx +13 -15
- package/apps/agents-server/src/app/admin/servers/ServersRegistryTable.tsx +3 -3
- package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +13 -14
- package/apps/agents-server/src/app/admin/update/UpdateClient.tsx +12 -3
- package/apps/agents-server/src/app/admin/usage/UsageClientTimelineChart.tsx +1 -1
- package/apps/agents-server/src/app/admin/users/[userId]/UserDetailClient.tsx +21 -14
- package/apps/agents-server/src/app/agents/[agentName]/chat/AgentChatPageLayout.tsx +2 -2
- package/apps/agents-server/src/app/agents/[agentName]/chat/AgentChatSidebarDefault.tsx +11 -7
- package/apps/agents-server/src/app/api/admin/cli-access/route.ts +27 -123
- package/apps/agents-server/src/app/api/admin/code-runners/authentication/route.ts +33 -125
- package/apps/agents-server/src/app/api/auth/login/route.ts +0 -10
- package/apps/agents-server/src/app/api/auth/shibboleth/acs/route.ts +77 -57
- package/apps/agents-server/src/app/api/auth/shibboleth/login/route.ts +57 -33
- package/apps/agents-server/src/app/api/auth/shibboleth/metadata/route.ts +4 -29
- package/apps/agents-server/src/app/api/auth/shibboleth/status/route.ts +17 -0
- package/apps/agents-server/src/app/api/upload/route.ts +148 -209
- package/apps/agents-server/src/app/api/users/[username]/route.ts +1 -1
- package/apps/agents-server/src/app/api/users/route.ts +5 -5
- package/apps/agents-server/src/app/dashboard/page.tsx +1 -1
- package/apps/agents-server/src/app/docs/[docId]/page.tsx +1 -1
- package/apps/agents-server/src/app/docs/page.tsx +1 -1
- package/apps/agents-server/src/app/globals.css +100 -0
- package/apps/agents-server/src/app/layout.tsx +7 -0
- package/apps/agents-server/src/app/recycle-bin/page.tsx +1 -1
- package/apps/agents-server/src/app/system/settings/KeybindingsSettingsClient.tsx +13 -7
- package/apps/agents-server/src/components/AdminTerminal/useAdminTerminalSession.ts +29 -1
- package/apps/agents-server/src/components/AgentProfile/AgentProfile.tsx +3 -3
- package/apps/agents-server/src/components/AgentProfile/AgentProfileImage.tsx +8 -2
- package/apps/agents-server/src/components/DocsToolbar/DocsToolbar.tsx +4 -4
- package/apps/agents-server/src/components/DocumentationContent/DocumentationContent.tsx +9 -9
- package/apps/agents-server/src/components/Footer/Footer.tsx +7 -7
- package/apps/agents-server/src/components/Header/Header.tsx +24 -4
- package/apps/agents-server/src/components/Header/HeaderTypes.ts +6 -0
- package/apps/agents-server/src/components/Header/buildHeaderSystemMenuItems.ts +51 -1
- package/apps/agents-server/src/components/Homepage/Card.tsx +1 -1
- package/apps/agents-server/src/components/Homepage/Section.tsx +3 -1
- package/apps/agents-server/src/components/LayoutWrapper/LayoutWrapper.tsx +12 -1
- package/apps/agents-server/src/components/LoginForm/LoginForm.tsx +100 -149
- package/apps/agents-server/src/components/Skeleton/ConsolePageLoadingSkeleton.tsx +1 -1
- package/apps/agents-server/src/components/Skeleton/DocumentationRouteLoadingSkeleton.tsx +1 -1
- package/apps/agents-server/src/components/Skeleton/HomepageLoadingSkeleton.tsx +1 -1
- package/apps/agents-server/src/components/UsersList/UsersList.tsx +20 -4
- package/apps/agents-server/src/components/UsersList/useUsersAdmin.ts +3 -0
- package/apps/agents-server/src/constants/shibbolethAuth.ts +139 -0
- package/apps/agents-server/src/database/metadataDefaults.ts +54 -80
- package/apps/agents-server/src/database/migrate.ts +30 -1
- package/apps/agents-server/src/database/migrations/2026-06-0100-shibboleth-auth.sql +136 -0
- package/apps/agents-server/src/database/sqlite/$provideLocalSqliteSupabase.ts +88 -36
- package/apps/agents-server/src/languages/ServerTranslationKeys.ts +4 -2
- package/apps/agents-server/src/languages/translations/czech.yaml +4 -2
- package/apps/agents-server/src/languages/translations/english.yaml +5 -3
- package/apps/agents-server/src/tools/$provideCdnForServer.ts +54 -11
- package/apps/agents-server/src/utils/cdn/classes/DigitalOceanSpaces.ts +18 -2
- package/apps/agents-server/src/utils/cdn/classes/TrackedFilesStorage.ts +6 -5
- package/apps/agents-server/src/utils/cdn/interfaces/IFilesStorage.ts +5 -0
- package/apps/agents-server/src/utils/chatExport/renderHtmlToPdfOnServer.ts +11 -0
- package/apps/agents-server/src/utils/createAdminTerminalRouteHandlers.ts +264 -0
- package/apps/agents-server/src/utils/shareTargetPayloads.ts +19 -66
- package/apps/agents-server/src/utils/shibbolethAuthentication.ts +729 -621
- package/apps/agents-server/src/utils/upload/createBookEditorUploadHandler.ts +19 -28
- package/apps/agents-server/src/utils/upload/uploadFileToServer.ts +113 -0
- package/esm/index.es.js +194 -35
- package/esm/index.es.js.map +1 -1
- package/esm/scripts/run-codex-prompts/common/waitForPause.d.ts +12 -0
- package/esm/scripts/run-codex-prompts/main/runPromptRound.d.ts +2 -1
- package/esm/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +1 -0
- package/esm/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -1
- package/esm/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +1 -0
- package/esm/src/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/book-components/Chat/MarkdownContent/MarkdownContent.tsx +63 -4
- package/src/other/templates/getTemplatesPipelineCollection.ts +730 -739
- package/src/version.ts +2 -2
- package/src/versions.txt +2 -0
- package/umd/index.umd.js +194 -35
- package/umd/index.umd.js.map +1 -1
- package/umd/scripts/run-codex-prompts/common/waitForPause.d.ts +12 -0
- package/umd/scripts/run-codex-prompts/main/runPromptRound.d.ts +2 -1
- package/umd/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +1 -0
- package/umd/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -1
- package/umd/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +1 -0
- package/umd/src/version.d.ts +1 -1
- package/apps/agents-server/src/app/api/auth/methods/route.ts +0 -44
- package/apps/agents-server/src/constants/authenticationMethods.ts +0 -74
- package/apps/agents-server/src/constants/shibbolethAuthentication.ts +0 -107
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import type { number_percent, string_knowledge_source_content } from '@promptbook-local/types';
|
|
3
|
+
import type { string_knowledge_source_content } from '@promptbook-local/types';
|
|
5
4
|
import { getSafeCdnPath } from '../cdn/utils/getSafeCdnPath';
|
|
6
5
|
import { normalizeUploadFilename } from '../normalization/normalizeUploadFilename';
|
|
6
|
+
import {
|
|
7
|
+
buildDefaultUserFileUploadPath,
|
|
8
|
+
uploadFileToServer,
|
|
9
|
+
type FileUploadProgressCallback,
|
|
10
|
+
} from './uploadFileToServer';
|
|
7
11
|
|
|
8
12
|
/**
|
|
9
13
|
* Progress callback invoked during file uploads.
|
|
10
14
|
*
|
|
11
15
|
* @private used by chat and book editors.
|
|
12
16
|
*/
|
|
13
|
-
export type FileUploadProgressCallback
|
|
14
|
-
progress: number_percent,
|
|
15
|
-
stats?: {
|
|
16
|
-
loadedBytes: number;
|
|
17
|
-
totalBytes: number;
|
|
18
|
-
},
|
|
19
|
-
) => void;
|
|
17
|
+
export type { FileUploadProgressCallback };
|
|
20
18
|
|
|
21
19
|
/**
|
|
22
20
|
* Optional upload configuration such as progress reporting or cancellation.
|
|
@@ -55,8 +53,8 @@ type UploadPathBuilder = (normalizedFilename: string, pathPrefix: string) => str
|
|
|
55
53
|
/**
|
|
56
54
|
* Constant for build default user file path.
|
|
57
55
|
*/
|
|
58
|
-
const buildDefaultUserFilePath: UploadPathBuilder = (normalizedFilename
|
|
59
|
-
|
|
56
|
+
const buildDefaultUserFilePath: UploadPathBuilder = (normalizedFilename) =>
|
|
57
|
+
buildDefaultUserFileUploadPath(normalizedFilename);
|
|
60
58
|
|
|
61
59
|
/**
|
|
62
60
|
* Configuration of the shared upload handler.
|
|
@@ -95,33 +93,26 @@ export function createFileUploadHandler<ReturnType extends string = string>(
|
|
|
95
93
|
const pathPrefix = process.env.NEXT_PUBLIC_CDN_PATH_PREFIX || '';
|
|
96
94
|
const normalizedFilename = normalizeUploadFilename(file.name);
|
|
97
95
|
const uploadPath = pathBuilder(normalizedFilename, pathPrefix);
|
|
98
|
-
const safeUploadPath = getSafeCdnPath({ pathname: uploadPath });
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
contentType: file.type || 'application/octet-stream',
|
|
106
|
-
}),
|
|
96
|
+
const safeUploadPath = getSafeCdnPath({ pathname: uploadPath, pathPrefix });
|
|
97
|
+
|
|
98
|
+
const uploadResult = await uploadFileToServer({
|
|
99
|
+
file,
|
|
100
|
+
pathname: safeUploadPath,
|
|
101
|
+
purpose,
|
|
102
|
+
contentType: file.type || 'application/octet-stream',
|
|
107
103
|
abortSignal,
|
|
108
|
-
|
|
109
|
-
onProgress?.(progressEvent.percentage / 100, {
|
|
110
|
-
loadedBytes: progressEvent.loaded,
|
|
111
|
-
totalBytes: progressEvent.total,
|
|
112
|
-
});
|
|
113
|
-
},
|
|
104
|
+
onProgress,
|
|
114
105
|
});
|
|
115
106
|
|
|
116
107
|
if (returnShortUrl && process.env.NEXT_PUBLIC_CDN_PUBLIC_URL) {
|
|
117
108
|
const slashIndex = uploadPath.lastIndexOf('/');
|
|
118
109
|
const directoryPath = slashIndex === -1 ? '' : `${uploadPath.slice(0, slashIndex + 1)}`;
|
|
119
110
|
const longUrlPrefix = `${process.env.NEXT_PUBLIC_CDN_PUBLIC_URL}/${directoryPath}`;
|
|
120
|
-
const shortUrl =
|
|
111
|
+
const shortUrl = uploadResult.url.split(longUrlPrefix).join(shortUrlPrefix);
|
|
121
112
|
return shortUrl as ReturnType;
|
|
122
113
|
}
|
|
123
114
|
|
|
124
|
-
return
|
|
115
|
+
return uploadResult.url as ReturnType;
|
|
125
116
|
};
|
|
126
117
|
}
|
|
127
118
|
|
|
@@ -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
|
+
}
|