@meistrari/chat-nuxt 3.17.0-rc.2 → 3.17.0-rc.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 +1 -0
- package/dist/module.json +1 -1
- package/dist/runtime/embed/components/chat-embed.vue +4 -1
- package/dist/runtime/embed/components/meistrari-chat-embed.vue +2 -0
- package/dist/runtime/embed/types.d.ts +2 -0
- package/dist/runtime/server/utils/chat-api-proxy.js +1 -0
- package/dist/runtime/shared/composables/chat-api.js +4 -0
- package/dist/runtime/shared/composables/chat-request-context.d.ts +2 -0
- package/dist/runtime/shared/composables/chat-request-context.js +4 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,6 +59,7 @@ Declared in `src/runtime/embed/types.ts`; prop, feature-flag, and event payload
|
|
|
59
59
|
| `conversationCreatorFilter` | `'all' \| 'mine'` | — | Controlled sidebar creator filter; use with `v-model:conversation-creator-filter` when the host changes it at runtime |
|
|
60
60
|
| `hideConversationCreatorFilter` | `boolean` | `false` | Hide the creator selector without changing the active filter |
|
|
61
61
|
| `telaAgentId` | `string` | — | Use Tela agent mode for this embed |
|
|
62
|
+
| `telaAgentBranch` | `string` | Published version | Repository branch to use for new agent sessions |
|
|
62
63
|
| `telaAgentInputs` | `TelaAgentExecutionInput[] \| null` | `undefined` | Inputs sent with each Tela agent run; hides the variables panel when non-null |
|
|
63
64
|
| `workspaceSettings` | `WorkspaceSettings \| null` | `null` | Override settings from host app; not accepted in Tela agent mode |
|
|
64
65
|
| `user` | `ChatActor \| null` | `null` | Override current user display info; not accepted in Tela agent mode |
|
package/dist/module.json
CHANGED
|
@@ -9,6 +9,7 @@ import { provideEmbedConfig, useEmbedConfig } from "../composables/embed-config"
|
|
|
9
9
|
import { normalizeConversationScope, normalizeTelaAgentId, resolveConversationScopeKeySegment } from "../../conversations/scope";
|
|
10
10
|
import ChatEmbedInner from "./chat-embed-inner.vue";
|
|
11
11
|
const props = defineProps({
|
|
12
|
+
telaAgentBranch: { type: [String, null], required: false },
|
|
12
13
|
conversationId: { type: [String, null], required: false },
|
|
13
14
|
conversationEvents: { type: [Array, null], required: false },
|
|
14
15
|
composerDisabled: { type: Boolean, required: false },
|
|
@@ -44,6 +45,7 @@ const parentEmbedConfig = useEmbedConfig();
|
|
|
44
45
|
const { activeOrganization } = useChatAuth();
|
|
45
46
|
const workspaceId = computed(() => activeOrganization.value?.id?.trim() ?? "");
|
|
46
47
|
const normalizedTelaAgentId = computed(() => normalizeTelaAgentId(props.telaAgentId));
|
|
48
|
+
const telaAgentBranch = computed(() => props.telaAgentBranch?.trim() || null);
|
|
47
49
|
const normalizedConversationScope = computed(() => normalizeConversationScope(props.conversationScope));
|
|
48
50
|
const hideSettings = computed(() => props.hideSettings ?? false);
|
|
49
51
|
const ignoredPropsWarningKey = ref(null);
|
|
@@ -74,6 +76,7 @@ provideEmbedConfig({
|
|
|
74
76
|
provideChatRequestContext({
|
|
75
77
|
workspaceId,
|
|
76
78
|
telaAgentId: normalizedTelaAgentId,
|
|
79
|
+
telaAgentBranch,
|
|
77
80
|
conversationScope: normalizedConversationScope
|
|
78
81
|
}, { syncGlobal: !parentEmbedConfig });
|
|
79
82
|
if (import.meta.dev) {
|
|
@@ -109,7 +112,7 @@ provideChatMessageTerminal((payload) => {
|
|
|
109
112
|
<template>
|
|
110
113
|
<ChatEmbedInner
|
|
111
114
|
v-if="workspaceId"
|
|
112
|
-
:key="`${workspaceId}:${normalizedTelaAgentId ?? 'default-chat'}:scope:${resolveConversationScopeKeySegment(normalizedConversationScope)}`"
|
|
115
|
+
:key="`${workspaceId}:${normalizedTelaAgentId ?? 'default-chat'}:branch:${telaAgentBranch ?? ''}:scope:${resolveConversationScopeKeySegment(normalizedConversationScope)}`"
|
|
113
116
|
:conversation-id="conversationId"
|
|
114
117
|
:conversation-events="conversationEvents"
|
|
115
118
|
:composer-disabled="composerDisabled"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { computed, ref, watch } from "vue";
|
|
3
3
|
import { provideConversationCreatorFilterState } from "../../conversations/composables/conversation-creator-filter-state";
|
|
4
4
|
const { hideSidebar = void 0, ...props } = defineProps({
|
|
5
|
+
telaAgentBranch: { type: [String, null], required: false },
|
|
5
6
|
conversationId: { type: [String, null], required: false },
|
|
6
7
|
conversationEvents: { type: [Array, null], required: false },
|
|
7
8
|
composerDisabled: { type: Boolean, required: false },
|
|
@@ -61,6 +62,7 @@ function startWidgetConversation() {
|
|
|
61
62
|
handleWidgetConversationIdChange(null);
|
|
62
63
|
}
|
|
63
64
|
const sharedEmbedProps = computed(() => ({
|
|
65
|
+
telaAgentBranch: props.telaAgentBranch,
|
|
64
66
|
conversationId: props.conversationId,
|
|
65
67
|
conversationEvents: props.conversationEvents,
|
|
66
68
|
composerDisabled: props.composerDisabled,
|
|
@@ -41,6 +41,8 @@ export type ChatSidebarConfig = {
|
|
|
41
41
|
defaultCollapsed?: boolean;
|
|
42
42
|
};
|
|
43
43
|
export type ChatEmbedSharedProps = {
|
|
44
|
+
/** Optional repository branch for new agent sessions. Omit to use the published version. */
|
|
45
|
+
telaAgentBranch?: string | null;
|
|
44
46
|
/** Controlled conversation id. Use with `v-model:conversation-id` when the host owns active conversation state. */
|
|
45
47
|
conversationId?: string | null;
|
|
46
48
|
/** Controlled audit events rendered chronologically between conversation messages. */
|
|
@@ -15,6 +15,10 @@ export function useChatApi() {
|
|
|
15
15
|
if (telaAgentId) {
|
|
16
16
|
mergedHeaders["x-chat-tela-agent-id"] = telaAgentId;
|
|
17
17
|
}
|
|
18
|
+
const telaAgentBranch = requestContext?.telaAgentBranch?.value?.trim();
|
|
19
|
+
if (telaAgentBranch) {
|
|
20
|
+
mergedHeaders["x-chat-tela-agent-branch"] = telaAgentBranch;
|
|
21
|
+
}
|
|
18
22
|
const conversationScope = requestContext?.conversationScope.value?.trim();
|
|
19
23
|
if (conversationScope) {
|
|
20
24
|
mergedHeaders["x-chat-conversation-scope"] = conversationScope;
|
|
@@ -2,11 +2,13 @@ import type { MaybeRefOrGetter, Ref } from 'vue';
|
|
|
2
2
|
export type ChatRequestContext = {
|
|
3
3
|
workspaceId: Ref<string>;
|
|
4
4
|
telaAgentId: Ref<string | null>;
|
|
5
|
+
telaAgentBranch: Ref<string | null>;
|
|
5
6
|
conversationScope: Ref<string | null>;
|
|
6
7
|
};
|
|
7
8
|
type ChatRequestContextInput = {
|
|
8
9
|
workspaceId: MaybeRefOrGetter<string | null | undefined>;
|
|
9
10
|
telaAgentId?: MaybeRefOrGetter<string | null | undefined>;
|
|
11
|
+
telaAgentBranch?: MaybeRefOrGetter<string | null | undefined>;
|
|
10
12
|
conversationScope?: MaybeRefOrGetter<string | null | undefined>;
|
|
11
13
|
};
|
|
12
14
|
type ProvideChatRequestContextOptions = {
|
|
@@ -8,6 +8,7 @@ function useGlobalChatRequestContextState() {
|
|
|
8
8
|
provided: useState("chat-request-context-provided", () => false),
|
|
9
9
|
workspaceId: useState("chat-request-context-workspace-id", () => ""),
|
|
10
10
|
telaAgentId: useState("chat-request-context-tela-agent-id", () => null),
|
|
11
|
+
telaAgentBranch: useState("chat-request-context-tela-agent-branch", () => null),
|
|
11
12
|
conversationScope: useState("chat-request-context-conversation-scope", () => null)
|
|
12
13
|
};
|
|
13
14
|
}
|
|
@@ -15,6 +16,7 @@ export function provideChatRequestContext(input, options = {}) {
|
|
|
15
16
|
const context = {
|
|
16
17
|
workspaceId: computed(() => normalizeOptionalHeaderValue(toValue(input.workspaceId)) ?? ""),
|
|
17
18
|
telaAgentId: computed(() => normalizeOptionalHeaderValue(toValue(input.telaAgentId))),
|
|
19
|
+
telaAgentBranch: computed(() => normalizeOptionalHeaderValue(toValue(input.telaAgentBranch))),
|
|
18
20
|
conversationScope: computed(() => normalizeOptionalHeaderValue(toValue(input.conversationScope)))
|
|
19
21
|
};
|
|
20
22
|
const globalContext = useGlobalChatRequestContextState();
|
|
@@ -23,6 +25,7 @@ export function provideChatRequestContext(input, options = {}) {
|
|
|
23
25
|
globalContext.provided.value = true;
|
|
24
26
|
globalContext.workspaceId.value = context.workspaceId.value;
|
|
25
27
|
globalContext.telaAgentId.value = context.telaAgentId.value;
|
|
28
|
+
globalContext.telaAgentBranch.value = context.telaAgentBranch.value;
|
|
26
29
|
globalContext.conversationScope.value = context.conversationScope.value;
|
|
27
30
|
});
|
|
28
31
|
}
|
|
@@ -38,6 +41,7 @@ export function useChatRequestContext() {
|
|
|
38
41
|
return {
|
|
39
42
|
workspaceId: computed(() => globalContext.workspaceId.value),
|
|
40
43
|
telaAgentId: computed(() => globalContext.telaAgentId.value),
|
|
44
|
+
telaAgentBranch: computed(() => globalContext.telaAgentBranch.value),
|
|
41
45
|
conversationScope: computed(() => globalContext.conversationScope.value)
|
|
42
46
|
};
|
|
43
47
|
}
|