@infimind-next/ai-hive-mcp 0.2.3 → 0.2.5
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/local-media.js +16 -1
- package/dist/schemas.d.ts +5 -4
- package/dist/schemas.js +5 -2
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/workbuddy-loopback.js +1 -0
- package/package.json +1 -1
package/dist/local-media.js
CHANGED
|
@@ -5,12 +5,15 @@ import { mcpCreateMediaUploadOutputSchema, mcpUploadMediaFromPathInputSchema, }
|
|
|
5
5
|
import { fileTypeFromBuffer } from "file-type";
|
|
6
6
|
const FILE_HEAD_BYTES = 4100;
|
|
7
7
|
const SMALL_MEDIA_LIMIT_BYTES = 10 * 1024 * 1024;
|
|
8
|
+
const AUDIO_LIMIT_BYTES = 15 * 1024 * 1024;
|
|
8
9
|
const VIDEO_LIMIT_BYTES = 100 * 1024 * 1024;
|
|
9
10
|
const EXTENSION_MIME = new Map([
|
|
10
11
|
[".png", "image/png"],
|
|
11
12
|
[".jpg", "image/jpeg"],
|
|
12
13
|
[".jpeg", "image/jpeg"],
|
|
13
14
|
[".webp", "image/webp"],
|
|
15
|
+
[".mp3", "audio/mpeg"],
|
|
16
|
+
[".wav", "audio/wav"],
|
|
14
17
|
[".mp4", "video/mp4"],
|
|
15
18
|
[".webm", "video/webm"],
|
|
16
19
|
[".mov", "video/quicktime"],
|
|
@@ -41,12 +44,24 @@ function mediaSizeLimit(contentType) {
|
|
|
41
44
|
if (contentType.startsWith("video/")) {
|
|
42
45
|
return VIDEO_LIMIT_BYTES;
|
|
43
46
|
}
|
|
47
|
+
if (contentType.startsWith("audio/")) {
|
|
48
|
+
return AUDIO_LIMIT_BYTES;
|
|
49
|
+
}
|
|
44
50
|
return SMALL_MEDIA_LIMIT_BYTES;
|
|
45
51
|
}
|
|
52
|
+
function mediaTypeLabel(contentType) {
|
|
53
|
+
if (contentType.startsWith("video/")) {
|
|
54
|
+
return "视频";
|
|
55
|
+
}
|
|
56
|
+
if (contentType.startsWith("audio/")) {
|
|
57
|
+
return "音频";
|
|
58
|
+
}
|
|
59
|
+
return "图片/文档";
|
|
60
|
+
}
|
|
46
61
|
function assertFileSizeAllowed(sizeBytes, contentType) {
|
|
47
62
|
const limit = mediaSizeLimit(contentType);
|
|
48
63
|
if (sizeBytes > limit) {
|
|
49
|
-
throw new Error(`文件大小超过限制,${contentType
|
|
64
|
+
throw new Error(`文件大小超过限制,${mediaTypeLabel(contentType)}最大 ${Math.floor(limit / 1024 / 1024)}MiB`);
|
|
50
65
|
}
|
|
51
66
|
}
|
|
52
67
|
async function readFileHead(path) {
|
package/dist/schemas.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const mcpCreateMediaUploadOutputSchema: z.ZodObject<{
|
|
3
3
|
mediaId: z.ZodString;
|
|
4
|
-
mediaType: z.ZodEnum<["IMAGE", "VIDEO", "DOCUMENT"]>;
|
|
4
|
+
mediaType: z.ZodEnum<["IMAGE", "VIDEO", "AUDIO", "DOCUMENT"]>;
|
|
5
5
|
mimeType: z.ZodEffects<z.ZodString, string, string>;
|
|
6
6
|
sizeBytes: z.ZodNumber;
|
|
7
7
|
upload: z.ZodObject<{
|
|
@@ -21,7 +21,7 @@ export declare const mcpCreateMediaUploadOutputSchema: z.ZodObject<{
|
|
|
21
21
|
}, "strict", z.ZodTypeAny, {
|
|
22
22
|
mimeType: string;
|
|
23
23
|
mediaId: string;
|
|
24
|
-
mediaType: "IMAGE" | "VIDEO" | "DOCUMENT";
|
|
24
|
+
mediaType: "IMAGE" | "VIDEO" | "AUDIO" | "DOCUMENT";
|
|
25
25
|
sizeBytes: number;
|
|
26
26
|
upload: {
|
|
27
27
|
method: "PUT";
|
|
@@ -32,7 +32,7 @@ export declare const mcpCreateMediaUploadOutputSchema: z.ZodObject<{
|
|
|
32
32
|
}, {
|
|
33
33
|
mimeType: string;
|
|
34
34
|
mediaId: string;
|
|
35
|
-
mediaType: "IMAGE" | "VIDEO" | "DOCUMENT";
|
|
35
|
+
mediaType: "IMAGE" | "VIDEO" | "AUDIO" | "DOCUMENT";
|
|
36
36
|
sizeBytes: number;
|
|
37
37
|
upload: {
|
|
38
38
|
method: "PUT";
|
|
@@ -44,7 +44,7 @@ export declare const mcpCreateMediaUploadOutputSchema: z.ZodObject<{
|
|
|
44
44
|
export declare const mcpUploadMediaFromPathInputSchema: z.ZodObject<{
|
|
45
45
|
path: z.ZodEffects<z.ZodString, string, string>;
|
|
46
46
|
filename: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
47
|
-
contentType: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
47
|
+
contentType: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
|
|
48
48
|
}, "strict", z.ZodTypeAny, {
|
|
49
49
|
path: string;
|
|
50
50
|
filename?: string | undefined;
|
|
@@ -91,6 +91,7 @@ export declare const generateVideoShape: {
|
|
|
91
91
|
prompt: z.ZodEffects<z.ZodString, string, string>;
|
|
92
92
|
imageMediaIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
93
93
|
videoMediaIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
94
|
+
audioMediaIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
94
95
|
firstFrameMediaId: z.ZodOptional<z.ZodString>;
|
|
95
96
|
lastFrameMediaId: z.ZodOptional<z.ZodString>;
|
|
96
97
|
params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
package/dist/schemas.js
CHANGED
|
@@ -15,7 +15,7 @@ const paramsSchema = z.record(z.unknown()).default({});
|
|
|
15
15
|
export const mcpCreateMediaUploadOutputSchema = z
|
|
16
16
|
.object({
|
|
17
17
|
mediaId: mediaIdSchema,
|
|
18
|
-
mediaType: z.enum(["IMAGE", "VIDEO", "DOCUMENT"]),
|
|
18
|
+
mediaType: z.enum(["IMAGE", "VIDEO", "AUDIO", "DOCUMENT"]),
|
|
19
19
|
mimeType: nonBlankStringSchema,
|
|
20
20
|
sizeBytes: z.number().int().positive(),
|
|
21
21
|
upload: z
|
|
@@ -32,7 +32,9 @@ export const mcpUploadMediaFromPathInputSchema = z
|
|
|
32
32
|
.object({
|
|
33
33
|
path: nonBlankStringSchema,
|
|
34
34
|
filename: nonBlankStringSchema.optional(),
|
|
35
|
-
contentType: nonBlankStringSchema
|
|
35
|
+
contentType: nonBlankStringSchema
|
|
36
|
+
.transform((value) => value.trim().toLowerCase())
|
|
37
|
+
.optional(),
|
|
36
38
|
})
|
|
37
39
|
.strict();
|
|
38
40
|
const messageSchema = z
|
|
@@ -67,6 +69,7 @@ export const generateVideoShape = {
|
|
|
67
69
|
prompt: nonBlankStringSchema,
|
|
68
70
|
imageMediaIds: z.array(mediaIdSchema).default([]),
|
|
69
71
|
videoMediaIds: z.array(mediaIdSchema).default([]),
|
|
72
|
+
audioMediaIds: z.array(mediaIdSchema).default([]),
|
|
70
73
|
firstFrameMediaId: mediaIdSchema.optional(),
|
|
71
74
|
lastFrameMediaId: mediaIdSchema.optional(),
|
|
72
75
|
params: paramsSchema,
|
package/dist/server.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { AiHiveApiClient } from "./api-client.js";
|
|
|
4
4
|
import { type BearerTokenProvider } from "./auth-token-provider.js";
|
|
5
5
|
import type { McpClientConfig } from "./config.js";
|
|
6
6
|
import { WorkBuddyCredentialStore } from "./workbuddy-credentials.js";
|
|
7
|
-
export declare const SERVER_VERSION = "0.2.
|
|
7
|
+
export declare const SERVER_VERSION = "0.2.5";
|
|
8
8
|
declare function content(value: unknown): {
|
|
9
9
|
content: {
|
|
10
10
|
type: "text";
|
package/dist/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { normalizeApiEndpoint, StaticBearerTokenProvider, WorkBuddyTokenProvider
|
|
|
7
7
|
import { readMcpClientInfo } from "./client-info.js";
|
|
8
8
|
import { uploadMediaFromPath } from "./local-media.js";
|
|
9
9
|
import { WorkBuddyOAuthClient } from "./workbuddy-oauth-client.js";
|
|
10
|
-
export const SERVER_VERSION = "0.2.
|
|
10
|
+
export const SERVER_VERSION = "0.2.5";
|
|
11
11
|
const DEPRECATED_ATTACHMENT_IDS_MESSAGE = "attachmentIds 已废弃,请使用 messages[].mediaIds";
|
|
12
12
|
function content(value) {
|
|
13
13
|
return {
|