@promptbook/node 0.112.0-30 → 0.112.0-32
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/esm/index.es.js +137 -40
- package/esm/index.es.js.map +1 -1
- package/esm/src/_packages/components.index.d.ts +6 -0
- package/esm/src/_packages/types.index.d.ts +6 -0
- package/esm/src/book-2.0/agent-source/AgentReferenceResolver.d.ts +11 -0
- package/esm/src/book-2.0/agent-source/CreateAgentModelRequirementsOptions.d.ts +8 -0
- package/esm/src/book-2.0/agent-source/TeammateProfileResolver.d.ts +33 -0
- package/esm/src/book-2.0/agent-source/createTeamToolName.d.ts +7 -7
- package/esm/src/book-components/Chat/Chat/ChatActionsBar.d.ts +5 -0
- package/esm/src/book-components/Chat/Chat/ChatMessageItem.d.ts +17 -1
- package/esm/src/book-components/Chat/Chat/ChatMessageItem.test.d.ts +1 -1
- package/esm/src/book-components/Chat/Chat/ChatMessageList.d.ts +14 -0
- package/esm/src/book-components/Chat/Chat/ChatProps.d.ts +290 -0
- package/esm/src/book-components/Chat/Chat/ChatToolCallModal.d.ts +16 -0
- package/esm/src/book-components/Chat/Chat/renderAdvancedToolCallDetails.d.ts +4 -0
- package/esm/src/book-components/Chat/Chat/renderToolCallDetails.d.ts +9 -0
- package/esm/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +2 -1
- package/esm/src/book-components/Chat/MarkdownContent/MarkdownContent.test.d.ts +2 -0
- package/esm/src/book-components/Chat/hooks/useChatCompleteNotification.d.ts +18 -0
- package/esm/src/book-components/Chat/hooks/useChatCompleteNotification.test.d.ts +2 -0
- package/esm/src/book-components/Chat/types/ChatMessage.d.ts +77 -1
- package/esm/src/book-components/Chat/utils/formatToolCallDateTime.d.ts +37 -0
- package/esm/src/book-components/Chat/utils/formatToolCallLocalTime.d.ts +11 -0
- package/esm/src/book-components/Chat/utils/formatToolCallTranslationTemplate.d.ts +10 -0
- package/esm/src/book-components/Chat/utils/getChatMessageTimingDisplay.d.ts +5 -1
- package/esm/src/book-components/Chat/utils/getToolCallChipletInfo.d.ts +26 -1
- package/esm/src/book-components/Chat/utils/timeoutToolCallPresentation.d.ts +26 -3
- package/esm/src/utils/toolCalls/mergeToolCalls.d.ts +1 -1
- package/esm/src/version.d.ts +1 -1
- package/package.json +2 -2
- package/umd/index.umd.js +137 -40
- package/umd/index.umd.js.map +1 -1
- package/umd/src/_packages/components.index.d.ts +6 -0
- package/umd/src/_packages/types.index.d.ts +6 -0
- package/umd/src/book-2.0/agent-source/AgentReferenceResolver.d.ts +11 -0
- package/umd/src/book-2.0/agent-source/CreateAgentModelRequirementsOptions.d.ts +8 -0
- package/umd/src/book-2.0/agent-source/TeammateProfileResolver.d.ts +33 -0
- package/umd/src/book-2.0/agent-source/createTeamToolName.d.ts +7 -7
- package/umd/src/book-components/Chat/Chat/ChatActionsBar.d.ts +5 -0
- package/umd/src/book-components/Chat/Chat/ChatMessageItem.d.ts +17 -1
- package/umd/src/book-components/Chat/Chat/ChatMessageItem.test.d.ts +1 -1
- package/umd/src/book-components/Chat/Chat/ChatMessageList.d.ts +14 -0
- package/umd/src/book-components/Chat/Chat/ChatProps.d.ts +290 -0
- package/umd/src/book-components/Chat/Chat/ChatToolCallModal.d.ts +16 -0
- package/umd/src/book-components/Chat/Chat/renderAdvancedToolCallDetails.d.ts +4 -0
- package/umd/src/book-components/Chat/Chat/renderToolCallDetails.d.ts +9 -0
- package/umd/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +2 -1
- package/umd/src/book-components/Chat/MarkdownContent/MarkdownContent.test.d.ts +2 -0
- package/umd/src/book-components/Chat/hooks/useChatCompleteNotification.d.ts +18 -0
- package/umd/src/book-components/Chat/hooks/useChatCompleteNotification.test.d.ts +2 -0
- package/umd/src/book-components/Chat/types/ChatMessage.d.ts +77 -1
- package/umd/src/book-components/Chat/utils/formatToolCallDateTime.d.ts +37 -0
- package/umd/src/book-components/Chat/utils/formatToolCallLocalTime.d.ts +11 -0
- package/umd/src/book-components/Chat/utils/formatToolCallTranslationTemplate.d.ts +10 -0
- package/umd/src/book-components/Chat/utils/getChatMessageTimingDisplay.d.ts +5 -1
- package/umd/src/book-components/Chat/utils/getToolCallChipletInfo.d.ts +26 -1
- package/umd/src/book-components/Chat/utils/timeoutToolCallPresentation.d.ts +26 -3
- package/umd/src/utils/toolCalls/mergeToolCalls.d.ts +1 -1
- package/umd/src/version.d.ts +1 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Message } from '../../../types/Message';
|
|
2
|
+
import type { LlmToolDefinition } from '../../../types/LlmToolDefinition';
|
|
3
|
+
import type { ChatModelRequirements } from '../../../types/ModelRequirements';
|
|
2
4
|
import type { ToolCall } from '../../../types/ToolCall';
|
|
3
|
-
import type {
|
|
5
|
+
import type { TODO_object } from '../../../utils/organization/TODO_object';
|
|
6
|
+
import type { id, Parameters, string_date_iso8601, string_markdown, string_prompt, string_title } from '../../../types/typeAliases';
|
|
4
7
|
export type ChatToolCall = ToolCall;
|
|
5
8
|
/**
|
|
6
9
|
* One item in a user-facing progress card shown while assistant response is still running.
|
|
@@ -52,6 +55,63 @@ export type ChatProgressCard = {
|
|
|
52
55
|
*/
|
|
53
56
|
readonly isVisible?: boolean;
|
|
54
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* Serializable prompt snapshot stored alongside one assistant message for debugging and inspection.
|
|
60
|
+
*/
|
|
61
|
+
type ChatMessagePrompt = {
|
|
62
|
+
/**
|
|
63
|
+
* Human-readable label used for the prompt execution.
|
|
64
|
+
*/
|
|
65
|
+
readonly title: string_title;
|
|
66
|
+
/**
|
|
67
|
+
* User-facing chat content submitted into the prompt pipeline.
|
|
68
|
+
*/
|
|
69
|
+
readonly content: string_prompt;
|
|
70
|
+
/**
|
|
71
|
+
* Resolved prompt parameters passed into the agent turn.
|
|
72
|
+
*/
|
|
73
|
+
readonly parameters: Parameters;
|
|
74
|
+
/**
|
|
75
|
+
* Chat-model requirements used when the turn was executed.
|
|
76
|
+
*/
|
|
77
|
+
readonly modelRequirements: ChatModelRequirements;
|
|
78
|
+
/**
|
|
79
|
+
* Prior thread history provided to the prompt.
|
|
80
|
+
*/
|
|
81
|
+
readonly thread?: ReadonlyArray<ChatMessage>;
|
|
82
|
+
/**
|
|
83
|
+
* Attachments submitted with the user turn.
|
|
84
|
+
*/
|
|
85
|
+
readonly attachments?: ReadonlyArray<{
|
|
86
|
+
name: string;
|
|
87
|
+
type: string;
|
|
88
|
+
url: string;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Runtime tools explicitly passed on the chat prompt object.
|
|
92
|
+
*/
|
|
93
|
+
readonly tools?: ReadonlyArray<LlmToolDefinition>;
|
|
94
|
+
/**
|
|
95
|
+
* Full list of tools available to the model for this turn.
|
|
96
|
+
*/
|
|
97
|
+
readonly availableTools?: ReadonlyArray<LlmToolDefinition>;
|
|
98
|
+
/**
|
|
99
|
+
* Tool calls associated with the generated message, duplicated here for raw prompt inspection.
|
|
100
|
+
*/
|
|
101
|
+
readonly toolCalls?: ReadonlyArray<ChatToolCall>;
|
|
102
|
+
/**
|
|
103
|
+
* Completed tool calls associated with the generated message, duplicated here for raw prompt inspection.
|
|
104
|
+
*/
|
|
105
|
+
readonly completedToolCalls?: ReadonlyArray<ChatToolCall>;
|
|
106
|
+
/**
|
|
107
|
+
* Provider-facing prompt text after agent/runtime preparation, when available.
|
|
108
|
+
*/
|
|
109
|
+
readonly rawPromptContent?: string_prompt;
|
|
110
|
+
/**
|
|
111
|
+
* Provider-facing raw request payload, when available.
|
|
112
|
+
*/
|
|
113
|
+
readonly rawRequest?: TODO_object | null;
|
|
114
|
+
};
|
|
55
115
|
/**
|
|
56
116
|
* Represents a single message within a chat interface.
|
|
57
117
|
*
|
|
@@ -165,7 +225,23 @@ export type ChatMessage = Omit<Message<id>, 'direction' | 'recipients' | 'thread
|
|
|
165
225
|
* Optional structured progress-card payload shown while a response is still in progress.
|
|
166
226
|
*/
|
|
167
227
|
readonly progressCard?: ChatProgressCard;
|
|
228
|
+
/**
|
|
229
|
+
* Optional list of tools that were available to the model when generating this message.
|
|
230
|
+
*
|
|
231
|
+
* This field is populated by the server from the exact tool definitions passed to the LLM
|
|
232
|
+
* request so developers can inspect what capabilities the model had access to during
|
|
233
|
+
* each conversation turn.
|
|
234
|
+
*/
|
|
235
|
+
readonly availableTools?: ReadonlyArray<LlmToolDefinition>;
|
|
236
|
+
/**
|
|
237
|
+
* Optional prompt snapshot from which this message was generated.
|
|
238
|
+
*
|
|
239
|
+
* Intended for advanced/raw inspection so developers can see the exact chat prompt,
|
|
240
|
+
* resolved parameters, tool availability, and provider payload associated with one turn.
|
|
241
|
+
*/
|
|
242
|
+
readonly prompt?: ChatMessagePrompt;
|
|
168
243
|
};
|
|
244
|
+
export {};
|
|
169
245
|
/**
|
|
170
246
|
* TODO: Make all fields readonly
|
|
171
247
|
* TODO: Delete `expectedAnswer` from ChatMessage
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware date/time labels derived from one tool-call timestamp.
|
|
3
|
+
*
|
|
4
|
+
* @private utility of `<Chat/>`
|
|
5
|
+
*/
|
|
6
|
+
type ToolCallDateTimeLabels = {
|
|
7
|
+
/**
|
|
8
|
+
* Primary local time label shown in chips and clock panels.
|
|
9
|
+
*/
|
|
10
|
+
readonly localTimeLabel: string;
|
|
11
|
+
/**
|
|
12
|
+
* Local calendar date label shown under the primary time.
|
|
13
|
+
*/
|
|
14
|
+
readonly localDateLabel: string;
|
|
15
|
+
/**
|
|
16
|
+
* Exact local timestamp label used in detail sections.
|
|
17
|
+
*/
|
|
18
|
+
readonly localDateTimeLabel: string;
|
|
19
|
+
/**
|
|
20
|
+
* Relative label such as `in 5 minutes` or `2 minutes ago`.
|
|
21
|
+
*/
|
|
22
|
+
readonly relativeTimeLabel: string | null;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Formats one tool-call timestamp into shared locale-aware labels.
|
|
26
|
+
*
|
|
27
|
+
* @param date - Timestamp to format.
|
|
28
|
+
* @param options - Optional locale and relative-time reference point.
|
|
29
|
+
* @returns Shared labels consumed by tool-call chips and modals.
|
|
30
|
+
*
|
|
31
|
+
* @private utility of `<Chat/>`
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatToolCallDateTime(date: Date, options?: {
|
|
34
|
+
locale?: string;
|
|
35
|
+
currentDate?: Date;
|
|
36
|
+
}): ToolCallDateTimeLabels;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a Date as a locale-aware short time string (e.g. "5:30 PM" or "17:30").
|
|
3
|
+
*
|
|
4
|
+
* @param date - Date to format.
|
|
5
|
+
* @param locale - Optional BCP-47 locale string (e.g. `"en"`, `"cs"`).
|
|
6
|
+
* When omitted the browser/OS default locale is used.
|
|
7
|
+
* @returns Formatted time string such as `"5:30 PM"` or `"17:30"`.
|
|
8
|
+
*
|
|
9
|
+
* @private utility of `<Chat/>`
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatToolCallLocalTime(date: Date, locale?: string): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies `{placeholder}` values to one tool-call translation template.
|
|
3
|
+
*
|
|
4
|
+
* @param template - Template from the host application or fallback copy.
|
|
5
|
+
* @param variables - Placeholder values keyed by variable name.
|
|
6
|
+
* @returns Formatted string ready for rendering.
|
|
7
|
+
*
|
|
8
|
+
* @private utility of `<Chat/>`
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatToolCallTranslationTemplate(template: string, variables: Record<string, string | number>): string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import 'moment/locale/cs';
|
|
1
2
|
import type { ChatMessage } from '../types/ChatMessage';
|
|
2
3
|
/**
|
|
3
4
|
* Display-ready timestamp values for a chat message.
|
|
@@ -21,6 +22,9 @@ export type ChatMessageTimingDisplay = {
|
|
|
21
22
|
/**
|
|
22
23
|
* Builds display-ready timestamp and duration labels for a chat message.
|
|
23
24
|
*
|
|
25
|
+
* @param message - Message with optional timestamp metadata.
|
|
26
|
+
* @param locale - Optional moment locale used for formatting.
|
|
27
|
+
*
|
|
24
28
|
* @private utility of `<Chat/>` component
|
|
25
29
|
*/
|
|
26
|
-
export declare function getChatMessageTimingDisplay(message: ChatMessage): ChatMessageTimingDisplay | null;
|
|
30
|
+
export declare function getChatMessageTimingDisplay(message: ChatMessage, locale?: string): ChatMessageTimingDisplay | null;
|
|
@@ -15,6 +15,25 @@ export type ToolCallChipletInfo = {
|
|
|
15
15
|
*/
|
|
16
16
|
agentData?: AgentChipData;
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Optional user-facing title overrides for technical tool names.
|
|
20
|
+
*
|
|
21
|
+
* @private utility of `<Chat/>`
|
|
22
|
+
*/
|
|
23
|
+
type ToolCallTitleOverrides = Readonly<Record<string, string>>;
|
|
24
|
+
/**
|
|
25
|
+
* Optional localized labels used for user-facing chip text.
|
|
26
|
+
*
|
|
27
|
+
* @private utility of `<Chat/>`
|
|
28
|
+
*/
|
|
29
|
+
type ToolCallChipTranslations = {
|
|
30
|
+
readonly toolCallTimeChipLabel?: string;
|
|
31
|
+
readonly toolCallTimeoutChipLabel?: string;
|
|
32
|
+
readonly toolCallTimeoutChipCancelledLabel?: string;
|
|
33
|
+
readonly toolCallTimeoutChipInactiveLabel?: string;
|
|
34
|
+
readonly toolCallTimeoutChipUpdatedLabel?: string;
|
|
35
|
+
readonly toolCallTimeoutChipFallbackLabel?: string;
|
|
36
|
+
};
|
|
18
37
|
/**
|
|
19
38
|
* Builds display text for a tool call chiplet.
|
|
20
39
|
*
|
|
@@ -35,6 +54,12 @@ export declare const TOOL_TITLES: Record<string, {
|
|
|
35
54
|
/**
|
|
36
55
|
* Gets the chiplet information including text and agent data (for team tools).
|
|
37
56
|
*
|
|
57
|
+
* @param toolCall - Tool call to build chiplet info for.
|
|
58
|
+
* @param locale - Optional BCP-47 locale string used to format time labels.
|
|
59
|
+
* @param titleOverrides - Optional localized titles keyed by tool name.
|
|
60
|
+
* @param chipTranslations - Optional localized chip templates for time-related tools.
|
|
61
|
+
*
|
|
38
62
|
* @private [🧠] Maybe public?
|
|
39
63
|
*/
|
|
40
|
-
export declare function getToolCallChipletInfo(toolCall: ToolCall): ToolCallChipletInfo;
|
|
64
|
+
export declare function getToolCallChipletInfo(toolCall: ToolCall, locale?: string, titleOverrides?: ToolCallTitleOverrides, chipTranslations?: ToolCallChipTranslations): ToolCallChipletInfo;
|
|
65
|
+
export {};
|
|
@@ -64,6 +64,24 @@ export type TimeoutToolCallPresentation = {
|
|
|
64
64
|
*/
|
|
65
65
|
readonly localDueDateLabel: string | null;
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Optional localized labels used by timeout chips and friendly modal copy.
|
|
69
|
+
*
|
|
70
|
+
* @private internal utility of `<Chat/>`
|
|
71
|
+
*/
|
|
72
|
+
type TimeoutToolCallTranslations = {
|
|
73
|
+
readonly toolCallTimeoutChipLabel?: string;
|
|
74
|
+
readonly toolCallTimeoutChipCancelledLabel?: string;
|
|
75
|
+
readonly toolCallTimeoutChipInactiveLabel?: string;
|
|
76
|
+
readonly toolCallTimeoutChipUpdatedLabel?: string;
|
|
77
|
+
readonly toolCallTimeoutChipFallbackLabel?: string;
|
|
78
|
+
readonly toolCallTimeoutPrimaryScheduledLabel?: string;
|
|
79
|
+
readonly toolCallTimeoutSecondaryDurationLabel?: string;
|
|
80
|
+
readonly toolCallTimeoutPrimaryCancelledLabel?: string;
|
|
81
|
+
readonly toolCallTimeoutPrimaryInactiveLabel?: string;
|
|
82
|
+
readonly toolCallTimeoutPrimaryUpdatedLabel?: string;
|
|
83
|
+
readonly toolCallTimeoutPrimaryFallbackLabel?: string;
|
|
84
|
+
};
|
|
67
85
|
/**
|
|
68
86
|
* Inputs required to derive timeout presentation metadata.
|
|
69
87
|
*
|
|
@@ -86,6 +104,11 @@ type ResolveTimeoutToolCallPresentationOptions = {
|
|
|
86
104
|
* Current date used to calculate relative labels.
|
|
87
105
|
*/
|
|
88
106
|
readonly currentDate?: Date;
|
|
107
|
+
/**
|
|
108
|
+
* Optional BCP-47 locale string used to format local-time labels.
|
|
109
|
+
* When omitted the browser/OS default locale is used.
|
|
110
|
+
*/
|
|
111
|
+
readonly locale?: string;
|
|
89
112
|
};
|
|
90
113
|
/**
|
|
91
114
|
* Determines whether a tool name belongs to the timeout commitment.
|
|
@@ -104,19 +127,19 @@ export declare function resolveTimeoutToolCallPresentation(options: ResolveTimeo
|
|
|
104
127
|
*
|
|
105
128
|
* @private internal utility of `<Chat/>`
|
|
106
129
|
*/
|
|
107
|
-
export declare function buildTimeoutToolCallChipLabel(presentation: TimeoutToolCallPresentation): string;
|
|
130
|
+
export declare function buildTimeoutToolCallChipLabel(presentation: TimeoutToolCallPresentation, translations?: TimeoutToolCallTranslations): string;
|
|
108
131
|
/**
|
|
109
132
|
* Builds the primary timeout sentence shown in default modal view.
|
|
110
133
|
*
|
|
111
134
|
* @private internal utility of `<Chat/>`
|
|
112
135
|
*/
|
|
113
|
-
export declare function buildTimeoutToolPrimarySentence(presentation: TimeoutToolCallPresentation): string;
|
|
136
|
+
export declare function buildTimeoutToolPrimarySentence(presentation: TimeoutToolCallPresentation, translations?: TimeoutToolCallTranslations): string;
|
|
114
137
|
/**
|
|
115
138
|
* Builds one default-view scheduling sentence with local-time and relative context.
|
|
116
139
|
*
|
|
117
140
|
* @private internal utility of `<Chat/>`
|
|
118
141
|
*/
|
|
119
|
-
export declare function buildTimeoutToolScheduleSentence(presentation: TimeoutToolCallPresentation): string | null;
|
|
142
|
+
export declare function buildTimeoutToolScheduleSentence(presentation: TimeoutToolCallPresentation, translations?: TimeoutToolCallTranslations): string | null;
|
|
120
143
|
export {};
|
|
121
144
|
/**
|
|
122
145
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
package/esm/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.112.0-
|
|
18
|
+
* It follows semantic versioning (e.g., `0.112.0-31`).
|
|
19
19
|
*
|
|
20
20
|
* @generated
|
|
21
21
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/node",
|
|
3
|
-
"version": "0.112.0-
|
|
3
|
+
"version": "0.112.0-32",
|
|
4
4
|
"description": "Promptbook: Turn your company's scattered knowledge into AI ready books",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"module": "./esm/index.es.js",
|
|
97
97
|
"typings": "./esm/typings/src/_packages/node.index.d.ts",
|
|
98
98
|
"peerDependencies": {
|
|
99
|
-
"@promptbook/core": "0.112.0-
|
|
99
|
+
"@promptbook/core": "0.112.0-32"
|
|
100
100
|
},
|
|
101
101
|
"dependencies": {
|
|
102
102
|
"@mozilla/readability": "0.6.0",
|
package/umd/index.umd.js
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
* @generated
|
|
49
49
|
* @see https://github.com/webgptorg/promptbook
|
|
50
50
|
*/
|
|
51
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.112.0-
|
|
51
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.112.0-32';
|
|
52
52
|
/**
|
|
53
53
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
54
54
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -18410,10 +18410,6 @@
|
|
|
18410
18410
|
* Prefix used for TEAM tool names.
|
|
18411
18411
|
*/
|
|
18412
18412
|
const TEAM_TOOL_PREFIX = 'team_chat_';
|
|
18413
|
-
/**
|
|
18414
|
-
* Length of URL hash suffix appended to TEAM tool names.
|
|
18415
|
-
*/
|
|
18416
|
-
const TEAM_TOOL_HASH_LENGTH = 10;
|
|
18417
18413
|
/**
|
|
18418
18414
|
* Fallback normalized name when teammate label is empty.
|
|
18419
18415
|
*/
|
|
@@ -18430,20 +18426,19 @@
|
|
|
18430
18426
|
return normalized || TEAM_TOOL_FALLBACK_NAME;
|
|
18431
18427
|
}
|
|
18432
18428
|
/**
|
|
18433
|
-
* Builds a deterministic TEAM tool name from teammate
|
|
18429
|
+
* Builds a deterministic TEAM tool name from the teammate label.
|
|
18434
18430
|
*
|
|
18435
|
-
* The
|
|
18436
|
-
*
|
|
18431
|
+
* The tool name is derived solely from the human-readable label so that it
|
|
18432
|
+
* remains stable and predictable regardless of internal technical identifiers.
|
|
18437
18433
|
*
|
|
18438
|
-
* @param
|
|
18439
|
-
* @param teammateLabel - Human-readable teammate label.
|
|
18440
|
-
* @returns
|
|
18434
|
+
* @param _teammateUrl - Canonical teammate URL (kept for API compatibility, not used).
|
|
18435
|
+
* @param teammateLabel - Human-readable teammate label used as the basis for the name.
|
|
18436
|
+
* @returns TEAM tool name derived from the label.
|
|
18441
18437
|
* @private internal utility of TEAM commitments and chat UI mapping
|
|
18442
18438
|
*/
|
|
18443
|
-
function createTeamToolName(
|
|
18439
|
+
function createTeamToolName(_teammateUrl, teammateLabel) {
|
|
18444
18440
|
const normalizedLabel = normalizeTeammateToolNamePart(teammateLabel);
|
|
18445
|
-
|
|
18446
|
-
return `${TEAM_TOOL_PREFIX}${normalizedLabel}_${hash}`;
|
|
18441
|
+
return `${TEAM_TOOL_PREFIX}${normalizedLabel}`;
|
|
18447
18442
|
}
|
|
18448
18443
|
|
|
18449
18444
|
const urlRegex = /https?:\/\/[^\s]+/gi;
|
|
@@ -18648,7 +18643,7 @@
|
|
|
18648
18643
|
`);
|
|
18649
18644
|
}
|
|
18650
18645
|
applyToAgentModelRequirements(requirements, content) {
|
|
18651
|
-
var _a, _b;
|
|
18646
|
+
var _a, _b, _c;
|
|
18652
18647
|
const trimmedContent = content.trim();
|
|
18653
18648
|
if (!trimmedContent) {
|
|
18654
18649
|
return requirements;
|
|
@@ -18660,14 +18655,18 @@
|
|
|
18660
18655
|
}
|
|
18661
18656
|
const agentName = ((_a = requirements._metadata) === null || _a === void 0 ? void 0 : _a.agentName) || 'Agent';
|
|
18662
18657
|
const existingTeammates = ((_b = requirements._metadata) === null || _b === void 0 ? void 0 : _b.teammates) || [];
|
|
18658
|
+
const preResolvedProfiles = (((_c = requirements._metadata) === null || _c === void 0 ? void 0 : _c.preResolvedTeammateProfiles) || {});
|
|
18663
18659
|
const resolvedTeammates = resolveTeamTeammateLabels(trimmedContent, teammates);
|
|
18664
18660
|
const teamEntries = resolvedTeammates.map((teammate) => {
|
|
18661
|
+
const profile = preResolvedProfiles[teammate.url];
|
|
18662
|
+
const resolvedLabel = (profile === null || profile === void 0 ? void 0 : profile.agentName) || teammate.label;
|
|
18665
18663
|
const existingTeammate = existingTeammates.find((entry) => entry.url === teammate.url);
|
|
18666
18664
|
return {
|
|
18667
18665
|
toolName: ((existingTeammate === null || existingTeammate === void 0 ? void 0 : existingTeammate.toolName) ||
|
|
18668
|
-
createTeamToolName(teammate.url,
|
|
18669
|
-
teammate,
|
|
18666
|
+
createTeamToolName(teammate.url, resolvedLabel)),
|
|
18667
|
+
teammate: { ...teammate, label: resolvedLabel },
|
|
18670
18668
|
agentName,
|
|
18669
|
+
description: (profile === null || profile === void 0 ? void 0 : profile.personaDescription) || null,
|
|
18671
18670
|
};
|
|
18672
18671
|
});
|
|
18673
18672
|
for (const entry of teamEntries) {
|
|
@@ -18679,9 +18678,12 @@
|
|
|
18679
18678
|
if (updatedTools.some((tool) => tool.name === entry.toolName)) {
|
|
18680
18679
|
continue;
|
|
18681
18680
|
}
|
|
18681
|
+
const toolDescription = entry.description
|
|
18682
|
+
? `Consult teammate ${entry.teammate.label}\n${entry.description}`
|
|
18683
|
+
: `Consult teammate ${entry.teammate.label}`;
|
|
18682
18684
|
updatedTools.push({
|
|
18683
18685
|
name: entry.toolName,
|
|
18684
|
-
description:
|
|
18686
|
+
description: toolDescription,
|
|
18685
18687
|
parameters: {
|
|
18686
18688
|
type: 'object',
|
|
18687
18689
|
properties: {
|
|
@@ -18710,8 +18712,7 @@
|
|
|
18710
18712
|
toolName: entry.toolName,
|
|
18711
18713
|
});
|
|
18712
18714
|
}
|
|
18713
|
-
const
|
|
18714
|
-
const teamSystemMessage = this.createSystemMessageSection('Teammates:', buildTeamSystemMessageBody(teamOverviewText, teamEntries));
|
|
18715
|
+
const teamSystemMessage = this.createSystemMessageSection('Teammates:', buildTeamSystemMessageBody(teamEntries));
|
|
18715
18716
|
return this.appendToSystemMessage({
|
|
18716
18717
|
...requirements,
|
|
18717
18718
|
tools: updatedTools,
|
|
@@ -18748,25 +18749,24 @@
|
|
|
18748
18749
|
};
|
|
18749
18750
|
});
|
|
18750
18751
|
}
|
|
18751
|
-
/**
|
|
18752
|
-
* Rewrites TEAM commitment content into a URL-free teammate overview text.
|
|
18753
|
-
*/
|
|
18754
|
-
function createTeamOverviewText(teamContent, teamEntries) {
|
|
18755
|
-
let overviewText = teamContent;
|
|
18756
|
-
for (const entry of teamEntries) {
|
|
18757
|
-
overviewText = overviewText.split(entry.teammate.url).join(entry.teammate.label);
|
|
18758
|
-
}
|
|
18759
|
-
return overviewText.trim();
|
|
18760
|
-
}
|
|
18761
18752
|
/**
|
|
18762
18753
|
* Builds the textual TEAM section body for the final system message.
|
|
18754
|
+
*
|
|
18755
|
+
* Each teammate is listed with its tool name and, when available, a one-line description.
|
|
18756
|
+
* Uses `spaceTrim` to ensure consistent whitespace and indentation.
|
|
18763
18757
|
*/
|
|
18764
|
-
function buildTeamSystemMessageBody(
|
|
18765
|
-
const
|
|
18766
|
-
|
|
18767
|
-
|
|
18768
|
-
|
|
18769
|
-
|
|
18758
|
+
function buildTeamSystemMessageBody(teamEntries) {
|
|
18759
|
+
const lines = teamEntries.map((entry, index) => {
|
|
18760
|
+
const toolLine = `${index + 1}) ${entry.teammate.label} tool \`${entry.toolName}\``;
|
|
18761
|
+
if (!entry.description) {
|
|
18762
|
+
return toolLine;
|
|
18763
|
+
}
|
|
18764
|
+
return _spaceTrim.spaceTrim(`
|
|
18765
|
+
${toolLine}
|
|
18766
|
+
${entry.description}
|
|
18767
|
+
`);
|
|
18768
|
+
});
|
|
18769
|
+
return lines.join('\n');
|
|
18770
18770
|
}
|
|
18771
18771
|
/**
|
|
18772
18772
|
* Registers tool function and title for a teammate tool.
|
|
@@ -27070,13 +27070,23 @@
|
|
|
27070
27070
|
*/
|
|
27071
27071
|
function mergeToolCalls(existingToolCalls, incomingToolCalls) {
|
|
27072
27072
|
if (!existingToolCalls || existingToolCalls.length === 0) {
|
|
27073
|
-
return incomingToolCalls ? [...incomingToolCalls] : [];
|
|
27073
|
+
return incomingToolCalls ? deduplicatePreparationToolCalls([...incomingToolCalls]) : [];
|
|
27074
27074
|
}
|
|
27075
27075
|
if (!incomingToolCalls || incomingToolCalls.length === 0) {
|
|
27076
27076
|
return [...existingToolCalls];
|
|
27077
27077
|
}
|
|
27078
27078
|
const mergedToolCalls = [...existingToolCalls];
|
|
27079
27079
|
for (const incomingToolCall of incomingToolCalls) {
|
|
27080
|
+
if (isAssistantPreparationToolCall(incomingToolCall)) {
|
|
27081
|
+
// A new preparation phase always replaces any previous assistant_preparation tool
|
|
27082
|
+
// call, regardless of phase argument, so only one chip is ever shown at a time.
|
|
27083
|
+
const existingPreparationIndex = mergedToolCalls.findIndex(isAssistantPreparationToolCall);
|
|
27084
|
+
if (existingPreparationIndex !== -1) {
|
|
27085
|
+
mergedToolCalls.splice(existingPreparationIndex, 1);
|
|
27086
|
+
}
|
|
27087
|
+
mergedToolCalls.push(incomingToolCall);
|
|
27088
|
+
continue;
|
|
27089
|
+
}
|
|
27080
27090
|
const incomingIdentity = getToolCallIdentity(incomingToolCall);
|
|
27081
27091
|
const existingIndex = mergedToolCalls.findIndex((existingToolCall) => getToolCallIdentity(existingToolCall) === incomingIdentity);
|
|
27082
27092
|
if (existingIndex === -1) {
|
|
@@ -27188,6 +27198,30 @@
|
|
|
27188
27198
|
return String(value);
|
|
27189
27199
|
}
|
|
27190
27200
|
}
|
|
27201
|
+
/**
|
|
27202
|
+
* Ensures at most one `assistant_preparation` tool call survives in the list,
|
|
27203
|
+
* keeping the last occurrence so the most recent preparation phase is shown.
|
|
27204
|
+
*
|
|
27205
|
+
* @param toolCalls - Mutable list to deduplicate in-place.
|
|
27206
|
+
* @returns The same array after removing redundant preparation entries.
|
|
27207
|
+
* @private helper of `mergeToolCalls`
|
|
27208
|
+
*/
|
|
27209
|
+
function deduplicatePreparationToolCalls(toolCalls) {
|
|
27210
|
+
let lastPreparationIndex = -1;
|
|
27211
|
+
for (let index = toolCalls.length - 1; index >= 0; index--) {
|
|
27212
|
+
if (!isAssistantPreparationToolCall(toolCalls[index])) {
|
|
27213
|
+
continue;
|
|
27214
|
+
}
|
|
27215
|
+
if (lastPreparationIndex === -1) {
|
|
27216
|
+
lastPreparationIndex = index;
|
|
27217
|
+
}
|
|
27218
|
+
else {
|
|
27219
|
+
// Remove earlier duplicate — keep only the last (most recent) one.
|
|
27220
|
+
toolCalls.splice(index, 1);
|
|
27221
|
+
}
|
|
27222
|
+
}
|
|
27223
|
+
return toolCalls;
|
|
27224
|
+
}
|
|
27191
27225
|
|
|
27192
27226
|
/**
|
|
27193
27227
|
* Computes SHA-256 hash of the agent source
|
|
@@ -28120,7 +28154,7 @@
|
|
|
28120
28154
|
* @private @@@
|
|
28121
28155
|
*/
|
|
28122
28156
|
async function createAgentModelRequirementsWithCommitments(agentSource, modelName, options) {
|
|
28123
|
-
var _a;
|
|
28157
|
+
var _a, _b, _c;
|
|
28124
28158
|
const agentReferenceResolver = options === null || options === void 0 ? void 0 : options.agentReferenceResolver;
|
|
28125
28159
|
// Parse the agent source to extract commitments
|
|
28126
28160
|
const parseResult = parseAgentSourceWithCommitments(agentSource);
|
|
@@ -28188,6 +28222,36 @@
|
|
|
28188
28222
|
if (commitment.type === 'CLOSED' && i !== filteredCommitments.length - 1) {
|
|
28189
28223
|
continue;
|
|
28190
28224
|
}
|
|
28225
|
+
// For TEAM commitments, pre-resolve teammate profiles if a resolver is provided
|
|
28226
|
+
// and store them in metadata before the commitment is applied.
|
|
28227
|
+
const profileResolver = (_a = options === null || options === void 0 ? void 0 : options.teammateProfileResolver) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.agentReferenceResolver;
|
|
28228
|
+
if (commitment.type === 'TEAM' && (profileResolver === null || profileResolver === void 0 ? void 0 : profileResolver.resolveTeammateProfile)) {
|
|
28229
|
+
try {
|
|
28230
|
+
const parsedTeammates = parseTeamCommitmentContent(commitmentContent, { strict: false });
|
|
28231
|
+
const preResolved = {
|
|
28232
|
+
...(_b = requirements._metadata) === null || _b === void 0 ? void 0 : _b.preResolvedTeammateProfiles,
|
|
28233
|
+
};
|
|
28234
|
+
for (const teammate of parsedTeammates) {
|
|
28235
|
+
if (preResolved[teammate.url]) {
|
|
28236
|
+
continue;
|
|
28237
|
+
}
|
|
28238
|
+
const profile = await profileResolver.resolveTeammateProfile(teammate.url);
|
|
28239
|
+
if (profile) {
|
|
28240
|
+
preResolved[teammate.url] = profile;
|
|
28241
|
+
}
|
|
28242
|
+
}
|
|
28243
|
+
requirements = {
|
|
28244
|
+
...requirements,
|
|
28245
|
+
_metadata: {
|
|
28246
|
+
...requirements._metadata,
|
|
28247
|
+
preResolvedTeammateProfiles: preResolved,
|
|
28248
|
+
},
|
|
28249
|
+
};
|
|
28250
|
+
}
|
|
28251
|
+
catch (error) {
|
|
28252
|
+
console.warn('Failed to pre-resolve teammate profiles for TEAM commitment:', error);
|
|
28253
|
+
}
|
|
28254
|
+
}
|
|
28191
28255
|
const definition = getCommitmentDefinition(commitment.type);
|
|
28192
28256
|
if (definition) {
|
|
28193
28257
|
try {
|
|
@@ -28283,7 +28347,7 @@
|
|
|
28283
28347
|
// Add example interactions to the system message
|
|
28284
28348
|
const examples = [];
|
|
28285
28349
|
// 1. Initial message as an example agent response
|
|
28286
|
-
const initialMessage = (
|
|
28350
|
+
const initialMessage = (_c = parseResult.commitments.find((c) => c.type === 'INITIAL MESSAGE')) === null || _c === void 0 ? void 0 : _c.content;
|
|
28287
28351
|
if (initialMessage) {
|
|
28288
28352
|
examples.push(`Agent: ${initialMessage}`);
|
|
28289
28353
|
}
|
|
@@ -34128,6 +34192,7 @@
|
|
|
34128
34192
|
|
|
34129
34193
|
- Decide what the agent should learn from this interaction.
|
|
34130
34194
|
- Append new commitments at the end of the agent source.
|
|
34195
|
+
- Return only newly learned commitments, never repeat commitments that are already present.
|
|
34131
34196
|
- Do not modify the current agent source, just return new commitments (KNOWLEDGE, RULE, etc.).
|
|
34132
34197
|
- If there is nothing new to learn, return empty book code block
|
|
34133
34198
|
- Wrap the commitments in a book code block.
|
|
@@ -34180,10 +34245,42 @@
|
|
|
34180
34245
|
*/
|
|
34181
34246
|
appendToAgentSource(section) {
|
|
34182
34247
|
const currentSource = this.options.getAgentSource();
|
|
34183
|
-
const
|
|
34248
|
+
const normalizedSection = normalizeBookSection(section);
|
|
34249
|
+
if (!normalizedSection) {
|
|
34250
|
+
return;
|
|
34251
|
+
}
|
|
34252
|
+
if (containsNormalizedBookSection(currentSource, normalizedSection)) {
|
|
34253
|
+
return;
|
|
34254
|
+
}
|
|
34255
|
+
const newSource = padBook(validateBook(`${normalizeBookSection(currentSource)}\n\n${normalizedSection}`));
|
|
34184
34256
|
this.options.updateAgentSource(newSource);
|
|
34185
34257
|
}
|
|
34186
34258
|
}
|
|
34259
|
+
/**
|
|
34260
|
+
* Normalizes one book fragment for deduplication and append composition.
|
|
34261
|
+
*
|
|
34262
|
+
* @param section Raw fragment from self-learning workflow.
|
|
34263
|
+
* @returns Trimmed fragment, or empty string when nothing remains.
|
|
34264
|
+
* @private function of Agent
|
|
34265
|
+
*/
|
|
34266
|
+
function normalizeBookSection(section) {
|
|
34267
|
+
return _spaceTrim.spaceTrim(section).replace(/\r\n/g, '\n');
|
|
34268
|
+
}
|
|
34269
|
+
/**
|
|
34270
|
+
* Checks whether one normalized fragment already exists inside the current source.
|
|
34271
|
+
*
|
|
34272
|
+
* @param agentSource Current source.
|
|
34273
|
+
* @param normalizedSection Candidate fragment expected to be normalized first.
|
|
34274
|
+
* @returns True when appending would duplicate an existing fragment.
|
|
34275
|
+
* @private function of Agent
|
|
34276
|
+
*/
|
|
34277
|
+
function containsNormalizedBookSection(agentSource, normalizedSection) {
|
|
34278
|
+
if (!normalizedSection) {
|
|
34279
|
+
return true;
|
|
34280
|
+
}
|
|
34281
|
+
const normalizedSource = normalizeBookSection(agentSource);
|
|
34282
|
+
return normalizedSource.includes(normalizedSection);
|
|
34283
|
+
}
|
|
34187
34284
|
/**
|
|
34188
34285
|
* Determines whether the interaction runs in OpenAI-compatible JSON schema mode.
|
|
34189
34286
|
*
|