@veltra/ai 2.2.5 → 2.3.1
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/dist/chat/fold.d.ts +0 -2
- package/dist/chat/fold.js +1 -2
- package/dist/chat/session.d.ts +0 -2
- package/dist/chat/session.js +1 -2
- package/dist/chat/transports/openai.d.ts +0 -2
- package/dist/chat/transports/openai.js +1 -2
- package/dist/chat/types.d.ts +0 -2
- package/dist/chat/use-chat-helpers.js +1 -2
- package/dist/chat/use-chat-session.js +1 -2
- package/dist/chat/use-chat.d.ts +0 -2
- package/dist/chat/use-chat.js +1 -2
- package/dist/components/ai-chat/ai-chat.js +1 -2
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-chat/approval-banner.js +1 -2
- package/dist/components/ai-chat/approval-banner.js.map +1 -1
- package/dist/components/ai-chat/ask-question.js +1 -2
- package/dist/components/ai-chat/ask-question.js.map +1 -1
- package/dist/components/ai-chat/chat-input.js +1 -2
- package/dist/components/ai-chat/chat-input.js.map +1 -1
- package/dist/components/ai-chat/di.js +1 -2
- package/dist/components/ai-chat/format-duration.js +1 -2
- package/dist/components/ai-chat/job-bar.js +1 -2
- package/dist/components/ai-chat/job-bar.js.map +1 -1
- package/dist/components/ai-chat/message-item.js +1 -2
- package/dist/components/ai-chat/message-item.js.map +1 -1
- package/dist/components/ai-chat/message-list.js +1 -2
- package/dist/components/ai-chat/message-list.js.map +1 -1
- package/dist/components/ai-chat/model-picker.js +1 -2
- package/dist/components/ai-chat/model-picker.js.map +1 -1
- package/dist/components/ai-chat/queue-list.js +1 -2
- package/dist/components/ai-chat/queue-list.js.map +1 -1
- package/dist/components/ai-chat/reasoning-picker.js +1 -2
- package/dist/components/ai-chat/reasoning-picker.js.map +1 -1
- package/dist/components/ai-chat/side-panel.js +1 -2
- package/dist/components/ai-chat/side-panel.js.map +1 -1
- package/dist/components/ai-chat/style2.css +20 -3
- package/dist/components/ai-chat/tool-call.js +1 -2
- package/dist/components/ai-chat/tool-call.js.map +1 -1
- package/dist/components/ai-chat/tool-icons.js +1 -2
- package/dist/components/ai-chat/tool-json.js +1 -2
- package/dist/components/ai-chat/tool-json.js.map +1 -1
- package/dist/components/ai-chat/turn-process.js +1 -2
- package/dist/components/ai-chat/turn-process.js.map +1 -1
- package/dist/components/ai-orb/ai-orb.js +1 -2
- package/dist/components/ai-orb/orb-renderer.js +1 -2
- package/dist/providers/types.d.ts +0 -2
- package/dist/tools/ask-question/ask-question.d.ts +0 -2
- package/dist/tools/ask-question/ask-question.js +1 -2
- package/dist/tools/ask-question/deferred.js +1 -2
- package/dist/tools/index.js +1 -2
- package/dist/types/ai-chat.d.ts +0 -2
- package/package.json +2 -2
- package/src/components/ai-chat/style.scss +26 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-json.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_toDisplayString","_createBlock","_withCtx","_createTextVNode","_createCommentVNode"],"sources":["../../../src/components/ai-chat/tool-json.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('tool-call-json')\">\n <div :class=\"cls.e('tool-call-json-head')\">\n <span :class=\"cls.e('tool-call-section')\">{{ title }}</span>\n <UButton\n v-if=\"overLimit\"\n :class=\"cls.e('tool-call-json-toggle')\"\n size=\"small\"\n text\n type=\"primary\"\n @click=\"expanded = !expanded\"\n >\n {{ expanded ? '收起' : '展开' }}\n </UButton>\n </div>\n <pre :class=\"[cls.e('tool-call-code'), bem.is('truncated', overLimit && !expanded)]\">{{\n shown\n }}</pre>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UButton } from '@veltra/desktop'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, ref } from 'vue'\n\nimport { AiChatDIKey } from './di'\n\ndefineOptions({ name: 'UAiChatToolJson' })\n\n/** 超过该字符数截断,展开后可见全文 */\nconst PREVIEW_LIMIT = 480\n\nconst { title, text } = defineProps<{\n /** 区块标题(参数 / 结果 / 视图) */\n title: string\n /** 已格式化的 JSON 或原文 */\n text: string\n}>()\n\nconst di = inject(AiChatDIKey)\nconst cls = di?.cls ?? bem('ai-chat')\n\nconst expanded = ref(false)\n\nconst overLimit = computed(() => text.length > PREVIEW_LIMIT)\n\nconst shown = computed(() => {\n if (expanded.value || !overLimit.value) return text\n return `${text.slice(0, PREVIEW_LIMIT)}…`\n})\n</script>\n"],"mappings":";;;;;AA+BA,MAAM,gBAAgB;;;;;;;;;EAUtB,MAAM,MADK,OAAO,WACN,CAAA,EAAI,OAAO,IAAI,SAAS;EAEpC,MAAM,WAAW,IAAI,KAAK;EAE1B,MAAM,YAAY,eAAe,QAAA,KAAK,SAAS,aAAa;EAE5D,MAAM,QAAQ,eAAe;GAC3B,IAAI,SAAS,SAAS,CAAC,UAAU,OAAO,OAAO,QAAA;GAC/C,OAAO,GAAG,QAAA,KAAK,MAAM,GAAG,aAAa,EAAE;EACzC,CAAC;;GAjDC,OAAAA,UAAA,GAAAC,mBAiBM,OAAA,EAjBA,OAAKC,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,gBAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"tool-json.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_toDisplayString","_createBlock","_withCtx","_createTextVNode","_createCommentVNode"],"sources":["../../../src/components/ai-chat/tool-json.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('tool-call-json')\">\n <div :class=\"cls.e('tool-call-json-head')\">\n <span :class=\"cls.e('tool-call-section')\">{{ title }}</span>\n <UButton\n v-if=\"overLimit\"\n :class=\"cls.e('tool-call-json-toggle')\"\n size=\"small\"\n text\n type=\"primary\"\n @click=\"expanded = !expanded\"\n >\n {{ expanded ? '收起' : '展开' }}\n </UButton>\n </div>\n <pre :class=\"[cls.e('tool-call-code'), bem.is('truncated', overLimit && !expanded)]\">{{\n shown\n }}</pre>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UButton } from '@veltra/desktop'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, ref } from 'vue'\n\nimport { AiChatDIKey } from './di'\n\ndefineOptions({ name: 'UAiChatToolJson' })\n\n/** 超过该字符数截断,展开后可见全文 */\nconst PREVIEW_LIMIT = 480\n\nconst { title, text } = defineProps<{\n /** 区块标题(参数 / 结果 / 视图) */\n title: string\n /** 已格式化的 JSON 或原文 */\n text: string\n}>()\n\nconst di = inject(AiChatDIKey)\nconst cls = di?.cls ?? bem('ai-chat')\n\nconst expanded = ref(false)\n\nconst overLimit = computed(() => text.length > PREVIEW_LIMIT)\n\nconst shown = computed(() => {\n if (expanded.value || !overLimit.value) return text\n return `${text.slice(0, PREVIEW_LIMIT)}…`\n})\n</script>\n"],"mappings":";;;;;AA+BA,MAAM,gBAAgB;;;;;;;;;EAUtB,MAAM,MADK,OAAO,WACN,CAAA,EAAI,OAAO,IAAI,SAAS;EAEpC,MAAM,WAAW,IAAI,KAAK;EAE1B,MAAM,YAAY,eAAe,QAAA,KAAK,SAAS,aAAa;EAE5D,MAAM,QAAQ,eAAe;GAC3B,IAAI,SAAS,SAAS,CAAC,UAAU,OAAO,OAAO,QAAA;GAC/C,OAAO,GAAG,QAAA,KAAK,MAAM,GAAG,aAAa,EAAE;EACzC,CAAC;;GAjDC,OAAAA,UAAA,GAAAC,mBAiBM,OAAA,EAjBA,OAAKC,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,gBAAA,CAAA,E,IAChBC,mBAYM,OAAA,EAZA,OAAKF,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,qBAAA,CAAA,E,IAChBC,mBAA4D,QAAA,EAArD,OAAKF,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,mBAAA,CAAA,EAA0B,GAAAE,gBAAA,QAAA,KAAK,GAAA,CAAA,GAE1C,UAAA,SADRL,UAAA,GAAAM,YASUH,MAAA,OAAA,GAAA;;IAPP,OAAKD,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,uBAAA,CAAA;IACb,MAAK;IACL,MAAA;IACA,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,SAAA,QAAQ,CAAI,SAAA;;IAEpB,SAAAI,cAA4B,CAAzBC,gBAAAH,gBAAA,SAAA,QAAQ,OAAA,IAAA,GAAA,CAAA,C;;G,2DAGfD,mBAEQ,OAAA,EAFF,OAAKF,eAAA,CAAGC,MAAA,GAAA,CAAG,CAAC,EAAC,gBAAA,GAAoBA,MAAA,GAAA,CAAG,CAAC,GAAE,aAAc,UAAA,SAAS,CAAK,SAAA,KAAQ,CAAA,CAAA,EAC/E,GAAAE,gBAAA,MAAA,KAAK,GAAA,CAAA,C"}
|
|
@@ -4,7 +4,7 @@ import { Fragment, createBlock, createCommentVNode, createElementBlock, createEl
|
|
|
4
4
|
import { ArrowRight, CircleCheck } from "@veltra/icons/normal";
|
|
5
5
|
import { UIcon } from "@veltra/desktop";
|
|
6
6
|
import { bem } from "@veltra/utils";
|
|
7
|
-
|
|
7
|
+
// src/components/ai-chat/turn-process.vue
|
|
8
8
|
const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
9
9
|
name: "UAiChatTurnProcess",
|
|
10
10
|
__name: "turn-process",
|
|
@@ -50,7 +50,6 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
|
-
//#endregion
|
|
54
53
|
export { _sfc_main as default };
|
|
55
54
|
|
|
56
55
|
//# sourceMappingURL=turn-process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-process.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","_withCtx","_createCommentVNode","_Fragment","_renderList","_createBlock","MessageItem"],"sources":["../../../src/components/ai-chat/turn-process.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.e('process'), bem.is('expanded', expanded)]\">\n <div :class=\"cls.e('process-header')\" @click=\"expanded = !expanded\">\n <UIcon :class=\"cls.e('process-icon')\"><CircleCheck /></UIcon>\n <span :class=\"cls.e('process-title')\">已完成</span>\n <UIcon :class=\"cls.e('process-chevron')\"><ArrowRight /></UIcon>\n </div>\n <!-- 折叠时完全卸载过程 DOM:历史轮次的思考/工具卡片可能很多,常驻挂载浪费渲染成本 -->\n <div v-if=\"expanded\" :class=\"cls.e('process-content')\">\n <MessageItem\n v-for=\"msg in messages\"\n :key=\"msg.id\"\n :message=\"msg\"\n :is-last=\"false\"\n :renderer-props=\"rendererProps\"\n @respond=\"(id, approved) => emit('respond', id, approved)\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UIcon } from '@veltra/desktop'\nimport { ArrowRight, CircleCheck } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { ChatMessage } from '../../chat/types'\nimport { AiChatDIKey } from './di'\nimport MessageItem from './message-item.vue'\n\ndefineOptions({ name: 'UAiChatTurnProcess' })\n\ndefineProps<{\n /** 本轮最终答案之前的过程消息(思考 + 中间文本 + 工具卡片) */\n messages: ChatMessage[]\n /** 透传给 MarkdownRender 的属性 */\n rendererProps?: Record<string, unknown>\n}>()\n\nconst emit = defineEmits<{ (e: 'respond', toolCallId: string, approved: boolean): void }>()\n\nconst di = inject(AiChatDIKey)\nconst cls = di?.cls ?? bem('ai-chat')\n\nconst expanded = ref(false)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;EAwCA,MAAM,OAAO;EAGb,MAAM,MADK,OAAO,WACN,CAAA,EAAI,OAAO,IAAI,SAAS;EAEpC,MAAM,WAAW,IAAI,KAAK;;GA5CxB,OAAAA,UAAA,GAAAC,mBAiBM,OAAA,EAjBA,OAAKC,eAAA,CAAGC,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,GAAaA,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"turn-process.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","_withCtx","_createCommentVNode","_Fragment","_renderList","_createBlock","MessageItem"],"sources":["../../../src/components/ai-chat/turn-process.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.e('process'), bem.is('expanded', expanded)]\">\n <div :class=\"cls.e('process-header')\" @click=\"expanded = !expanded\">\n <UIcon :class=\"cls.e('process-icon')\"><CircleCheck /></UIcon>\n <span :class=\"cls.e('process-title')\">已完成</span>\n <UIcon :class=\"cls.e('process-chevron')\"><ArrowRight /></UIcon>\n </div>\n <!-- 折叠时完全卸载过程 DOM:历史轮次的思考/工具卡片可能很多,常驻挂载浪费渲染成本 -->\n <div v-if=\"expanded\" :class=\"cls.e('process-content')\">\n <MessageItem\n v-for=\"msg in messages\"\n :key=\"msg.id\"\n :message=\"msg\"\n :is-last=\"false\"\n :renderer-props=\"rendererProps\"\n @respond=\"(id, approved) => emit('respond', id, approved)\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UIcon } from '@veltra/desktop'\nimport { ArrowRight, CircleCheck } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { ChatMessage } from '../../chat/types'\nimport { AiChatDIKey } from './di'\nimport MessageItem from './message-item.vue'\n\ndefineOptions({ name: 'UAiChatTurnProcess' })\n\ndefineProps<{\n /** 本轮最终答案之前的过程消息(思考 + 中间文本 + 工具卡片) */\n messages: ChatMessage[]\n /** 透传给 MarkdownRender 的属性 */\n rendererProps?: Record<string, unknown>\n}>()\n\nconst emit = defineEmits<{ (e: 'respond', toolCallId: string, approved: boolean): void }>()\n\nconst di = inject(AiChatDIKey)\nconst cls = di?.cls ?? bem('ai-chat')\n\nconst expanded = ref(false)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;EAwCA,MAAM,OAAO;EAGb,MAAM,MADK,OAAO,WACN,CAAA,EAAI,OAAO,IAAI,SAAS;EAEpC,MAAM,WAAW,IAAI,KAAK;;GA5CxB,OAAAA,UAAA,GAAAC,mBAiBM,OAAA,EAjBA,OAAKC,eAAA,CAAGC,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,GAAaA,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,E;IACzDC,mBAIM,OAAA;KAJA,OAAKF,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,gBAAA,CAAA;KAAqB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,SAAA,QAAQ,CAAI,SAAA;;KACxDE,YAA6DF,MAAA,KAAA,GAAA,EAArD,OAAKD,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA,E;MAAkB,SAAAG,cAAe,CAAfD,YAAeF,MAAA,WAAA,CAAA,C;;;KACrDC,mBAAgD,QAAA,EAAzC,OAAKF,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,eAAA,CAAA,EAAmB,GAAA,OAAG,CAAA;KACzCE,YAA+DF,MAAA,KAAA,GAAA,EAAvD,OAAKD,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,iBAAA,CAAA,E;MAAqB,SAAAG,cAAc,CAAdD,YAAcF,MAAA,UAAA,CAAA,C;;;;IAEzDI,mBAAA,6CAAA;IACW,SAAA,SAAXP,UAAA,GAAAC,mBASM,OAAA;;KATgB,OAAKC,eAAEC,MAAA,GAAA,CAAG,CAAC,EAAC,iBAAA,CAAA;I,KAChCH,UAAA,IAAA,GAAAC,mBAOEO,UAAA,MAAAC,WANc,QAAA,WAAP,QAAG;KADZ,OAAAT,UAAA,GAAAU,YAOEC,aAAA;MALC,KAAK,IAAI;MACT,SAAS;MACT,WAAS;MACT,kBAAgB,QAAA;MAChB,WAAO,OAAA,OAAA,OAAA,MAAG,IAAI,aAAa,KAAI,WAAY,IAAI,QAAQ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createOrbRenderer } from "./orb-renderer.js";
|
|
2
2
|
import { createElementBlock, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, unref, useTemplateRef, watch } from "vue";
|
|
3
3
|
import { bem } from "@veltra/utils";
|
|
4
|
-
|
|
4
|
+
// src/components/ai-orb/ai-orb.vue
|
|
5
5
|
const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
6
6
|
name: "UAiOrb",
|
|
7
7
|
__name: "ai-orb",
|
|
@@ -88,7 +88,6 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
|
-
//#endregion
|
|
92
91
|
export { _sfc_main as default };
|
|
93
92
|
|
|
94
93
|
//# sourceMappingURL=ai-orb.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/ai-orb/orb-renderer.ts
|
|
2
2
|
const STATUS_PARAMS = {
|
|
3
3
|
idle: {
|
|
4
4
|
eyeOpen: 1,
|
|
@@ -485,7 +485,6 @@ function createOrbRenderer(canvas, options) {
|
|
|
485
485
|
renderOnce
|
|
486
486
|
};
|
|
487
487
|
}
|
|
488
|
-
//#endregion
|
|
489
488
|
export { createOrbRenderer };
|
|
490
489
|
|
|
491
490
|
//# sourceMappingURL=orb-renderer.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/providers/types.d.ts
|
|
2
1
|
/** 推理等级选项(值不透明,由宿主/服务商约定) */
|
|
3
2
|
export interface ChatReasoningLevel {
|
|
4
3
|
/** 写入请求的值 */
|
|
@@ -44,5 +43,4 @@ export interface ChatModelOption extends ChatModel {
|
|
|
44
43
|
providerId: string;
|
|
45
44
|
providerLabel?: string;
|
|
46
45
|
}
|
|
47
|
-
//#endregion
|
|
48
46
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import "../../chat/types.js";
|
|
2
2
|
import { Component } from "vue";
|
|
3
|
-
//#region src/tools/ask-question/ask-question.d.ts
|
|
4
3
|
/** 单个提问项 */
|
|
5
4
|
export interface AskQuestionItem {
|
|
6
5
|
/** 问题文案 */
|
|
@@ -25,5 +24,4 @@ export interface AskQuestionArgs {
|
|
|
25
24
|
export interface AskQuestionResult {
|
|
26
25
|
answers: AskQuestionAnswer[];
|
|
27
26
|
}
|
|
28
|
-
//#endregion
|
|
29
27
|
//# sourceMappingURL=ask-question.d.ts.map
|
|
@@ -2,7 +2,7 @@ import _sfc_main from "../../components/ai-chat/ask-question.js";
|
|
|
2
2
|
import { deferAskQuestion, resolveAskQuestion, takeAskQuestionDeferred } from "./deferred.js";
|
|
3
3
|
import { computed, defineComponent, h } from "vue";
|
|
4
4
|
import { QuestionFilled } from "@veltra/icons/normal";
|
|
5
|
-
|
|
5
|
+
// src/tools/ask-question/ask-question.ts
|
|
6
6
|
const DEFAULT_DESCRIPTION = "当需求不明确或存在歧义时,向用户提问以澄清。一次可提 1-4 个关键问题;每个问题可提供若干预设选项,用户可选择选项或自定义输入。用户作答后再继续生成。";
|
|
7
7
|
/** 提问参数 JSON Schema(原样传给模型) */
|
|
8
8
|
const QUESTIONS_SCHEMA = {
|
|
@@ -106,7 +106,6 @@ function createAskQuestionTool(options = {}) {
|
|
|
106
106
|
})
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
|
-
//#endregion
|
|
110
109
|
export { createAskQuestionTool };
|
|
111
110
|
|
|
112
111
|
//# sourceMappingURL=ask-question.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/tools/ask-question/deferred.ts
|
|
2
2
|
/** 挂起的提问 Promise,key 为 toolCallId */
|
|
3
3
|
const pending = /* @__PURE__ */ new Map();
|
|
4
4
|
/** 注册挂起的提问 Promise(由 createAskQuestionTool 的 execute 调用) */
|
|
@@ -16,7 +16,6 @@ function takeAskQuestionDeferred(toolCallId) {
|
|
|
16
16
|
function resolveAskQuestion(toolCallId, result) {
|
|
17
17
|
takeAskQuestionDeferred(toolCallId)?.resolve(result);
|
|
18
18
|
}
|
|
19
|
-
//#endregion
|
|
20
19
|
export { deferAskQuestion, resolveAskQuestion, takeAskQuestionDeferred };
|
|
21
20
|
|
|
22
21
|
//# sourceMappingURL=deferred.js.map
|
package/dist/tools/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { createAskQuestionTool } from "./ask-question/ask-question.js";
|
|
2
|
-
|
|
2
|
+
// src/tools/index.ts
|
|
3
3
|
/** 内置工具列表(useChat 始终注入,不对外导出;新增内置工具在此注册) */
|
|
4
4
|
function createBuiltinTools() {
|
|
5
5
|
return [createAskQuestionTool()];
|
|
6
6
|
}
|
|
7
|
-
//#endregion
|
|
8
7
|
export { createBuiltinTools };
|
|
9
8
|
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/dist/types/ai-chat.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { ChatSessionTransport } from "../chat/session.js";
|
|
|
3
3
|
import { ChatModelOption } from "../providers/types.js";
|
|
4
4
|
import { Component, Ref } from "vue";
|
|
5
5
|
import { DeconstructValue } from "@veltra/utils";
|
|
6
|
-
//#region src/types/ai-chat.d.ts
|
|
7
6
|
export interface AiChatProps {
|
|
8
7
|
/** 传输层(必填);函数型 ChatTransport 或 session 对象,可使用 createOpenAITransport / createServerTransport */
|
|
9
8
|
transport: ChatTransport | ChatSessionTransport;
|
|
@@ -93,5 +92,4 @@ export interface _AiChatExposed {
|
|
|
93
92
|
enqueue: (content: string, attachments?: ChatAttachment[], beforeId?: string) => ChatQueuedMessage;
|
|
94
93
|
}
|
|
95
94
|
export type AiChatExposed = DeconstructValue<_AiChatExposed>;
|
|
96
|
-
//#endregion
|
|
97
95
|
//# sourceMappingURL=ai-chat.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veltra/ai",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"homepage": "https://github.com/cabinet-fe/ultra-ui#readme",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/cabinet-fe/ultra-ui/issues"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"markstream-vue": "^2.0.
|
|
39
|
+
"markstream-vue": "^2.0.20"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@veltra/compositions": "^1.7.14",
|
|
@@ -51,7 +51,7 @@ $root-name: ai-chat;
|
|
|
51
51
|
animation: u-ai-chat-panel-in 0.2s ease-out;
|
|
52
52
|
|
|
53
53
|
@media (prefers-reduced-motion: reduce) {
|
|
54
|
-
animation:
|
|
54
|
+
animation: u-ai-chat-panel-fade 160ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -78,6 +78,28 @@ $root-name: ai-chat;
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
// 仅减少动态效果时使用:只淡入透明度
|
|
82
|
+
@keyframes u-ai-chat-panel-fade {
|
|
83
|
+
from {
|
|
84
|
+
opacity: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
to {
|
|
88
|
+
opacity: 1;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 仅减少动态效果时使用:只淡入透明度
|
|
93
|
+
@keyframes u-ai-chat-orb-fade {
|
|
94
|
+
from {
|
|
95
|
+
opacity: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
to {
|
|
99
|
+
opacity: 1;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
81
103
|
// 活体球在输入框上方 ↔ 列表末尾对向缩放(时长与 JUMP_MS 一致)
|
|
82
104
|
@keyframes u-ai-chat-orb-jump-in {
|
|
83
105
|
from {
|
|
@@ -358,12 +380,13 @@ $root-name: ai-chat;
|
|
|
358
380
|
@media (prefers-reduced-motion: reduce) {
|
|
359
381
|
.u-#{$root-name}__welcome.is-enter .u-ai-orb,
|
|
360
382
|
.u-#{$root-name}__working .u-ai-orb {
|
|
361
|
-
animation:
|
|
383
|
+
animation: u-ai-chat-orb-fade 160ms cubic-bezier(0.23, 1, 0.32, 1) both;
|
|
362
384
|
}
|
|
363
385
|
|
|
364
386
|
.u-#{$root-name}__welcome.is-leaving .u-ai-orb,
|
|
365
387
|
.u-#{$root-name}__working.is-leaving .u-ai-orb {
|
|
366
|
-
|
|
388
|
+
transform: none;
|
|
389
|
+
transition: opacity 160ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
367
390
|
}
|
|
368
391
|
}
|
|
369
392
|
|