@h-ai/serv 0.1.0-alpha.45 → 0.1.0-alpha.47
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 +61 -64
- package/dist/chunk-KIWHKWLD.js +317 -0
- package/dist/chunk-KIWHKWLD.js.map +1 -0
- package/dist/features/ai.d.ts +20 -21
- package/dist/features/ai.js +14 -31
- package/dist/features/ai.js.map +1 -1
- package/dist/features/iam.d.ts +58 -58
- package/dist/features/iam.js +38 -97
- package/dist/features/iam.js.map +1 -1
- package/dist/features/storage.d.ts +18 -19
- package/dist/features/storage.js +39 -44
- package/dist/features/storage.js.map +1 -1
- package/dist/index.d.ts +102 -122
- package/dist/index.js +3 -19
- package/dist/index.js.map +1 -1
- package/dist/{serv-context-BUrtWoFC.d.ts → serv-context-jc3rZxbj.d.ts} +2 -2
- package/package.json +10 -10
- package/dist/chunk-4QBF4PUG.js +0 -128
- package/dist/chunk-4QBF4PUG.js.map +0 -1
- package/dist/chunk-YQV2OMQK.js +0 -16
- package/dist/chunk-YQV2OMQK.js.map +0 -1
package/dist/features/ai.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _orpc_server from '@orpc/server';
|
|
2
2
|
import * as zod_v4_core from 'zod/v4/core';
|
|
3
3
|
import * as zod from 'zod';
|
|
4
|
-
import * as _orpc_server from '@orpc/server';
|
|
5
4
|
import { AIFunctions } from '@h-ai/ai';
|
|
6
|
-
import { a as ServContext } from '../serv-context-
|
|
5
|
+
import { a as ServContext } from '../serv-context-jc3rZxbj.js';
|
|
7
6
|
import '@h-ai/core';
|
|
8
7
|
|
|
9
8
|
/** AI 默认 procedures 依赖。 */
|
|
@@ -12,8 +11,8 @@ interface AiProcedureDeps {
|
|
|
12
11
|
}
|
|
13
12
|
/** 创建 AI 默认 procedures。 */
|
|
14
13
|
declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
15
|
-
chats: {
|
|
16
|
-
createCompletion: _orpc_server.
|
|
14
|
+
chats: _orpc_server.Lazyable<{
|
|
15
|
+
createCompletion: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
17
16
|
model: zod.ZodOptional<zod.ZodString>;
|
|
18
17
|
messages: zod.ZodArray<zod.ZodObject<{
|
|
19
18
|
role: zod.ZodEnum<{
|
|
@@ -119,8 +118,8 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
119
118
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
120
119
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
121
120
|
}, zod_v4_core.$strip>;
|
|
122
|
-
}, zod_v4_core.$strip>], "success">,
|
|
123
|
-
sendMessage: _orpc_server.
|
|
121
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
122
|
+
sendMessage: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
124
123
|
message: zod.ZodString;
|
|
125
124
|
systemPrompt: zod.ZodOptional<zod.ZodString>;
|
|
126
125
|
model: zod.ZodOptional<zod.ZodString>;
|
|
@@ -148,8 +147,8 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
148
147
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
149
148
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
150
149
|
}, zod_v4_core.$strip>;
|
|
151
|
-
}, zod_v4_core.$strip>], "success">,
|
|
152
|
-
listHistory: _orpc_server.
|
|
150
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
151
|
+
listHistory: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
153
152
|
objectId: zod.ZodString;
|
|
154
153
|
sessionId: zod.ZodString;
|
|
155
154
|
limit: zod.ZodOptional<zod.ZodNumber>;
|
|
@@ -232,10 +231,10 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
232
231
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
233
232
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
234
233
|
}, zod_v4_core.$strip>;
|
|
235
|
-
}, zod_v4_core.$strip>], "success">,
|
|
236
|
-
}
|
|
237
|
-
memories: {
|
|
238
|
-
recall: _orpc_server.
|
|
234
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
235
|
+
}>;
|
|
236
|
+
memories: _orpc_server.Lazyable<{
|
|
237
|
+
recall: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
239
238
|
query: zod.ZodString;
|
|
240
239
|
topK: zod.ZodOptional<zod.ZodNumber>;
|
|
241
240
|
types: zod.ZodOptional<zod.ZodArray<zod.ZodEnum<{
|
|
@@ -280,8 +279,8 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
280
279
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
281
280
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
282
281
|
}, zod_v4_core.$strip>;
|
|
283
|
-
}, zod_v4_core.$strip>], "success">,
|
|
284
|
-
list: _orpc_server.
|
|
282
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
283
|
+
list: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
285
284
|
types: zod.ZodOptional<zod.ZodArray<zod.ZodEnum<{
|
|
286
285
|
instruction: "instruction";
|
|
287
286
|
fact: "fact";
|
|
@@ -326,10 +325,10 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
326
325
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
327
326
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
328
327
|
}, zod_v4_core.$strip>;
|
|
329
|
-
}, zod_v4_core.$strip>], "success">,
|
|
330
|
-
}
|
|
331
|
-
sessions: {
|
|
332
|
-
list: _orpc_server.
|
|
328
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
329
|
+
}>;
|
|
330
|
+
sessions: _orpc_server.Lazyable<{
|
|
331
|
+
list: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
333
332
|
objectId: zod.ZodString;
|
|
334
333
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
335
334
|
success: zod.ZodLiteral<true>;
|
|
@@ -354,8 +353,8 @@ declare function createAiProcedures(deps: AiProcedureDeps): {
|
|
|
354
353
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
355
354
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
356
355
|
}, zod_v4_core.$strip>;
|
|
357
|
-
}, zod_v4_core.$strip>], "success">,
|
|
358
|
-
}
|
|
356
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
357
|
+
}>;
|
|
359
358
|
};
|
|
360
359
|
|
|
361
360
|
export { type AiProcedureDeps, createAiProcedures };
|
package/dist/features/ai.js
CHANGED
|
@@ -1,40 +1,23 @@
|
|
|
1
1
|
import { wrapItemsResult } from '../chunk-27PCPE37.js';
|
|
2
|
-
import {
|
|
2
|
+
import { implement } from '../chunk-KIWHKWLD.js';
|
|
3
3
|
import { apiContract } from '@h-ai/api-contract';
|
|
4
4
|
import { ok } from '@h-ai/core';
|
|
5
|
-
import { implement } from '@orpc/server';
|
|
6
5
|
|
|
7
6
|
var aiContract = apiContract.ai;
|
|
8
7
|
function createAiProcedures(deps) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
memories: {
|
|
24
|
-
recall: p.memories.recall.handler(requireAuth(async ({ input }) => {
|
|
25
|
-
const { query, ...options } = input;
|
|
26
|
-
return wrapItemsResult(await deps.ai.memory.recall(query, options));
|
|
27
|
-
})),
|
|
28
|
-
list: p.memories.list.handler(requireAuth(async ({ input }) => {
|
|
29
|
-
return deps.ai.memory.listPage(input);
|
|
30
|
-
}))
|
|
31
|
-
},
|
|
32
|
-
sessions: {
|
|
33
|
-
list: p.sessions.list.handler(requireAuth(async ({ input }) => {
|
|
34
|
-
return wrapItemsResult(await deps.ai.llm.listSessions(input.objectId));
|
|
35
|
-
}))
|
|
36
|
-
}
|
|
37
|
-
});
|
|
8
|
+
return implement(aiContract).context().route("chats.createCompletion").auth().handle(async ({ input }) => {
|
|
9
|
+
return mapChatCompletionResult(await deps.ai.llm.chat(toChatCompletionRequest(input)));
|
|
10
|
+
}).route("chats.sendMessage").auth().handle(({ input }) => sendMessage(deps, input)).route("chats.listHistory").auth().handle(async ({ input }) => {
|
|
11
|
+
const { objectId, sessionId, limit, order } = input;
|
|
12
|
+
return mapChatRecordsResult(
|
|
13
|
+
await deps.ai.llm.getHistory({ objectId, sessionId }, { limit, order })
|
|
14
|
+
);
|
|
15
|
+
}).route("memories.recall").auth().handle(async ({ input }) => {
|
|
16
|
+
const { query, ...options } = input;
|
|
17
|
+
return wrapItemsResult(await deps.ai.memory.recall(query, options));
|
|
18
|
+
}).route("memories.list").auth().handle(({ input }) => deps.ai.memory.listPage(input)).route("sessions.list").auth().handle(async ({ input }) => {
|
|
19
|
+
return wrapItemsResult(await deps.ai.llm.listSessions(input.objectId));
|
|
20
|
+
}).build();
|
|
38
21
|
}
|
|
39
22
|
function toChatCompletionRequest(input) {
|
|
40
23
|
return {
|
package/dist/features/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/serv-feature-ai.ts"],"names":[],"mappings":"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","file":"ai.js","sourcesContent":["/**\n * @h-ai/serv — AI 默认 procedures\n *\n * 基于 `@h-ai/ai` 提供开箱即用的 AI procedures 实现:对话补全、消息发送、聊天历史、记忆管理、会话列表。\n * 通过 `createAiProcedures(deps)` 组装后直接挂载到 oRPC router。\n * @module features/serv-feature-ai\n */\n\nimport type {\n AIFunctions,\n ChatCompletionRequest,\n ChatCompletionResponse,\n ChatMessage,\n MemoryEntry,\n SessionInfo,\n ToolCall,\n} from '@h-ai/ai'\nimport type {\n AiChatCompletionData,\n AiChatCompletionInput,\n AiChatHistoryInput,\n AiChatRecord,\n AiMemoryListInput,\n AiMemoryRecallInput,\n AiSendMessageInput,\n AiSessionListInput,\n} from '@h-ai/api-contract'\nimport type { HaiResult } from '@h-ai/core'\nimport type { ServContext } from '../serv-context.js'\nimport { apiContract } from '@h-ai/api-contract'\nimport { ok } from '@h-ai/core'\nimport { implement } from '@orpc/server'\nimport { requireAuth } from '../pipelines/serv-pipeline-require-auth.js'\nimport { wrapItemsResult } from './serv-feature-helpers.js'\n\nconst aiContract = apiContract.ai\n\n/** AI 默认 procedures 依赖。 */\nexport interface AiProcedureDeps {\n readonly ai: AIFunctions\n}\n\n/** 创建 AI 默认 procedures。 */\nexport function createAiProcedures(deps: AiProcedureDeps) {\n const p = implement(aiContract).$context<ServContext>()\n\n return p.router({\n chats: {\n createCompletion: p.chats.createCompletion.handler(requireAuth<AiChatCompletionInput, AiChatCompletionData>(async ({ input }) => {\n return mapChatCompletionResult(await deps.ai.llm.chat(toChatCompletionRequest(input)))\n })),\n sendMessage: p.chats.sendMessage.handler(requireAuth<AiSendMessageInput, { content: string, model: string }>(async ({ input }) => {\n return sendMessage(deps, input)\n })),\n listHistory: p.chats.listHistory.handler(requireAuth<AiChatHistoryInput, { items: AiChatRecord[] }>(async ({ input }) => {\n const { objectId, sessionId, limit, order } = input\n return mapChatRecordsResult(await deps.ai.llm.getHistory({ objectId, sessionId }, { limit, order }))\n })),\n },\n memories: {\n recall: p.memories.recall.handler(requireAuth<AiMemoryRecallInput, { items: MemoryEntry[] }>(async ({ input }) => {\n const { query, ...options } = input\n return wrapItemsResult(await deps.ai.memory.recall(query, options))\n })),\n list: p.memories.list.handler(requireAuth<AiMemoryListInput, { items: MemoryEntry[], total: number }>(async ({ input }) => {\n return deps.ai.memory.listPage(input)\n })),\n },\n sessions: {\n list: p.sessions.list.handler(requireAuth<AiSessionListInput, { items: SessionInfo[] }>(async ({ input }) => {\n return wrapItemsResult(await deps.ai.llm.listSessions(input.objectId))\n })),\n },\n })\n}\n\nfunction toChatCompletionRequest(input: AiChatCompletionInput): ChatCompletionRequest {\n return {\n messages: input.messages.map(toChatMessage),\n model: input.model,\n temperature: input.temperature,\n top_p: input.top_p,\n max_tokens: input.max_tokens,\n }\n}\n\nfunction toChatMessage(message: AiChatCompletionInput['messages'][number]): ChatMessage {\n if (message.role === 'system') {\n return { role: 'system', content: toMessageText(message.content) }\n }\n\n if (message.role === 'user') {\n return { role: 'user', content: message.content ?? '' }\n }\n\n if (message.role === 'tool') {\n return { role: 'tool', content: toMessageText(message.content), tool_call_id: message.tool_call_id ?? '' }\n }\n\n return {\n role: 'assistant',\n content: toAssistantContent(message.content),\n tool_calls: message.tool_calls,\n }\n}\n\nfunction toMessageText(content: AiChatCompletionInput['messages'][number]['content']): string {\n if (typeof content === 'string') {\n return content\n }\n\n return content?.map(part => part.type === 'text' ? part.text : part.image_url.url).join('\\n') ?? ''\n}\n\nfunction toAssistantContent(content: AiChatCompletionInput['messages'][number]['content']): string | null {\n if (typeof content === 'string') {\n return content\n }\n\n return content ? toMessageText(content) : null\n}\n\nfunction mapChatCompletionResult(result: HaiResult<ChatCompletionResponse>): HaiResult<AiChatCompletionData> {\n if (!result.success) {\n return result\n }\n\n return ok({\n id: result.data.id,\n object: 'chat.completion',\n created: result.data.created,\n model: result.data.model,\n choices: result.data.choices.map(choice => ({\n index: choice.index,\n message: {\n role: 'assistant',\n content: choice.message.content ?? null,\n tool_calls: mapFunctionToolCalls(choice.message.tool_calls),\n },\n finish_reason: toApiFinishReason(choice.finish_reason),\n })),\n usage: {\n prompt_tokens: result.data.usage?.prompt_tokens ?? 0,\n completion_tokens: result.data.usage?.completion_tokens ?? 0,\n total_tokens: result.data.usage?.total_tokens ?? 0,\n },\n })\n}\n\nfunction toApiFinishReason(reason: string | null): AiChatCompletionData['choices'][number]['finish_reason'] {\n if (reason === 'length' || reason === 'tool_calls' || reason === 'content_filter') {\n return reason\n }\n\n return 'stop'\n}\n\nfunction mapChatRecordsResult(result: HaiResult<Array<import('@h-ai/ai').ChatRecord>>): HaiResult<{ items: AiChatRecord[] }> {\n if (!result.success) {\n return result\n }\n\n return ok({ items: result.data.map(toApiChatRecord) })\n}\n\nfunction toApiChatRecord(record: import('@h-ai/ai').ChatRecord): AiChatRecord {\n return {\n id: record.id,\n objectId: record.objectId,\n sessionId: record.sessionId,\n request: {\n model: record.request.model,\n messages: record.request.messages.map(toApiChatMessage),\n },\n response: {\n content: record.response.content,\n toolCalls: mapFunctionToolCalls(record.response.toolCalls),\n finishReason: record.response.finishReason,\n usage: {\n prompt_tokens: record.response.usage.prompt_tokens,\n completion_tokens: record.response.usage.completion_tokens,\n total_tokens: record.response.usage.total_tokens,\n },\n },\n createdAt: record.createdAt,\n duration: record.duration,\n }\n}\n\nfunction toApiChatMessage(message: ChatMessage): AiChatCompletionInput['messages'][number] {\n if (message.role === 'tool') {\n return { role: 'tool', content: toContentText(message.content), tool_call_id: message.tool_call_id }\n }\n\n if (message.role === 'assistant') {\n return {\n role: 'assistant',\n content: toContentText(message.content),\n tool_calls: mapFunctionToolCalls(message.tool_calls),\n }\n }\n\n if (message.role === 'user') {\n return { role: 'user', content: toContentText(message.content) }\n }\n\n return { role: 'system', content: toContentText(message.content) }\n}\n\nfunction toContentText(content: unknown): string {\n if (typeof content === 'string') {\n return content\n }\n\n if (!Array.isArray(content)) {\n return ''\n }\n\n return content.map((part) => {\n if (typeof part !== 'object' || part === null) {\n return ''\n }\n\n const record = part as Record<string, unknown>\n if (typeof record.text === 'string') {\n return record.text\n }\n\n if (typeof record.image_url === 'object' && record.image_url !== null) {\n const image = record.image_url as Record<string, unknown>\n return typeof image.url === 'string' ? image.url : ''\n }\n\n return ''\n }).filter(Boolean).join('\\n')\n}\n\nfunction mapFunctionToolCalls(toolCalls: ToolCall[] | undefined) {\n return toolCalls?.flatMap((toolCall) => {\n if (toolCall.type !== 'function' || !('function' in toolCall)) {\n return []\n }\n\n return [{\n id: toolCall.id,\n type: 'function' as const,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n },\n }]\n })\n}\n\nasync function sendMessage(deps: AiProcedureDeps, input: AiSendMessageInput): Promise<HaiResult<{ content: string, model: string }>> {\n const result = await deps.ai.llm.ask(input.message, {\n systemPrompt: input.systemPrompt,\n model: input.model,\n temperature: input.temperature,\n })\n\n if (!result.success) {\n return result\n }\n\n return ok({\n content: result.data,\n model: input.model ?? deps.ai.config?.llm.model ?? 'default',\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/features/serv-feature-ai.ts"],"names":[],"mappings":"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","file":"ai.js","sourcesContent":["/**\n * @h-ai/serv — AI 默认 procedures\n *\n * 基于 `@h-ai/ai` 提供开箱即用的 AI procedures 实现:对话补全、消息发送、聊天历史、记忆管理、会话列表。\n * @module features/serv-feature-ai\n */\n\nimport type {\n AIFunctions,\n ChatCompletionRequest,\n ChatCompletionResponse,\n ChatMessage,\n ToolCall,\n} from '@h-ai/ai'\nimport type {\n AiChatCompletionData,\n AiChatCompletionInput,\n AiChatRecord,\n AiSendMessageInput,\n} from '@h-ai/api-contract'\nimport type { HaiResult } from '@h-ai/core'\nimport type { ServContext } from '../serv-context.js'\nimport { apiContract } from '@h-ai/api-contract'\nimport { ok } from '@h-ai/core'\nimport { implement } from '../serv-router.js'\nimport { wrapItemsResult } from './serv-feature-helpers.js'\n\nconst aiContract = apiContract.ai\n\n/** AI 默认 procedures 依赖。 */\nexport interface AiProcedureDeps {\n readonly ai: AIFunctions\n}\n\n/** 创建 AI 默认 procedures。 */\nexport function createAiProcedures(deps: AiProcedureDeps) {\n return implement(aiContract)\n .context<ServContext>()\n\n .route('chats.createCompletion')\n .auth()\n .handle(async ({ input }) => {\n return mapChatCompletionResult(await deps.ai.llm.chat(toChatCompletionRequest(input)))\n })\n\n .route('chats.sendMessage')\n .auth()\n .handle(({ input }) => sendMessage(deps, input))\n\n .route('chats.listHistory')\n .auth()\n .handle(async ({ input }) => {\n const { objectId, sessionId, limit, order } = input\n return mapChatRecordsResult(\n await deps.ai.llm.getHistory({ objectId, sessionId }, { limit, order }),\n )\n })\n\n .route('memories.recall')\n .auth()\n .handle(async ({ input }) => {\n const { query, ...options } = input\n return wrapItemsResult(await deps.ai.memory.recall(query, options))\n })\n\n .route('memories.list')\n .auth()\n .handle(({ input }) => deps.ai.memory.listPage(input))\n\n .route('sessions.list')\n .auth()\n .handle(async ({ input }) => {\n return wrapItemsResult(await deps.ai.llm.listSessions(input.objectId))\n })\n\n .build()\n}\n\nfunction toChatCompletionRequest(input: AiChatCompletionInput): ChatCompletionRequest {\n return {\n messages: input.messages.map(toChatMessage),\n model: input.model,\n temperature: input.temperature,\n top_p: input.top_p,\n max_tokens: input.max_tokens,\n }\n}\n\nfunction toChatMessage(message: AiChatCompletionInput['messages'][number]): ChatMessage {\n if (message.role === 'system') {\n return { role: 'system', content: toMessageText(message.content) }\n }\n\n if (message.role === 'user') {\n return { role: 'user', content: message.content ?? '' }\n }\n\n if (message.role === 'tool') {\n return { role: 'tool', content: toMessageText(message.content), tool_call_id: message.tool_call_id ?? '' }\n }\n\n return {\n role: 'assistant',\n content: toAssistantContent(message.content),\n tool_calls: message.tool_calls,\n }\n}\n\nfunction toMessageText(content: AiChatCompletionInput['messages'][number]['content']): string {\n if (typeof content === 'string') {\n return content\n }\n\n return content?.map(part => part.type === 'text' ? part.text : part.image_url.url).join('\\n') ?? ''\n}\n\nfunction toAssistantContent(content: AiChatCompletionInput['messages'][number]['content']): string | null {\n if (typeof content === 'string') {\n return content\n }\n\n return content ? toMessageText(content) : null\n}\n\nfunction mapChatCompletionResult(result: HaiResult<ChatCompletionResponse>): HaiResult<AiChatCompletionData> {\n if (!result.success) {\n return result\n }\n\n return ok({\n id: result.data.id,\n object: 'chat.completion',\n created: result.data.created,\n model: result.data.model,\n choices: result.data.choices.map(choice => ({\n index: choice.index,\n message: {\n role: 'assistant',\n content: choice.message.content ?? null,\n tool_calls: mapFunctionToolCalls(choice.message.tool_calls),\n },\n finish_reason: toApiFinishReason(choice.finish_reason),\n })),\n usage: {\n prompt_tokens: result.data.usage?.prompt_tokens ?? 0,\n completion_tokens: result.data.usage?.completion_tokens ?? 0,\n total_tokens: result.data.usage?.total_tokens ?? 0,\n },\n })\n}\n\nfunction toApiFinishReason(reason: string | null): AiChatCompletionData['choices'][number]['finish_reason'] {\n if (reason === 'length' || reason === 'tool_calls' || reason === 'content_filter') {\n return reason\n }\n\n return 'stop'\n}\n\nfunction mapChatRecordsResult(result: HaiResult<Array<import('@h-ai/ai').ChatRecord>>): HaiResult<{ items: AiChatRecord[] }> {\n if (!result.success) {\n return result\n }\n\n return ok({ items: result.data.map(toApiChatRecord) })\n}\n\nfunction toApiChatRecord(record: import('@h-ai/ai').ChatRecord): AiChatRecord {\n return {\n id: record.id,\n objectId: record.objectId,\n sessionId: record.sessionId,\n request: {\n model: record.request.model,\n messages: record.request.messages.map(toApiChatMessage),\n },\n response: {\n content: record.response.content,\n toolCalls: mapFunctionToolCalls(record.response.toolCalls),\n finishReason: record.response.finishReason,\n usage: {\n prompt_tokens: record.response.usage.prompt_tokens,\n completion_tokens: record.response.usage.completion_tokens,\n total_tokens: record.response.usage.total_tokens,\n },\n },\n createdAt: record.createdAt,\n duration: record.duration,\n }\n}\n\nfunction toApiChatMessage(message: ChatMessage): AiChatCompletionInput['messages'][number] {\n if (message.role === 'tool') {\n return { role: 'tool', content: toContentText(message.content), tool_call_id: message.tool_call_id }\n }\n\n if (message.role === 'assistant') {\n return {\n role: 'assistant',\n content: toContentText(message.content),\n tool_calls: mapFunctionToolCalls(message.tool_calls),\n }\n }\n\n if (message.role === 'user') {\n return { role: 'user', content: toContentText(message.content) }\n }\n\n return { role: 'system', content: toContentText(message.content) }\n}\n\nfunction toContentText(content: unknown): string {\n if (typeof content === 'string') {\n return content\n }\n\n if (!Array.isArray(content)) {\n return ''\n }\n\n return content.map((part) => {\n if (typeof part !== 'object' || part === null) {\n return ''\n }\n\n const record = part as Record<string, unknown>\n if (typeof record.text === 'string') {\n return record.text\n }\n\n if (typeof record.image_url === 'object' && record.image_url !== null) {\n const image = record.image_url as Record<string, unknown>\n return typeof image.url === 'string' ? image.url : ''\n }\n\n return ''\n }).filter(Boolean).join('\\n')\n}\n\nfunction mapFunctionToolCalls(toolCalls: ToolCall[] | undefined) {\n return toolCalls?.flatMap((toolCall) => {\n if (toolCall.type !== 'function' || !('function' in toolCall)) {\n return []\n }\n\n return [{\n id: toolCall.id,\n type: 'function' as const,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n },\n }]\n })\n}\n\nasync function sendMessage(\n deps: AiProcedureDeps,\n input: AiSendMessageInput,\n): Promise<HaiResult<{ content: string, model: string }>> {\n const result = await deps.ai.llm.ask(input.message, {\n systemPrompt: input.systemPrompt,\n model: input.model,\n temperature: input.temperature,\n })\n\n if (!result.success) {\n return result\n }\n\n return ok({\n content: result.data,\n model: input.model ?? deps.ai.config?.llm.model ?? 'default',\n })\n}\n"]}
|
package/dist/features/iam.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as _orpc_contract from '@orpc/contract';
|
|
2
|
+
import * as _orpc_server from '@orpc/server';
|
|
2
3
|
import * as zod_v4_core from 'zod/v4/core';
|
|
3
4
|
import * as zod from 'zod';
|
|
4
|
-
import * as _orpc_server from '@orpc/server';
|
|
5
5
|
import { IamFunctions } from '@h-ai/iam';
|
|
6
6
|
export { TokenPair } from '@h-ai/iam';
|
|
7
|
-
import { a as ServContext } from '../serv-context-
|
|
7
|
+
import { a as ServContext } from '../serv-context-jc3rZxbj.js';
|
|
8
8
|
import '@h-ai/core';
|
|
9
9
|
|
|
10
10
|
/** IAM 默认 procedures 依赖。 */
|
|
@@ -13,8 +13,8 @@ interface IamProcedureDeps {
|
|
|
13
13
|
}
|
|
14
14
|
/** 创建 IAM 默认 procedures。 */
|
|
15
15
|
declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
16
|
-
auth: {
|
|
17
|
-
login: _orpc_server.
|
|
16
|
+
auth: _orpc_server.Lazyable<{
|
|
17
|
+
login: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
18
18
|
identifier: zod.ZodString;
|
|
19
19
|
password: zod.ZodString;
|
|
20
20
|
rememberMe: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -62,8 +62,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
62
62
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
63
63
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
64
64
|
}, zod_v4_core.$strip>;
|
|
65
|
-
}, zod_v4_core.$strip>], "success">,
|
|
66
|
-
loginWithOtp: _orpc_server.
|
|
65
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
66
|
+
loginWithOtp: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
67
67
|
identifier: zod.ZodString;
|
|
68
68
|
code: zod.ZodString;
|
|
69
69
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
@@ -110,8 +110,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
110
110
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
111
111
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
112
112
|
}, zod_v4_core.$strip>;
|
|
113
|
-
}, zod_v4_core.$strip>], "success">,
|
|
114
|
-
logout: _orpc_server.
|
|
113
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
114
|
+
logout: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
115
115
|
accessToken: zod.ZodOptional<zod.ZodString>;
|
|
116
116
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
117
117
|
success: zod.ZodLiteral<true>;
|
|
@@ -128,8 +128,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
128
128
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
129
129
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
130
130
|
}, zod_v4_core.$strip>;
|
|
131
|
-
}, zod_v4_core.$strip>], "success">,
|
|
132
|
-
currentUser: _orpc_server.
|
|
131
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
132
|
+
currentUser: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, _orpc_contract.Schema<unknown, unknown>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
133
133
|
success: zod.ZodLiteral<true>;
|
|
134
134
|
data: zod.ZodObject<{
|
|
135
135
|
id: zod.ZodString;
|
|
@@ -159,8 +159,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
159
159
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
160
160
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
161
161
|
}, zod_v4_core.$strip>;
|
|
162
|
-
}, zod_v4_core.$strip>], "success">,
|
|
163
|
-
refresh: _orpc_server.
|
|
162
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
163
|
+
refresh: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
164
164
|
refreshToken: zod.ZodString;
|
|
165
165
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
166
166
|
success: zod.ZodLiteral<true>;
|
|
@@ -184,8 +184,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
184
184
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
185
185
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
186
186
|
}, zod_v4_core.$strip>;
|
|
187
|
-
}, zod_v4_core.$strip>], "success">,
|
|
188
|
-
sendOtp: _orpc_server.
|
|
187
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
188
|
+
sendOtp: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
189
189
|
identifier: zod.ZodString;
|
|
190
190
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
191
191
|
success: zod.ZodLiteral<true>;
|
|
@@ -204,8 +204,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
204
204
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
205
205
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
206
206
|
}, zod_v4_core.$strip>;
|
|
207
|
-
}, zod_v4_core.$strip>], "success">,
|
|
208
|
-
register: _orpc_server.
|
|
207
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
208
|
+
register: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
209
209
|
username: zod.ZodString;
|
|
210
210
|
password: zod.ZodString;
|
|
211
211
|
email: zod.ZodOptional<zod.ZodString>;
|
|
@@ -256,8 +256,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
256
256
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
257
257
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
258
258
|
}, zod_v4_core.$strip>;
|
|
259
|
-
}, zod_v4_core.$strip>], "success">,
|
|
260
|
-
changePassword: _orpc_server.
|
|
259
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
260
|
+
changePassword: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
261
261
|
oldPassword: zod.ZodString;
|
|
262
262
|
newPassword: zod.ZodString;
|
|
263
263
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
@@ -275,8 +275,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
275
275
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
276
276
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
277
277
|
}, zod_v4_core.$strip>;
|
|
278
|
-
}, zod_v4_core.$strip>], "success">,
|
|
279
|
-
updateCurrentUser: _orpc_server.
|
|
278
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
279
|
+
updateCurrentUser: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
280
280
|
username: zod.ZodOptional<zod.ZodString>;
|
|
281
281
|
email: zod.ZodOptional<zod.ZodString>;
|
|
282
282
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
@@ -311,10 +311,10 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
311
311
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
312
312
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
313
313
|
}, zod_v4_core.$strip>;
|
|
314
|
-
}, zod_v4_core.$strip>], "success">,
|
|
315
|
-
}
|
|
316
|
-
users: {
|
|
317
|
-
list: _orpc_server.
|
|
314
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
315
|
+
}>;
|
|
316
|
+
users: _orpc_server.Lazyable<{
|
|
317
|
+
list: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
318
318
|
page: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
319
319
|
pageSize: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
320
320
|
search: zod.ZodOptional<zod.ZodString>;
|
|
@@ -355,8 +355,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
355
355
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
356
356
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
357
357
|
}, zod_v4_core.$strip>;
|
|
358
|
-
}, zod_v4_core.$strip>], "success">,
|
|
359
|
-
get: _orpc_server.
|
|
358
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
359
|
+
get: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
360
360
|
id: zod.ZodString;
|
|
361
361
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
362
362
|
success: zod.ZodLiteral<true>;
|
|
@@ -386,8 +386,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
386
386
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
387
387
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
388
388
|
}, zod_v4_core.$strip>;
|
|
389
|
-
}, zod_v4_core.$strip>], "success">,
|
|
390
|
-
create: _orpc_server.
|
|
389
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
390
|
+
create: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
391
391
|
username: zod.ZodString;
|
|
392
392
|
email: zod.ZodOptional<zod.ZodString>;
|
|
393
393
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
@@ -424,8 +424,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
424
424
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
425
425
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
426
426
|
}, zod_v4_core.$strip>;
|
|
427
|
-
}, zod_v4_core.$strip>], "success">,
|
|
428
|
-
update: _orpc_server.
|
|
427
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
428
|
+
update: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
429
429
|
id: zod.ZodString;
|
|
430
430
|
username: zod.ZodOptional<zod.ZodString>;
|
|
431
431
|
email: zod.ZodOptional<zod.ZodString>;
|
|
@@ -463,8 +463,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
463
463
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
464
464
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
465
465
|
}, zod_v4_core.$strip>;
|
|
466
|
-
}, zod_v4_core.$strip>], "success">,
|
|
467
|
-
delete: _orpc_server.
|
|
466
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
467
|
+
delete: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
468
468
|
id: zod.ZodString;
|
|
469
469
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
470
470
|
success: zod.ZodLiteral<true>;
|
|
@@ -481,8 +481,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
481
481
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
482
482
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
483
483
|
}, zod_v4_core.$strip>;
|
|
484
|
-
}, zod_v4_core.$strip>], "success">,
|
|
485
|
-
resetPassword: _orpc_server.
|
|
484
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
485
|
+
resetPassword: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
486
486
|
id: zod.ZodString;
|
|
487
487
|
newPassword: zod.ZodString;
|
|
488
488
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
@@ -500,10 +500,10 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
500
500
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
501
501
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
502
502
|
}, zod_v4_core.$strip>;
|
|
503
|
-
}, zod_v4_core.$strip>], "success">,
|
|
504
|
-
}
|
|
505
|
-
roles: {
|
|
506
|
-
list: _orpc_server.
|
|
503
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
504
|
+
}>;
|
|
505
|
+
roles: _orpc_server.Lazyable<{
|
|
506
|
+
list: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, _orpc_contract.Schema<unknown, unknown>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
507
507
|
success: zod.ZodLiteral<true>;
|
|
508
508
|
data: zod.ZodObject<{
|
|
509
509
|
items: zod.ZodArray<zod.ZodObject<{
|
|
@@ -531,8 +531,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
531
531
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
532
532
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
533
533
|
}, zod_v4_core.$strip>;
|
|
534
|
-
}, zod_v4_core.$strip>], "success">,
|
|
535
|
-
get: _orpc_server.
|
|
534
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
535
|
+
get: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
536
536
|
id: zod.ZodString;
|
|
537
537
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
538
538
|
success: zod.ZodLiteral<true>;
|
|
@@ -557,8 +557,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
557
557
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
558
558
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
559
559
|
}, zod_v4_core.$strip>;
|
|
560
|
-
}, zod_v4_core.$strip>], "success">,
|
|
561
|
-
create: _orpc_server.
|
|
560
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
561
|
+
create: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
562
562
|
code: zod.ZodString;
|
|
563
563
|
name: zod.ZodString;
|
|
564
564
|
description: zod.ZodOptional<zod.ZodString>;
|
|
@@ -586,8 +586,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
586
586
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
587
587
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
588
588
|
}, zod_v4_core.$strip>;
|
|
589
|
-
}, zod_v4_core.$strip>], "success">,
|
|
590
|
-
update: _orpc_server.
|
|
589
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
590
|
+
update: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
591
591
|
id: zod.ZodString;
|
|
592
592
|
name: zod.ZodOptional<zod.ZodString>;
|
|
593
593
|
description: zod.ZodOptional<zod.ZodString>;
|
|
@@ -614,8 +614,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
614
614
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
615
615
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
616
616
|
}, zod_v4_core.$strip>;
|
|
617
|
-
}, zod_v4_core.$strip>], "success">,
|
|
618
|
-
delete: _orpc_server.
|
|
617
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
618
|
+
delete: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
619
619
|
id: zod.ZodString;
|
|
620
620
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
621
621
|
success: zod.ZodLiteral<true>;
|
|
@@ -632,10 +632,10 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
632
632
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
633
633
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
634
634
|
}, zod_v4_core.$strip>;
|
|
635
|
-
}, zod_v4_core.$strip>], "success">,
|
|
636
|
-
}
|
|
637
|
-
permissions: {
|
|
638
|
-
list: _orpc_server.
|
|
635
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
636
|
+
}>;
|
|
637
|
+
permissions: _orpc_server.Lazyable<{
|
|
638
|
+
list: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
639
639
|
page: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
640
640
|
pageSize: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
641
641
|
search: zod.ZodOptional<zod.ZodString>;
|
|
@@ -678,8 +678,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
678
678
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
679
679
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
680
680
|
}, zod_v4_core.$strip>;
|
|
681
|
-
}, zod_v4_core.$strip>], "success">,
|
|
682
|
-
get: _orpc_server.
|
|
681
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
682
|
+
get: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
683
683
|
id: zod.ZodString;
|
|
684
684
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
685
685
|
success: zod.ZodLiteral<true>;
|
|
@@ -710,8 +710,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
710
710
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
711
711
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
712
712
|
}, zod_v4_core.$strip>;
|
|
713
|
-
}, zod_v4_core.$strip>], "success">,
|
|
714
|
-
create: _orpc_server.
|
|
713
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
714
|
+
create: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
715
715
|
code: zod.ZodString;
|
|
716
716
|
name: zod.ZodString;
|
|
717
717
|
description: zod.ZodOptional<zod.ZodString>;
|
|
@@ -751,8 +751,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
751
751
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
752
752
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
753
753
|
}, zod_v4_core.$strip>;
|
|
754
|
-
}, zod_v4_core.$strip>], "success">,
|
|
755
|
-
delete: _orpc_server.
|
|
754
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
755
|
+
delete: _orpc_server.Lazyable<_orpc_server.Procedure<ServContext & {}, any, zod.ZodObject<{
|
|
756
756
|
id: zod.ZodString;
|
|
757
757
|
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
758
758
|
success: zod.ZodLiteral<true>;
|
|
@@ -769,8 +769,8 @@ declare function createIamProcedures(deps: IamProcedureDeps): {
|
|
|
769
769
|
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
770
770
|
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
771
771
|
}, zod_v4_core.$strip>;
|
|
772
|
-
}, zod_v4_core.$strip>], "success">,
|
|
773
|
-
}
|
|
772
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>>;
|
|
773
|
+
}>;
|
|
774
774
|
};
|
|
775
775
|
|
|
776
776
|
export { type IamProcedureDeps, createIamProcedures };
|