@promptbook/cli 0.112.0-103 โ†’ 0.112.0-105

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 (190) hide show
  1. package/apps/agents-server/src/app/AddAgentButton.tsx +0 -5
  2. package/apps/agents-server/src/app/actions.ts +50 -0
  3. package/apps/agents-server/src/app/admin/image-generator-test/ImageAttachmentsEditor.tsx +19 -3
  4. package/apps/agents-server/src/app/admin/limits/LimitsClient.tsx +11 -12
  5. package/apps/agents-server/src/app/admin/metadata/MetadataClient.tsx +34 -2
  6. package/apps/agents-server/src/app/admin/servers/CreateServerDialog.tsx +6 -1
  7. package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +13 -1
  8. package/apps/agents-server/src/app/agents/[agentName]/AgentChatWrapper.tsx +11 -2
  9. package/apps/agents-server/src/app/agents/[agentName]/AgentProfileChat.tsx +14 -5
  10. package/apps/agents-server/src/app/agents/[agentName]/book/BookEditorWrapper.tsx +7 -1
  11. package/apps/agents-server/src/app/agents/[agentName]/chat/CanonicalAgentChatSurface.tsx +11 -1
  12. package/apps/agents-server/src/app/agents/[agentName]/images/default-avatar.png/route.ts +6 -2
  13. package/apps/agents-server/src/app/api/health/route.ts +18 -0
  14. package/apps/agents-server/src/app/api/images/[filename]/route.ts +6 -2
  15. package/apps/agents-server/src/app/api/internal/agent-runner-limits/route.ts +51 -0
  16. package/apps/agents-server/src/app/api/upload/route.ts +48 -12
  17. package/apps/agents-server/src/app/layout.tsx +13 -0
  18. package/apps/agents-server/src/components/AgentProfile/AgentProfile.tsx +1 -4
  19. package/apps/agents-server/src/components/FileUploadAvailability/FileUploadAvailabilityContext.tsx +50 -0
  20. package/apps/agents-server/src/components/FileUploadAvailability/FileUploadUnavailableNotice.tsx +45 -0
  21. package/apps/agents-server/src/components/Header/Header.tsx +0 -11
  22. package/apps/agents-server/src/components/Header/useHeaderAgentMenus.tsx +0 -5
  23. package/apps/agents-server/src/components/LayoutWrapper/LayoutWrapper.tsx +85 -76
  24. package/apps/agents-server/src/components/NewAgentDialog/NewAgentDialog.tsx +7 -3
  25. package/apps/agents-server/src/components/NewAgentDialog/NewAgentWizardKnowledgeStep.tsx +6 -0
  26. package/apps/agents-server/src/components/NewAgentDialog/useNewAgentDialog.tsx +39 -16
  27. package/apps/agents-server/src/components/NewAgentDialog/useNewAgentWizardKnowledgeState.ts +8 -1
  28. package/apps/agents-server/src/constants/defaultAgentAvatarVisual.ts +1 -1
  29. package/apps/agents-server/src/constants/serverLimits.ts +22 -2
  30. package/apps/agents-server/src/database/migrations/2026-06-0200-default-agent-avatar-visual-octopus3d3.sql +16 -0
  31. package/apps/agents-server/src/database/seedDefaultAgents.ts +218 -0
  32. package/apps/agents-server/src/middleware.ts +2 -1
  33. package/apps/agents-server/src/tools/$provideCdnForServer.ts +114 -9
  34. package/apps/agents-server/src/utils/agentRouting/resolveAgentRouteTarget.ts +27 -4
  35. package/apps/agents-server/src/utils/defaultAgents/loadDefaultAgentBooks.ts +103 -0
  36. package/apps/agents-server/src/utils/knowledge/createInlineKnowledgeSourceUploader.ts +24 -5
  37. package/apps/agents-server/src/utils/serverLimits.ts +26 -1
  38. package/apps/agents-server/src/utils/serverManagement/createManagedServer/seedServerDefaultAgents.ts +1 -85
  39. package/apps/agents-server/src/utils/shareTargetPayloads.ts +20 -2
  40. package/apps/agents-server/src/utils/upload/fileUploadAvailability.ts +91 -0
  41. package/apps/agents-server/src/utils/upload/uploadFileToServer.ts +46 -2
  42. package/esm/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
  43. package/esm/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
  44. package/esm/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
  45. package/esm/index.es.js +1109 -35
  46. package/esm/index.es.js.map +1 -1
  47. package/esm/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
  48. package/esm/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
  49. package/esm/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
  50. package/esm/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
  51. package/esm/src/avatars/types/AvatarVisualDefinition.d.ts +1 -1
  52. package/esm/src/avatars/visuals/octopus3d3AvatarVisual.d.ts +7 -0
  53. package/esm/src/book-components/BookEditor/BookEditor.d.ts +5 -4
  54. package/esm/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
  55. package/esm/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
  56. package/esm/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
  57. package/esm/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
  58. package/esm/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
  59. package/esm/src/version.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/src/avatars/types/AvatarVisualDefinition.ts +1 -0
  62. package/src/avatars/visuals/avatarVisualRegistry.ts +2 -0
  63. package/src/avatars/visuals/octopus3d3AvatarVisual.ts +902 -0
  64. package/src/book-components/BookEditor/BookEditor.tsx +10 -7
  65. package/src/book-components/BookEditor/BookEditorMonaco.tsx +3 -1
  66. package/src/book-components/BookEditor/BookEditorTheme.ts +32 -0
  67. package/src/book-components/BookEditor/useBookEditorMonacoLanguage.ts +12 -15
  68. package/src/book-components/BookEditor/useBookEditorMonacoLifecycle.ts +1 -5
  69. package/src/book-components/BookEditor/useBookEditorMonacoStyles.ts +2 -1
  70. package/src/cli/cli-commands/agent-folder/agentProjectPaths.ts +7 -0
  71. package/src/cli/cli-commands/agents-server/buildAgentsServer.ts +109 -9
  72. package/src/cli/cli-commands/agents-server/startAgentsServer.ts +132 -4
  73. package/src/other/templates/getTemplatesPipelineCollection.ts +690 -747
  74. package/src/utils/agents/resolveAgentAvatarImageUrl.ts +1 -1
  75. package/src/version.ts +2 -2
  76. package/src/versions.txt +2 -1
  77. package/umd/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
  78. package/umd/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
  79. package/umd/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
  80. package/umd/index.umd.js +1109 -35
  81. package/umd/index.umd.js.map +1 -1
  82. package/umd/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
  83. package/umd/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
  84. package/umd/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
  85. package/umd/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
  86. package/umd/src/avatars/types/AvatarVisualDefinition.d.ts +1 -1
  87. package/umd/src/avatars/visuals/octopus3d3AvatarVisual.d.ts +7 -0
  88. package/umd/src/book-components/BookEditor/BookEditor.d.ts +5 -4
  89. package/umd/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
  90. package/umd/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
  91. package/umd/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
  92. package/umd/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
  93. package/umd/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
  94. package/umd/src/version.d.ts +1 -1
  95. package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddress.test.ts.todo +0 -108
  96. package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddresses.test.ts.todo +0 -117
  97. package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddress.test.ts.todo +0 -119
  98. package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddresses.test.ts.todo +0 -74
  99. package/apps/agents-server/tests/e2e/authentication-and-navigation.spec.ts.todo +0 -178
  100. package/src/_packages/browser.index.ts +0 -31
  101. package/src/_packages/browser.readme.md +0 -43
  102. package/src/book-2.0/agent-source/parseAgentSourceWithCommitments.test.ts.todo +0 -265
  103. package/src/book-components/BookEditor/BookEditorMonaco.test.tsx.todo +0 -115
  104. package/src/book-components/Chat/utils/renderMarkdown.test.ts.tmp +0 -199
  105. package/src/collection/agent-collection/constructors/agent-collection-in-directory/AgentCollectionInDirectory.test.ts.todo +0 -131
  106. package/src/commands/_common/parseCommand.test.ts.todo +0 -48
  107. package/src/commitments/META_LINK/META_LINK.test.ts.todo +0 -75
  108. package/src/conversion/validation/pipelineStringToJson-errors.test.ts.todo +0 -33
  109. package/src/dialogs/simple-prompt/SimplePromptInterfaceTools.ts +0 -51
  110. package/src/executables/browsers/locateSafari.test.ts.tmp +0 -15
  111. package/src/execution/PromptbookFetch.test-type.ts +0 -14
  112. package/src/execution/createPipelineExecutor/00-createPipelineExecutor.test.ts.todo +0 -0
  113. package/src/execution/execution-report/executionReportJsonToString.test.ts.todo +0 -83
  114. package/src/execution/utils/usageToHuman.test.ts.todo +0 -80
  115. package/src/llm-providers/_common/register/$provideLlmToolsForTestingAndScriptsAndPlayground.ts +0 -76
  116. package/src/llm-providers/_common/utils/assertUniqueModels.ts +0 -27
  117. package/src/llm-providers/_multiple/playground/playground.ts +0 -141
  118. package/src/llm-providers/_multiple/playground/tsconfig.json +0 -19
  119. package/src/llm-providers/agent/playground/playground.ts +0 -190
  120. package/src/llm-providers/agent/playground/tsconfig.json +0 -19
  121. package/src/llm-providers/anthropic-claude/playground/playground.ts +0 -99
  122. package/src/llm-providers/anthropic-claude/playground/tsconfig.json +0 -19
  123. package/src/llm-providers/azure-openai/playground/playground.ts +0 -101
  124. package/src/llm-providers/azure-openai/playground/tsconfig.json +0 -19
  125. package/src/llm-providers/ollama/playground/playground.ts +0 -120
  126. package/src/llm-providers/ollama/playground/tsconfig.json +0 -19
  127. package/src/llm-providers/openai/playground/playground.ts +0 -406
  128. package/src/llm-providers/openai/playground/tsconfig.json +0 -19
  129. package/src/llm-providers/remote/playground/playground.ts +0 -144
  130. package/src/llm-providers/remote/playground/tsconfig.json +0 -19
  131. package/src/llm-providers/vercel/playground/playground.ts +0 -133
  132. package/src/llm-providers/vercel/playground/tsconfig.json +0 -19
  133. package/src/personas/preparePersona.test.ts.todo +0 -126
  134. package/src/playground/backup/_playground-boilerplate.ts.txt +0 -37
  135. package/src/playground/backup/playground-agent-os.txt +0 -62
  136. package/src/playground/backup/playground-brj-app.ts.txt +0 -302
  137. package/src/playground/backup/playground-browser-playwright.txt +0 -110
  138. package/src/playground/backup/playground-claude-mcp.txt +0 -43
  139. package/src/playground/backup/playground-document-conversion.txt +0 -84
  140. package/src/playground/backup/playground-glob.ts.txt +0 -42
  141. package/src/playground/backup/playground-mcp-server.txt +0 -1
  142. package/src/playground/backup/playground-openai-agent-kit.txt +0 -73
  143. package/src/playground/backup/playground-openai-function-calling.txt +0 -131
  144. package/src/playground/backup/playground-openai-streaming.ts.txt +0 -68
  145. package/src/playground/backup/playground-scrape-knowledge.txt +0 -65
  146. package/src/playground/backup/playground-scraperFetch.ts.txt +0 -44
  147. package/src/playground/backup/playground-using-openai-compatible-route-on-agents-server.ts.txt +0 -49
  148. package/src/playground/backup/playground-write-pavolhejny-bio.txt +0 -120
  149. package/src/playground/permanent/_boilerplate.ts +0 -54
  150. package/src/playground/permanent/agent-with-browser-playground.ts +0 -92
  151. package/src/playground/permanent/error-handling-playground.ts +0 -103
  152. package/src/playground/playground.ts +0 -36
  153. package/src/playground/tsconfig.json +0 -19
  154. package/src/scrapers/_boilerplate/BoilerplateScraper.test.ts.todo +0 -73
  155. package/src/scrapers/_boilerplate/playground/boilerplate-scraper-playground.ts +0 -79
  156. package/src/scrapers/_boilerplate/playground/tsconfig.json +0 -19
  157. package/src/scrapers/_common/utils/files/blobToDataurl.test.ts.todo +0 -17
  158. package/src/scrapers/_common/utils/files/dataurlToBlob.test.ts.todo +0 -52
  159. package/src/scrapers/_common/utils/files/isValidDataurl.test.ts.todo +0 -42
  160. package/src/scrapers/_common/utils/files/shorten.test.ts.todo +0 -13
  161. package/src/scrapers/document/playground/document-scraper-playground.ts +0 -80
  162. package/src/scrapers/document/playground/tsconfig.json +0 -19
  163. package/src/scrapers/document-legacy/playground/legacy-document-scraper-playground.ts +0 -80
  164. package/src/scrapers/document-legacy/playground/tsconfig.json +0 -19
  165. package/src/scrapers/markdown/playground/markdown-scraper-playground.ts +0 -74
  166. package/src/scrapers/markdown/playground/tsconfig.json +0 -19
  167. package/src/scrapers/markitdown/MarkitdownScraper.test.ts.todo +0 -132
  168. package/src/scrapers/markitdown/playground/markitdown-scraper-playground.ts +0 -91
  169. package/src/scrapers/markitdown/playground/tsconfig.json +0 -19
  170. package/src/scrapers/pdf/PdfScraper.test.ts.todo +0 -52
  171. package/src/scrapers/pdf/playground/pdf-scraper-playground.ts +0 -75
  172. package/src/scrapers/pdf/playground/tsconfig.json +0 -19
  173. package/src/scrapers/website/playground/tsconfig.json +0 -19
  174. package/src/scrapers/website/playground/website-scraper-playground.ts +0 -82
  175. package/src/storage/_common/PromptbookStorage.test-type.ts +0 -14
  176. package/src/storage/local-storage/getIndexedDbStorage.ts +0 -36
  177. package/src/storage/local-storage/getLocalStorage.ts +0 -33
  178. package/src/storage/local-storage/getSessionStorage.ts +0 -33
  179. package/src/storage/local-storage/utils/IndexedDbStorageOptions.ts +0 -16
  180. package/src/storage/local-storage/utils/makePromptbookStorageFromIndexedDb.ts +0 -58
  181. package/src/storage/local-storage/utils/makePromptbookStorageFromWebStorage.ts +0 -45
  182. package/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.test.ts.todo +0 -35
  183. package/src/transpilers/openai-sdk/playground/playground.ts +0 -85
  184. package/src/transpilers/openai-sdk/playground/tmp/chatbot-openaisdk-1.js +0 -194
  185. package/src/transpilers/openai-sdk/playground/tmp/package.json +0 -3
  186. package/src/transpilers/openai-sdk/playground/tsconfig.json +0 -18
  187. package/src/utils/editable/utils/findUsableParameters.test.ts.todo +0 -43
  188. package/src/utils/editable/utils/stringifyPipelineJson.test.ts.todo +0 -38
  189. package/src/utils/markdown/prettifyMarkdown.test.ts.tmp +0 -42
  190. package/src/utils/serialization/serializeToPromptbookJavascript.test.ts.todo +0 -116
@@ -1,101 +0,0 @@
1
- #!/usr/bin/env ts-node
2
-
3
- import * as dotenv from 'dotenv';
4
-
5
- dotenv.config({ path: '.env' });
6
-
7
- import colors from 'colors'; // <- TODO: [๐Ÿ”ถ] Make system to put color and style to both node and browser
8
- import { usageToHuman } from '../../../execution/utils/usageToHuman';
9
- import type { Prompt } from '../../../types/Prompt';
10
- import { keepUnused } from '../../../utils/organization/keepUnused';
11
- import { AzureOpenAiExecutionTools } from '../AzureOpenAiExecutionTools';
12
-
13
- playground()
14
- .catch((error) => {
15
- console.error(colors.bgRed(error.name || 'NamelessError'));
16
- console.error(error);
17
- process.exit(1);
18
- })
19
- .then(() => {
20
- process.exit(0);
21
- });
22
-
23
- /**
24
- * Handles playground.
25
- */
26
- async function playground() {
27
- console.info(`๐Ÿงธ Azure OpenAI Playground`);
28
-
29
- // Do here stuff you want to test
30
- //========================================>
31
-
32
- const azureOpenAiExecutionTools = new AzureOpenAiExecutionTools(
33
- // <- TODO: [๐Ÿงฑ] Implement in a functional (not new Class) way
34
- {
35
- isVerbose: true,
36
- userId: 'playground',
37
- resourceName: process.env.AZUREOPENAI_RESOURCE_NAME!,
38
- deploymentName: process.env.AZUREOPENAI_DEPLOYMENT_NAME!,
39
- apiKey: process.env.AZUREOPENAI_API_KEY!,
40
- },
41
- );
42
-
43
- keepUnused(azureOpenAiExecutionTools);
44
- keepUnused(usageToHuman);
45
- keepUnused<Prompt>();
46
-
47
- /*/
48
- const models = await azureOpenAiExecutionTools.listModels();
49
- console.info({ models });
50
- /**/
51
-
52
- /**/
53
- const chatPrompt = {
54
- title: 'Poem about Prague',
55
- parameters: {},
56
- content: `Write me something about Prague`,
57
- modelRequirements: {
58
- modelVariant: 'CHAT',
59
- systemMessage: 'You are an assistant who only speaks in rhymes.',
60
- temperature: 1.5,
61
- },
62
- } as const satisfies Prompt;
63
- const chatPromptResult = await azureOpenAiExecutionTools.callChatModel(chatPrompt);
64
- console.info({ chatPromptResult });
65
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
66
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
67
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
68
- /**/
69
-
70
- /*/
71
- const completionPrompt = {
72
- title: 'Hello',
73
- parameters: {},
74
- content: `Hello, my name is Alice.`,
75
- modelRequirements: {
76
- modelVariant: 'COMPLETION',
77
- },
78
- } as const satisfies Prompt;
79
- const completionPromptResult = await azureOpenAiExecutionTools.callCompletionModel(completionPrompt);
80
- console.info({ completionPromptResult });
81
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
82
- console.info(colors.green(completionPrompt.content + completionPromptResult.content));
83
- /**/
84
-
85
- /*/
86
- // TODO: Test Translations in playground
87
- /**/
88
-
89
- /*/
90
- // TODO: Test Embeddings in playground
91
- /**/
92
-
93
- /*/
94
- // <- Note: [๐Ÿค–] Test here new model variant if needed
95
- /**/
96
-
97
- //========================================/
98
- }
99
-
100
- // Note: [โšซ] Code for playground [azure-openai playground](src/llm-providers/azure-openai/playground/playground.ts) should never be published in any package
101
- // TODO: Test here that `systemMessage`, `temperature` and `seed` are working correctly
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "downlevelIteration": true,
6
- "allowJs": true,
7
- "moduleResolution": "node",
8
- "forceConsistentCasingInFileNames": true,
9
- "noImplicitReturns": true,
10
- "noImplicitThis": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "experimentalDecorators": true,
14
- "noUnusedLocals": false,
15
- "resolveJsonModule": true,
16
- "esModuleInterop": true
17
- },
18
- "exclude": ["node_modules"]
19
- }
@@ -1,120 +0,0 @@
1
- #!/usr/bin/env ts-node
2
-
3
- import * as dotenv from 'dotenv';
4
-
5
- dotenv.config({ path: '.env' });
6
-
7
- import colors from 'colors'; // <- TODO: [๐Ÿ”ถ] Make system to put color and style to both node and browser
8
- import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
9
- import { usageToHuman } from '../../../execution/utils/usageToHuman';
10
- import type { Prompt } from '../../../types/Prompt';
11
- import { keepUnused } from '../../../utils/organization/keepUnused';
12
- // import { OllamaAssistantExecutionTools } from '../OllamaAssistantExecutionTools';
13
- import type { Usage } from '../../../execution/Usage';
14
- import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
15
- import { createOllamaExecutionTools } from '../createOllamaExecutionTools';
16
-
17
- playground()
18
- .catch((error) => {
19
- console.error(colors.bgRed(error.name || 'NamelessError'));
20
- console.error(error);
21
- process.exit(1);
22
- })
23
- .then(() => {
24
- process.exit(0);
25
- });
26
-
27
- /**
28
- * Handles playground.
29
- */
30
- async function playground() {
31
- console.info(`๐Ÿงธ Ollama Playground`);
32
-
33
- // Do here stuff you want to test
34
- //========================================>
35
-
36
- const ollamaExecutionTools = createOllamaExecutionTools({
37
- isVerbose: true,
38
- });
39
-
40
- const ollamaExecutionToolsWithUsage = countUsage(ollamaExecutionTools);
41
-
42
- ollamaExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
43
- const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
44
- console.log(`[๐Ÿ’ธ] Spending ${wordCount} words`);
45
- });
46
-
47
- keepUnused(ollamaExecutionTools);
48
- keepUnused(embeddingVectorToString);
49
- keepUnused(usageToHuman);
50
- keepUnused<Prompt>();
51
-
52
- /*/
53
- const models = await ollamaExecutionTools.listModels();
54
- console.info({ models });
55
- /**/
56
-
57
- /*/
58
- const completionPrompt = {
59
- title: 'Hello',
60
- parameters: {},
61
- content: `Hello, my name is Alice.`,
62
- modelRequirements: {
63
- modelVariant: 'COMPLETION',
64
- },
65
- } as const satisfies Prompt;
66
- const completionPromptResult = await ollamaExecutionTools.callCompletionModel(completionPrompt);
67
- console.info({ completionPromptResult });
68
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
69
- console.info(colors.green(completionPrompt.content + completionPromptResult.content));
70
- /**/
71
-
72
- /**/
73
- const chatPrompt = {
74
- title: 'Promptbook speech',
75
- parameters: {},
76
- content: `Hello`,
77
- modelRequirements: {
78
- modelVariant: 'CHAT',
79
- // modelName: 'mistral',
80
- systemMessage: 'You are an assistant who only speaks in rhymes.',
81
- temperature: 1.5,
82
- },
83
- } as const satisfies Prompt;
84
- const chatPromptResult = await ollamaExecutionToolsWithUsage.callChatModel!(chatPrompt);
85
- console.info({ chatPromptResult });
86
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
87
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
88
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
89
- /**/
90
-
91
- /*/
92
- // TODO: Test Translations in playground
93
- /**/
94
-
95
- /*/
96
- const prompt = {
97
- title: 'Hello',
98
- parameters: {},
99
- content: `Hello, my name is Alice.`,
100
- modelRequirements: {
101
- modelVariant: 'EMBEDDING',
102
- // modelName: 'text-embedding-ada-002',
103
- },
104
- } as const satisfies Prompt;
105
- const promptResult = await ollamaExecutionTools.callEmbeddingModel(prompt);
106
- console.info({ promptResult });
107
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
108
- console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
109
- console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
110
- /**/
111
-
112
- /*/
113
- // <- Note: [๐Ÿค–] Test here new model variant if needed
114
- /**/
115
-
116
- //========================================/
117
- }
118
-
119
- // Note: [โšซ] Code for playground [ollama playground](src/llm-providers/ollama/playground/playground.ts) should never be published in any package
120
- // TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "downlevelIteration": true,
6
- "allowJs": true,
7
- "moduleResolution": "node",
8
- "forceConsistentCasingInFileNames": true,
9
- "noImplicitReturns": true,
10
- "noImplicitThis": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "experimentalDecorators": true,
14
- "noUnusedLocals": false,
15
- "resolveJsonModule": true,
16
- "esModuleInterop": true
17
- },
18
- "exclude": ["node_modules"]
19
- }
@@ -1,406 +0,0 @@
1
- #!/usr/bin/env ts-node
2
-
3
- import * as dotenv from 'dotenv';
4
-
5
- dotenv.config({ path: '.env' });
6
-
7
- import colors from 'colors'; // <- TODO: [๐Ÿ”ถ] Make system to put color and style to both node and browser
8
- import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
9
- import { usageToHuman } from '../../../execution/utils/usageToHuman';
10
- import { JavascriptEvalExecutionTools } from '../../../scripting/javascript/JavascriptEvalExecutionTools';
11
- import type { ChatPrompt, Prompt } from '../../../types/Prompt';
12
- import { keepUnused } from '../../../utils/organization/keepUnused';
13
- // import { OpenAiAssistantExecutionTools } from '../OpenAiAssistantExecutionTools';
14
- import { join } from 'path';
15
- import { DEFAULT_EXECUTION_CACHE_DIRNAME } from '../../../config';
16
- import type { Usage } from '../../../execution/Usage';
17
- import { $provideFilesystemForNode } from '../../../scrapers/_common/register/$provideFilesystemForNode';
18
- import { FileCacheStorage } from '../../../storage/file-cache-storage/FileCacheStorage';
19
- import { cacheLlmTools } from '../../_common/utils/cache/cacheLlmTools';
20
- import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
21
- import { OpenAiAgentKitExecutionTools } from '../OpenAiAgentKitExecutionTools';
22
- import { OpenAiExecutionTools } from '../OpenAiExecutionTools';
23
-
24
- playground()
25
- .catch((error) => {
26
- console.error(colors.bgRed(error.name || 'NamelessError'));
27
- console.error(error);
28
- process.exit(1);
29
- })
30
- .then(() => {
31
- process.exit(0);
32
- });
33
-
34
- /**
35
- * Handles playground.
36
- */
37
- async function playground() {
38
- console.info(`๐Ÿงธ OpenAI Playground`);
39
-
40
- // Do here stuff you want to test
41
- //========================================>
42
-
43
- const script = new JavascriptEvalExecutionTools({
44
- functions: {
45
- // TODO: !!!! Normalize function names:
46
- get_coupon_code: async (params: { productCategory: string; discountPercentage: number }) => {
47
- // Simulate generating a coupon code based on product category and discount percentage
48
- const { productCategory, discountPercentage } = params;
49
- const code = `SAVE${discountPercentage}${productCategory.toUpperCase().slice(0, 3)}2025`;
50
-
51
- console.log(
52
- `!!!! [๐Ÿ› ๏ธ] Generated coupon code: ${code} for category: ${productCategory} with discount: ${discountPercentage}%`,
53
- );
54
-
55
- return code;
56
- },
57
- },
58
- });
59
-
60
- let openAiExecutionTools = new OpenAiExecutionTools(
61
- // <- TODO: [๐Ÿงฑ] Implement in a functional (not new Class) way
62
- {
63
- isVerbose: true,
64
- userId: 'playground',
65
- apiKey: process.env.OPENAI_API_KEY!,
66
- executionTools: { script },
67
- },
68
- );
69
-
70
- openAiExecutionTools = cacheLlmTools(openAiExecutionTools, {
71
- storage: new FileCacheStorage(
72
- { fs: $provideFilesystemForNode() },
73
- {
74
- rootFolderPath: join(
75
- process.cwd(),
76
- DEFAULT_EXECUTION_CACHE_DIRNAME,
77
- // <- TODO: [๐Ÿฆ’] Allow to override (pass different value into the function)
78
- ),
79
- },
80
- ),
81
- // isCacheReloaded: isCacheReloaded,
82
- });
83
-
84
- const openAiExecutionToolsWithUsage = countUsage(openAiExecutionTools);
85
-
86
- openAiExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
87
- const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
88
- console.log(`[๐Ÿ’ธ] Spending ${wordCount} words`);
89
- });
90
-
91
- /*/
92
- const openAiAssistantExecutionTools = new OpenAiAssistantExecutionTools(
93
- // <- TODO: [๐Ÿงฑ] Implement in a functional (not new Class) way
94
- {
95
- isVerbose: true,
96
- userId: 'playground',
97
- apiKey: process.env.OPENAI_API_KEY!,
98
- assistantId: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
99
- // <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
100
- },
101
- );
102
- /**/
103
-
104
- /*/
105
- const openAiAgentKitExecutionTools = new OpenAiAgentKitExecutionTools({
106
- isVerbose: true,
107
- userId: 'playground',
108
- apiKey: process.env.OPENAI_API_KEY!,
109
- executionTools: { script },
110
- });
111
-
112
- const agentKitPrompt = {
113
- title: 'AgentKit Coupon Demo',
114
- parameters: {},
115
- content: `Generate a coupon code for electronics with 15% off using the tool.`,
116
- tools: [
117
- {
118
- name: 'get_coupon_code',
119
- description: 'Generate a coupon code based on product category and discount percentage',
120
- parameters: {
121
- type: 'object',
122
- properties: {
123
- productCategory: {
124
- type: 'string',
125
- description: 'The category of the product (e.g., electronics, clothing)',
126
- },
127
- discountPercentage: {
128
- type: 'number',
129
- description: 'The discount percentage to apply',
130
- },
131
- },
132
- required: ['productCategory', 'discountPercentage'],
133
- },
134
- },
135
- ],
136
- modelRequirements: {
137
- modelVariant: 'CHAT',
138
- systemMessage:
139
- 'Use the get_coupon_code tool to generate the coupon. Do not invent coupon codes.',
140
- },
141
- } satisfies ChatPrompt;
142
- const agentKitResult = await openAiAgentKitExecutionTools.callChatModel!(agentKitPrompt);
143
- console.info({ agentKitResult });
144
- console.info(colors.cyan(usageToHuman(agentKitResult.usage)));
145
- console.info(colors.bgBlue(' User: ') + colors.blue(agentKitPrompt.content));
146
- console.info(colors.bgGreen(' AgentKit: ') + colors.green(agentKitResult.content));
147
- /**/
148
-
149
- keepUnused(openAiExecutionTools);
150
- keepUnused(OpenAiAgentKitExecutionTools);
151
- // keepUnused(openAiAssistantExecutionTools);
152
- keepUnused(embeddingVectorToString);
153
- keepUnused(usageToHuman);
154
- keepUnused<Prompt>();
155
-
156
- /*/
157
- const models = await openAiExecutionTools.listModels();
158
- console.info({ models });
159
- /**/
160
-
161
- /*/
162
- const imagePrompt = {
163
- title: 'Hello',
164
- parameters: {},
165
- content: `Coffee cup floating in space, surrealistic, vibrant colors, high detail`,
166
- modelRequirements: {
167
- modelVariant: 'IMAGE_GENERATION',
168
- },
169
- } as const satisfies Prompt;
170
- const imagePromptResult = await openAiExecutionTools.callImageGenerationModel(imagePrompt);
171
- console.info({ imagePromptResult });
172
- console.info(colors.cyan(usageToHuman(imagePromptResult.usage)));
173
- console.info(colors.green(imagePromptResult.content));
174
- /**/
175
-
176
- /*/
177
- const completionPrompt = {
178
- title: 'Hello',
179
- parameters: {},
180
- content: `Hello, my name is Alice.`,
181
- modelRequirements: {
182
- modelVariant: 'COMPLETION',
183
- },
184
- } as const satisfies Prompt;
185
- const completionPromptResult = await openAiExecutionTools.callCompletionModel(completionPrompt);
186
- console.info({ completionPromptResult });
187
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
188
- console.info(colors.green(completionPrompt.content + completionPromptResult.content));
189
- /**/
190
-
191
- /**/
192
- const chatPrompt = {
193
- title: 'Prague',
194
- parameters: {},
195
- // thread: [
196
- // // <- TODO: !!! Maybe rename to `previousMessages`
197
- // {
198
- // sender: 'user', // <- [๐Ÿ‘ฅ] TODO: Standardize to `role: 'USER' | 'ASSISTANT'
199
- // content: 'Where is Prague ',
200
- // },
201
- // {
202
- // sender: 'assistant',
203
- // content: 'Prague is a beautiful city located in the Czech Republic.',
204
- // },
205
- // ],
206
- content: `Give me a coupons for grocery shopping in electronics store with a 20% discount.`,
207
-
208
- tools: [
209
- {
210
- name: 'get_coupon_code',
211
-
212
- description: 'Generate a coupon code based on product category and discount percentage',
213
-
214
- parameters: {
215
- type: 'object',
216
- properties: {
217
- productCategory: {
218
- type: 'string',
219
- description: 'The category of the product (e.g., electronics, clothing)',
220
- },
221
- discountPercentage: {
222
- type: 'number',
223
- description: 'The discount percentage to apply',
224
- },
225
- },
226
- required: ['productCategory', 'discountPercentage'],
227
- },
228
- },
229
- ],
230
-
231
- modelRequirements: {
232
- modelVariant: 'CHAT',
233
- systemMessage:
234
- 'You are an helpful assistant who can provide coupon codes, via the get_coupon_code tool. Do not make up coupon codes on your own. Do not provide more that 25% discount and more than 5 coupons per message.',
235
- // modelName: 'gpt-3.5-turbo',
236
- modelName: 'gpt-5',
237
- temperature: 1.5,
238
- },
239
- } /* as const */ satisfies ChatPrompt; /* <- Note: [๐Ÿค›] */
240
- const chatPromptResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
241
- console.info({ chatPromptResult });
242
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
243
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
244
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
245
- /**/
246
-
247
- /**/
248
- // TODO: !!!!! Test
249
- const chatPromptWithFiles = {
250
- title: 'Chat with files',
251
- parameters: {},
252
- content: `What is in these images?`,
253
-
254
- files: [
255
- // Note: In node.js we need to mock the File object or use a real one if available
256
- // For playground purposes, we can use a small transparent pixel
257
- new File(
258
- // cspell:disable
259
- [Buffer.from('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64')],
260
- // cspell:enable
261
- 'pixel.gif',
262
- { type: 'image/gif' },
263
- ),
264
- ],
265
- modelRequirements: {
266
- modelVariant: 'CHAT',
267
- modelName: 'gpt-4o',
268
- },
269
- } satisfies ChatPrompt;
270
- const chatPromptWithFilesResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPromptWithFiles);
271
- console.info({ chatPromptWithFilesResult });
272
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPromptWithFiles.content));
273
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptWithFilesResult.content));
274
- /**/
275
-
276
- /*/
277
- const chatPromptResult2 = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
278
- console.info({ chatPromptResult2 });
279
- console.info(colors.cyan(usageToHuman(chatPromptResult2.usage)));
280
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
281
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult2.content));
282
- /**/
283
-
284
- /*/
285
- // TODO: Test Translations in playground
286
- /**/
287
-
288
- /*/
289
- const prompt = {
290
- title: 'Hello',
291
- parameters: {},
292
- content: `Hello, my name is Alice.`,
293
- modelRequirements: {
294
- modelVariant: 'EMBEDDING',
295
- // modelName: 'text-embedding-ada-002',
296
- },
297
- } as const satisfies Prompt;
298
- const promptResult = await openAiExecutionTools.callEmbeddingModel(prompt);
299
- console.info({ promptResult });
300
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
301
- console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
302
- console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
303
- /**/
304
-
305
- /*/
306
- const chatPrompt = {
307
- title: 'Promptbook speech',
308
- parameters: {},
309
- content: `Write me speech about Promptbook and how it can help me to build the most beautiful chatbot and change the world`,
310
- modelRequirements: {
311
- modelVariant: 'CHAT',
312
- // TODO: [๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง] systemMessage: 'You are an assistant who only speaks in rhymes.',
313
- // TODO: [๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง] temperature: 1.5,
314
- },
315
-
316
- /*
317
- [๐Ÿ—ฏ]
318
- replyingTo: {
319
-
320
- }
321
- * /
322
- } as const satisfies Prompt;
323
- const chatPromptResult = await openAiAssistantExecutionTools.callChatModel(chatPrompt);
324
- console.info({ chatPromptResult });
325
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
326
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
327
- console.info(colors.bgGreen(' Assistant: ') + colors.green(chatPromptResult.content));
328
- /**/
329
-
330
- /*/
331
- const openai = await openAiExecutionTools.getClient();
332
- const stream = openai.beta.threads.createAndRunStream({
333
- stream: true,
334
- assistant_id: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
335
- // <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
336
- thread: {
337
- messages: [{ role: 'user', content: 'What is the meaning of life? I want breathtaking speech.' }],
338
- },
339
- });
340
-
341
- console.log(stream);
342
-
343
- stream.on('connect', () => {
344
- console.log('connect', stream.currentEvent);
345
- });
346
-
347
- stream.on('messageDelta', (messageDelta) => {
348
- console.log('messageDelta', (messageDelta as any).content[0].text);
349
- });
350
-
351
- stream.on('messageCreated', (message) => {
352
- console.log('messageCreated', message);
353
- });
354
-
355
- stream.on('messageDone', (message) => {
356
- console.log('messageDone', message);
357
- });
358
-
359
- const finalMessages = await stream.finalMessages();
360
- console.log('finalMessages', finalMessages, finalMessages[0]!.content[0]!);
361
-
362
- /**/
363
-
364
- /*/
365
- const chatWithToolsPrompt = {
366
- title: 'Chat with tools',
367
- parameters: {},
368
- content: `What is the current weather in Prague?`,
369
- modelRequirements: {
370
- modelVariant: 'CHAT',
371
- modelName: 'gpt-4o',
372
- tools: [
373
- {
374
- name: 'get_current_weather',
375
- description: 'Get the current weather in a given location',
376
- parameters: {
377
- type: 'object',
378
- properties: {
379
- location: {
380
- type: 'string',
381
- description: 'The city and state, e.g. San Francisco, CA',
382
- },
383
- unit: { type: 'string', enum: ['celsius', 'fahrenheit'] },
384
- },
385
- required: ['location'],
386
- },
387
- },
388
- ],
389
- },
390
- } as const satisfies Prompt;
391
- const chatWithToolsResult = await openAiExecutionTools.callChatModel(chatWithToolsPrompt);
392
- console.info({ chatWithToolsResult });
393
- console.info(colors.cyan(usageToHuman(chatWithToolsResult.usage)));
394
- console.info(colors.bgBlue(' User: ') + colors.blue(chatWithToolsPrompt.content));
395
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatWithToolsResult.content));
396
- /**/
397
-
398
- /*/
399
- // <- Note: [๐Ÿค–] Test here new model variant if needed
400
- /**/
401
-
402
- //========================================/
403
- }
404
-
405
- // Note: [โšซ] Code for playground [openai playground](src/llm-providers/openai/playground/playground.ts) should never be published in any package
406
- // TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "downlevelIteration": true,
6
- "allowJs": true,
7
- "moduleResolution": "node",
8
- "forceConsistentCasingInFileNames": true,
9
- "noImplicitReturns": true,
10
- "noImplicitThis": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "experimentalDecorators": true,
14
- "noUnusedLocals": false,
15
- "resolveJsonModule": true,
16
- "esModuleInterop": true
17
- },
18
- "exclude": ["node_modules"]
19
- }