@eaera-com/cms-sdk 0.1.91 → 0.1.93

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 (41) hide show
  1. package/dist/chunks/chats-F9H8sza4.js +109 -0
  2. package/dist/chunks/client-B7fm_H2u.js +184 -0
  3. package/dist/chunks/connection-DGlB8IZD.js +108 -0
  4. package/dist/chunks/{mt5Retcode-DlZLQOLA.js → mt5Retcode-DK9C-4Dv.js} +8 -0
  5. package/dist/chunks/qwenpaw.constant-BwpRhdCV.js +24 -0
  6. package/dist/common/constants/index.d.ts +1 -0
  7. package/dist/common/constants/index.d.ts.map +1 -1
  8. package/dist/common/constants/qwenpaw.constant.d.ts +46 -0
  9. package/dist/common/constants/qwenpaw.constant.d.ts.map +1 -0
  10. package/dist/common/helpers/mt5Retcode.d.ts.map +1 -1
  11. package/dist/common/helpers/mt5Retcode.js +1 -1
  12. package/dist/composables/useQwenpawChat.d.ts +240 -0
  13. package/dist/composables/useQwenpawChat.d.ts.map +1 -0
  14. package/dist/core/ws/ws.constants.d.ts +1 -0
  15. package/dist/core/ws/ws.constants.d.ts.map +1 -1
  16. package/dist/index.d.ts +8 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +392 -6
  19. package/dist/nuxt.d.ts.map +1 -1
  20. package/dist/nuxt.js +10 -1
  21. package/dist/server/ai/qwenpaw/chat/stop.post.js +25 -0
  22. package/dist/server/ai/qwenpaw/chat.post.js +61 -0
  23. package/dist/server/ai/qwenpaw/chats-id.delete.js +18 -0
  24. package/dist/server/ai/qwenpaw/chats.get.js +33 -0
  25. package/dist/server/ai/qwenpaw/history.get.js +16 -0
  26. package/dist/server/ai/qwenpaw/session.get.js +14 -0
  27. package/dist/server/ai/qwenpaw/session.post.js +31 -0
  28. package/dist/server/ai/qwenpaw/upload.post.js +40 -0
  29. package/dist/services/qwenpaw/chats.d.ts +25 -0
  30. package/dist/services/qwenpaw/chats.d.ts.map +1 -0
  31. package/dist/services/qwenpaw/client.d.ts +42 -0
  32. package/dist/services/qwenpaw/client.d.ts.map +1 -0
  33. package/dist/services/qwenpaw/qwenpaw.type.d.ts +236 -0
  34. package/dist/services/qwenpaw/qwenpaw.type.d.ts.map +1 -0
  35. package/dist/services/qwenpaw/stream.d.ts +16 -0
  36. package/dist/services/qwenpaw/stream.d.ts.map +1 -0
  37. package/dist/stores/index.d.ts +1 -0
  38. package/dist/stores/index.d.ts.map +1 -1
  39. package/dist/stores/qwenpawChat.d.ts +219 -0
  40. package/dist/stores/qwenpawChat.d.ts.map +1 -0
  41. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ import { defineEventHandler, createError } from 'h3';
2
+ import { r as requireCmsSession, e as exchangeQwenpawSession, Q as QwenpawExchangeError } from '../../../chunks/connection-DGlB8IZD.js';
3
+
4
+ const exchangeErrorStatus = (error) => {
5
+ if (error.code === "AI_NOT_AUTHENTICATED") return 401;
6
+ if (error.configurationError) return 403;
7
+ if (error.code === "AI_SESSION_EXCHANGE_FAILED") return 423;
8
+ return 502;
9
+ };
10
+ const handleExchangeError = (error) => {
11
+ if (error instanceof QwenpawExchangeError) {
12
+ throw createError({
13
+ statusCode: exchangeErrorStatus(error),
14
+ message: error.message,
15
+ data: { code: error.code }
16
+ });
17
+ }
18
+ console.error("qwenpaw-session", error);
19
+ throw createError({ statusCode: 502, message: "The AI agent is unreachable." });
20
+ };
21
+ const session_post = defineEventHandler(async (event) => {
22
+ requireCmsSession(event);
23
+ try {
24
+ const connection = await exchangeQwenpawSession(event);
25
+ return { ok: true, baseUrl: connection.baseUrl, agentId: connection.agentId };
26
+ } catch (error) {
27
+ handleExchangeError(error);
28
+ }
29
+ });
30
+
31
+ export { session_post as default, exchangeErrorStatus, handleExchangeError };
@@ -0,0 +1,40 @@
1
+ import { defineEventHandler, readMultipartFormData, createError } from 'h3';
2
+ import { d as qwenpawUpload, p as postConsoleChatError } from '../../../chunks/client-B7fm_H2u.js';
3
+ import { g as QWENPAW_MAX_UPLOAD_BYTES } from '../../../chunks/qwenpaw.constant-BwpRhdCV.js';
4
+ import { r as requireCmsSession, a as resolveQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../chunks/connection-DGlB8IZD.js';
5
+
6
+ const upload_post = defineEventHandler(async (event) => {
7
+ requireCmsSession(event);
8
+ const parts = await readMultipartFormData(event);
9
+ const filePart = parts?.find((part) => part.name === "file");
10
+ if (!filePart?.data?.length) {
11
+ throw createError({ statusCode: 400, message: "File is required." });
12
+ }
13
+ if (filePart.data.length > QWENPAW_MAX_UPLOAD_BYTES) {
14
+ throw createError({ statusCode: 413, message: "File too large (max 20 MB)." });
15
+ }
16
+ const connection = resolveQwenpawConnection(event);
17
+ const form = new FormData();
18
+ form.append(
19
+ "file",
20
+ new Blob([new Uint8Array(filePart.data)], {
21
+ type: filePart.type || "application/octet-stream"
22
+ }),
23
+ filePart.filename || "attachment"
24
+ );
25
+ const upstreamAbort = new AbortController();
26
+ event.node.req.once("close", () => upstreamAbort.abort());
27
+ try {
28
+ const result = await qwenpawUpload({
29
+ config: resolveQwenpawServerConfig(event),
30
+ target: { baseUrl: connection.baseUrl, agentId: connection.agentId },
31
+ form,
32
+ signal: upstreamAbort.signal
33
+ });
34
+ return { url: result.url, fileName: filePart.filename || result.file_name, size: result.size };
35
+ } catch (error) {
36
+ throw postConsoleChatError(error);
37
+ }
38
+ });
39
+
40
+ export { upload_post as default };
@@ -0,0 +1,25 @@
1
+ import { QWENPAW_DEFAULT_AGENT_ID } from '../../common/constants/qwenpaw.constant';
2
+ import { ICodingTurn, IQwenpawChatMessage, IQwenpawChatSummary, IQwenpawGroup, IQwenpawResolvedConnection } from './qwenpaw.type';
3
+ export { QWENPAW_DEFAULT_AGENT_ID };
4
+ /** GET /api/chats — list the agent's conversations. */
5
+ export declare const listQwenpawChats: (connection: IQwenpawResolvedConnection) => Promise<IQwenpawChatSummary[]>;
6
+ /** GET /api/chats/groups — the agent's conversation groups. */
7
+ export declare const listQwenpawGroups: (connection: IQwenpawResolvedConnection) => Promise<IQwenpawGroup[]>;
8
+ /** DELETE /api/chats/{chatId} — delete a conversation. */
9
+ export declare const deleteQwenpawChat: (connection: IQwenpawResolvedConnection, chatId: string) => Promise<boolean>;
10
+ /** GET /api/chats/{id} — full message history of one chat. */
11
+ export declare const getQwenpawChatMessages: (connection: IQwenpawResolvedConnection, chatId: string) => Promise<IQwenpawChatMessage[]>;
12
+ /** Normalize QwenPaw messages into the display-log turn shape: user
13
+ * texts + assistant MESSAGE texts; reasoning/plugin_call entries are
14
+ * skipped (chain of thought and tool chatter stay out of the answer).
15
+ * Message timestamps are carried through. Long conversations keep the
16
+ * LAST `QWENPAW_MAX_HISTORY_TURNS` turns. */
17
+ export declare const messagesToTurns: (messages: IQwenpawChatMessage[]) => ICodingTurn[];
18
+ /** The model that served the latest turn (message metadata), if any. */
19
+ export declare const extractChatModel: (messages: IQwenpawChatMessage[]) => string;
20
+ /** History for one chat id: fetch → normalize → carry the model name. */
21
+ export declare const fetchChatHistory: (connection: IQwenpawResolvedConnection, chatId: string) => Promise<{
22
+ turns: ICodingTurn[];
23
+ model: string;
24
+ }>;
25
+ //# sourceMappingURL=chats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/services/qwenpaw/chats.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,wBAAwB,EAGzB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,CAAC;AA0BpC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,GAC3B,YAAY,0BAA0B,KACrC,OAAO,CAAC,mBAAmB,EAAE,CAc/B,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAC5B,YAAY,0BAA0B,KACrC,OAAO,CAAC,aAAa,EAAE,CAazB,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,GAC5B,YAAY,0BAA0B,EACtC,QAAQ,MAAM,KACb,OAAO,CAAC,OAAO,CAajB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,GACjC,YAAY,0BAA0B,EACtC,QAAQ,MAAM,KACb,OAAO,CAAC,mBAAmB,EAAE,CAiB/B,CAAC;AAEF;;;;8CAI8C;AAC9C,eAAO,MAAM,eAAe,GAAI,UAAU,mBAAmB,EAAE,KAAG,WAAW,EAqB5E,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,GAAI,UAAU,mBAAmB,EAAE,KAAG,MAMlE,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,GAC3B,YAAY,0BAA0B,EACtC,QAAQ,MAAM,KACb,OAAO,CAAC;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGjD,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { IQwenpawChatOptions, IQwenpawServerConfig, IQwenpawUploadResult } from './qwenpaw.type';
2
+ export declare class QwenpawConfigError extends Error {
3
+ }
4
+ export declare class QwenpawUpstreamError extends Error {
5
+ readonly status: number;
6
+ constructor(status: number, message: string);
7
+ }
8
+ /** Normalize client errors into an H3 error for the calling route. */
9
+ export declare const postConsoleChatError: (error: unknown) => Error;
10
+ /** POST /api/console/chat — resolves to the upstream Response as-is so
11
+ * the route can stream the body through without re-buffering. */
12
+ export declare const qwenpawChat: (options: IQwenpawChatOptions) => Promise<Response>;
13
+ /** POST /api/console/upload — multipart forward. The file lands in the
14
+ * agent workspace's media/ dir; the response `url` is the server path
15
+ * referenced by file items in the chat body. */
16
+ export declare const qwenpawUpload: (options: {
17
+ config: IQwenpawServerConfig;
18
+ target: {
19
+ baseUrl: string;
20
+ agentId: string;
21
+ };
22
+ /** Multipart body with the `file` part — built by the caller route. */
23
+ form: FormData;
24
+ signal?: AbortSignal;
25
+ timeoutMs?: number;
26
+ }) => Promise<IQwenpawUploadResult>;
27
+ /** POST /api/console/chat/stop?chat_id=… — asks the QwenPaw server to
28
+ * abort the in-flight run for one session. Returns whether a run was
29
+ * actually stopped (false when the session has nothing running). */
30
+ export declare const qwenpawStop: (options: {
31
+ config: IQwenpawServerConfig;
32
+ target: {
33
+ baseUrl: string;
34
+ agentId: string;
35
+ };
36
+ sessionId: string;
37
+ signal?: AbortSignal;
38
+ timeoutMs?: number;
39
+ }) => Promise<{
40
+ stopped: boolean;
41
+ }>;
42
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/qwenpaw/client.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAChD,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAIlB;AA8BD,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAarD,CAAC;AAEF;kEACkE;AAClE,eAAO,MAAM,WAAW,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,QAAQ,CA+ChF,CAAC;AAEF;;iDAEiD;AACjD,eAAO,MAAM,aAAa,GAAU,SAAS;IAC3C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,uEAAuE;IACvE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC,oBAAoB,CA6C/B,CAAC;AAEF;;qEAEqE;AACrE,eAAO,MAAM,WAAW,GAAU,SAAS;IACzC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA6B/B,CAAC"}
@@ -0,0 +1,236 @@
1
+ /** One conversation in the sidebar list. */
2
+ export interface IChatSummary {
3
+ /** QwenPaw chat id (history lookup). */
4
+ id: string;
5
+ /** QwenPaw auto-generated conversation title. */
6
+ name: string;
7
+ /** The session this app used for the conversation. */
8
+ sessionId: string;
9
+ updatedAt: string;
10
+ /** QwenPaw chat status — 'idle' when the agent is not mid-run. */
11
+ status?: string;
12
+ /** QwenPaw conversation group this chat belongs to. */
13
+ groupId?: string;
14
+ }
15
+ /** Sidebar grouping label for conversations. */
16
+ export interface IChatGroup {
17
+ id: string;
18
+ name: string;
19
+ order: number;
20
+ kind: string;
21
+ }
22
+ /** One display turn of a conversation (user or assistant text). */
23
+ export interface ICodingTurn {
24
+ id: string;
25
+ role: 'user' | 'assistant';
26
+ text: string;
27
+ /** Epoch ms — client clock for live turns, QwenPaw metadata for
28
+ * restored history. */
29
+ ts?: number;
30
+ streaming?: boolean;
31
+ error?: string;
32
+ /** Files attached to a user turn (display only). */
33
+ files?: Array<{
34
+ name: string;
35
+ size?: number;
36
+ }>;
37
+ }
38
+ /** Widget connection lifecycle — mirrors the exchange action outcomes. */
39
+ export type AiConnectState = 'connecting' | 'connected' | 'no-agent' | 'not-configured' | 'error';
40
+ /** Typed failure `code` from the exchange action (server `data.code`). */
41
+ export type AiConnectErrorCode = 'AI_NOT_AUTHENTICATED' | 'AI_AGENT_NOT_ASSIGNED' | 'AI_CREDENTIAL_NOT_CONFIGURED' | 'AI_SESSION_EXCHANGE_FAILED';
42
+ /** Status probe result (no secrets). */
43
+ export interface IQwenpawSessionStatus {
44
+ configured: boolean;
45
+ baseUrl: string;
46
+ agentId: string;
47
+ }
48
+ /** Exchange outcome after POST session. */
49
+ export interface IQwenpawConnectResult {
50
+ ok: boolean;
51
+ baseUrl: string;
52
+ agentId: string;
53
+ }
54
+ /** One file attached to a message — `url` is the server-side path
55
+ * returned by POST /api/console/upload. */
56
+ export interface IQwenpawFileRef {
57
+ url: string;
58
+ name: string;
59
+ size?: number;
60
+ }
61
+ /** Documented console-chat request body (matches the console UI capture). */
62
+ export interface IQwenpawChatRequest {
63
+ input: Array<{
64
+ role: 'user';
65
+ type: 'message';
66
+ content: Array<{
67
+ type: 'text';
68
+ text: string;
69
+ status: 'created';
70
+ } | {
71
+ type: 'file';
72
+ file_url: string;
73
+ file_name: string;
74
+ file_size?: number;
75
+ status: 'created';
76
+ }>;
77
+ metadata: {
78
+ qwenpaw_client_message_id: string;
79
+ };
80
+ }>;
81
+ session_id: string;
82
+ user_id: string;
83
+ channel: string;
84
+ request_context: {
85
+ source: 'console_chat';
86
+ agent_id: string;
87
+ chat_id: string;
88
+ sdk_session_id: string;
89
+ approval_level: 'AUTO';
90
+ };
91
+ stream: boolean;
92
+ }
93
+ /** Where a chat call runs — resolved per request server-side. */
94
+ export interface IQwenpawTarget {
95
+ baseUrl: string;
96
+ agentId: string;
97
+ sessionId: string;
98
+ userId: string;
99
+ }
100
+ export interface IQwenpawChatOptions {
101
+ /** Server default resolved from runtimeConfig (ops fallback). */
102
+ config: IQwenpawServerConfig;
103
+ target: IQwenpawTarget;
104
+ text: string;
105
+ files?: IQwenpawFileRef[];
106
+ /** Client disconnect propagation. */
107
+ signal?: AbortSignal;
108
+ /** Wall-clock budget for establishing the upstream response. */
109
+ timeoutMs?: number;
110
+ }
111
+ /** SSE wire event (mixed shapes — see stream.ts for the parsing rules). */
112
+ export interface IQwenpawContentPart {
113
+ type?: string;
114
+ text?: string;
115
+ delta?: boolean;
116
+ }
117
+ export interface IQwenpawSseEvent {
118
+ id?: string;
119
+ type?: string;
120
+ status?: string;
121
+ delta?: boolean;
122
+ text?: string;
123
+ object?: string;
124
+ msg_id?: string;
125
+ output?: Array<{
126
+ id?: string;
127
+ role?: string;
128
+ type?: string;
129
+ content?: IQwenpawContentPart[];
130
+ }>;
131
+ error?: {
132
+ message?: string;
133
+ } | string;
134
+ }
135
+ /** A normalized stream unit for the UI. */
136
+ export interface IQwenpawStreamChunk {
137
+ /** Action to apply to the rendered answer text. */
138
+ action: 'append' | 'replace';
139
+ text: string;
140
+ done: boolean;
141
+ /** Raw wire status when present. */
142
+ status?: string;
143
+ }
144
+ /** Per-stream mutable state shared across events. */
145
+ export interface IQwenpawParseState {
146
+ /** msg_ids that belong to reasoning messages — their deltas are skipped. */
147
+ reasoningMsgIds: Set<string>;
148
+ }
149
+ export type QwenpawTextMode = 'replace' | 'append';
150
+ /** QwenPaw chat summary as returned by GET /api/chats. */
151
+ export interface IQwenpawChatSummary {
152
+ id: string;
153
+ name: string;
154
+ session_id: string;
155
+ user_id: string;
156
+ status: string;
157
+ updated_at: string;
158
+ group_id?: string;
159
+ }
160
+ /** QwenPaw conversation group as returned by GET /api/chats/groups. */
161
+ export interface IQwenpawGroup {
162
+ id: string;
163
+ name: string;
164
+ order: number;
165
+ kind: string;
166
+ source: string;
167
+ pinned: boolean;
168
+ }
169
+ /** QwenPaw chat message as returned by GET /api/chats/{id}. */
170
+ export interface IQwenpawChatMessage {
171
+ id?: string;
172
+ type?: string;
173
+ role?: string;
174
+ status?: string;
175
+ content?: Array<{
176
+ type?: string;
177
+ text?: string;
178
+ }>;
179
+ metadata?: {
180
+ timestamp?: string;
181
+ qwenpaw_turn_usage?: {
182
+ usage?: {
183
+ model_name?: string;
184
+ };
185
+ };
186
+ };
187
+ }
188
+ /** Upload response from POST /api/console/upload. */
189
+ export interface IQwenpawUploadResult {
190
+ url: string;
191
+ file_name: string;
192
+ size: number;
193
+ }
194
+ /** Connection resolved server-side (cookies → env). Agents are reached
195
+ * pod-to-pod with web-auth disabled — no credential is carried. */
196
+ export interface IQwenpawResolvedConnection {
197
+ baseUrl: string;
198
+ agentId: string;
199
+ }
200
+ /** Server runtime config: `runtimeConfig.qwenpaw.*`. */
201
+ export interface IQwenpawServerConfig {
202
+ baseUrl: string;
203
+ agentId: string;
204
+ }
205
+ /** The action's own contract — arrives WRAPPED in the engine's
206
+ * `output` field (ActionExecutor → ActionResponse.output). */
207
+ export interface IQwenpawExchangeResult {
208
+ success: boolean;
209
+ error?: string;
210
+ code?: string;
211
+ agent?: {
212
+ agent_id: string;
213
+ base_url: string;
214
+ mode?: string;
215
+ status?: string;
216
+ };
217
+ session?: {
218
+ authorization?: string;
219
+ expires_at: number;
220
+ };
221
+ }
222
+ /** Envelope returned by POST /api/v1/content/types/{type}/actions/{action}
223
+ * (ActionResponse). The `session.authorization` value is ignored —
224
+ * in-cluster traffic needs no auth; only the TTL matters for cookies. */
225
+ export interface IQwenpawExchangeEnvelope {
226
+ success: boolean;
227
+ output?: IQwenpawExchangeResult | null;
228
+ error?: string | null;
229
+ }
230
+ /** Agent mode instruction hints. */
231
+ export type QwenpawAppMode = 'chat' | 'ask' | 'edit' | 'agent';
232
+ /** Wire event statuses emitted by the console-chat SSE stream. */
233
+ export type QwenpawWireStatus = 'created' | 'in_progress' | 'completed' | 'failed';
234
+ /** Build the verified request body for one user message. */
235
+ export declare const buildConsoleChatBody: (target: IQwenpawTarget, text: string, files?: IQwenpawFileRef[]) => IQwenpawChatRequest;
236
+ //# sourceMappingURL=qwenpaw.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwenpaw.type.d.ts","sourceRoot":"","sources":["../../../src/services/qwenpaw/qwenpaw.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { IQwenpawParseState, IQwenpawSseEvent, IQwenpawStreamChunk, QwenpawTextMode } from './qwenpaw.type';
2
+ export declare const createQwenpawParseState: () => IQwenpawParseState;
3
+ /** Feed one SSE `data:` payload — exported for tests. */
4
+ export declare const parseQwenpawDataLine: (line: string) => IQwenpawSseEvent | null;
5
+ /** Text from `output[]` — NON-reasoning items only. */
6
+ export declare const extractEventText: (event: IQwenpawSseEvent) => string;
7
+ /** Human message from an event's error field (object or bare string). */
8
+ export declare const extractEventError: (event: IQwenpawSseEvent) => string;
9
+ /** Normalize one wire event into a UI chunk (null = nothing to render). */
10
+ export declare const toStreamChunk: (event: IQwenpawSseEvent, textMode: QwenpawTextMode, state: IQwenpawParseState) => IQwenpawStreamChunk | null;
11
+ /**
12
+ * Read the SSE body line-by-line and emit normalized chunks. Resolves
13
+ * when the stream ends; throws `Error(message)` on a `failed` event.
14
+ */
15
+ export declare const iterateQwenpawEvents: (body: ReadableStream<Uint8Array>, onChunk: (chunk: IQwenpawStreamChunk) => void, textMode?: QwenpawTextMode, onRawEvent?: (raw: string) => void) => Promise<void>;
16
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/services/qwenpaw/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,uBAAuB,QAAO,kBAEzC,CAAC;AAEH,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,gBAAgB,GAAG,IAWtE,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,KAAG,MAU1D,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,GAAI,OAAO,gBAAgB,KAAG,MAK3D,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,aAAa,GACxB,OAAO,gBAAgB,EACvB,UAAU,eAAe,EACzB,OAAO,kBAAkB,KACxB,mBAAmB,GAAG,IAoCxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,cAAc,CAAC,UAAU,CAAC,EAChC,SAAS,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,EAC7C,WAAU,eAA2B,EACrC,aAAa,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KACjC,OAAO,CAAC,IAAI,CA+Bd,CAAC"}
@@ -13,4 +13,5 @@ export { useLlmProvidersStore } from './llm-providers';
13
13
  export { useGovStore } from './gov';
14
14
  export { usePeopleStore } from './people';
15
15
  export { useWsStore } from './ws';
16
+ export { useQwenpawChatStore } from './qwenpawChat';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,219 @@
1
+ import { AiConnectState, IChatGroup, IChatSummary, ICodingTurn, IQwenpawConnectResult, IQwenpawSessionStatus } from '../services/qwenpaw/qwenpaw.type';
2
+ export declare const useQwenpawChatStore: import('pinia').StoreDefinition<"qwenpawChat", Pick<{
3
+ chats: import('vue').Ref<{
4
+ id: string;
5
+ name: string;
6
+ sessionId: string;
7
+ updatedAt: string;
8
+ status?: string | undefined;
9
+ groupId?: string | undefined;
10
+ }[], IChatSummary[] | {
11
+ id: string;
12
+ name: string;
13
+ sessionId: string;
14
+ updatedAt: string;
15
+ status?: string | undefined;
16
+ groupId?: string | undefined;
17
+ }[]>;
18
+ groups: import('vue').Ref<{
19
+ id: string;
20
+ name: string;
21
+ order: number;
22
+ kind: string;
23
+ }[], IChatGroup[] | {
24
+ id: string;
25
+ name: string;
26
+ order: number;
27
+ kind: string;
28
+ }[]>;
29
+ agentId: import('vue').Ref<string, string>;
30
+ model: import('vue').Ref<string, string>;
31
+ isLoadingChats: import('vue').Ref<boolean, boolean>;
32
+ activeSession: import('vue').Ref<string, string>;
33
+ activeChatId: import('vue').Ref<string, string>;
34
+ activeChatName: import('vue').Ref<string, string>;
35
+ turns: import('vue').Ref<{
36
+ id: string;
37
+ role: "user" | "assistant";
38
+ text: string;
39
+ ts?: number | undefined;
40
+ streaming?: boolean | undefined;
41
+ error?: string | undefined;
42
+ files?: {
43
+ name: string;
44
+ size?: number | undefined;
45
+ }[] | undefined;
46
+ }[], ICodingTurn[] | {
47
+ id: string;
48
+ role: "user" | "assistant";
49
+ text: string;
50
+ ts?: number | undefined;
51
+ streaming?: boolean | undefined;
52
+ error?: string | undefined;
53
+ files?: {
54
+ name: string;
55
+ size?: number | undefined;
56
+ }[] | undefined;
57
+ }[]>;
58
+ status: import('vue').Ref<"error" | "idle" | "streaming", "error" | "idle" | "streaming">;
59
+ isStreaming: import('vue').ComputedRef<boolean>;
60
+ errorMessage: import('vue').Ref<string, string>;
61
+ connectState: import('vue').Ref<AiConnectState, AiConnectState>;
62
+ probeConnection: () => Promise<IQwenpawSessionStatus>;
63
+ connect: () => Promise<IQwenpawConnectResult>;
64
+ ensureConnection: () => Promise<boolean>;
65
+ aiConnectStateFromError: (error: unknown) => AiConnectState;
66
+ loadChats: () => Promise<void>;
67
+ openChat: (chat: IChatSummary) => Promise<void>;
68
+ newChat: () => void;
69
+ send: (text: string, files?: File[]) => Promise<void>;
70
+ stop: () => void;
71
+ resendLast: () => void;
72
+ clearError: () => void;
73
+ deleteChat: (chatId: string) => Promise<void>;
74
+ }, "status" | "model" | "errorMessage" | "groups" | "chats" | "agentId" | "isLoadingChats" | "activeSession" | "activeChatId" | "activeChatName" | "turns" | "connectState">, Pick<{
75
+ chats: import('vue').Ref<{
76
+ id: string;
77
+ name: string;
78
+ sessionId: string;
79
+ updatedAt: string;
80
+ status?: string | undefined;
81
+ groupId?: string | undefined;
82
+ }[], IChatSummary[] | {
83
+ id: string;
84
+ name: string;
85
+ sessionId: string;
86
+ updatedAt: string;
87
+ status?: string | undefined;
88
+ groupId?: string | undefined;
89
+ }[]>;
90
+ groups: import('vue').Ref<{
91
+ id: string;
92
+ name: string;
93
+ order: number;
94
+ kind: string;
95
+ }[], IChatGroup[] | {
96
+ id: string;
97
+ name: string;
98
+ order: number;
99
+ kind: string;
100
+ }[]>;
101
+ agentId: import('vue').Ref<string, string>;
102
+ model: import('vue').Ref<string, string>;
103
+ isLoadingChats: import('vue').Ref<boolean, boolean>;
104
+ activeSession: import('vue').Ref<string, string>;
105
+ activeChatId: import('vue').Ref<string, string>;
106
+ activeChatName: import('vue').Ref<string, string>;
107
+ turns: import('vue').Ref<{
108
+ id: string;
109
+ role: "user" | "assistant";
110
+ text: string;
111
+ ts?: number | undefined;
112
+ streaming?: boolean | undefined;
113
+ error?: string | undefined;
114
+ files?: {
115
+ name: string;
116
+ size?: number | undefined;
117
+ }[] | undefined;
118
+ }[], ICodingTurn[] | {
119
+ id: string;
120
+ role: "user" | "assistant";
121
+ text: string;
122
+ ts?: number | undefined;
123
+ streaming?: boolean | undefined;
124
+ error?: string | undefined;
125
+ files?: {
126
+ name: string;
127
+ size?: number | undefined;
128
+ }[] | undefined;
129
+ }[]>;
130
+ status: import('vue').Ref<"error" | "idle" | "streaming", "error" | "idle" | "streaming">;
131
+ isStreaming: import('vue').ComputedRef<boolean>;
132
+ errorMessage: import('vue').Ref<string, string>;
133
+ connectState: import('vue').Ref<AiConnectState, AiConnectState>;
134
+ probeConnection: () => Promise<IQwenpawSessionStatus>;
135
+ connect: () => Promise<IQwenpawConnectResult>;
136
+ ensureConnection: () => Promise<boolean>;
137
+ aiConnectStateFromError: (error: unknown) => AiConnectState;
138
+ loadChats: () => Promise<void>;
139
+ openChat: (chat: IChatSummary) => Promise<void>;
140
+ newChat: () => void;
141
+ send: (text: string, files?: File[]) => Promise<void>;
142
+ stop: () => void;
143
+ resendLast: () => void;
144
+ clearError: () => void;
145
+ deleteChat: (chatId: string) => Promise<void>;
146
+ }, "isStreaming">, Pick<{
147
+ chats: import('vue').Ref<{
148
+ id: string;
149
+ name: string;
150
+ sessionId: string;
151
+ updatedAt: string;
152
+ status?: string | undefined;
153
+ groupId?: string | undefined;
154
+ }[], IChatSummary[] | {
155
+ id: string;
156
+ name: string;
157
+ sessionId: string;
158
+ updatedAt: string;
159
+ status?: string | undefined;
160
+ groupId?: string | undefined;
161
+ }[]>;
162
+ groups: import('vue').Ref<{
163
+ id: string;
164
+ name: string;
165
+ order: number;
166
+ kind: string;
167
+ }[], IChatGroup[] | {
168
+ id: string;
169
+ name: string;
170
+ order: number;
171
+ kind: string;
172
+ }[]>;
173
+ agentId: import('vue').Ref<string, string>;
174
+ model: import('vue').Ref<string, string>;
175
+ isLoadingChats: import('vue').Ref<boolean, boolean>;
176
+ activeSession: import('vue').Ref<string, string>;
177
+ activeChatId: import('vue').Ref<string, string>;
178
+ activeChatName: import('vue').Ref<string, string>;
179
+ turns: import('vue').Ref<{
180
+ id: string;
181
+ role: "user" | "assistant";
182
+ text: string;
183
+ ts?: number | undefined;
184
+ streaming?: boolean | undefined;
185
+ error?: string | undefined;
186
+ files?: {
187
+ name: string;
188
+ size?: number | undefined;
189
+ }[] | undefined;
190
+ }[], ICodingTurn[] | {
191
+ id: string;
192
+ role: "user" | "assistant";
193
+ text: string;
194
+ ts?: number | undefined;
195
+ streaming?: boolean | undefined;
196
+ error?: string | undefined;
197
+ files?: {
198
+ name: string;
199
+ size?: number | undefined;
200
+ }[] | undefined;
201
+ }[]>;
202
+ status: import('vue').Ref<"error" | "idle" | "streaming", "error" | "idle" | "streaming">;
203
+ isStreaming: import('vue').ComputedRef<boolean>;
204
+ errorMessage: import('vue').Ref<string, string>;
205
+ connectState: import('vue').Ref<AiConnectState, AiConnectState>;
206
+ probeConnection: () => Promise<IQwenpawSessionStatus>;
207
+ connect: () => Promise<IQwenpawConnectResult>;
208
+ ensureConnection: () => Promise<boolean>;
209
+ aiConnectStateFromError: (error: unknown) => AiConnectState;
210
+ loadChats: () => Promise<void>;
211
+ openChat: (chat: IChatSummary) => Promise<void>;
212
+ newChat: () => void;
213
+ send: (text: string, files?: File[]) => Promise<void>;
214
+ stop: () => void;
215
+ resendLast: () => void;
216
+ clearError: () => void;
217
+ deleteChat: (chatId: string) => Promise<void>;
218
+ }, "stop" | "send" | "probeConnection" | "connect" | "ensureConnection" | "aiConnectStateFromError" | "loadChats" | "openChat" | "newChat" | "resendLast" | "clearError" | "deleteChat">>;
219
+ //# sourceMappingURL=qwenpawChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwenpawChat.d.ts","sourceRoot":"","sources":["../../src/stores/qwenpawChat.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACX,qBAAqB,EAErB,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAO1C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmBI,OAAO,CAAC,qBAAqB,CAAC;mBAGtC,OAAO,CAAC,qBAAqB,CAAC;4BAarB,OAAO,CAAC,OAAO,CAAC;qCAoBX,OAAO,KAAG,cAAc;;qBA8BlC,YAAY;;iBA6FhB,MAAM,UAAS,IAAI,EAAE;;;;yBAiGb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAhQN,OAAO,CAAC,qBAAqB,CAAC;mBAGtC,OAAO,CAAC,qBAAqB,CAAC;4BAarB,OAAO,CAAC,OAAO,CAAC;qCAoBX,OAAO,KAAG,cAAc;;qBA8BlC,YAAY;;iBA6FhB,MAAM,UAAS,IAAI,EAAE;;;;yBAiGb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAhQN,OAAO,CAAC,qBAAqB,CAAC;mBAGtC,OAAO,CAAC,qBAAqB,CAAC;4BAarB,OAAO,CAAC,OAAO,CAAC;qCAoBX,OAAO,KAAG,cAAc;;qBA8BlC,YAAY;;iBA6FhB,MAAM,UAAS,IAAI,EAAE;;;;yBAiGb,MAAM;yLAiCxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eaera-com/cms-sdk",
3
- "version": "0.1.91",
3
+ "version": "0.1.93",
4
4
  "description": "EAERA CMS SDK — data access layer for Nuxt 3 apps (ofetch + Pinia + typed services)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",