@yuihub/server 1.0.0-beta.4
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/dist/api/text-process.d.ts +2 -0
- package/dist/api/text-process.d.ts.map +1 -0
- package/dist/api/text-process.js +48 -0
- package/dist/api/text-process.js.map +1 -0
- package/dist/auth.d.ts +30 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +71 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +120 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/config/schema.d.ts +334 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +45 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/service.d.ts +12 -0
- package/dist/config/service.d.ts.map +1 -0
- package/dist/config/service.js +81 -0
- package/dist/config/service.js.map +1 -0
- package/dist/engine/agent/context.d.ts +35 -0
- package/dist/engine/agent/context.d.ts.map +1 -0
- package/dist/engine/agent/context.js +72 -0
- package/dist/engine/agent/context.js.map +1 -0
- package/dist/engine/agent/core.d.ts +19 -0
- package/dist/engine/agent/core.d.ts.map +1 -0
- package/dist/engine/agent/core.js +67 -0
- package/dist/engine/agent/core.js.map +1 -0
- package/dist/engine/agent/live-context.d.ts +8 -0
- package/dist/engine/agent/live-context.d.ts.map +1 -0
- package/dist/engine/agent/live-context.js +19 -0
- package/dist/engine/agent/live-context.js.map +1 -0
- package/dist/engine/agent/tools/fs.d.ts +16 -0
- package/dist/engine/agent/tools/fs.d.ts.map +1 -0
- package/dist/engine/agent/tools/fs.js +78 -0
- package/dist/engine/agent/tools/fs.js.map +1 -0
- package/dist/engine/agent/tools/memory.d.ts +18 -0
- package/dist/engine/agent/tools/memory.d.ts.map +1 -0
- package/dist/engine/agent/tools/memory.js +51 -0
- package/dist/engine/agent/tools/memory.js.map +1 -0
- package/dist/engine/ai/local-genai-service.d.ts +22 -0
- package/dist/engine/ai/local-genai-service.d.ts.map +1 -0
- package/dist/engine/ai/local-genai-service.js +158 -0
- package/dist/engine/ai/local-genai-service.js.map +1 -0
- package/dist/engine/ai/registry.d.ts +16 -0
- package/dist/engine/ai/registry.d.ts.map +1 -0
- package/dist/engine/ai/registry.js +78 -0
- package/dist/engine/ai/registry.js.map +1 -0
- package/dist/engine/ai/tools.d.ts +7 -0
- package/dist/engine/ai/tools.d.ts.map +1 -0
- package/dist/engine/ai/tools.js +2 -0
- package/dist/engine/ai/tools.js.map +1 -0
- package/dist/engine/ai/types.d.ts +21 -0
- package/dist/engine/ai/types.d.ts.map +1 -0
- package/dist/engine/ai/types.js +2 -0
- package/dist/engine/ai/types.js.map +1 -0
- package/dist/engine/ai/vertex-genai-service.d.ts +13 -0
- package/dist/engine/ai/vertex-genai-service.d.ts.map +1 -0
- package/dist/engine/ai/vertex-genai-service.js +93 -0
- package/dist/engine/ai/vertex-genai-service.js.map +1 -0
- package/dist/engine/chunker.d.ts +19 -0
- package/dist/engine/chunker.d.ts.map +1 -0
- package/dist/engine/chunker.js +79 -0
- package/dist/engine/chunker.js.map +1 -0
- package/dist/engine/composite-vector-store.d.ts +21 -0
- package/dist/engine/composite-vector-store.d.ts.map +1 -0
- package/dist/engine/composite-vector-store.js +69 -0
- package/dist/engine/composite-vector-store.js.map +1 -0
- package/dist/engine/embeddings/local-service.d.ts +10 -0
- package/dist/engine/embeddings/local-service.d.ts.map +1 -0
- package/dist/engine/embeddings/local-service.js +37 -0
- package/dist/engine/embeddings/local-service.js.map +1 -0
- package/dist/engine/embeddings/types.d.ts +10 -0
- package/dist/engine/embeddings/types.d.ts.map +1 -0
- package/dist/engine/embeddings/types.js +2 -0
- package/dist/engine/embeddings/types.js.map +1 -0
- package/dist/engine/embeddings/vertex-service.d.ts +11 -0
- package/dist/engine/embeddings/vertex-service.d.ts.map +1 -0
- package/dist/engine/embeddings/vertex-service.js +45 -0
- package/dist/engine/embeddings/vertex-service.js.map +1 -0
- package/dist/engine/indexer.d.ts +12 -0
- package/dist/engine/indexer.d.ts.map +1 -0
- package/dist/engine/indexer.js +74 -0
- package/dist/engine/indexer.js.map +1 -0
- package/dist/engine/lock.d.ts +24 -0
- package/dist/engine/lock.d.ts.map +1 -0
- package/dist/engine/lock.js +58 -0
- package/dist/engine/lock.js.map +1 -0
- package/dist/engine/schema.d.ts +19 -0
- package/dist/engine/schema.d.ts.map +1 -0
- package/dist/engine/schema.js +18 -0
- package/dist/engine/schema.js.map +1 -0
- package/dist/engine/vector-store-types.d.ts +24 -0
- package/dist/engine/vector-store-types.d.ts.map +1 -0
- package/dist/engine/vector-store-types.js +2 -0
- package/dist/engine/vector-store-types.js.map +1 -0
- package/dist/engine/vector-store.d.ts +21 -0
- package/dist/engine/vector-store.d.ts.map +1 -0
- package/dist/engine/vector-store.js +105 -0
- package/dist/engine/vector-store.js.map +1 -0
- package/dist/engine/watcher.d.ts +16 -0
- package/dist/engine/watcher.d.ts.map +1 -0
- package/dist/engine/watcher.js +94 -0
- package/dist/engine/watcher.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +360 -0
- package/dist/server.js.map +1 -0
- package/dist/sync/github-provider.d.ts +20 -0
- package/dist/sync/github-provider.d.ts.map +1 -0
- package/dist/sync/github-provider.js +80 -0
- package/dist/sync/github-provider.js.map +1 -0
- package/dist/sync/scheduler.d.ts +18 -0
- package/dist/sync/scheduler.d.ts.map +1 -0
- package/dist/sync/scheduler.js +67 -0
- package/dist/sync/scheduler.js.map +1 -0
- package/package.json +78 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 YuiHub / vemikrs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-process.d.ts","sourceRoot":"","sources":["../../src/api/text-process.ts"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE,CAmBvE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import TinySegmenter from 'tiny-segmenter';
|
|
2
|
+
// Simple text processing for Japanese Terms Extraction
|
|
3
|
+
// Using TinySegmenter (Compact, JS-only)
|
|
4
|
+
const segmenter = new TinySegmenter();
|
|
5
|
+
// Term Extraction Logic
|
|
6
|
+
// 1. Segment text
|
|
7
|
+
// 2. Filter for potential keywords (length > 1, no symbols)
|
|
8
|
+
// 3. TF-IDF is hard without corpus stats, so just simple frequency or unique list for now.
|
|
9
|
+
// YuiHub V1 requirement says "TF-IDF/MeCab equivalent".
|
|
10
|
+
// For MVP, we extract Noun-like segments. TinySegmenter doesn't provide POS tags.
|
|
11
|
+
// So we rely on heuristics: Kanji/Katakana usually imply content words.
|
|
12
|
+
// Heuristics:
|
|
13
|
+
// - Keep Kanji/Katakana words len >= 2
|
|
14
|
+
// - Keep English words len >= 3
|
|
15
|
+
// - Exclude Hiragana-only (often particles/verbs)
|
|
16
|
+
function isContentWord(term) {
|
|
17
|
+
if (term.length < 2)
|
|
18
|
+
return false;
|
|
19
|
+
// Kanji or Katakana presence
|
|
20
|
+
const hasKanji = /[\u4e00-\u9faf]/.test(term);
|
|
21
|
+
const hasKatakana = /[\u30a0-\u30ff]/.test(term);
|
|
22
|
+
const isHiraganaOnly = /^[\u3040-\u309f]+$/.test(term);
|
|
23
|
+
const isAlpha = /^[a-zA-Z0-9_-]+$/.test(term);
|
|
24
|
+
if (isHiraganaOnly)
|
|
25
|
+
return false; // Skip pure hiragana (likely particles/auxiliary verbs)
|
|
26
|
+
if (isAlpha && term.length < 3)
|
|
27
|
+
return false; // Skip short alpha
|
|
28
|
+
return hasKanji || hasKatakana || isAlpha;
|
|
29
|
+
}
|
|
30
|
+
export function extractTerms(text, limit = 10) {
|
|
31
|
+
const segments = segmenter.segment(text);
|
|
32
|
+
const termFrequency = new Map();
|
|
33
|
+
for (const seg of segments) {
|
|
34
|
+
if (isContentWord(seg)) {
|
|
35
|
+
termFrequency.set(seg, (termFrequency.get(seg) || 0) + 1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Sort by frequency (descending) then alphabetically for ties
|
|
39
|
+
const sortedTerms = Array.from(termFrequency.entries())
|
|
40
|
+
.sort((a, b) => {
|
|
41
|
+
if (b[1] !== a[1])
|
|
42
|
+
return b[1] - a[1]; // Higher frequency first
|
|
43
|
+
return a[0].localeCompare(b[0]); // Alphabetical for ties
|
|
44
|
+
})
|
|
45
|
+
.map(([term]) => term);
|
|
46
|
+
return sortedTerms.slice(0, limit);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=text-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-process.js","sourceRoot":"","sources":["../../src/api/text-process.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAE3C,uDAAuD;AACvD,yCAAyC;AAEzC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;AAEtC,wBAAwB;AACxB,kBAAkB;AAClB,4DAA4D;AAC5D,2FAA2F;AAC3F,2DAA2D;AAC3D,qFAAqF;AACrF,2EAA2E;AAE3E,cAAc;AACd,uCAAuC;AACvC,gCAAgC;AAChC,kDAAkD;AAElD,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAElC,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,cAAc;QAAE,OAAO,KAAK,CAAC,CAAC,wDAAwD;IAC1F,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,mBAAmB;IAEjE,OAAO,QAAQ,IAAI,WAAW,IAAI,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE;IAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;QAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;IAC3D,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YuiHub V1 Authentication Module
|
|
3
|
+
* File-based Handshake: Token is written to DATA_DIR/.token
|
|
4
|
+
*/
|
|
5
|
+
export interface AuthToken {
|
|
6
|
+
token: string;
|
|
7
|
+
created_at: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generate a new auth token
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateToken(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get the token file path
|
|
15
|
+
*/
|
|
16
|
+
export declare function getTokenPath(dataDir: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Initialize authentication - generate token if not exists
|
|
19
|
+
* This is called on backend startup
|
|
20
|
+
*/
|
|
21
|
+
export declare function initAuth(dataDir: string): Promise<AuthToken>;
|
|
22
|
+
/**
|
|
23
|
+
* Read token from file (for MCP Server / VSCode Client)
|
|
24
|
+
*/
|
|
25
|
+
export declare function readToken(dataDir: string): Promise<string | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Validate a token against the stored token
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateToken(dataDir: string, token: string): Promise<boolean>;
|
|
30
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAyBlE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa5E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YuiHub V1 Authentication Module
|
|
3
|
+
* File-based Handshake: Token is written to DATA_DIR/.token
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'fs-extra';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { randomUUID } from 'crypto';
|
|
8
|
+
const TOKEN_PREFIX = 'yh-';
|
|
9
|
+
/**
|
|
10
|
+
* Generate a new auth token
|
|
11
|
+
*/
|
|
12
|
+
export function generateToken() {
|
|
13
|
+
return `${TOKEN_PREFIX}${randomUUID()}`;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get the token file path
|
|
17
|
+
*/
|
|
18
|
+
export function getTokenPath(dataDir) {
|
|
19
|
+
return path.join(dataDir, '.token');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Initialize authentication - generate token if not exists
|
|
23
|
+
* This is called on backend startup
|
|
24
|
+
*/
|
|
25
|
+
export async function initAuth(dataDir) {
|
|
26
|
+
const tokenPath = getTokenPath(dataDir);
|
|
27
|
+
// Check if token file exists
|
|
28
|
+
if (await fs.pathExists(tokenPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const auth = await fs.readJson(tokenPath);
|
|
31
|
+
if (auth.token && auth.token.startsWith(TOKEN_PREFIX)) {
|
|
32
|
+
return auth;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Invalid token file, regenerate
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Generate new token
|
|
40
|
+
const auth = {
|
|
41
|
+
token: generateToken(),
|
|
42
|
+
created_at: new Date().toISOString(),
|
|
43
|
+
};
|
|
44
|
+
await fs.ensureDir(dataDir);
|
|
45
|
+
await fs.writeJson(tokenPath, auth, { spaces: 2 });
|
|
46
|
+
return auth;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Read token from file (for MCP Server / VSCode Client)
|
|
50
|
+
*/
|
|
51
|
+
export async function readToken(dataDir) {
|
|
52
|
+
const tokenPath = getTokenPath(dataDir);
|
|
53
|
+
if (await fs.pathExists(tokenPath)) {
|
|
54
|
+
try {
|
|
55
|
+
const auth = await fs.readJson(tokenPath);
|
|
56
|
+
return auth.token;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validate a token against the stored token
|
|
66
|
+
*/
|
|
67
|
+
export async function validateToken(dataDir, token) {
|
|
68
|
+
const storedToken = await readToken(dataDir);
|
|
69
|
+
return storedToken === token;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOpC,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,YAAY,GAAG,UAAU,EAAE,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe;IAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAExC,6BAA6B;IAC7B,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAc,CAAC;YACvD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,GAAc;QACtB,KAAK,EAAE,aAAa,EAAE;QACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAc,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,KAAa;IAChE,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,WAAW,KAAK,KAAK,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { simpleGit } from 'simple-git';
|
|
5
|
+
import { ConfigService } from '../config/service.js';
|
|
6
|
+
import os from 'os';
|
|
7
|
+
// Setup Wizard
|
|
8
|
+
async function runSetup() {
|
|
9
|
+
console.log('🤖 YuiHub V1 Setup Wizard 🤖');
|
|
10
|
+
const questions = [
|
|
11
|
+
{
|
|
12
|
+
type: 'input',
|
|
13
|
+
name: 'dataDir',
|
|
14
|
+
message: 'Where should we store your data (DATA_DIR)?',
|
|
15
|
+
default: process.env.DATA_DIR || path.join(os.homedir(), '.yuihub'),
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
type: 'list',
|
|
19
|
+
name: 'mode',
|
|
20
|
+
message: 'What would you like to do?',
|
|
21
|
+
choices: [
|
|
22
|
+
{ name: '🆕 Create New Vault', value: 'new' },
|
|
23
|
+
{ name: '🔗 Connect Existing Vault (Git Clone)', value: 'clone' },
|
|
24
|
+
],
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
const answers = await inquirer.prompt(questions);
|
|
28
|
+
const dataDir = path.resolve(answers.dataDir);
|
|
29
|
+
console.log(`\n📂 Setting up in: ${dataDir}`);
|
|
30
|
+
await fs.ensureDir(dataDir);
|
|
31
|
+
if (answers.mode === 'new') {
|
|
32
|
+
await setupNewVault(dataDir);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
await setupExistingVault(dataDir);
|
|
36
|
+
}
|
|
37
|
+
// Ensure VERSION file exists
|
|
38
|
+
await fs.writeFile(path.join(dataDir, 'VERSION'), '1.0.0-rc1');
|
|
39
|
+
// Final Config Check
|
|
40
|
+
const configService = new ConfigService(dataDir);
|
|
41
|
+
const currentConfig = configService.get();
|
|
42
|
+
console.log('\n✅ Setup Complete! Config:', JSON.stringify(currentConfig, null, 2));
|
|
43
|
+
console.log(`\nRun 'npm start' to launch YuiHub.`);
|
|
44
|
+
}
|
|
45
|
+
async function setupNewVault(dataDir) {
|
|
46
|
+
// 1. Initialize Git
|
|
47
|
+
const git = simpleGit(dataDir);
|
|
48
|
+
if (!await fs.pathExists(path.join(dataDir, '.git'))) {
|
|
49
|
+
console.log('📦 Initializing Git repository...');
|
|
50
|
+
await git.init();
|
|
51
|
+
}
|
|
52
|
+
// 2. Create Config
|
|
53
|
+
const configService = new ConfigService(dataDir);
|
|
54
|
+
// Default config is already loaded/created by service if missing
|
|
55
|
+
// But let's ask for remote if they want to push later?
|
|
56
|
+
const { configureRemote } = await inquirer.prompt([{
|
|
57
|
+
type: 'confirm',
|
|
58
|
+
name: 'configureRemote',
|
|
59
|
+
message: 'Do you want to configure a remote origin now?',
|
|
60
|
+
default: false
|
|
61
|
+
}]);
|
|
62
|
+
if (configureRemote) {
|
|
63
|
+
const { remoteUrl } = await inquirer.prompt([{
|
|
64
|
+
type: 'input',
|
|
65
|
+
name: 'remoteUrl',
|
|
66
|
+
message: 'Enter Git Remote URL:'
|
|
67
|
+
}]);
|
|
68
|
+
await git.addRemote('origin', remoteUrl);
|
|
69
|
+
await configService.update({ sync: { enabled: true, remoteUrl, interval: '*/5 * * * *', branch: 'main' } });
|
|
70
|
+
console.log('🔗 Remote configured.');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function setupExistingVault(dataDir) {
|
|
74
|
+
// Check if directory is empty
|
|
75
|
+
const files = await fs.readdir(dataDir);
|
|
76
|
+
if (files.length > 0) {
|
|
77
|
+
const { proceed } = await inquirer.prompt([{
|
|
78
|
+
type: 'confirm',
|
|
79
|
+
name: 'proceed',
|
|
80
|
+
message: 'Directory is not empty. Proceeding might fail if it is not a fresh clone. Continue?',
|
|
81
|
+
default: false
|
|
82
|
+
}]);
|
|
83
|
+
if (!proceed)
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
const { remoteUrl } = await inquirer.prompt([{
|
|
87
|
+
type: 'input',
|
|
88
|
+
name: 'remoteUrl',
|
|
89
|
+
message: 'Enter Git Remote URL to Clone:',
|
|
90
|
+
validate: (input) => {
|
|
91
|
+
if (!input || input.trim().length === 0) {
|
|
92
|
+
return 'URL is required';
|
|
93
|
+
}
|
|
94
|
+
// Basic Git URL validation (supports https://, git@, ssh://)
|
|
95
|
+
const gitUrlPattern = /^(https?:\/\/|git@|ssh:\/\/|git:\/\/).+/i;
|
|
96
|
+
if (!gitUrlPattern.test(input.trim())) {
|
|
97
|
+
return 'Please enter a valid Git URL (https://, git@, or ssh://)';
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
}]);
|
|
102
|
+
console.log('⬇️ Cloning from remote... (This may take a while)');
|
|
103
|
+
const git = simpleGit();
|
|
104
|
+
try {
|
|
105
|
+
// Clone into dataDir
|
|
106
|
+
await git.clone(remoteUrl, dataDir);
|
|
107
|
+
console.log('✅ Clone successful.');
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
console.error('❌ Clone failed:', e);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
// Update Config to match
|
|
114
|
+
const configService = new ConfigService(dataDir);
|
|
115
|
+
await configService.update({ sync: { enabled: true, remoteUrl, interval: '*/5 * * * *', branch: 'main' } });
|
|
116
|
+
// Note: Initial Indexing will happen on server startup automatically
|
|
117
|
+
console.log('💡 Note: Search Index will be rebuilt when you start the server.');
|
|
118
|
+
}
|
|
119
|
+
runSetup().catch(console.error);
|
|
120
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export declare const AppConfigSchema: z.ZodObject<{
|
|
3
|
+
server: z.ZodObject<{
|
|
4
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
host: z.ZodDefault<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
port: number;
|
|
8
|
+
host: string;
|
|
9
|
+
}, {
|
|
10
|
+
port?: number | undefined;
|
|
11
|
+
host?: string | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
sync: z.ZodObject<{
|
|
14
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
remoteUrl: z.ZodOptional<z.ZodString>;
|
|
16
|
+
interval: z.ZodDefault<z.ZodString>;
|
|
17
|
+
branch: z.ZodDefault<z.ZodString>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
interval: string;
|
|
21
|
+
branch: string;
|
|
22
|
+
remoteUrl?: string | undefined;
|
|
23
|
+
}, {
|
|
24
|
+
enabled?: boolean | undefined;
|
|
25
|
+
remoteUrl?: string | undefined;
|
|
26
|
+
interval?: string | undefined;
|
|
27
|
+
branch?: string | undefined;
|
|
28
|
+
}>;
|
|
29
|
+
ai: z.ZodObject<{
|
|
30
|
+
providers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
31
|
+
type: z.ZodLiteral<"local">;
|
|
32
|
+
embeddingModel: z.ZodDefault<z.ZodString>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
type: "local";
|
|
35
|
+
embeddingModel: string;
|
|
36
|
+
}, {
|
|
37
|
+
type: "local";
|
|
38
|
+
embeddingModel?: string | undefined;
|
|
39
|
+
}>, z.ZodObject<{
|
|
40
|
+
type: z.ZodLiteral<"vertex">;
|
|
41
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
42
|
+
location: z.ZodOptional<z.ZodString>;
|
|
43
|
+
embeddingModel: z.ZodDefault<z.ZodString>;
|
|
44
|
+
chatModel: z.ZodDefault<z.ZodString>;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
type: "vertex";
|
|
47
|
+
embeddingModel: string;
|
|
48
|
+
chatModel: string;
|
|
49
|
+
projectId?: string | undefined;
|
|
50
|
+
location?: string | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
type: "vertex";
|
|
53
|
+
embeddingModel?: string | undefined;
|
|
54
|
+
projectId?: string | undefined;
|
|
55
|
+
location?: string | undefined;
|
|
56
|
+
chatModel?: string | undefined;
|
|
57
|
+
}>]>>>;
|
|
58
|
+
defaults: z.ZodDefault<z.ZodObject<{
|
|
59
|
+
embedding: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
60
|
+
agent: z.ZodDefault<z.ZodString>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
embedding: string[];
|
|
63
|
+
agent: string;
|
|
64
|
+
}, {
|
|
65
|
+
embedding?: string[] | undefined;
|
|
66
|
+
agent?: string | undefined;
|
|
67
|
+
}>>;
|
|
68
|
+
}, "strip", z.ZodTypeAny, {
|
|
69
|
+
providers: Record<string, {
|
|
70
|
+
type: "local";
|
|
71
|
+
embeddingModel: string;
|
|
72
|
+
} | {
|
|
73
|
+
type: "vertex";
|
|
74
|
+
embeddingModel: string;
|
|
75
|
+
chatModel: string;
|
|
76
|
+
projectId?: string | undefined;
|
|
77
|
+
location?: string | undefined;
|
|
78
|
+
}>;
|
|
79
|
+
defaults: {
|
|
80
|
+
embedding: string[];
|
|
81
|
+
agent: string;
|
|
82
|
+
};
|
|
83
|
+
}, {
|
|
84
|
+
providers?: Record<string, {
|
|
85
|
+
type: "local";
|
|
86
|
+
embeddingModel?: string | undefined;
|
|
87
|
+
} | {
|
|
88
|
+
type: "vertex";
|
|
89
|
+
embeddingModel?: string | undefined;
|
|
90
|
+
projectId?: string | undefined;
|
|
91
|
+
location?: string | undefined;
|
|
92
|
+
chatModel?: string | undefined;
|
|
93
|
+
}> | undefined;
|
|
94
|
+
defaults?: {
|
|
95
|
+
embedding?: string[] | undefined;
|
|
96
|
+
agent?: string | undefined;
|
|
97
|
+
} | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
storage: z.ZodOptional<z.ZodObject<{
|
|
100
|
+
dataDir: z.ZodString;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
dataDir: string;
|
|
103
|
+
}, {
|
|
104
|
+
dataDir: string;
|
|
105
|
+
}>>;
|
|
106
|
+
}, "strip", z.ZodTypeAny, {
|
|
107
|
+
server: {
|
|
108
|
+
port: number;
|
|
109
|
+
host: string;
|
|
110
|
+
};
|
|
111
|
+
sync: {
|
|
112
|
+
enabled: boolean;
|
|
113
|
+
interval: string;
|
|
114
|
+
branch: string;
|
|
115
|
+
remoteUrl?: string | undefined;
|
|
116
|
+
};
|
|
117
|
+
ai: {
|
|
118
|
+
providers: Record<string, {
|
|
119
|
+
type: "local";
|
|
120
|
+
embeddingModel: string;
|
|
121
|
+
} | {
|
|
122
|
+
type: "vertex";
|
|
123
|
+
embeddingModel: string;
|
|
124
|
+
chatModel: string;
|
|
125
|
+
projectId?: string | undefined;
|
|
126
|
+
location?: string | undefined;
|
|
127
|
+
}>;
|
|
128
|
+
defaults: {
|
|
129
|
+
embedding: string[];
|
|
130
|
+
agent: string;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
storage?: {
|
|
134
|
+
dataDir: string;
|
|
135
|
+
} | undefined;
|
|
136
|
+
}, {
|
|
137
|
+
server: {
|
|
138
|
+
port?: number | undefined;
|
|
139
|
+
host?: string | undefined;
|
|
140
|
+
};
|
|
141
|
+
sync: {
|
|
142
|
+
enabled?: boolean | undefined;
|
|
143
|
+
remoteUrl?: string | undefined;
|
|
144
|
+
interval?: string | undefined;
|
|
145
|
+
branch?: string | undefined;
|
|
146
|
+
};
|
|
147
|
+
ai: {
|
|
148
|
+
providers?: Record<string, {
|
|
149
|
+
type: "local";
|
|
150
|
+
embeddingModel?: string | undefined;
|
|
151
|
+
} | {
|
|
152
|
+
type: "vertex";
|
|
153
|
+
embeddingModel?: string | undefined;
|
|
154
|
+
projectId?: string | undefined;
|
|
155
|
+
location?: string | undefined;
|
|
156
|
+
chatModel?: string | undefined;
|
|
157
|
+
}> | undefined;
|
|
158
|
+
defaults?: {
|
|
159
|
+
embedding?: string[] | undefined;
|
|
160
|
+
agent?: string | undefined;
|
|
161
|
+
} | undefined;
|
|
162
|
+
};
|
|
163
|
+
storage?: {
|
|
164
|
+
dataDir: string;
|
|
165
|
+
} | undefined;
|
|
166
|
+
}>;
|
|
167
|
+
export declare const AppConfigUpdateSchema: z.ZodObject<{
|
|
168
|
+
server: z.ZodOptional<z.ZodObject<{
|
|
169
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
170
|
+
host: z.ZodDefault<z.ZodString>;
|
|
171
|
+
}, "strip", z.ZodTypeAny, {
|
|
172
|
+
port: number;
|
|
173
|
+
host: string;
|
|
174
|
+
}, {
|
|
175
|
+
port?: number | undefined;
|
|
176
|
+
host?: string | undefined;
|
|
177
|
+
}>>;
|
|
178
|
+
sync: z.ZodOptional<z.ZodObject<{
|
|
179
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
180
|
+
remoteUrl: z.ZodOptional<z.ZodString>;
|
|
181
|
+
interval: z.ZodDefault<z.ZodString>;
|
|
182
|
+
branch: z.ZodDefault<z.ZodString>;
|
|
183
|
+
}, "strip", z.ZodTypeAny, {
|
|
184
|
+
enabled: boolean;
|
|
185
|
+
interval: string;
|
|
186
|
+
branch: string;
|
|
187
|
+
remoteUrl?: string | undefined;
|
|
188
|
+
}, {
|
|
189
|
+
enabled?: boolean | undefined;
|
|
190
|
+
remoteUrl?: string | undefined;
|
|
191
|
+
interval?: string | undefined;
|
|
192
|
+
branch?: string | undefined;
|
|
193
|
+
}>>;
|
|
194
|
+
ai: z.ZodOptional<z.ZodObject<{
|
|
195
|
+
providers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
196
|
+
type: z.ZodLiteral<"local">;
|
|
197
|
+
embeddingModel: z.ZodDefault<z.ZodString>;
|
|
198
|
+
}, "strip", z.ZodTypeAny, {
|
|
199
|
+
type: "local";
|
|
200
|
+
embeddingModel: string;
|
|
201
|
+
}, {
|
|
202
|
+
type: "local";
|
|
203
|
+
embeddingModel?: string | undefined;
|
|
204
|
+
}>, z.ZodObject<{
|
|
205
|
+
type: z.ZodLiteral<"vertex">;
|
|
206
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
207
|
+
location: z.ZodOptional<z.ZodString>;
|
|
208
|
+
embeddingModel: z.ZodDefault<z.ZodString>;
|
|
209
|
+
chatModel: z.ZodDefault<z.ZodString>;
|
|
210
|
+
}, "strip", z.ZodTypeAny, {
|
|
211
|
+
type: "vertex";
|
|
212
|
+
embeddingModel: string;
|
|
213
|
+
chatModel: string;
|
|
214
|
+
projectId?: string | undefined;
|
|
215
|
+
location?: string | undefined;
|
|
216
|
+
}, {
|
|
217
|
+
type: "vertex";
|
|
218
|
+
embeddingModel?: string | undefined;
|
|
219
|
+
projectId?: string | undefined;
|
|
220
|
+
location?: string | undefined;
|
|
221
|
+
chatModel?: string | undefined;
|
|
222
|
+
}>]>>>;
|
|
223
|
+
defaults: z.ZodDefault<z.ZodObject<{
|
|
224
|
+
embedding: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
225
|
+
agent: z.ZodDefault<z.ZodString>;
|
|
226
|
+
}, "strip", z.ZodTypeAny, {
|
|
227
|
+
embedding: string[];
|
|
228
|
+
agent: string;
|
|
229
|
+
}, {
|
|
230
|
+
embedding?: string[] | undefined;
|
|
231
|
+
agent?: string | undefined;
|
|
232
|
+
}>>;
|
|
233
|
+
}, "strip", z.ZodTypeAny, {
|
|
234
|
+
providers: Record<string, {
|
|
235
|
+
type: "local";
|
|
236
|
+
embeddingModel: string;
|
|
237
|
+
} | {
|
|
238
|
+
type: "vertex";
|
|
239
|
+
embeddingModel: string;
|
|
240
|
+
chatModel: string;
|
|
241
|
+
projectId?: string | undefined;
|
|
242
|
+
location?: string | undefined;
|
|
243
|
+
}>;
|
|
244
|
+
defaults: {
|
|
245
|
+
embedding: string[];
|
|
246
|
+
agent: string;
|
|
247
|
+
};
|
|
248
|
+
}, {
|
|
249
|
+
providers?: Record<string, {
|
|
250
|
+
type: "local";
|
|
251
|
+
embeddingModel?: string | undefined;
|
|
252
|
+
} | {
|
|
253
|
+
type: "vertex";
|
|
254
|
+
embeddingModel?: string | undefined;
|
|
255
|
+
projectId?: string | undefined;
|
|
256
|
+
location?: string | undefined;
|
|
257
|
+
chatModel?: string | undefined;
|
|
258
|
+
}> | undefined;
|
|
259
|
+
defaults?: {
|
|
260
|
+
embedding?: string[] | undefined;
|
|
261
|
+
agent?: string | undefined;
|
|
262
|
+
} | undefined;
|
|
263
|
+
}>>;
|
|
264
|
+
storage: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
265
|
+
dataDir: z.ZodString;
|
|
266
|
+
}, "strip", z.ZodTypeAny, {
|
|
267
|
+
dataDir: string;
|
|
268
|
+
}, {
|
|
269
|
+
dataDir: string;
|
|
270
|
+
}>>>;
|
|
271
|
+
}, "strip", z.ZodTypeAny, {
|
|
272
|
+
server?: {
|
|
273
|
+
port: number;
|
|
274
|
+
host: string;
|
|
275
|
+
} | undefined;
|
|
276
|
+
sync?: {
|
|
277
|
+
enabled: boolean;
|
|
278
|
+
interval: string;
|
|
279
|
+
branch: string;
|
|
280
|
+
remoteUrl?: string | undefined;
|
|
281
|
+
} | undefined;
|
|
282
|
+
ai?: {
|
|
283
|
+
providers: Record<string, {
|
|
284
|
+
type: "local";
|
|
285
|
+
embeddingModel: string;
|
|
286
|
+
} | {
|
|
287
|
+
type: "vertex";
|
|
288
|
+
embeddingModel: string;
|
|
289
|
+
chatModel: string;
|
|
290
|
+
projectId?: string | undefined;
|
|
291
|
+
location?: string | undefined;
|
|
292
|
+
}>;
|
|
293
|
+
defaults: {
|
|
294
|
+
embedding: string[];
|
|
295
|
+
agent: string;
|
|
296
|
+
};
|
|
297
|
+
} | undefined;
|
|
298
|
+
storage?: {
|
|
299
|
+
dataDir: string;
|
|
300
|
+
} | undefined;
|
|
301
|
+
}, {
|
|
302
|
+
server?: {
|
|
303
|
+
port?: number | undefined;
|
|
304
|
+
host?: string | undefined;
|
|
305
|
+
} | undefined;
|
|
306
|
+
sync?: {
|
|
307
|
+
enabled?: boolean | undefined;
|
|
308
|
+
remoteUrl?: string | undefined;
|
|
309
|
+
interval?: string | undefined;
|
|
310
|
+
branch?: string | undefined;
|
|
311
|
+
} | undefined;
|
|
312
|
+
ai?: {
|
|
313
|
+
providers?: Record<string, {
|
|
314
|
+
type: "local";
|
|
315
|
+
embeddingModel?: string | undefined;
|
|
316
|
+
} | {
|
|
317
|
+
type: "vertex";
|
|
318
|
+
embeddingModel?: string | undefined;
|
|
319
|
+
projectId?: string | undefined;
|
|
320
|
+
location?: string | undefined;
|
|
321
|
+
chatModel?: string | undefined;
|
|
322
|
+
}> | undefined;
|
|
323
|
+
defaults?: {
|
|
324
|
+
embedding?: string[] | undefined;
|
|
325
|
+
agent?: string | undefined;
|
|
326
|
+
} | undefined;
|
|
327
|
+
} | undefined;
|
|
328
|
+
storage?: {
|
|
329
|
+
dataDir: string;
|
|
330
|
+
} | undefined;
|
|
331
|
+
}>;
|
|
332
|
+
export type AppConfigUpdate = z.infer<typeof AppConfigUpdateSchema>;
|
|
333
|
+
export type AppConfig = z.infer<typeof AppConfigSchema>;
|
|
334
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4B,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|