@promptbook/components 0.104.0-0 → 0.104.0-10

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 (42) hide show
  1. package/esm/index.es.js +626 -237
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/servers.d.ts +8 -0
  4. package/esm/typings/src/_packages/core.index.d.ts +2 -0
  5. package/esm/typings/src/_packages/types.index.d.ts +10 -2
  6. package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +6 -1
  7. package/esm/typings/src/book-2.0/agent-source/createAgentModelRequirements.d.ts +6 -6
  8. package/esm/typings/src/book-2.0/agent-source/createAgentModelRequirementsWithCommitments.closed.test.d.ts +1 -0
  9. package/esm/typings/src/book-2.0/utils/generatePlaceholderAgentProfileImageUrl.d.ts +3 -3
  10. package/esm/typings/src/book-components/Chat/Chat/ChatMessageItem.d.ts +5 -1
  11. package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +5 -0
  12. package/esm/typings/src/book-components/Chat/CodeBlock/CodeBlock.d.ts +13 -0
  13. package/esm/typings/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +1 -0
  14. package/esm/typings/src/book-components/Chat/types/ChatMessage.d.ts +7 -11
  15. package/esm/typings/src/book-components/_common/Dropdown/Dropdown.d.ts +2 -2
  16. package/esm/typings/src/book-components/_common/MenuHoisting/MenuHoistingContext.d.ts +56 -0
  17. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +21 -11
  18. package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentsDatabaseSchema.d.ts +80 -14
  19. package/esm/typings/src/commitments/DICTIONARY/DICTIONARY.d.ts +46 -0
  20. package/esm/typings/src/commitments/index.d.ts +2 -1
  21. package/esm/typings/src/llm-providers/_multiple/MultipleLlmExecutionTools.d.ts +6 -2
  22. package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +1 -1
  23. package/esm/typings/src/llm-providers/ollama/OllamaExecutionTools.d.ts +1 -1
  24. package/esm/typings/src/llm-providers/openai/createOpenAiCompatibleExecutionTools.d.ts +1 -1
  25. package/esm/typings/src/llm-providers/remote/RemoteLlmExecutionTools.d.ts +1 -0
  26. package/esm/typings/src/types/Message.d.ts +49 -0
  27. package/esm/typings/src/types/ModelRequirements.d.ts +38 -14
  28. package/esm/typings/src/types/typeAliases.d.ts +23 -1
  29. package/esm/typings/src/utils/color/utils/colorToDataUrl.d.ts +2 -1
  30. package/esm/typings/src/utils/environment/$detectRuntimeEnvironment.d.ts +4 -4
  31. package/esm/typings/src/utils/environment/$isRunningInBrowser.d.ts +1 -1
  32. package/esm/typings/src/utils/environment/$isRunningInJest.d.ts +1 -1
  33. package/esm/typings/src/utils/environment/$isRunningInNode.d.ts +1 -1
  34. package/esm/typings/src/utils/environment/$isRunningInWebWorker.d.ts +1 -1
  35. package/esm/typings/src/utils/markdown/extractAllBlocksFromMarkdown.d.ts +2 -2
  36. package/esm/typings/src/utils/markdown/extractOneBlockFromMarkdown.d.ts +2 -2
  37. package/esm/typings/src/utils/random/$randomBase58.d.ts +12 -0
  38. package/esm/typings/src/version.d.ts +1 -1
  39. package/package.json +1 -2
  40. package/umd/index.umd.js +634 -246
  41. package/umd/index.umd.js.map +1 -1
  42. package/esm/typings/src/book-2.0/utils/generateGravatarUrl.d.ts +0 -10
@@ -22,6 +22,14 @@ type ServerConfiguration = {
22
22
  */
23
23
  urls: Array<string_promptbook_server_url>;
24
24
  };
25
+ /**
26
+ * Core Promptbook server configuration.
27
+ *
28
+ * This server is also used for auto-federation in the Agents Server.
29
+ *
30
+ * @public exported from `@promptbook/core`
31
+ */
32
+ export declare const CORE_SERVER: ServerConfiguration;
25
33
  /**
26
34
  * Available remote servers for the Promptbook
27
35
  *
@@ -191,6 +191,7 @@ import { SectionTypes } from '../types/SectionType';
191
191
  import { TaskTypes } from '../types/TaskType';
192
192
  import { aboutPromptbookInformation } from '../utils/misc/aboutPromptbookInformation';
193
193
  import { $generateBookBoilerplate } from '../utils/random/$generateBookBoilerplate';
194
+ import { CORE_SERVER } from '../../servers';
194
195
  import { REMOTE_SERVER_URLS } from '../../servers';
195
196
  import { AUTO_FEDERATED_AGENT_SERVER_URLS } from '../../servers';
196
197
  export { BOOK_LANGUAGE_VERSION, PROMPTBOOK_ENGINE_VERSION };
@@ -386,5 +387,6 @@ export { SectionTypes };
386
387
  export { TaskTypes };
387
388
  export { aboutPromptbookInformation };
388
389
  export { $generateBookBoilerplate };
390
+ export { CORE_SERVER };
389
391
  export { REMOTE_SERVER_URLS };
390
392
  export { AUTO_FEDERATED_AGENT_SERVER_URLS };
@@ -185,6 +185,7 @@ import type { BookTranspiler } from '../transpilers/_common/BookTranspiler';
185
185
  import type { BookTranspilerOptions } from '../transpilers/_common/BookTranspilerOptions';
186
186
  import type { IntermediateFilesStrategy } from '../types/IntermediateFilesStrategy';
187
187
  import type { LlmCall } from '../types/LlmCall';
188
+ import type { Message } from '../types/Message';
188
189
  import type { ModelRequirements } from '../types/ModelRequirements';
189
190
  import type { CompletionModelRequirements } from '../types/ModelRequirements';
190
191
  import type { ChatModelRequirements } from '../types/ModelRequirements';
@@ -205,6 +206,7 @@ import type { string_char_emoji } from '../types/typeAliasEmoji';
205
206
  import type { string_business_category_name } from '../types/typeAliases';
206
207
  import type { string_model_name } from '../types/typeAliases';
207
208
  import type { string_prompt } from '../types/typeAliases';
209
+ import type { string_prompt_image } from '../types/typeAliases';
208
210
  import type { string_template } from '../types/typeAliases';
209
211
  import type { string_text_prompt } from '../types/typeAliases';
210
212
  import type { string_chat_prompt } from '../types/typeAliases';
@@ -225,6 +227,7 @@ import type { string_title } from '../types/typeAliases';
225
227
  import type { string_agent_name } from '../types/typeAliases';
226
228
  import type { string_agent_name_in_book } from '../types/typeAliases';
227
229
  import type { string_agent_hash } from '../types/typeAliases';
230
+ import type { string_agent_permanent_id } from '../types/typeAliases';
228
231
  import type { string_persona_description } from '../types/typeAliases';
229
232
  import type { string_model_description } from '../types/typeAliases';
230
233
  import type { string_knowledge_source_content } from '../types/typeAliases';
@@ -275,6 +278,7 @@ import type { string_uuid } from '../types/typeAliases';
275
278
  import type { string_app_id } from '../types/typeAliases';
276
279
  import type { string_user_id } from '../types/typeAliases';
277
280
  import type { string_sha256 } from '../types/typeAliases';
281
+ import type { string_base_58 } from '../types/typeAliases';
278
282
  import type { string_semantic_version } from '../types/typeAliases';
279
283
  import type { string_version_dependency } from '../types/typeAliases';
280
284
  import type { string_file_extension } from '../types/typeAliases';
@@ -337,7 +341,7 @@ import type { ColorTransformer } from '../utils/color/operators/ColorTransformer
337
341
  import type { PipelineEditableSerialized } from '../utils/editable/types/PipelineEditableSerialized';
338
342
  import type { ExecCommandOptions } from '../utils/execCommand/ExecCommandOptions';
339
343
  import type { ExecCommandOptionsAdvanced } from '../utils/execCommand/ExecCommandOptions';
340
- import type { CodeBlock } from '../utils/markdown/extractAllBlocksFromMarkdown';
344
+ import type { MarkdownCodeBlock } from '../utils/markdown/extractAllBlocksFromMarkdown';
341
345
  import type { MarkdownSection } from '../utils/markdown/parseMarkdownSection';
342
346
  import type { Registered } from '../utils/misc/$Register';
343
347
  import type { Registration } from '../utils/misc/$Register';
@@ -549,6 +553,7 @@ export type { BookTranspiler };
549
553
  export type { BookTranspilerOptions };
550
554
  export type { IntermediateFilesStrategy };
551
555
  export type { LlmCall };
556
+ export type { Message };
552
557
  export type { ModelRequirements };
553
558
  export type { CompletionModelRequirements };
554
559
  export type { ChatModelRequirements };
@@ -569,6 +574,7 @@ export type { string_char_emoji };
569
574
  export type { string_business_category_name };
570
575
  export type { string_model_name };
571
576
  export type { string_prompt };
577
+ export type { string_prompt_image };
572
578
  export type { string_template };
573
579
  export type { string_text_prompt };
574
580
  export type { string_chat_prompt };
@@ -589,6 +595,7 @@ export type { string_title };
589
595
  export type { string_agent_name };
590
596
  export type { string_agent_name_in_book };
591
597
  export type { string_agent_hash };
598
+ export type { string_agent_permanent_id };
592
599
  export type { string_persona_description };
593
600
  export type { string_model_description };
594
601
  export type { string_knowledge_source_content };
@@ -639,6 +646,7 @@ export type { string_uuid };
639
646
  export type { string_app_id };
640
647
  export type { string_user_id };
641
648
  export type { string_sha256 };
649
+ export type { string_base_58 };
642
650
  export type { string_semantic_version };
643
651
  export type { string_version_dependency };
644
652
  export type { string_file_extension };
@@ -701,7 +709,7 @@ export type { ColorTransformer };
701
709
  export type { PipelineEditableSerialized };
702
710
  export type { ExecCommandOptions };
703
711
  export type { ExecCommandOptionsAdvanced };
704
- export type { CodeBlock };
712
+ export type { MarkdownCodeBlock };
705
713
  export type { MarkdownSection };
706
714
  export type { Registered };
707
715
  export type { Registration };
@@ -1,4 +1,4 @@
1
- import type { string_agent_hash, string_agent_name, string_agent_url, string_color, string_fonts, string_url_image } from '../../types/typeAliases';
1
+ import type { string_agent_hash, string_agent_name, string_agent_permanent_id, string_agent_url, string_color, string_fonts, string_url_image } from '../../types/typeAliases';
2
2
  /**
3
3
  * Unified parameter representation that supports two different notations:
4
4
  * 1. @Parameter - single word parameter starting with @
@@ -33,6 +33,11 @@ export type AgentBasicInformation = {
33
33
  * Hash of the agent source for integrity verification
34
34
  */
35
35
  agentHash: string_agent_hash;
36
+ /**
37
+ * Unique identifier of the agent
38
+ * This is a random base58 string assigned by the server
39
+ */
40
+ permanentId?: string_agent_permanent_id;
36
41
  /**
37
42
  * Optional description of the agent
38
43
  * This is the line starting with "PERSONA"
@@ -1,6 +1,6 @@
1
1
  import type { AvailableModel } from '../../execution/AvailableModel';
2
2
  import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
3
- import type { string_model_name } from '../../types/typeAliases';
3
+ import type { string_agent_name, string_model_name, string_system_message, string_url_image } from '../../types/typeAliases';
4
4
  import type { AgentModelRequirements } from './AgentModelRequirements';
5
5
  import type { string_book } from './string_book';
6
6
  /**
@@ -27,18 +27,18 @@ export declare function extractMcpServers(agentSource: string_book): string[];
27
27
  * @deprecated Use createAgentModelRequirements instead
28
28
  * @private
29
29
  */
30
- export declare function createAgentSystemMessage(agentSource: string_book): Promise<string>;
30
+ export declare function createAgentSystemMessage(agentSource: string_book): Promise<string_system_message>;
31
31
  /**
32
32
  * Extracts the agent name from the first line of the agent source
33
33
  * @deprecated Use parseAgentSource instead
34
34
  * @private
35
35
  */
36
- export declare function extractAgentName(agentSource: string_book): string;
36
+ export declare function extractAgentName(agentSource: string_book): string_agent_name;
37
37
  /**
38
- * Extracts the profile image URL from agent source or returns gravatar fallback
38
+ * Extracts the profile image URL from agent source or returns default avatar fallback
39
39
  * @param agentSource The agent source string that may contain META IMAGE line
40
- * @returns Profile image URL (from source or gravatar fallback)
40
+ * @returns Profile image URL (from source or default avatar fallback)
41
41
  * @deprecated Use parseAgentSource instead
42
42
  * @private
43
43
  */
44
- export declare function extractAgentProfileImage(agentSource: string_book): string;
44
+ export declare function extractAgentProfileImage(agentSource: string_book): string_url_image | null;
@@ -1,13 +1,13 @@
1
- import type { string_agent_name, string_url_image } from '../../types/typeAliases';
1
+ import type { string_agent_name, string_agent_permanent_id, string_url, string_url_image } from '../../types/typeAliases';
2
2
  /**
3
3
  * Generates an image for the agent to use as profile image
4
4
  *
5
- * @param agentName The agent name to generate avatar for
5
+ * @param agentId - The permanent ID of the agent
6
6
  * @returns The placeholder profile image URL for the agent
7
7
  *
8
8
  * @public exported from `@promptbook/core`
9
9
  */
10
- export declare function generatePlaceholderAgentProfileImageUrl(agentName?: string_agent_name): string_url_image;
10
+ export declare function generatePlaceholderAgentProfileImageUrl(agentIdOrName: string_agent_permanent_id | string_agent_name, agentsServerUrl?: URL | string_url): string_url_image;
11
11
  /**
12
12
  * TODO: [🤹] Figure out best placeholder image generator https://i.pravatar.cc/1000?u=568
13
13
  */
@@ -29,11 +29,15 @@ type ChatMessageItemProps = Pick<ChatProps, 'onMessage' | 'participants'> & {
29
29
  * Called when the copy button is pressed.
30
30
  */
31
31
  onCopy?: () => void;
32
+ /**
33
+ * Called when the create agent button is pressed for book code blocks.
34
+ */
35
+ onCreateAgent?: (bookContent: string) => void;
32
36
  };
33
37
  /**
34
38
  * Renders a single chat message item with avatar, content, buttons, and rating.
35
39
  *
36
40
  * @private internal subcomponent of `<Chat>` component
37
41
  */
38
- export declare const ChatMessageItem: import("react").MemoExoticComponent<({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, onCopy, }: ChatMessageItemProps) => import("react/jsx-runtime").JSX.Element>;
42
+ export declare const ChatMessageItem: import("react").MemoExoticComponent<({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, onCopy, onCreateAgent, }: ChatMessageItemProps) => import("react/jsx-runtime").JSX.Element>;
39
43
  export {};
@@ -187,6 +187,11 @@ export type ChatProps = {
187
187
  * @default true
188
188
  */
189
189
  isCopyButtonEnabled?: boolean;
190
+ /**
191
+ * Optional callback for creating an agent from a book code block.
192
+ * When provided, "Create Agent" buttons will be shown for book code blocks.
193
+ */
194
+ onCreateAgent?: (bookContent: string) => void;
190
195
  };
191
196
  /**
192
197
  * TODO: [☁️] Export component prop types only to `@promptbook/components` (not `@promptbook/types`)
@@ -0,0 +1,13 @@
1
+ type CodeBlockProps = {
2
+ code: string;
3
+ language?: string;
4
+ className?: string;
5
+ onCreateAgent?: (bookContent: string) => void;
6
+ };
7
+ /**
8
+ * Component to render a code block with syntax highlighting, copy, download, and create agent options.
9
+ *
10
+ * @private Internal utility of `<ChatMessage />` component
11
+ */
12
+ export declare function CodeBlock({ code, language, className, onCreateAgent }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -2,6 +2,7 @@ import type { string_markdown } from '../../../types/typeAliases';
2
2
  type MarkdownContentProps = {
3
3
  content: string_markdown;
4
4
  className?: string;
5
+ onCreateAgent?: (bookContent: string) => void;
5
6
  };
6
7
  /**
7
8
  * Renders markdown content with support for code highlighting, math, and tables.
@@ -1,22 +1,17 @@
1
+ import { Message } from '../../../types/Message';
1
2
  import type { id, string_markdown } from '../../../types/typeAliases';
2
3
  /**
3
4
  * A message in the chat
4
5
  *
5
6
  * @public exported from `@promptbook/components`
6
7
  */
7
- export type ChatMessage = {
8
+ export type ChatMessage = Omit<Message<id>, 'direction' | 'recipients' | 'threadId' | 'metadata'> & {
8
9
  /**
9
- * Unique identifier of the message
10
- */
11
- id?: id;
12
- /**
13
- * Date when the message was created
14
- */
15
- date?: Date;
16
- /**
17
- * The name of the participant who sent the message
10
+ * Force the channel to be 'PROMPTBOOK_CHAT'
11
+ *
12
+ * @default 'PROMPTBOOK_CHAT'
18
13
  */
19
- from: id;
14
+ channel?: 'PROMPTBOOK_CHAT';
20
15
  /**
21
16
  * The content of the message with optional markdown formatting
22
17
  */
@@ -37,6 +32,7 @@ export type ChatMessage = {
37
32
  isVoiceCall?: boolean;
38
33
  };
39
34
  /**
35
+ * TODO: Make all fields readonly
40
36
  * TODO: Delete `expectedAnswer` from ChatMessage
41
37
  * TODO: Rename `date` into `created`+`modified`
42
38
  */
@@ -1,7 +1,7 @@
1
- import { JSX } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  type DropdownProps = {
3
3
  actions: Array<{
4
- icon: JSX.Element;
4
+ icon: ReactNode;
5
5
  name: string;
6
6
  onClick: () => void;
7
7
  }>;
@@ -0,0 +1,56 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Item that can be hoisted to the top menu
4
+ *
5
+ * @private mechanism inside Promptbook
6
+ */
7
+ export type HoistedMenuItem = {
8
+ /**
9
+ * Unique key for the menu item
10
+ */
11
+ key?: string;
12
+ /**
13
+ * Icon to display
14
+ */
15
+ icon: ReactNode;
16
+ /**
17
+ * Name/Tooltip of the item
18
+ */
19
+ name: string;
20
+ /**
21
+ * Action to perform when clicked
22
+ */
23
+ onClick: () => void;
24
+ /**
25
+ * If true, the item is active/toggled
26
+ */
27
+ isActive?: boolean;
28
+ };
29
+ type MenuHoistingContextType = {
30
+ /**
31
+ * The currently hoisted menu items
32
+ */
33
+ menu: HoistedMenuItem[];
34
+ /**
35
+ * Set the hoisted menu items
36
+ */
37
+ setMenu: (items: HoistedMenuItem[]) => void;
38
+ };
39
+ /**
40
+ * Provider for menu hoisting
41
+ *
42
+ * @private mechanism inside Promptbook
43
+ */
44
+ export declare function MenuHoistingProvider({ children }: {
45
+ children: ReactNode;
46
+ }): import("react/jsx-runtime").JSX.Element;
47
+ /**
48
+ * Hook to use the menu hoisting system
49
+ *
50
+ * @private mechanism inside Promptbook
51
+ */
52
+ export declare function useMenuHoisting(): MenuHoistingContextType | null;
53
+ export {};
54
+ /**
55
+ * Note: [💞] Ignore a discrepancy between file name and entity name
56
+ */
@@ -1,7 +1,7 @@
1
1
  import type { SupabaseClient } from '@supabase/supabase-js';
2
2
  import type { AgentBasicInformation } from '../../../../book-2.0/agent-source/AgentBasicInformation';
3
3
  import type { string_book } from '../../../../book-2.0/agent-source/string_book';
4
- import type { string_agent_name } from '../../../../types/typeAliases';
4
+ import type { string_agent_name, string_agent_permanent_id } from '../../../../types/typeAliases';
5
5
  import { AgentCollectionInSupabaseOptions } from './AgentCollectionInSupabaseOptions';
6
6
  import type { AgentsDatabaseSchema } from './AgentsDatabaseSchema';
7
7
  /**
@@ -28,38 +28,48 @@ export declare class AgentCollectionInSupabase {
28
28
  /**
29
29
  * [🐱‍🚀]@@@
30
30
  */
31
- getAgentSource(agentName: string_agent_name): Promise<string_book>;
31
+ getAgentPermanentId(agentNameOrPermanentId: string_agent_name | string_agent_permanent_id): Promise<string_agent_permanent_id>;
32
+ /**
33
+ * [🐱‍🚀]@@@
34
+ */
35
+ getAgentSource(agentNameOrPermanentId: string_agent_name | string_agent_permanent_id): Promise<string_book>;
32
36
  /**
33
37
  * Creates a new agent in the collection
34
38
  *
35
39
  * Note: You can set 'PARENT' in the agent source to inherit from another agent in the collection.
36
40
  */
37
- createAgent(agentSource: string_book): Promise<AgentBasicInformation>;
41
+ createAgent(agentSource: string_book): Promise<AgentBasicInformation & Required<Pick<AgentBasicInformation, 'permanentId'>>>;
38
42
  /**
39
43
  * Updates an existing agent in the collection
40
44
  */
41
- updateAgentSource(agentName: string_agent_name, agentSource: string_book): Promise<void>;
45
+ updateAgentSource(permanentId: string_agent_permanent_id, agentSource: string_book): Promise<void>;
42
46
  /**
43
- * Deletes an agent from the collection
47
+ * List agents that are soft deleted (deletedAt IS NOT NULL)
44
48
  */
45
- deleteAgent(agentName: string_agent_name): Promise<void>;
49
+ listDeletedAgents(): Promise<ReadonlyArray<AgentBasicInformation>>;
46
50
  /**
47
51
  * List history of an agent
48
52
  */
49
- listAgentHistory(agentName: string_agent_name): Promise<ReadonlyArray<{
53
+ listAgentHistory(permanentId: string_agent_permanent_id): Promise<ReadonlyArray<{
50
54
  id: number;
51
55
  createdAt: string;
52
56
  agentHash: string;
53
57
  promptbookEngineVersion: string;
54
58
  }>>;
55
59
  /**
56
- * List agents that are in history but not in the active agents list
60
+ * Restore a soft-deleted agent by setting deletedAt to NULL
61
+ */
62
+ restoreAgent(permanentId: string_agent_permanent_id): Promise<void>;
63
+ /**
64
+ * Restore an agent from a specific history entry
65
+ *
66
+ * This will update the current agent with the source from the history entry
57
67
  */
58
- listDeletedAgents(): Promise<ReadonlyArray<string_agent_name>>;
68
+ restoreAgentFromHistory(historyId: number): Promise<void>;
59
69
  /**
60
- * Restore an agent from history
70
+ * Soft delete an agent by setting deletedAt to current timestamp
61
71
  */
62
- restoreAgent(historyId: number): Promise<void>;
72
+ deleteAgent(permanentId: string_agent_permanent_id): Promise<void>;
63
73
  /**
64
74
  * Get the Supabase table name with prefix
65
75
  *
@@ -3,11 +3,12 @@
3
3
  * Source of truth: `/apps/agents-server/src/database/schema.sql` *(do not edit table structure here manually)*
4
4
  *
5
5
  * [💽] Prompt:
6
- * Re-generate this sub-schema
6
+ * Re-generate this sub-schema from `/apps/agents-server/src/database/schema.ts` *(which was generated from `/apps/agents-server/src/database/migrations/*.sql`)*
7
+ * `AgentsDatabaseSchema` is strict subset of `AgentsServerDatabase`
7
8
  * Generate Supabase TypeScript schema which is a subset of `AgentsServerDatabase`
8
9
  * containing only tables `Agent` and `AgentHistory`
9
10
  *
10
- * NOTE: This file intentionally omits all other tables (EnvironmentVariable, ChatHistory, ChatFeedback)
11
+ * NOTE: This file intentionally omits all other tables (`Metadata`, `ChatHistory`, `ChatFeedback`, `User`, `LlmCache`, etc.)
11
12
  * and any extra schemas (e.g. `graphql_public`) to remain a strict subset.
12
13
  */
13
14
  export type Json = string | number | boolean | null | {
@@ -22,6 +23,7 @@ export type AgentsDatabaseSchema = {
22
23
  agentName: string;
23
24
  createdAt: string;
24
25
  updatedAt: string | null;
26
+ permanentId: string | null;
25
27
  agentHash: string;
26
28
  agentSource: string;
27
29
  agentProfile: Json;
@@ -29,12 +31,15 @@ export type AgentsDatabaseSchema = {
29
31
  usage: Json | null;
30
32
  preparedModelRequirements: Json | null;
31
33
  preparedExternals: Json | null;
34
+ deletedAt: string | null;
35
+ visibility: 'PUBLIC' | 'PRIVATE';
32
36
  };
33
37
  Insert: {
34
38
  id?: number;
35
39
  agentName: string;
36
40
  createdAt: string;
37
41
  updatedAt?: string | null;
42
+ permanentId?: string | null;
38
43
  agentHash: string;
39
44
  agentSource: string;
40
45
  agentProfile: Json;
@@ -42,12 +47,15 @@ export type AgentsDatabaseSchema = {
42
47
  usage?: Json | null;
43
48
  preparedModelRequirements?: Json | null;
44
49
  preparedExternals?: Json | null;
50
+ deletedAt?: string | null;
51
+ visibility?: 'PUBLIC' | 'PRIVATE';
45
52
  };
46
53
  Update: {
47
54
  id?: number;
48
55
  agentName?: string;
49
56
  createdAt?: string;
50
57
  updatedAt?: string | null;
58
+ permanentId?: string | null;
51
59
  agentHash?: string;
52
60
  agentSource?: string;
53
61
  agentProfile?: Json;
@@ -55,6 +63,8 @@ export type AgentsDatabaseSchema = {
55
63
  usage?: Json | null;
56
64
  preparedModelRequirements?: Json | null;
57
65
  preparedExternals?: Json | null;
66
+ deletedAt?: string | null;
67
+ visibility?: 'PUBLIC' | 'PRIVATE';
58
68
  };
59
69
  Relationships: [];
60
70
  };
@@ -63,6 +73,7 @@ export type AgentsDatabaseSchema = {
63
73
  id: number;
64
74
  createdAt: string;
65
75
  agentName: string;
76
+ permanentId: string;
66
77
  agentHash: string;
67
78
  previousAgentHash: string | null;
68
79
  agentSource: string;
@@ -72,6 +83,7 @@ export type AgentsDatabaseSchema = {
72
83
  id?: number;
73
84
  createdAt: string;
74
85
  agentName: string;
86
+ permanentId: string;
75
87
  agentHash: string;
76
88
  previousAgentHash?: string | null;
77
89
  agentSource: string;
@@ -81,26 +93,80 @@ export type AgentsDatabaseSchema = {
81
93
  id?: number;
82
94
  createdAt?: string;
83
95
  agentName?: string;
96
+ permanentId?: string;
84
97
  agentHash?: string;
85
98
  previousAgentHash?: string | null;
86
99
  agentSource?: string;
87
100
  promptbookEngineVersion?: string;
88
101
  };
102
+ Relationships: [
103
+ {
104
+ foreignKeyName: 'AgentHistory_permanentId_fkey';
105
+ columns: ['permanentId'];
106
+ referencedRelation: 'Agent';
107
+ referencedColumns: ['permanentId'];
108
+ }
109
+ ];
110
+ };
111
+ GenerationLock: {
112
+ Row: {
113
+ id: number;
114
+ createdAt: string;
115
+ updatedAt: string;
116
+ lockKey: string;
117
+ expiresAt: string;
118
+ };
119
+ Insert: {
120
+ id?: number;
121
+ createdAt?: string;
122
+ updatedAt?: string;
123
+ lockKey: string;
124
+ expiresAt: string;
125
+ };
126
+ Update: {
127
+ id?: number;
128
+ createdAt?: string;
129
+ updatedAt?: string;
130
+ lockKey?: string;
131
+ expiresAt?: string;
132
+ };
133
+ Relationships: [];
134
+ };
135
+ Image: {
136
+ Row: {
137
+ id: number;
138
+ createdAt: string;
139
+ updatedAt: string;
140
+ filename: string;
141
+ prompt: string;
142
+ cdnUrl: string;
143
+ cdnKey: string;
144
+ };
145
+ Insert: {
146
+ id?: number;
147
+ createdAt?: string;
148
+ updatedAt?: string;
149
+ filename: string;
150
+ prompt: string;
151
+ cdnUrl: string;
152
+ cdnKey: string;
153
+ };
154
+ Update: {
155
+ id?: number;
156
+ createdAt?: string;
157
+ updatedAt?: string;
158
+ filename?: string;
159
+ prompt?: string;
160
+ cdnUrl?: string;
161
+ cdnKey?: string;
162
+ };
89
163
  Relationships: [];
90
164
  };
91
165
  };
92
- Views: {
93
- [_ in never]: never;
94
- };
95
- Functions: {
96
- [_ in never]: never;
97
- };
98
- Enums: {
99
- [_ in never]: never;
100
- };
101
- CompositeTypes: {
102
- [_ in never]: never;
103
- };
166
+ Views: Record<string, never>;
167
+ Functions: Record<string, never>;
168
+ Enums: Record<string, never>;
169
+ CompositeTypes: Record<string, never>;
104
170
  };
105
171
  };
106
172
  type PublicSchema = AgentsDatabaseSchema[Extract<keyof AgentsDatabaseSchema, 'public'>];
@@ -0,0 +1,46 @@
1
+ import type { AgentModelRequirements } from '../../book-2.0/agent-source/AgentModelRequirements';
2
+ import { BaseCommitmentDefinition } from '../_base/BaseCommitmentDefinition';
3
+ /**
4
+ * DICTIONARY commitment definition
5
+ *
6
+ * The DICTIONARY commitment defines specific terms and their meanings that the agent should use correctly
7
+ * in its reasoning and responses. This ensures consistent terminology usage.
8
+ *
9
+ * Key features:
10
+ * - Multiple DICTIONARY commitments are automatically merged into one
11
+ * - Content is placed in a dedicated section of the system message
12
+ * - Terms and definitions are stored in metadata.DICTIONARY for debugging
13
+ * - Agent should use the defined terms correctly in responses
14
+ *
15
+ * Example usage in agent source:
16
+ *
17
+ * ```book
18
+ * Legal Assistant
19
+ *
20
+ * PERSONA You are a knowledgeable legal assistant
21
+ * DICTIONARY Misdemeanor is a minor wrongdoing or criminal offense
22
+ * DICTIONARY Felony is a serious crime usually punishable by imprisonment for more than one year
23
+ * DICTIONARY Tort is a civil wrong that causes harm or loss to another person, leading to legal liability
24
+ * ```
25
+ *
26
+ * @private [🪔] Maybe export the commitments through some package
27
+ */
28
+ export declare class DictionaryCommitmentDefinition extends BaseCommitmentDefinition<'DICTIONARY'> {
29
+ constructor();
30
+ /**
31
+ * Short one-line description of DICTIONARY.
32
+ */
33
+ get description(): string;
34
+ /**
35
+ * Icon for this commitment.
36
+ */
37
+ get icon(): string;
38
+ /**
39
+ * Markdown documentation for DICTIONARY commitment.
40
+ */
41
+ get documentation(): string;
42
+ applyToAgentModelRequirements(requirements: AgentModelRequirements, content: string): AgentModelRequirements;
43
+ }
44
+ /**
45
+ * Note: [💞] Ignore a discrepancy between file name and entity name
46
+ */
@@ -4,6 +4,7 @@ import { ActionCommitmentDefinition } from './ACTION/ACTION';
4
4
  import { ClosedCommitmentDefinition } from './CLOSED/CLOSED';
5
5
  import { ComponentCommitmentDefinition } from './COMPONENT/COMPONENT';
6
6
  import { DeleteCommitmentDefinition } from './DELETE/DELETE';
7
+ import { DictionaryCommitmentDefinition } from './DICTIONARY/DICTIONARY';
7
8
  import { FormatCommitmentDefinition } from './FORMAT/FORMAT';
8
9
  import { FromCommitmentDefinition } from './FROM/FROM';
9
10
  import { GoalCommitmentDefinition } from './GOAL/GOAL';
@@ -39,7 +40,7 @@ import { NotYetImplementedCommitmentDefinition } from './_base/NotYetImplemented
39
40
  *
40
41
  * @private Use functions to access commitments instead of this array directly
41
42
  */
42
- export declare const COMMITMENT_REGISTRY: readonly [PersonaCommitmentDefinition, PersonaCommitmentDefinition, KnowledgeCommitmentDefinition, MemoryCommitmentDefinition, MemoryCommitmentDefinition, StyleCommitmentDefinition, StyleCommitmentDefinition, RuleCommitmentDefinition, RuleCommitmentDefinition, LanguageCommitmentDefinition, LanguageCommitmentDefinition, SampleCommitmentDefinition, SampleCommitmentDefinition, FormatCommitmentDefinition, FormatCommitmentDefinition, FromCommitmentDefinition, ModelCommitmentDefinition, ModelCommitmentDefinition, ActionCommitmentDefinition, ActionCommitmentDefinition, ComponentCommitmentDefinition, MetaImageCommitmentDefinition, MetaColorCommitmentDefinition, MetaFontCommitmentDefinition, MetaLinkCommitmentDefinition, MetaCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, GoalCommitmentDefinition, GoalCommitmentDefinition, InitialMessageCommitmentDefinition, UserMessageCommitmentDefinition, AgentMessageCommitmentDefinition, MessageCommitmentDefinition, MessageCommitmentDefinition, ScenarioCommitmentDefinition, ScenarioCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, OpenCommitmentDefinition, ClosedCommitmentDefinition, UseBrowserCommitmentDefinition, UseSearchEngineCommitmentDefinition, UseMcpCommitmentDefinition, UseCommitmentDefinition, NotYetImplementedCommitmentDefinition<"EXPECT">, NotYetImplementedCommitmentDefinition<"BEHAVIOUR">, NotYetImplementedCommitmentDefinition<"BEHAVIOURS">, NotYetImplementedCommitmentDefinition<"AVOID">, NotYetImplementedCommitmentDefinition<"AVOIDANCE">, NotYetImplementedCommitmentDefinition<"CONTEXT">];
43
+ export declare const COMMITMENT_REGISTRY: readonly [PersonaCommitmentDefinition, PersonaCommitmentDefinition, KnowledgeCommitmentDefinition, MemoryCommitmentDefinition, MemoryCommitmentDefinition, StyleCommitmentDefinition, StyleCommitmentDefinition, RuleCommitmentDefinition, RuleCommitmentDefinition, LanguageCommitmentDefinition, LanguageCommitmentDefinition, SampleCommitmentDefinition, SampleCommitmentDefinition, FormatCommitmentDefinition, FormatCommitmentDefinition, FromCommitmentDefinition, ModelCommitmentDefinition, ModelCommitmentDefinition, ActionCommitmentDefinition, ActionCommitmentDefinition, ComponentCommitmentDefinition, MetaImageCommitmentDefinition, MetaColorCommitmentDefinition, MetaFontCommitmentDefinition, MetaLinkCommitmentDefinition, MetaCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, GoalCommitmentDefinition, GoalCommitmentDefinition, InitialMessageCommitmentDefinition, UserMessageCommitmentDefinition, AgentMessageCommitmentDefinition, MessageCommitmentDefinition, MessageCommitmentDefinition, ScenarioCommitmentDefinition, ScenarioCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DictionaryCommitmentDefinition, OpenCommitmentDefinition, ClosedCommitmentDefinition, UseBrowserCommitmentDefinition, UseSearchEngineCommitmentDefinition, UseMcpCommitmentDefinition, UseCommitmentDefinition, NotYetImplementedCommitmentDefinition<"EXPECT">, NotYetImplementedCommitmentDefinition<"BEHAVIOUR">, NotYetImplementedCommitmentDefinition<"BEHAVIOURS">, NotYetImplementedCommitmentDefinition<"AVOID">, NotYetImplementedCommitmentDefinition<"AVOIDANCE">, NotYetImplementedCommitmentDefinition<"CONTEXT">];
43
44
  /**
44
45
  * Gets a commitment definition by its type
45
46
  * @param type The commitment type to look up