@promptbook/cli 0.114.0-1 → 0.114.0-3
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/README.md +16 -15
- package/apps/agents-server/next.config.ts +11 -0
- package/apps/agents-server/package.json +6 -4
- package/apps/agents-server/playwright.config.ts +28 -38
- package/apps/agents-server/scripts/build-agents-server.js +62 -0
- package/apps/agents-server/scripts/build-e2e.js +38 -0
- package/apps/agents-server/scripts/ensure-root-dependencies.js +86 -0
- package/apps/agents-server/scripts/prerender-homepage.js +1 -1
- package/apps/agents-server/scripts/run-e2e-tests.js +34 -0
- package/apps/agents-server/scripts/run-npm.js +42 -0
- package/apps/agents-server/src/app/admin/email-server/page.tsx +14 -6
- package/apps/agents-server/src/app/api/elevenlabs/tts/route.ts +3 -3
- package/apps/agents-server/src/app/api/onboarding/book/route.ts +7 -6
- package/apps/agents-server/src/app/layout.tsx +6 -0
- package/apps/agents-server/src/app/superadmin/servers/ServersRegistryTable.tsx +105 -102
- package/apps/agents-server/src/app/superadmin/servers/useServersRegistryState.ts +15 -7
- package/apps/agents-server/src/components/AgentProjectDnsInstructions/AgentProjectDnsInstructions.tsx +11 -11
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/ManGoBookEditor.tsx +82 -0
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/WizardShell.tsx +2 -2
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/steps/BookStep.tsx +13 -16
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/steps/ZadaniStep.tsx +4 -4
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/config/bookSections.ts +23 -16
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/lib/bookSource.ts +54 -0
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/services/bookService.ts +15 -8
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/services/createManGoAgentSource.ts +3 -37
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/services/createManGoOpenEditorRequest.ts +1 -1
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/state/OnboardingProvider.tsx +2 -2
- package/apps/agents-server/src/components/UsersList/CreateUserDialog.tsx +13 -22
- package/apps/agents-server/src/components/UsersList/PasswordGeneratorDialog.tsx +216 -0
- package/apps/agents-server/src/components/UsersList/UsersList.tsx +16 -11
- package/apps/agents-server/src/components/UsersList/generateSecurePassword.ts +112 -24
- package/apps/agents-server/src/components/UsersList/userDialogClassNames.ts +11 -0
- package/apps/agents-server/src/languages/ServerTranslationKeys.ts +11 -0
- package/apps/agents-server/src/languages/translations/czech.yaml +11 -0
- package/apps/agents-server/src/languages/translations/english.yaml +11 -0
- package/apps/agents-server/src/utils/agentProjects/agentProjectHrefs.ts +11 -0
- package/apps/agents-server/src/utils/agentProjects/createAgentProjectDnsRecords.ts +53 -7
- package/apps/agents-server/src/utils/agentProjects/createAgentProjectMarkdownReferences.ts +37 -27
- package/apps/agents-server/src/utils/manGoOnboarding/manGoOnboardingAgentBooks.ts +2 -13
- package/apps/agents-server/src/utils/manGoOnboarding/manGoOnboardingAgentRuntime.ts +21 -73
- package/apps/agents-server/src/utils/stalwart/createEmailDnsInstructions.ts +9 -5
- package/apps/agents-server/src/utils/stalwart/readStalwartEmailSnapshot.ts +23 -5
- package/apps/agents-server/src/utils/stalwart/stalwartBootstrap.ts +2 -1
- package/apps/agents-server/src/utils/stalwart/stalwartMailBridge.ts +7 -0
- package/apps/agents-server/tests/e2e/e2eEnvironment.cjs +49 -0
- package/esm/index.es.js +1105 -273
- package/esm/index.es.js.map +1 -1
- package/esm/scripts/run-codex-prompts/common/runGoScript/scriptExecutionLog.d.ts +7 -0
- package/esm/scripts/run-codex-prompts/git/coderGitSync.d.ts +43 -0
- package/esm/scripts/run-codex-prompts/git/commitChanges.d.ts +3 -0
- package/esm/scripts/run-codex-prompts/main/resolvePromptRunner.d.ts +8 -1
- package/esm/scripts/run-codex-prompts/ping/buildCoderPingPrompt.d.ts +20 -0
- package/esm/scripts/run-codex-prompts/ping/extractCoderPingAnswer.d.ts +9 -0
- package/esm/scripts/run-codex-prompts/ping/pingCoderHarness.d.ts +23 -0
- package/esm/scripts/run-codex-prompts/ping/printCoderPingResult.d.ts +5 -0
- package/esm/scripts/run-codex-prompts/prompts/findNextTodoPrompt.d.ts +2 -1
- package/esm/scripts/run-codex-prompts/prompts/isPromptCompatibleWithRunner.d.ts +27 -0
- package/esm/scripts/run-codex-prompts/prompts/listRunnablePrompts.d.ts +2 -1
- package/esm/scripts/run-codex-prompts/prompts/listUpcomingTasks.d.ts +2 -1
- package/esm/scripts/run-codex-prompts/prompts/replacePromptTodoStatusLine.d.ts +7 -0
- package/esm/scripts/run-codex-prompts/testing/TestBeforeMode.d.ts +16 -0
- package/esm/scripts/run-codex-prompts/testing/createTestBeforeRepairPrompt.d.ts +9 -0
- package/esm/scripts/run-codex-prompts/testing/limitTestOutput.d.ts +4 -0
- package/esm/scripts/run-codex-prompts/testing/runPromptTestCommand.d.ts +1 -2
- package/esm/scripts/run-codex-prompts/testing/runTestBefore.d.ts +24 -0
- package/esm/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -0
- package/esm/scripts/verify-prompts/verify-prompts.d.ts +5 -0
- package/esm/src/book-2.0/book-language-documentation/BookLanguageManualDictionary.d.ts +1 -15
- package/esm/src/book-2.0/book-language-documentation/getBookLanguageManualCommitmentGroups.d.ts +1 -1
- package/esm/src/book-2.0/book-language-documentation/renderCommitmentCatalogSection.d.ts +0 -4
- package/esm/src/book-components/Chat/utils/$provideServerDomWindow.d.ts +11 -0
- package/esm/src/book-components/Chat/utils/renderMarkdown.d.ts +7 -0
- package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.d.ts +7 -0
- package/esm/src/cli/cli-commands/coder/agentCodingFile.d.ts +2 -3
- package/esm/src/cli/cli-commands/coder/ping.d.ts +10 -0
- package/esm/src/cli/cli-commands/coder/ping.test.d.ts +1 -0
- package/esm/src/cli/cli-commands/coder.d.ts +1 -0
- package/esm/src/cli/cli-commands/common/coderGitSyncCliOptions.d.ts +34 -0
- package/esm/src/cli/cli-commands/common/coderGitSyncCliOptions.test.d.ts +1 -0
- package/esm/src/cli/common/loadPromptsModule.d.ts +16 -0
- package/esm/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.d.ts +1 -1
- package/esm/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiAgentKitExecutionTools.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiAgentKitExecutionToolsToolBuilder.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiAssistantExecutionToolsStreamRunner.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiAssistantExecutionToolsToolRunner.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiCompatibleNonChatPromptCaller.d.ts +1 -1
- package/esm/src/llm-providers/openai/OpenAiCompatibleRequestManager.d.ts +1 -1
- package/esm/src/llm-providers/openai/utils/callOpenAiCompatibleChatModel.d.ts +1 -1
- package/esm/src/llm-providers/openai/utils/loadOpenAiAgentsModule.d.ts +203 -0
- package/esm/src/llm-providers/openai/utils/uploadFilesToOpenAi.d.ts +1 -1
- package/esm/src/utils/misc/createLazyModuleLoader.d.ts +14 -0
- package/esm/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/book-2.0/book-language-documentation/BookLanguageManualDictionary.ts +1 -15
- package/src/book-2.0/book-language-documentation/bookLanguageDocumentationExamples.ts +1 -2
- package/src/book-2.0/book-language-documentation/createStandaloneBookLanguageMarkdown.ts +92 -32
- package/src/book-2.0/book-language-documentation/czechBookLanguageManualDictionary.ts +16 -39
- package/src/book-2.0/book-language-documentation/englishBookLanguageManualDictionary.ts +16 -36
- package/src/book-2.0/book-language-documentation/getBookLanguageManualCommitmentGroups.ts +9 -1
- package/src/book-2.0/book-language-documentation/renderCommitmentCatalogSection.ts +4 -51
- package/src/book-2.0/book-language-documentation/renderGroupedCommitmentDocumentationMarkdown.ts +291 -4
- package/src/book-3.0/LiteAgent.ts +11 -9
- package/src/book-components/Chat/utils/$provideServerDomWindow.ts +77 -0
- package/src/book-components/Chat/utils/renderMarkdown.ts +135 -32
- package/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.ts +14 -0
- package/src/cli/cli-commands/agents-server/buildAgentsServer/ensureAgentsServerBuild.ts +1 -0
- package/src/cli/cli-commands/agents-server/startAgentsServer/createLocalAgentRunOptions.ts +1 -0
- package/src/cli/cli-commands/coder/add.ts +40 -12
- package/src/cli/cli-commands/coder/agentCodingFile.ts +6 -129
- package/src/cli/cli-commands/coder/generate-boilerplates.ts +31 -5
- package/src/cli/cli-commands/coder/getDefaultCoderPackageJsonScripts.ts +1 -1
- package/src/cli/cli-commands/coder/init.ts +27 -1
- package/src/cli/cli-commands/coder/initializeCoderProjectConfiguration.ts +1 -4
- package/src/cli/cli-commands/coder/ping.ts +72 -0
- package/src/cli/cli-commands/coder/run.ts +25 -2
- package/src/cli/cli-commands/coder/verify.ts +27 -12
- package/src/cli/cli-commands/coder.ts +4 -0
- package/src/cli/cli-commands/common/coderGitSyncCliOptions.ts +78 -0
- package/src/cli/cli-commands/run/prepareRunCommandResources.ts +2 -1
- package/src/cli/cli-commands/run/resolveRunInputParameters.ts +2 -1
- package/src/cli/cli-commands/runInteractiveChatbot.ts +2 -1
- package/src/cli/common/$provideLlmToolsForCli.ts +2 -1
- package/src/cli/common/loadPromptsModule.ts +13 -0
- package/src/conversion/archive/loadArchive.ts +2 -1
- package/src/conversion/archive/loadJsZipModule.ts +10 -0
- package/src/conversion/archive/saveArchive.ts +2 -1
- package/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.ts +13 -1
- package/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.ts +13 -1
- package/src/llm-providers/openai/OpenAiAgentKitExecutionTools.ts +6 -2
- package/src/llm-providers/openai/OpenAiAgentKitExecutionToolsToolBuilder.ts +7 -5
- package/src/llm-providers/openai/OpenAiAssistantExecutionTools.ts +1 -1
- package/src/llm-providers/openai/OpenAiAssistantExecutionToolsStreamRunner.ts +1 -1
- package/src/llm-providers/openai/OpenAiAssistantExecutionToolsToolRunner.ts +1 -1
- package/src/llm-providers/openai/OpenAiCompatibleNonChatPromptCaller.ts +1 -1
- package/src/llm-providers/openai/OpenAiCompatibleRequestManager.ts +12 -1
- package/src/llm-providers/openai/utils/callOpenAiCompatibleChatModel.ts +1 -1
- package/src/llm-providers/openai/utils/loadOpenAiAgentsModule.ts +11 -0
- package/src/llm-providers/openai/utils/uploadFilesToOpenAi.ts +1 -1
- package/src/other/templates/getTemplatesPipelineCollection.ts +731 -923
- package/src/remote-server/createRemoteClient.ts +12 -1
- package/src/scrapers/website/WebsiteScraper.ts +22 -2
- package/src/utils/agent-message-runtime/resolveAgentMessageRuntimeActivity.ts +101 -0
- package/src/utils/misc/createLazyModuleLoader.ts +27 -0
- package/src/version.ts +2 -2
- package/src/versions.txt +2 -1
- package/umd/index.umd.js +1180 -342
- package/umd/index.umd.js.map +1 -1
- package/umd/scripts/run-codex-prompts/common/runGoScript/scriptExecutionLog.d.ts +7 -0
- package/umd/scripts/run-codex-prompts/git/coderGitSync.d.ts +43 -0
- package/umd/scripts/run-codex-prompts/git/commitChanges.d.ts +3 -0
- package/umd/scripts/run-codex-prompts/main/resolvePromptRunner.d.ts +8 -1
- package/umd/scripts/run-codex-prompts/ping/buildCoderPingPrompt.d.ts +20 -0
- package/umd/scripts/run-codex-prompts/ping/extractCoderPingAnswer.d.ts +9 -0
- package/umd/scripts/run-codex-prompts/ping/pingCoderHarness.d.ts +23 -0
- package/umd/scripts/run-codex-prompts/ping/printCoderPingResult.d.ts +5 -0
- package/umd/scripts/run-codex-prompts/prompts/findNextTodoPrompt.d.ts +2 -1
- package/umd/scripts/run-codex-prompts/prompts/isPromptCompatibleWithRunner.d.ts +27 -0
- package/umd/scripts/run-codex-prompts/prompts/listRunnablePrompts.d.ts +2 -1
- package/umd/scripts/run-codex-prompts/prompts/listUpcomingTasks.d.ts +2 -1
- package/umd/scripts/run-codex-prompts/prompts/replacePromptTodoStatusLine.d.ts +7 -0
- package/umd/scripts/run-codex-prompts/testing/TestBeforeMode.d.ts +16 -0
- package/umd/scripts/run-codex-prompts/testing/createTestBeforeRepairPrompt.d.ts +9 -0
- package/umd/scripts/run-codex-prompts/testing/limitTestOutput.d.ts +4 -0
- package/umd/scripts/run-codex-prompts/testing/runPromptTestCommand.d.ts +1 -2
- package/umd/scripts/run-codex-prompts/testing/runTestBefore.d.ts +24 -0
- package/umd/scripts/run-codex-prompts/ui/buildRunUiFrameShared.d.ts +1 -0
- package/umd/scripts/verify-prompts/verify-prompts.d.ts +5 -0
- package/umd/src/book-2.0/book-language-documentation/BookLanguageManualDictionary.d.ts +1 -15
- package/umd/src/book-2.0/book-language-documentation/getBookLanguageManualCommitmentGroups.d.ts +1 -1
- package/umd/src/book-2.0/book-language-documentation/renderCommitmentCatalogSection.d.ts +0 -4
- package/umd/src/book-components/Chat/utils/$provideServerDomWindow.d.ts +11 -0
- package/umd/src/book-components/Chat/utils/renderMarkdown.d.ts +7 -0
- package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.d.ts +7 -0
- package/umd/src/cli/cli-commands/coder/agentCodingFile.d.ts +2 -3
- package/umd/src/cli/cli-commands/coder/ping.d.ts +10 -0
- package/umd/src/cli/cli-commands/coder/ping.test.d.ts +1 -0
- package/umd/src/cli/cli-commands/coder.d.ts +1 -0
- package/umd/src/cli/cli-commands/common/coderGitSyncCliOptions.d.ts +34 -0
- package/umd/src/cli/cli-commands/common/coderGitSyncCliOptions.test.d.ts +1 -0
- package/umd/src/cli/common/loadPromptsModule.d.ts +16 -0
- package/umd/src/llm-providers/anthropic-claude/AnthropicClaudeExecutionTools.d.ts +1 -1
- package/umd/src/llm-providers/azure-openai/AzureOpenAiExecutionTools.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiAgentKitExecutionTools.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiAgentKitExecutionToolsToolBuilder.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiAssistantExecutionToolsStreamRunner.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiAssistantExecutionToolsToolRunner.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiCompatibleNonChatPromptCaller.d.ts +1 -1
- package/umd/src/llm-providers/openai/OpenAiCompatibleRequestManager.d.ts +1 -1
- package/umd/src/llm-providers/openai/utils/callOpenAiCompatibleChatModel.d.ts +1 -1
- package/umd/src/llm-providers/openai/utils/loadOpenAiAgentsModule.d.ts +203 -0
- package/umd/src/llm-providers/openai/utils/uploadFilesToOpenAi.d.ts +1 -1
- package/umd/src/utils/misc/createLazyModuleLoader.d.ts +14 -0
- package/umd/src/version.d.ts +1 -1
- package/apps/agents-server/src/app/api/onboarding/draft/route.ts +0 -23
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/BookLanguagePanel.tsx +0 -125
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/MarkdownBookEditor.tsx +0 -154
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/components/MarkdownPreview.tsx +0 -188
- package/apps/agents-server/src/components/NewAgentDialog/ManGoNewAgentWizard/services/draftService.ts +0 -32
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/**
|
|
3
|
+
* Loads the OpenAI AgentKit SDK (`@openai/agents`) on demand
|
|
4
|
+
*
|
|
5
|
+
* Note: [🐌] The AgentKit SDK is one of the heaviest dependencies of Promptbook, loading it eagerly would slow down
|
|
6
|
+
* every single run of the `ptbk` CLI utility even when no AgentKit agent is used
|
|
7
|
+
*
|
|
8
|
+
* @private internal utility of `@promptbook/openai`
|
|
9
|
+
*/
|
|
10
|
+
export declare const loadOpenAiAgentsModule: () => Promise<{
|
|
11
|
+
default: typeof import("@openai/agents");
|
|
12
|
+
applyPatchTool: typeof import("@openai/agents").applyPatchTool;
|
|
13
|
+
shellTool: typeof import("@openai/agents").shellTool;
|
|
14
|
+
realtime: typeof import("@openai/agents-realtime");
|
|
15
|
+
RuntimeEventEmitter: typeof import("events");
|
|
16
|
+
Agent: typeof import("@openai/agents").Agent;
|
|
17
|
+
AgentsError: typeof import("@openai/agents").AgentsError;
|
|
18
|
+
GuardrailExecutionError: typeof import("@openai/agents").GuardrailExecutionError;
|
|
19
|
+
InputGuardrailTripwireTriggered: typeof import("@openai/agents").InputGuardrailTripwireTriggered;
|
|
20
|
+
MaxTurnsExceededError: typeof import("@openai/agents").MaxTurnsExceededError;
|
|
21
|
+
ModelBehaviorError: typeof import("@openai/agents").ModelBehaviorError;
|
|
22
|
+
OutputGuardrailTripwireTriggered: typeof import("@openai/agents").OutputGuardrailTripwireTriggered;
|
|
23
|
+
ToolInputGuardrailTripwireTriggered: typeof import("@openai/agents").ToolInputGuardrailTripwireTriggered;
|
|
24
|
+
ToolOutputGuardrailTripwireTriggered: typeof import("@openai/agents").ToolOutputGuardrailTripwireTriggered;
|
|
25
|
+
ToolCallError: typeof import("@openai/agents").ToolCallError;
|
|
26
|
+
ToolTimeoutError: typeof import("@openai/agents").ToolTimeoutError;
|
|
27
|
+
UserError: typeof import("@openai/agents").UserError;
|
|
28
|
+
SystemError: typeof import("@openai/agents").SystemError;
|
|
29
|
+
RunAgentUpdatedStreamEvent: typeof import("@openai/agents").RunAgentUpdatedStreamEvent;
|
|
30
|
+
RunRawModelStreamEvent: typeof import("@openai/agents").RunRawModelStreamEvent;
|
|
31
|
+
RunItemStreamEvent: typeof import("@openai/agents").RunItemStreamEvent;
|
|
32
|
+
defineOutputGuardrail: typeof import("@openai/agents").defineOutputGuardrail;
|
|
33
|
+
ToolGuardrailFunctionOutputFactory: {
|
|
34
|
+
allow(outputInfo?: any): import("@openai/agents").ToolGuardrailFunctionOutput;
|
|
35
|
+
rejectContent(message: string, outputInfo?: any): import("@openai/agents").ToolGuardrailFunctionOutput;
|
|
36
|
+
throwException(outputInfo?: any): import("@openai/agents").ToolGuardrailFunctionOutput;
|
|
37
|
+
};
|
|
38
|
+
defineToolInputGuardrail: typeof import("@openai/agents").defineToolInputGuardrail;
|
|
39
|
+
defineToolOutputGuardrail: typeof import("@openai/agents").defineToolOutputGuardrail;
|
|
40
|
+
resolveToolInputGuardrails: typeof import("@openai/agents").resolveToolInputGuardrails;
|
|
41
|
+
resolveToolOutputGuardrails: typeof import("@openai/agents").resolveToolOutputGuardrails;
|
|
42
|
+
getHandoff: typeof import("@openai/agents").getHandoff;
|
|
43
|
+
getTransferMessage: typeof import("@openai/agents").getTransferMessage;
|
|
44
|
+
Handoff: typeof import("@openai/agents").Handoff;
|
|
45
|
+
handoff: typeof import("@openai/agents").handoff;
|
|
46
|
+
assistant: typeof import("@openai/agents").assistant;
|
|
47
|
+
system: typeof import("@openai/agents").system;
|
|
48
|
+
user: typeof import("@openai/agents").user;
|
|
49
|
+
extractAllTextOutput: typeof import("@openai/agents").extractAllTextOutput;
|
|
50
|
+
RunHandoffCallItem: typeof import("@openai/agents").RunHandoffCallItem;
|
|
51
|
+
RunHandoffOutputItem: typeof import("@openai/agents").RunHandoffOutputItem;
|
|
52
|
+
RunMessageOutputItem: typeof import("@openai/agents").RunMessageOutputItem;
|
|
53
|
+
RunReasoningItem: typeof import("@openai/agents").RunReasoningItem;
|
|
54
|
+
RunToolApprovalItem: typeof import("@openai/agents").RunToolApprovalItem;
|
|
55
|
+
RunToolCallItem: typeof import("@openai/agents").RunToolCallItem;
|
|
56
|
+
RunToolCallOutputItem: typeof import("@openai/agents").RunToolCallOutputItem;
|
|
57
|
+
AgentHooks: typeof import("@openai/agents").AgentHooks;
|
|
58
|
+
getLogger: typeof import("@openai/agents").getLogger;
|
|
59
|
+
applyDiff: typeof import("@openai/agents").applyDiff;
|
|
60
|
+
getAllMcpTools: typeof import("@openai/agents").getAllMcpTools;
|
|
61
|
+
invalidateServerToolsCache: typeof import("@openai/agents").invalidateServerToolsCache;
|
|
62
|
+
mcpToFunctionTool: typeof import("@openai/agents").mcpToFunctionTool;
|
|
63
|
+
MCPServerStdio: typeof import("@openai/agents").MCPServerStdio;
|
|
64
|
+
MCPServerStreamableHttp: typeof import("@openai/agents").MCPServerStreamableHttp;
|
|
65
|
+
MCPServerSSE: typeof import("@openai/agents").MCPServerSSE;
|
|
66
|
+
MCPServers: typeof import("@openai/agents").MCPServers;
|
|
67
|
+
connectMcpServers: typeof import("@openai/agents").connectMcpServers;
|
|
68
|
+
createMCPToolStaticFilter: typeof import("@openai/agents").createMCPToolStaticFilter;
|
|
69
|
+
OPENAI_DEFAULT_MODEL_ENV_VARIABLE_NAME: "OPENAI_DEFAULT_MODEL";
|
|
70
|
+
gpt5ReasoningSettingsRequired: typeof import("@openai/agents").gpt5ReasoningSettingsRequired;
|
|
71
|
+
getDefaultModel: typeof import("@openai/agents").getDefaultModel;
|
|
72
|
+
getDefaultModelSettings: typeof import("@openai/agents").getDefaultModelSettings;
|
|
73
|
+
isGpt5Default: typeof import("@openai/agents").isGpt5Default;
|
|
74
|
+
setDefaultModelProvider: typeof import("@openai/agents").setDefaultModelProvider;
|
|
75
|
+
RunResult: typeof import("@openai/agents").RunResult;
|
|
76
|
+
StreamedRunResult: typeof import("@openai/agents").StreamedRunResult;
|
|
77
|
+
run: typeof import("@openai/agents").run;
|
|
78
|
+
Runner: typeof import("@openai/agents").Runner;
|
|
79
|
+
RunContext: typeof import("@openai/agents").RunContext;
|
|
80
|
+
RunState: typeof import("@openai/agents").RunState;
|
|
81
|
+
computerTool: typeof import("@openai/agents").computerTool;
|
|
82
|
+
hostedMcpTool: typeof import("@openai/agents").hostedMcpTool;
|
|
83
|
+
tool: typeof import("@openai/agents").tool;
|
|
84
|
+
invokeFunctionTool: typeof import("@openai/agents").invokeFunctionTool;
|
|
85
|
+
getGlobalTraceProvider: typeof import("@openai/agents").getGlobalTraceProvider;
|
|
86
|
+
TraceProvider: typeof import("@openai/agents").TraceProvider;
|
|
87
|
+
runToolInputGuardrails: typeof import("@openai/agents").runToolInputGuardrails;
|
|
88
|
+
runToolOutputGuardrails: typeof import("@openai/agents").runToolOutputGuardrails;
|
|
89
|
+
RequestUsage: typeof import("@openai/agents").RequestUsage;
|
|
90
|
+
Usage: typeof import("@openai/agents").Usage;
|
|
91
|
+
isOpenAIResponsesCompactionAwareSession: typeof import("@openai/agents").isOpenAIResponsesCompactionAwareSession;
|
|
92
|
+
MemorySession: typeof import("@openai/agents").MemorySession;
|
|
93
|
+
protocol: typeof import("@openai/agents-core/dist/types/protocol");
|
|
94
|
+
addTraceProcessor(processor: import("@openai/agents").TracingProcessor): void;
|
|
95
|
+
setTraceProcessors(processors: import("@openai/agents").TracingProcessor[]): void;
|
|
96
|
+
setTracingDisabled(disabled: boolean): void;
|
|
97
|
+
startTraceExportLoop(): void;
|
|
98
|
+
getCurrentSpan: typeof import("@openai/agents").getCurrentSpan;
|
|
99
|
+
getCurrentTrace: typeof import("@openai/agents").getCurrentTrace;
|
|
100
|
+
getOrCreateTrace: typeof import("@openai/agents").getOrCreateTrace;
|
|
101
|
+
resetCurrentSpan: typeof import("@openai/agents").resetCurrentSpan;
|
|
102
|
+
setCurrentSpan: typeof import("@openai/agents").setCurrentSpan;
|
|
103
|
+
withTrace: typeof import("@openai/agents").withTrace;
|
|
104
|
+
BatchTraceProcessor: typeof import("@openai/agents").BatchTraceProcessor;
|
|
105
|
+
ConsoleSpanExporter: typeof import("@openai/agents").ConsoleSpanExporter;
|
|
106
|
+
NoopSpan: typeof import("@openai/agents").NoopSpan;
|
|
107
|
+
Span: typeof import("@openai/agents").Span;
|
|
108
|
+
NoopTrace: typeof import("@openai/agents").NoopTrace;
|
|
109
|
+
Trace: typeof import("@openai/agents").Trace;
|
|
110
|
+
generateGroupId: typeof import("@openai/agents").generateGroupId;
|
|
111
|
+
generateSpanId: typeof import("@openai/agents").generateSpanId;
|
|
112
|
+
generateTraceId: typeof import("@openai/agents").generateTraceId;
|
|
113
|
+
createResponseSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").ResponseSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").ResponseSpanData>;
|
|
114
|
+
createAgentSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").AgentSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").AgentSpanData>;
|
|
115
|
+
createFunctionSpan(options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").FunctionSpanData>> & {
|
|
116
|
+
data: {
|
|
117
|
+
name: string;
|
|
118
|
+
};
|
|
119
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").FunctionSpanData>;
|
|
120
|
+
createHandoffSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").HandoffSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").HandoffSpanData>;
|
|
121
|
+
createGenerationSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").GenerationSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").GenerationSpanData>;
|
|
122
|
+
createCustomSpan(options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").CustomSpanData>> & {
|
|
123
|
+
data: {
|
|
124
|
+
name: string;
|
|
125
|
+
};
|
|
126
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").CustomSpanData>;
|
|
127
|
+
createGuardrailSpan(options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").GuardrailSpanData>> & {
|
|
128
|
+
data: {
|
|
129
|
+
name: string;
|
|
130
|
+
};
|
|
131
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").GuardrailSpanData>;
|
|
132
|
+
createTranscriptionSpan(options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").TranscriptionSpanData>> & {
|
|
133
|
+
data: {
|
|
134
|
+
input: {
|
|
135
|
+
data: string;
|
|
136
|
+
format: (string & {}) | "pcm";
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").TranscriptionSpanData>;
|
|
140
|
+
createSpeechSpan(options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").SpeechSpanData>> & {
|
|
141
|
+
data: {
|
|
142
|
+
output: {
|
|
143
|
+
data: string;
|
|
144
|
+
format: (string & {}) | "pcm";
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").SpeechSpanData>;
|
|
148
|
+
createSpeechGroupSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").SpeechGroupSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").SpeechGroupSpanData>;
|
|
149
|
+
createMCPListToolsSpan(options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").MCPListToolsSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined): import("@openai/agents").Span<import("@openai/agents").MCPListToolsSpanData>;
|
|
150
|
+
withResponseSpan: <TOutput>(fn: (span: import("@openai/agents").Span<import("@openai/agents").ResponseSpanData>) => Promise<TOutput>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").ResponseSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput>;
|
|
151
|
+
withAgentSpan: <TOutput_1>(fn: (span: import("@openai/agents").Span<import("@openai/agents").AgentSpanData>) => Promise<TOutput_1>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").AgentSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_1>;
|
|
152
|
+
withFunctionSpan: <TOutput_2>(fn: (span: import("@openai/agents").Span<import("@openai/agents").FunctionSpanData>) => Promise<TOutput_2>, options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").FunctionSpanData>> & {
|
|
153
|
+
data: {
|
|
154
|
+
name: string;
|
|
155
|
+
};
|
|
156
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_2>;
|
|
157
|
+
withHandoffSpan: <TOutput_3>(fn: (span: import("@openai/agents").Span<import("@openai/agents").HandoffSpanData>) => Promise<TOutput_3>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").HandoffSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_3>;
|
|
158
|
+
withGenerationSpan: <TOutput_4>(fn: (span: import("@openai/agents").Span<import("@openai/agents").GenerationSpanData>) => Promise<TOutput_4>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").GenerationSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_4>;
|
|
159
|
+
withCustomSpan: <TOutput_5>(fn: (span: import("@openai/agents").Span<import("@openai/agents").CustomSpanData>) => Promise<TOutput_5>, options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").CustomSpanData>> & {
|
|
160
|
+
data: {
|
|
161
|
+
name: string;
|
|
162
|
+
};
|
|
163
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_5>;
|
|
164
|
+
withGuardrailSpan: <TOutput_6>(fn: (span: import("@openai/agents").Span<import("@openai/agents").GuardrailSpanData>) => Promise<TOutput_6>, options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").GuardrailSpanData>> & {
|
|
165
|
+
data: {
|
|
166
|
+
name: string;
|
|
167
|
+
};
|
|
168
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_6>;
|
|
169
|
+
withTranscriptionSpan: <TOutput_7>(fn: (span: import("@openai/agents").Span<import("@openai/agents").TranscriptionSpanData>) => Promise<TOutput_7>, options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").TranscriptionSpanData>> & {
|
|
170
|
+
data: {
|
|
171
|
+
input: {
|
|
172
|
+
data: string;
|
|
173
|
+
format: (string & {}) | "pcm";
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_7>;
|
|
177
|
+
withSpeechSpan: <TOutput_8>(fn: (span: import("@openai/agents").Span<import("@openai/agents").SpeechSpanData>) => Promise<TOutput_8>, options: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").SpeechSpanData>> & {
|
|
178
|
+
data: {
|
|
179
|
+
output: {
|
|
180
|
+
data: string;
|
|
181
|
+
format: (string & {}) | "pcm";
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
}, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_8>;
|
|
185
|
+
withSpeechGroupSpan: <TOutput_9>(fn: (span: import("@openai/agents").Span<import("@openai/agents").SpeechGroupSpanData>) => Promise<TOutput_9>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").SpeechGroupSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_9>;
|
|
186
|
+
withMCPListToolsSpan: <TOutput_10>(fn: (span: import("@openai/agents").Span<import("@openai/agents").MCPListToolsSpanData>) => Promise<TOutput_10>, options?: import("@openai/agents-core/types").DeepPartial<import("@openai/agents-core/dist/tracing/provider").CreateSpanOptions<import("@openai/agents").MCPListToolsSpanData>> | undefined, parent?: import("@openai/agents").Trace | import("@openai/agents").Span<any> | undefined) => Promise<TOutput_10>;
|
|
187
|
+
OpenAIProvider: typeof import("@openai/agents").OpenAIProvider;
|
|
188
|
+
OpenAIResponsesModel: typeof import("@openai/agents").OpenAIResponsesModel;
|
|
189
|
+
OpenAIChatCompletionsModel: typeof import("@openai/agents").OpenAIChatCompletionsModel;
|
|
190
|
+
setDefaultOpenAIClient: typeof import("@openai/agents").setDefaultOpenAIClient;
|
|
191
|
+
setOpenAIAPI: typeof import("@openai/agents").setOpenAIAPI;
|
|
192
|
+
setDefaultOpenAIKey: typeof import("@openai/agents").setDefaultOpenAIKey;
|
|
193
|
+
setTracingExportApiKey: typeof import("@openai/agents").setTracingExportApiKey;
|
|
194
|
+
setDefaultOpenAITracingExporter: typeof import("@openai/agents").setDefaultOpenAITracingExporter;
|
|
195
|
+
OpenAITracingExporter: typeof import("@openai/agents").OpenAITracingExporter;
|
|
196
|
+
webSearchTool: typeof import("@openai/agents").webSearchTool;
|
|
197
|
+
fileSearchTool: typeof import("@openai/agents").fileSearchTool;
|
|
198
|
+
codeInterpreterTool: typeof import("@openai/agents").codeInterpreterTool;
|
|
199
|
+
imageGenerationTool: typeof import("@openai/agents").imageGenerationTool;
|
|
200
|
+
OpenAIConversationsSession: typeof import("@openai/agents").OpenAIConversationsSession;
|
|
201
|
+
startOpenAIConversationsSession: typeof import("@openai/agents").startOpenAIConversationsSession;
|
|
202
|
+
OpenAIResponsesCompactionSession: typeof import("@openai/agents").OpenAIResponsesCompactionSession;
|
|
203
|
+
}>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a loader which imports one module on the first call and reuses the very same module afterwards
|
|
3
|
+
*
|
|
4
|
+
* Note: [🐌] Heavy third-party dependencies are imported lazily to keep the startup of the Promptbook CLI fast.
|
|
5
|
+
* A statically imported dependency is loaded every single time the bundle is loaded, even when the running
|
|
6
|
+
* command never touches it. A lazily imported dependency is loaded only when the feature is really used.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const loadJsdomModule = createLazyModuleLoader(() => import('jsdom'));
|
|
10
|
+
* const { JSDOM } = await loadJsdomModule();
|
|
11
|
+
*
|
|
12
|
+
* @private internal utility of Promptbook
|
|
13
|
+
*/
|
|
14
|
+
export declare function createLazyModuleLoader<TModule>(importModule: () => Promise<TModule>): () => Promise<TModule>;
|
package/umd/src/version.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const BOOK_LANGUAGE_VERSION: string_semantic_version;
|
|
|
15
15
|
export declare const PROMPTBOOK_ENGINE_VERSION: string_promptbook_version;
|
|
16
16
|
/**
|
|
17
17
|
* Represents the version string of the Promptbook engine.
|
|
18
|
-
* It follows semantic versioning (e.g., `0.
|
|
18
|
+
* It follows semantic versioning (e.g., `0.114.0-2`).
|
|
19
19
|
*
|
|
20
20
|
* @generated
|
|
21
21
|
*/
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import { createManGoOnboardingApiErrorResponse } from '@/src/utils/manGoOnboarding/manGoOnboardingApiResponses';
|
|
3
|
-
import { generateManGoBookDraft } from '@/src/utils/manGoOnboarding/manGoOnboardingAgentRuntime';
|
|
4
|
-
import { readManGoOnboardingStringProperty } from '@/src/utils/manGoOnboarding/manGoOnboardingApiRequest';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Handles `POST /api/onboarding/draft`.
|
|
8
|
-
*
|
|
9
|
-
* @param request - Incoming request with `agentName` and `agentBrief`.
|
|
10
|
-
* @returns Generated Book draft.
|
|
11
|
-
*/
|
|
12
|
-
export async function POST(request: NextRequest) {
|
|
13
|
-
try {
|
|
14
|
-
const body = await request.json();
|
|
15
|
-
const agentName = readManGoOnboardingStringProperty(body, 'agentName');
|
|
16
|
-
const agentBrief = readManGoOnboardingStringProperty(body, 'agentBrief');
|
|
17
|
-
const draft = await generateManGoBookDraft({ agentName, agentBrief });
|
|
18
|
-
|
|
19
|
-
return NextResponse.json({ draft });
|
|
20
|
-
} catch (error) {
|
|
21
|
-
return createManGoOnboardingApiErrorResponse(error);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
|
|
5
|
-
import type { string_book } from '../../../../../../../src/book-2.0/agent-source/string_book';
|
|
6
|
-
import { BookEditor } from '../../../../../../../src/book-components/BookEditor/BookEditor';
|
|
7
|
-
import { convertToBook } from '../services/bookService';
|
|
8
|
-
import { Badge } from './ui/Badge';
|
|
9
|
-
import { Button } from './ui/Button';
|
|
10
|
-
import { Spinner } from './ui/Spinner';
|
|
11
|
-
|
|
12
|
-
type Phase = 'idle' | 'loading' | 'ready' | 'error';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Converts the editor's markdown draft into canonical Book language via the `generateBook`
|
|
16
|
-
* endpoint and shows the validated result. Optional, on-demand — keeps the free-markdown
|
|
17
|
-
* editing flow intact while exposing the "real" Book artifact.
|
|
18
|
-
*/
|
|
19
|
-
export function BookLanguagePanel({ source }: { readonly source: string }) {
|
|
20
|
-
const [phase, setPhase] = useState<Phase>('idle');
|
|
21
|
-
const [book, setBook] = useState('');
|
|
22
|
-
const [isValid, setIsValid] = useState(true);
|
|
23
|
-
const [error, setError] = useState<string | null>(null);
|
|
24
|
-
const [generatedFrom, setGeneratedFrom] = useState('');
|
|
25
|
-
const [copied, setCopied] = useState(false);
|
|
26
|
-
|
|
27
|
-
async function generate() {
|
|
28
|
-
setPhase('loading');
|
|
29
|
-
setError(null);
|
|
30
|
-
try {
|
|
31
|
-
const result = await convertToBook(source);
|
|
32
|
-
setBook(result.book);
|
|
33
|
-
setIsValid(result.isValid);
|
|
34
|
-
setGeneratedFrom(source);
|
|
35
|
-
setPhase('ready');
|
|
36
|
-
} catch (caught) {
|
|
37
|
-
setError(caught instanceof Error ? caught.message : 'Převod na Book selhal.');
|
|
38
|
-
setPhase('error');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function copy() {
|
|
43
|
-
void navigator.clipboard?.writeText(book).then(() => {
|
|
44
|
-
setCopied(true);
|
|
45
|
-
setTimeout(() => setCopied(false), 1500);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const isStale = phase === 'ready' && source !== generatedFrom;
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<div className="mt-5 rounded-2xl border border-zinc-200/60 bg-white p-5 shadow-[var(--ob-shadow-sm)]">
|
|
53
|
-
<div className="flex items-center justify-between gap-3">
|
|
54
|
-
<div className="min-w-0">
|
|
55
|
-
<div className="text-sm font-semibold text-zinc-800">Book language</div>
|
|
56
|
-
<div className="mt-0.5 text-xs text-zinc-400">
|
|
57
|
-
Kanonická, validovaná podoba agenta vygenerovaná z vašeho draftu.
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
{phase === 'ready' && (
|
|
61
|
-
<Badge tone={isValid ? 'success' : 'warning'} dot>
|
|
62
|
-
{isValid ? 'Validní book' : 'Nevalidní'}
|
|
63
|
-
</Badge>
|
|
64
|
-
)}
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
{phase === 'idle' && (
|
|
68
|
-
<div className="mt-4">
|
|
69
|
-
<Button
|
|
70
|
-
variant="outline"
|
|
71
|
-
size="sm"
|
|
72
|
-
disabled={!source.trim()}
|
|
73
|
-
leadingIcon={<span aria-hidden>✨</span>}
|
|
74
|
-
onClick={() => void generate()}
|
|
75
|
-
>
|
|
76
|
-
Převést na Book language
|
|
77
|
-
</Button>
|
|
78
|
-
</div>
|
|
79
|
-
)}
|
|
80
|
-
|
|
81
|
-
{phase === 'loading' && (
|
|
82
|
-
<div className="mt-4 flex items-center gap-2 text-sm text-zinc-500">
|
|
83
|
-
<Spinner className="h-4 w-4" /> Generuji Book…
|
|
84
|
-
</div>
|
|
85
|
-
)}
|
|
86
|
-
|
|
87
|
-
{phase === 'error' && (
|
|
88
|
-
<div className="mt-4 rounded-xl border border-amber-200 bg-amber-50 px-3.5 py-2.5 text-sm text-amber-800">
|
|
89
|
-
<p>{error}</p>
|
|
90
|
-
<button
|
|
91
|
-
type="button"
|
|
92
|
-
onClick={() => void generate()}
|
|
93
|
-
className="mt-1 font-medium underline underline-offset-2"
|
|
94
|
-
>
|
|
95
|
-
Zkusit znovu
|
|
96
|
-
</button>
|
|
97
|
-
</div>
|
|
98
|
-
)}
|
|
99
|
-
|
|
100
|
-
{phase === 'ready' && (
|
|
101
|
-
<div className="mt-4">
|
|
102
|
-
<BookEditor value={book as string_book} isReadonly />
|
|
103
|
-
{isStale && (
|
|
104
|
-
<p className="mt-2 text-xs text-amber-600">
|
|
105
|
-
Draft se od převodu změnil — přegenerujte pro aktuální book.
|
|
106
|
-
</p>
|
|
107
|
-
)}
|
|
108
|
-
<div className="mt-3 flex items-center gap-2">
|
|
109
|
-
<Button
|
|
110
|
-
variant="outline"
|
|
111
|
-
size="sm"
|
|
112
|
-
leadingIcon={<span aria-hidden>↻</span>}
|
|
113
|
-
onClick={() => void generate()}
|
|
114
|
-
>
|
|
115
|
-
Přegenerovat
|
|
116
|
-
</Button>
|
|
117
|
-
<Button variant="ghost" size="sm" onClick={copy}>
|
|
118
|
-
{copied ? '✓ Zkopírováno' : 'Kopírovat'}
|
|
119
|
-
</Button>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
)}
|
|
123
|
-
</div>
|
|
124
|
-
);
|
|
125
|
-
}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useRef, useState } from 'react';
|
|
4
|
-
|
|
5
|
-
import { BOOK_SECTION_PRESETS } from '../config/bookSections';
|
|
6
|
-
import { cn } from '../lib/cn';
|
|
7
|
-
import { MarkdownPreview } from './MarkdownPreview';
|
|
8
|
-
import { Badge } from './ui/Badge';
|
|
9
|
-
import { Spinner } from './ui/Spinner';
|
|
10
|
-
|
|
11
|
-
type MarkdownBookEditorProps = {
|
|
12
|
-
readonly value: string;
|
|
13
|
-
readonly onChange: (value: string) => void;
|
|
14
|
-
readonly onRegenerate?: () => void;
|
|
15
|
-
readonly isRegenerating?: boolean;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
type ViewMode = 'edit' | 'split' | 'preview';
|
|
19
|
-
|
|
20
|
-
const VIEW_MODES: ReadonlyArray<{ id: ViewMode; label: string; icon: string }> = [
|
|
21
|
-
{ id: 'edit', label: 'Editor', icon: '✎' },
|
|
22
|
-
{ id: 'split', label: 'Obojí', icon: '⊟' },
|
|
23
|
-
{ id: 'preview', label: 'Náhled', icon: '◳' },
|
|
24
|
-
];
|
|
25
|
-
|
|
26
|
-
const PANE_HEIGHT = 'h-[28rem]';
|
|
27
|
-
|
|
28
|
-
export function MarkdownBookEditor({ value, onChange, onRegenerate, isRegenerating }: MarkdownBookEditorProps) {
|
|
29
|
-
const textareaRef = useRef<HTMLTextAreaElement>(null);
|
|
30
|
-
const [mode, setMode] = useState<ViewMode>('edit');
|
|
31
|
-
|
|
32
|
-
function appendSection(markdown: string) {
|
|
33
|
-
const trimmed = value.replace(/\s+$/, '');
|
|
34
|
-
const next = trimmed ? `${trimmed}\n\n${markdown}\n` : `${markdown}\n`;
|
|
35
|
-
onChange(next);
|
|
36
|
-
|
|
37
|
-
// Make sure the new section is visible to edit.
|
|
38
|
-
if (mode === 'preview') {
|
|
39
|
-
setMode('split');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const textarea = textareaRef.current;
|
|
43
|
-
if (textarea) {
|
|
44
|
-
textarea.focus();
|
|
45
|
-
requestAnimationFrame(() => {
|
|
46
|
-
textarea.scrollTop = textarea.scrollHeight;
|
|
47
|
-
textarea.setSelectionRange(next.length, next.length);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const isEditorShown = mode !== 'preview';
|
|
53
|
-
const isPreviewShown = mode !== 'edit';
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<div>
|
|
57
|
-
<div className="overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-[var(--ob-shadow-md)] transition-shadow focus-within:shadow-[var(--ob-shadow-lg)] focus-within:ring-1 focus-within:ring-[color:var(--ob-accent-200)]">
|
|
58
|
-
<div className="flex flex-wrap items-center justify-between gap-3 border-b border-zinc-200 bg-zinc-50/80 px-4 py-2.5">
|
|
59
|
-
<span className="flex items-center gap-2 text-[13px] text-zinc-600">
|
|
60
|
-
<span aria-hidden>📄</span>
|
|
61
|
-
<strong className="font-semibold text-zinc-800">book.md</strong>
|
|
62
|
-
<span className="hidden sm:inline">
|
|
63
|
-
<Badge tone="accent">Plně editovatelný</Badge>
|
|
64
|
-
</span>
|
|
65
|
-
</span>
|
|
66
|
-
<span className="flex items-center gap-2">
|
|
67
|
-
<ViewToggle mode={mode} onChange={setMode} />
|
|
68
|
-
{onRegenerate && (
|
|
69
|
-
<button
|
|
70
|
-
type="button"
|
|
71
|
-
onClick={onRegenerate}
|
|
72
|
-
disabled={isRegenerating}
|
|
73
|
-
title="Přegenerovat ze zadání"
|
|
74
|
-
className="inline-flex items-center gap-1.5 rounded-lg px-1.5 py-1 text-xs font-medium text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-[color:var(--ob-accent-700)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ob-ring)] disabled:cursor-not-allowed disabled:opacity-50"
|
|
75
|
-
>
|
|
76
|
-
{isRegenerating ? <Spinner className="h-3.5 w-3.5" /> : <span aria-hidden>↻</span>}
|
|
77
|
-
<span className="hidden md:inline">Přegenerovat</span>
|
|
78
|
-
</button>
|
|
79
|
-
)}
|
|
80
|
-
</span>
|
|
81
|
-
</div>
|
|
82
|
-
|
|
83
|
-
<div className={cn('grid', mode === 'split' && 'md:grid-cols-2 md:divide-x md:divide-zinc-200')}>
|
|
84
|
-
{isEditorShown && (
|
|
85
|
-
<textarea
|
|
86
|
-
ref={textareaRef}
|
|
87
|
-
value={value}
|
|
88
|
-
spellCheck={false}
|
|
89
|
-
onChange={(event) => onChange(event.target.value)}
|
|
90
|
-
aria-label="Obsah booku v markdownu"
|
|
91
|
-
className={cn(
|
|
92
|
-
'block w-full resize-none border-0 bg-white p-4 font-mono text-[13px] leading-relaxed text-zinc-800 focus:outline-none focus:ring-0',
|
|
93
|
-
mode === 'edit' ? 'min-h-[28rem] resize-y' : PANE_HEIGHT,
|
|
94
|
-
)}
|
|
95
|
-
/>
|
|
96
|
-
)}
|
|
97
|
-
{isPreviewShown && (
|
|
98
|
-
<div className={cn('overflow-y-auto bg-white p-4', mode === 'preview' ? 'min-h-[28rem]' : PANE_HEIGHT)}>
|
|
99
|
-
{value.trim() ? (
|
|
100
|
-
<MarkdownPreview source={value} />
|
|
101
|
-
) : (
|
|
102
|
-
<p className="text-sm text-zinc-400">Náhled se zobrazí, jakmile book nebude prázdný.</p>
|
|
103
|
-
)}
|
|
104
|
-
</div>
|
|
105
|
-
)}
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<div className="mt-4">
|
|
110
|
-
<div className="mb-2 text-xs font-semibold text-zinc-500">Přidat předepsanou sekci:</div>
|
|
111
|
-
<div className="flex flex-wrap gap-2">
|
|
112
|
-
{BOOK_SECTION_PRESETS.map((preset) => (
|
|
113
|
-
<button
|
|
114
|
-
key={preset.key}
|
|
115
|
-
type="button"
|
|
116
|
-
onClick={() => appendSection(preset.markdown)}
|
|
117
|
-
className="inline-flex items-center gap-1 rounded-full border border-dashed border-zinc-300 bg-white px-3 py-1.5 text-xs font-medium text-zinc-500 transition-colors hover:border-[color:var(--ob-accent-400)] hover:bg-[color:var(--ob-accent-50)] hover:text-[color:var(--ob-accent-700)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ob-ring)]"
|
|
118
|
-
>
|
|
119
|
-
+ {preset.label}
|
|
120
|
-
</button>
|
|
121
|
-
))}
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function ViewToggle({ mode, onChange }: { readonly mode: ViewMode; readonly onChange: (mode: ViewMode) => void }) {
|
|
129
|
-
return (
|
|
130
|
-
<div className="inline-flex rounded-lg border border-zinc-200 bg-white p-0.5" role="tablist" aria-label="Zobrazení editoru">
|
|
131
|
-
{VIEW_MODES.map((view) => {
|
|
132
|
-
const isActive = view.id === mode;
|
|
133
|
-
return (
|
|
134
|
-
<button
|
|
135
|
-
key={view.id}
|
|
136
|
-
type="button"
|
|
137
|
-
role="tab"
|
|
138
|
-
aria-selected={isActive}
|
|
139
|
-
onClick={() => onChange(view.id)}
|
|
140
|
-
className={cn(
|
|
141
|
-
'inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ob-ring)]',
|
|
142
|
-
isActive
|
|
143
|
-
? 'bg-[color:var(--ob-accent-600)] text-white'
|
|
144
|
-
: 'text-zinc-500 hover:bg-zinc-100 hover:text-zinc-800',
|
|
145
|
-
)}
|
|
146
|
-
>
|
|
147
|
-
<span aria-hidden>{view.icon}</span>
|
|
148
|
-
<span className="hidden sm:inline">{view.label}</span>
|
|
149
|
-
</button>
|
|
150
|
-
);
|
|
151
|
-
})}
|
|
152
|
-
</div>
|
|
153
|
-
);
|
|
154
|
-
}
|