@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.
Files changed (118) hide show
  1. package/LICENSE +21 -0
  2. package/dist/api/text-process.d.ts +2 -0
  3. package/dist/api/text-process.d.ts.map +1 -0
  4. package/dist/api/text-process.js +48 -0
  5. package/dist/api/text-process.js.map +1 -0
  6. package/dist/auth.d.ts +30 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +71 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/cli/setup.d.ts +2 -0
  11. package/dist/cli/setup.d.ts.map +1 -0
  12. package/dist/cli/setup.js +120 -0
  13. package/dist/cli/setup.js.map +1 -0
  14. package/dist/config/schema.d.ts +334 -0
  15. package/dist/config/schema.d.ts.map +1 -0
  16. package/dist/config/schema.js +45 -0
  17. package/dist/config/schema.js.map +1 -0
  18. package/dist/config/service.d.ts +12 -0
  19. package/dist/config/service.d.ts.map +1 -0
  20. package/dist/config/service.js +81 -0
  21. package/dist/config/service.js.map +1 -0
  22. package/dist/engine/agent/context.d.ts +35 -0
  23. package/dist/engine/agent/context.d.ts.map +1 -0
  24. package/dist/engine/agent/context.js +72 -0
  25. package/dist/engine/agent/context.js.map +1 -0
  26. package/dist/engine/agent/core.d.ts +19 -0
  27. package/dist/engine/agent/core.d.ts.map +1 -0
  28. package/dist/engine/agent/core.js +67 -0
  29. package/dist/engine/agent/core.js.map +1 -0
  30. package/dist/engine/agent/live-context.d.ts +8 -0
  31. package/dist/engine/agent/live-context.d.ts.map +1 -0
  32. package/dist/engine/agent/live-context.js +19 -0
  33. package/dist/engine/agent/live-context.js.map +1 -0
  34. package/dist/engine/agent/tools/fs.d.ts +16 -0
  35. package/dist/engine/agent/tools/fs.d.ts.map +1 -0
  36. package/dist/engine/agent/tools/fs.js +78 -0
  37. package/dist/engine/agent/tools/fs.js.map +1 -0
  38. package/dist/engine/agent/tools/memory.d.ts +18 -0
  39. package/dist/engine/agent/tools/memory.d.ts.map +1 -0
  40. package/dist/engine/agent/tools/memory.js +51 -0
  41. package/dist/engine/agent/tools/memory.js.map +1 -0
  42. package/dist/engine/ai/local-genai-service.d.ts +22 -0
  43. package/dist/engine/ai/local-genai-service.d.ts.map +1 -0
  44. package/dist/engine/ai/local-genai-service.js +158 -0
  45. package/dist/engine/ai/local-genai-service.js.map +1 -0
  46. package/dist/engine/ai/registry.d.ts +16 -0
  47. package/dist/engine/ai/registry.d.ts.map +1 -0
  48. package/dist/engine/ai/registry.js +78 -0
  49. package/dist/engine/ai/registry.js.map +1 -0
  50. package/dist/engine/ai/tools.d.ts +7 -0
  51. package/dist/engine/ai/tools.d.ts.map +1 -0
  52. package/dist/engine/ai/tools.js +2 -0
  53. package/dist/engine/ai/tools.js.map +1 -0
  54. package/dist/engine/ai/types.d.ts +21 -0
  55. package/dist/engine/ai/types.d.ts.map +1 -0
  56. package/dist/engine/ai/types.js +2 -0
  57. package/dist/engine/ai/types.js.map +1 -0
  58. package/dist/engine/ai/vertex-genai-service.d.ts +13 -0
  59. package/dist/engine/ai/vertex-genai-service.d.ts.map +1 -0
  60. package/dist/engine/ai/vertex-genai-service.js +93 -0
  61. package/dist/engine/ai/vertex-genai-service.js.map +1 -0
  62. package/dist/engine/chunker.d.ts +19 -0
  63. package/dist/engine/chunker.d.ts.map +1 -0
  64. package/dist/engine/chunker.js +79 -0
  65. package/dist/engine/chunker.js.map +1 -0
  66. package/dist/engine/composite-vector-store.d.ts +21 -0
  67. package/dist/engine/composite-vector-store.d.ts.map +1 -0
  68. package/dist/engine/composite-vector-store.js +69 -0
  69. package/dist/engine/composite-vector-store.js.map +1 -0
  70. package/dist/engine/embeddings/local-service.d.ts +10 -0
  71. package/dist/engine/embeddings/local-service.d.ts.map +1 -0
  72. package/dist/engine/embeddings/local-service.js +37 -0
  73. package/dist/engine/embeddings/local-service.js.map +1 -0
  74. package/dist/engine/embeddings/types.d.ts +10 -0
  75. package/dist/engine/embeddings/types.d.ts.map +1 -0
  76. package/dist/engine/embeddings/types.js +2 -0
  77. package/dist/engine/embeddings/types.js.map +1 -0
  78. package/dist/engine/embeddings/vertex-service.d.ts +11 -0
  79. package/dist/engine/embeddings/vertex-service.d.ts.map +1 -0
  80. package/dist/engine/embeddings/vertex-service.js +45 -0
  81. package/dist/engine/embeddings/vertex-service.js.map +1 -0
  82. package/dist/engine/indexer.d.ts +12 -0
  83. package/dist/engine/indexer.d.ts.map +1 -0
  84. package/dist/engine/indexer.js +74 -0
  85. package/dist/engine/indexer.js.map +1 -0
  86. package/dist/engine/lock.d.ts +24 -0
  87. package/dist/engine/lock.d.ts.map +1 -0
  88. package/dist/engine/lock.js +58 -0
  89. package/dist/engine/lock.js.map +1 -0
  90. package/dist/engine/schema.d.ts +19 -0
  91. package/dist/engine/schema.d.ts.map +1 -0
  92. package/dist/engine/schema.js +18 -0
  93. package/dist/engine/schema.js.map +1 -0
  94. package/dist/engine/vector-store-types.d.ts +24 -0
  95. package/dist/engine/vector-store-types.d.ts.map +1 -0
  96. package/dist/engine/vector-store-types.js +2 -0
  97. package/dist/engine/vector-store-types.js.map +1 -0
  98. package/dist/engine/vector-store.d.ts +21 -0
  99. package/dist/engine/vector-store.d.ts.map +1 -0
  100. package/dist/engine/vector-store.js +105 -0
  101. package/dist/engine/vector-store.js.map +1 -0
  102. package/dist/engine/watcher.d.ts +16 -0
  103. package/dist/engine/watcher.d.ts.map +1 -0
  104. package/dist/engine/watcher.js +94 -0
  105. package/dist/engine/watcher.js.map +1 -0
  106. package/dist/server.d.ts +2 -0
  107. package/dist/server.d.ts.map +1 -0
  108. package/dist/server.js +360 -0
  109. package/dist/server.js.map +1 -0
  110. package/dist/sync/github-provider.d.ts +20 -0
  111. package/dist/sync/github-provider.d.ts.map +1 -0
  112. package/dist/sync/github-provider.js +80 -0
  113. package/dist/sync/github-provider.js.map +1 -0
  114. package/dist/sync/scheduler.d.ts +18 -0
  115. package/dist/sync/scheduler.d.ts.map +1 -0
  116. package/dist/sync/scheduler.js +67 -0
  117. package/dist/sync/scheduler.js.map +1 -0
  118. 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,2 @@
1
+ export declare function extractTerms(text: string, limit?: number): string[];
2
+ //# sourceMappingURL=text-process.d.ts.map
@@ -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
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -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"}