@waifucave/discord-waifus 1.5.154
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/LICENSE +21 -0
- package/README.md +230 -0
- package/THIRD_PARTY_NOTICES.md +26 -0
- package/assets/ocr/eng.traineddata +0 -0
- package/bin/waifus.mjs +36 -0
- package/dist/api/errors.d.ts +9 -0
- package/dist/api/errors.js +23 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/server.d.ts +19 -0
- package/dist/api/server.js +1290 -0
- package/dist/api/server.js.map +1 -0
- package/dist/backend/logger.d.ts +20 -0
- package/dist/backend/logger.js +65 -0
- package/dist/backend/logger.js.map +1 -0
- package/dist/backend/migrations.d.ts +4 -0
- package/dist/backend/migrations.js +521 -0
- package/dist/backend/migrations.js.map +1 -0
- package/dist/backend/redaction.d.ts +1 -0
- package/dist/backend/redaction.js +22 -0
- package/dist/backend/redaction.js.map +1 -0
- package/dist/backend/runtime.d.ts +30 -0
- package/dist/backend/runtime.js +49 -0
- package/dist/backend/runtime.js.map +1 -0
- package/dist/backend/server.d.ts +18 -0
- package/dist/backend/server.js +581 -0
- package/dist/backend/server.js.map +1 -0
- package/dist/cli/commands.d.ts +35 -0
- package/dist/cli/commands.js +510 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.js +12 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/parser.d.ts +10 -0
- package/dist/cli/parser.js +64 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/config/appConfig.d.ts +3 -0
- package/dist/config/appConfig.js +27 -0
- package/dist/config/appConfig.js.map +1 -0
- package/dist/config/layout.d.ts +13 -0
- package/dist/config/layout.js +173 -0
- package/dist/config/layout.js.map +1 -0
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.js +20 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/prebuiltWaifus.d.ts +3 -0
- package/dist/config/prebuiltWaifus.js +106 -0
- package/dist/config/prebuiltWaifus.js.map +1 -0
- package/dist/discord/client.d.ts +394 -0
- package/dist/discord/client.js +1196 -0
- package/dist/discord/client.js.map +1 -0
- package/dist/discord/contextBuilder.d.ts +15 -0
- package/dist/discord/contextBuilder.js +18 -0
- package/dist/discord/contextBuilder.js.map +1 -0
- package/dist/discord/intents.d.ts +5 -0
- package/dist/discord/intents.js +21 -0
- package/dist/discord/intents.js.map +1 -0
- package/dist/discord/memberCache.d.ts +12 -0
- package/dist/discord/memberCache.js +55 -0
- package/dist/discord/memberCache.js.map +1 -0
- package/dist/discord/normalization.d.ts +34 -0
- package/dist/discord/normalization.js +330 -0
- package/dist/discord/normalization.js.map +1 -0
- package/dist/discord/rateLimit.d.ts +9 -0
- package/dist/discord/rateLimit.js +11 -0
- package/dist/discord/rateLimit.js.map +1 -0
- package/dist/orchestration/context.d.ts +85 -0
- package/dist/orchestration/context.js +200 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/decisions.d.ts +52 -0
- package/dist/orchestration/decisions.js +61 -0
- package/dist/orchestration/decisions.js.map +1 -0
- package/dist/orchestration/messageSplit.d.ts +6 -0
- package/dist/orchestration/messageSplit.js +118 -0
- package/dist/orchestration/messageSplit.js.map +1 -0
- package/dist/orchestration/ocr.d.ts +43 -0
- package/dist/orchestration/ocr.js +504 -0
- package/dist/orchestration/ocr.js.map +1 -0
- package/dist/orchestration/ocrPackages.d.ts +24 -0
- package/dist/orchestration/ocrPackages.js +85 -0
- package/dist/orchestration/ocrPackages.js.map +1 -0
- package/dist/orchestration/promptBlocks.d.ts +28 -0
- package/dist/orchestration/promptBlocks.js +232 -0
- package/dist/orchestration/promptBlocks.js.map +1 -0
- package/dist/orchestration/replyQuote.d.ts +7 -0
- package/dist/orchestration/replyQuote.js +198 -0
- package/dist/orchestration/replyQuote.js.map +1 -0
- package/dist/orchestration/reviewer.d.ts +5 -0
- package/dist/orchestration/reviewer.js +5 -0
- package/dist/orchestration/reviewer.js.map +1 -0
- package/dist/orchestration/runtime.d.ts +152 -0
- package/dist/orchestration/runtime.js +3535 -0
- package/dist/orchestration/runtime.js.map +1 -0
- package/dist/orchestration/session.d.ts +30 -0
- package/dist/orchestration/session.js +41 -0
- package/dist/orchestration/session.js.map +1 -0
- package/dist/orchestration/stageManager.d.ts +42 -0
- package/dist/orchestration/stageManager.js +50 -0
- package/dist/orchestration/stageManager.js.map +1 -0
- package/dist/providers/catalog.d.ts +6 -0
- package/dist/providers/catalog.js +212 -0
- package/dist/providers/catalog.js.map +1 -0
- package/dist/providers/pipelines.d.ts +13 -0
- package/dist/providers/pipelines.js +2388 -0
- package/dist/providers/pipelines.js.map +1 -0
- package/dist/providers/types.d.ts +91 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/shared/queryLog.d.ts +39 -0
- package/dist/shared/queryLog.js +80 -0
- package/dist/shared/queryLog.js.map +1 -0
- package/dist/shared/schemas/common.d.ts +21 -0
- package/dist/shared/schemas/common.js +27 -0
- package/dist/shared/schemas/common.js.map +1 -0
- package/dist/shared/schemas/config.d.ts +57 -0
- package/dist/shared/schemas/config.js +49 -0
- package/dist/shared/schemas/config.js.map +1 -0
- package/dist/shared/schemas/domain.d.ts +825 -0
- package/dist/shared/schemas/domain.js +444 -0
- package/dist/shared/schemas/domain.js.map +1 -0
- package/dist/storage/atomic.d.ts +6 -0
- package/dist/storage/atomic.js +60 -0
- package/dist/storage/atomic.js.map +1 -0
- package/dist/storage/errors.d.ts +12 -0
- package/dist/storage/errors.js +23 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/locks.d.ts +9 -0
- package/dist/storage/locks.js +42 -0
- package/dist/storage/locks.js.map +1 -0
- package/dist/storage/storageService.d.ts +25 -0
- package/dist/storage/storageService.js +66 -0
- package/dist/storage/storageService.js.map +1 -0
- package/dist-frontend/assets/index-B2bB3_2r.js +39 -0
- package/dist-frontend/assets/index-B2bB3_2r.js.map +1 -0
- package/dist-frontend/assets/index-Dj1L8Px-.css +1 -0
- package/dist-frontend/index.html +14 -0
- package/docs/api.md +162 -0
- package/docs/old-orchestrator-prompt.md +123 -0
- package/package.json +81 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { parse, stringify } from "smol-toml";
|
|
3
|
+
import { AppConfigSchema, DEFAULT_APP_CONFIG } from "../shared/schemas/config.js";
|
|
4
|
+
import { atomicWriteText } from "../storage/atomic.js";
|
|
5
|
+
import { resolveDataPath } from "./paths.js";
|
|
6
|
+
export async function loadAppConfig(dataRoot) {
|
|
7
|
+
const configPath = resolveDataPath(dataRoot, "config.toml");
|
|
8
|
+
try {
|
|
9
|
+
const raw = await readFile(configPath, "utf8");
|
|
10
|
+
const parsed = parse(raw);
|
|
11
|
+
return AppConfigSchema.parse(parsed);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error.code === "ENOENT") {
|
|
15
|
+
return DEFAULT_APP_CONFIG;
|
|
16
|
+
}
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function saveAppConfig(dataRoot, config) {
|
|
21
|
+
const parsed = AppConfigSchema.parse(config);
|
|
22
|
+
await atomicWriteText(resolveDataPath(dataRoot, "config.toml"), stringify(parsed) + "\n", {
|
|
23
|
+
mode: 0o600
|
|
24
|
+
});
|
|
25
|
+
return parsed;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=appConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../../src/config/appConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAa,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAiB;IACrE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE;QACxF,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const DATA_LAYOUT_DIRS: readonly ["app", "app/logs", "app/cache", "app/cache/ocr", "app/cache/ocr/bin", "app/cache/ocr/results", "app/tmp", "app/tmp/ocr", "app/tmp/swift-module-cache", "user", "user/waifus", "user/orchestrator", "user/stage-manager", "user/reviewer", "user/servers"];
|
|
2
|
+
export declare function ensureDataLayout(dataRoot: string): Promise<void>;
|
|
3
|
+
export declare function readPackageVersion(): Promise<string>;
|
|
4
|
+
export declare function runtimeFileDefaults(dataRoot: string, packageVersion: string, port: number, mode: string): {
|
|
5
|
+
schemaVersion: number;
|
|
6
|
+
pid: number;
|
|
7
|
+
startedAt: string;
|
|
8
|
+
updatedAt: string;
|
|
9
|
+
packageVersion: string;
|
|
10
|
+
port: number;
|
|
11
|
+
dataRoot: string;
|
|
12
|
+
mode: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { stringify } from "smol-toml";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { DEFAULT_APP_CONFIG } from "../shared/schemas/config.js";
|
|
7
|
+
import { CURRENT_SCHEMA_VERSION, createRevisionedBase } from "../shared/schemas/common.js";
|
|
8
|
+
import { WaifuConfigSchema } from "../shared/schemas/domain.js";
|
|
9
|
+
import { resolveDataPath } from "./paths.js";
|
|
10
|
+
import { PREBUILT_WAIFUS } from "./prebuiltWaifus.js";
|
|
11
|
+
export const DATA_LAYOUT_DIRS = [
|
|
12
|
+
"app",
|
|
13
|
+
"app/logs",
|
|
14
|
+
"app/cache",
|
|
15
|
+
"app/cache/ocr",
|
|
16
|
+
"app/cache/ocr/bin",
|
|
17
|
+
"app/cache/ocr/results",
|
|
18
|
+
"app/tmp",
|
|
19
|
+
"app/tmp/ocr",
|
|
20
|
+
"app/tmp/swift-module-cache",
|
|
21
|
+
"user",
|
|
22
|
+
"user/waifus",
|
|
23
|
+
"user/orchestrator",
|
|
24
|
+
"user/stage-manager",
|
|
25
|
+
"user/reviewer",
|
|
26
|
+
"user/servers"
|
|
27
|
+
];
|
|
28
|
+
const DEFAULT_JSON_FILES = [
|
|
29
|
+
{
|
|
30
|
+
relativePath: "user/providers.json",
|
|
31
|
+
content: {
|
|
32
|
+
...createRevisionedBase(),
|
|
33
|
+
providers: {}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
relativePath: "user/discord-bots.json",
|
|
38
|
+
content: {
|
|
39
|
+
...createRevisionedBase(),
|
|
40
|
+
orchestrator: null,
|
|
41
|
+
waifus: []
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
relativePath: "user/orchestrator/config.json",
|
|
46
|
+
content: {
|
|
47
|
+
...createRevisionedBase(),
|
|
48
|
+
enabled: false,
|
|
49
|
+
contextWindow: 20,
|
|
50
|
+
prompt: ""
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
relativePath: "user/orchestrator/history.json",
|
|
55
|
+
content: {
|
|
56
|
+
...createRevisionedBase(),
|
|
57
|
+
decisions: []
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
relativePath: "user/orchestrator/debug.json",
|
|
62
|
+
content: {
|
|
63
|
+
...createRevisionedBase(),
|
|
64
|
+
routes: {}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
relativePath: "user/stage-manager/config.json",
|
|
69
|
+
content: {
|
|
70
|
+
...createRevisionedBase(),
|
|
71
|
+
enabled: false,
|
|
72
|
+
contextWindow: 80,
|
|
73
|
+
prompt: ""
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
relativePath: "user/stage-manager/history.json",
|
|
78
|
+
content: {
|
|
79
|
+
...createRevisionedBase(),
|
|
80
|
+
edits: []
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
relativePath: "user/reviewer/config.json",
|
|
85
|
+
content: {
|
|
86
|
+
...createRevisionedBase(),
|
|
87
|
+
enabled: false,
|
|
88
|
+
contextWindow: 20,
|
|
89
|
+
prompt: ""
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
relativePath: "user/reviewer/history.json",
|
|
94
|
+
content: {
|
|
95
|
+
...createRevisionedBase(),
|
|
96
|
+
reviews: []
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
];
|
|
100
|
+
const PrebuiltWaifuSeedMarkerSchema = z.object({
|
|
101
|
+
schemaVersion: z.literal(CURRENT_SCHEMA_VERSION),
|
|
102
|
+
seededAt: z.string().datetime({ offset: true }),
|
|
103
|
+
waifuIds: z.array(z.string())
|
|
104
|
+
});
|
|
105
|
+
export async function ensureDataLayout(dataRoot) {
|
|
106
|
+
await mkdir(dataRoot, { recursive: true });
|
|
107
|
+
await Promise.all(DATA_LAYOUT_DIRS.map((dir) => mkdir(resolveDataPath(dataRoot, dir), { recursive: true })));
|
|
108
|
+
await writeIfMissing(resolveDataPath(dataRoot, "config.toml"), stringify(DEFAULT_APP_CONFIG) + "\n");
|
|
109
|
+
await Promise.all(DEFAULT_JSON_FILES.map((file) => writeJsonIfMissing(resolveDataPath(dataRoot, file.relativePath), file.content)));
|
|
110
|
+
await seedPrebuiltWaifusOnce(dataRoot);
|
|
111
|
+
}
|
|
112
|
+
export async function readPackageVersion() {
|
|
113
|
+
try {
|
|
114
|
+
const packagePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json");
|
|
115
|
+
const raw = await readFile(packagePath, "utf8");
|
|
116
|
+
const parsed = JSON.parse(raw);
|
|
117
|
+
return parsed.version ?? "0.0.0";
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return "0.0.0";
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function writeJsonIfMissing(filePath, content) {
|
|
124
|
+
await writeIfMissing(filePath, JSON.stringify(content, null, 2) + "\n");
|
|
125
|
+
}
|
|
126
|
+
async function seedPrebuiltWaifusOnce(dataRoot) {
|
|
127
|
+
const markerPath = resolveDataPath(dataRoot, "user", "waifus", ".prebuilt-seed.json");
|
|
128
|
+
try {
|
|
129
|
+
const raw = await readFile(markerPath, "utf8");
|
|
130
|
+
PrebuiltWaifuSeedMarkerSchema.parse(JSON.parse(raw));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
if (error.code !== "ENOENT") {
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
await Promise.all(PREBUILT_WAIFUS.map((waifu) => writeJsonIfMissing(resolveDataPath(dataRoot, "user", "waifus", waifu.id, "waifu.json"), WaifuConfigSchema.parse({
|
|
139
|
+
...createRevisionedBase(),
|
|
140
|
+
...waifu
|
|
141
|
+
}))));
|
|
142
|
+
await writeJsonIfMissing(markerPath, {
|
|
143
|
+
schemaVersion: CURRENT_SCHEMA_VERSION,
|
|
144
|
+
seededAt: new Date().toISOString(),
|
|
145
|
+
waifuIds: PREBUILT_WAIFUS.map((waifu) => waifu.id)
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async function writeIfMissing(filePath, content) {
|
|
149
|
+
try {
|
|
150
|
+
await readFile(filePath);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (error.code !== "ENOENT") {
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
157
|
+
await writeFile(filePath, content, { mode: 0o600 });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export function runtimeFileDefaults(dataRoot, packageVersion, port, mode) {
|
|
161
|
+
const now = new Date().toISOString();
|
|
162
|
+
return {
|
|
163
|
+
schemaVersion: CURRENT_SCHEMA_VERSION,
|
|
164
|
+
pid: process.pid,
|
|
165
|
+
startedAt: now,
|
|
166
|
+
updatedAt: now,
|
|
167
|
+
packageVersion,
|
|
168
|
+
port,
|
|
169
|
+
dataRoot,
|
|
170
|
+
mode
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/config/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const DATA_ROOT_ENV = "DC_WAIFUS_HOME";
|
|
2
|
+
export declare function getDataRoot(env?: NodeJS.ProcessEnv): string;
|
|
3
|
+
export declare function resolveDataPath(dataRoot: string, ...segments: string[]): string;
|
|
4
|
+
export declare function userDataPath(dataRoot: string, ...segments: string[]): string;
|
|
5
|
+
export declare function appDataPath(dataRoot: string, ...segments: string[]): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export const DATA_ROOT_ENV = "DC_WAIFUS_HOME";
|
|
4
|
+
export function getDataRoot(env = process.env) {
|
|
5
|
+
const configured = env[DATA_ROOT_ENV]?.trim();
|
|
6
|
+
if (configured) {
|
|
7
|
+
return path.resolve(configured);
|
|
8
|
+
}
|
|
9
|
+
return path.join(os.homedir(), ".dc-waifus");
|
|
10
|
+
}
|
|
11
|
+
export function resolveDataPath(dataRoot, ...segments) {
|
|
12
|
+
return path.join(dataRoot, ...segments);
|
|
13
|
+
}
|
|
14
|
+
export function userDataPath(dataRoot, ...segments) {
|
|
15
|
+
return resolveDataPath(dataRoot, "user", ...segments);
|
|
16
|
+
}
|
|
17
|
+
export function appDataPath(dataRoot, ...segments) {
|
|
18
|
+
return resolveDataPath(dataRoot, "app", ...segments);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,GAAG,QAAkB;IACrE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,GAAG,QAAkB;IAClE,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAG,QAAkB;IACjE,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { WaifuConfig } from "../shared/schemas/domain.js";
|
|
2
|
+
export type PrebuiltWaifu = Pick<WaifuConfig, "id" | "name" | "displayName" | "enabled" | "persona" | "contextWindow" | "generation" | "availability" | "tools">;
|
|
3
|
+
export declare const PREBUILT_WAIFUS: PrebuiltWaifu[];
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export const PREBUILT_WAIFUS = [
|
|
2
|
+
{
|
|
3
|
+
id: "lumi",
|
|
4
|
+
name: "Lumi",
|
|
5
|
+
displayName: "Lumi",
|
|
6
|
+
enabled: true,
|
|
7
|
+
contextWindow: 50,
|
|
8
|
+
generation: {
|
|
9
|
+
temperature: 0.8,
|
|
10
|
+
topP: 0.95
|
|
11
|
+
},
|
|
12
|
+
availability: {
|
|
13
|
+
sleep: { enabled: true, start: "00:30", end: "08:30" },
|
|
14
|
+
busy: [
|
|
15
|
+
{ start: "13:00", end: "14:00", reason: "offline for lunch and errands" },
|
|
16
|
+
{ start: "19:00", end: "20:30", reason: "winding down away from chat" }
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
tools: {
|
|
20
|
+
toolUse: true
|
|
21
|
+
},
|
|
22
|
+
persona: [
|
|
23
|
+
"Lumi is warm, bright, and emotionally attentive. She notices small mood shifts in chat and responds with gentle curiosity instead of forcing positivity.",
|
|
24
|
+
"She speaks in short, natural Discord messages, uses soft humor, and is good at making quieter users feel included.",
|
|
25
|
+
"She should avoid therapy language, lectures, and excessive sweetness. Her vibe is cozy, observant, and lightly teasing when appropriate."
|
|
26
|
+
].join("\n\n")
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "nox",
|
|
30
|
+
name: "Nox",
|
|
31
|
+
displayName: "Nox",
|
|
32
|
+
enabled: true,
|
|
33
|
+
contextWindow: 50,
|
|
34
|
+
generation: {
|
|
35
|
+
temperature: 0.9,
|
|
36
|
+
topP: 0.9
|
|
37
|
+
},
|
|
38
|
+
availability: {
|
|
39
|
+
sleep: { enabled: true, start: "03:00", end: "11:00" },
|
|
40
|
+
busy: [
|
|
41
|
+
{ start: "16:30", end: "17:30", reason: "pretending to be productive" }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
tools: {
|
|
45
|
+
toolUse: true
|
|
46
|
+
},
|
|
47
|
+
persona: [
|
|
48
|
+
"Nox is dry, witty, and a little mischievous. She likes deadpan one-liners, clever callbacks, and playful skepticism.",
|
|
49
|
+
"She is never cruel: the teasing should feel like a friend poking fun, not an insult. She backs off when the conversation gets serious.",
|
|
50
|
+
"She keeps messages compact and punchy, often reacting to the funniest or most chaotic part of the recent chat."
|
|
51
|
+
].join("\n\n")
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "mira",
|
|
55
|
+
name: "Mira",
|
|
56
|
+
displayName: "Mira",
|
|
57
|
+
enabled: true,
|
|
58
|
+
contextWindow: 50,
|
|
59
|
+
generation: {
|
|
60
|
+
temperature: 0.75,
|
|
61
|
+
topP: 0.9
|
|
62
|
+
},
|
|
63
|
+
availability: {
|
|
64
|
+
sleep: { enabled: true, start: "23:00", end: "06:30" },
|
|
65
|
+
busy: [
|
|
66
|
+
{ start: "09:00", end: "11:00", reason: "focused planning block" },
|
|
67
|
+
{ start: "15:00", end: "16:00", reason: "quiet work session" }
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
tools: {
|
|
71
|
+
toolUse: true
|
|
72
|
+
},
|
|
73
|
+
persona: [
|
|
74
|
+
"Mira is calm, precise, and quietly competent. She enjoys organizing messy conversations, asking useful questions, and helping people decide what to do next.",
|
|
75
|
+
"She should sound like a composed friend, not a corporate assistant. She can be practical without becoming stiff.",
|
|
76
|
+
"When the chat is chaotic, she may summarize the emotional or practical core in one sentence and then nudge the group forward."
|
|
77
|
+
].join("\n\n")
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "riko",
|
|
81
|
+
name: "Riko",
|
|
82
|
+
displayName: "Riko",
|
|
83
|
+
enabled: true,
|
|
84
|
+
contextWindow: 50,
|
|
85
|
+
generation: {
|
|
86
|
+
temperature: 1,
|
|
87
|
+
topP: 0.95
|
|
88
|
+
},
|
|
89
|
+
availability: {
|
|
90
|
+
sleep: { enabled: true, start: "02:00", end: "09:30" },
|
|
91
|
+
busy: [
|
|
92
|
+
{ start: "12:00", end: "12:45", reason: "running around between plans" },
|
|
93
|
+
{ start: "21:30", end: "22:15", reason: "dramatic snack break" }
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
tools: {
|
|
97
|
+
toolUse: true
|
|
98
|
+
},
|
|
99
|
+
persona: [
|
|
100
|
+
"Riko is energetic, impulsive, and dramatic in a fun way. She likes bits, sudden enthusiasm, mock-serious declarations, and turning ordinary moments into tiny events.",
|
|
101
|
+
"She should not dominate the chat. Her best messages are brief sparks that make others want to reply.",
|
|
102
|
+
"She can start playful mini-conflicts or jokes, but she should avoid derailing serious conversations or spamming."
|
|
103
|
+
].join("\n\n")
|
|
104
|
+
}
|
|
105
|
+
];
|
|
106
|
+
//# sourceMappingURL=prebuiltWaifus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuiltWaifus.js","sourceRoot":"","sources":["../../src/config/prebuiltWaifus.ts"],"names":[],"mappings":"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"}
|