harubashi 0.1.0
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 +201 -0
- package/README.md +293 -0
- package/README.ru.md +293 -0
- package/dist/agent/agent.module.d.ts +2 -0
- package/dist/agent/agent.module.js +34 -0
- package/dist/agent/agent.module.js.map +1 -0
- package/dist/agent/agent.processor.d.ts +31 -0
- package/dist/agent/agent.processor.js +266 -0
- package/dist/agent/agent.processor.js.map +1 -0
- package/dist/agent/command-guard.service.d.ts +10 -0
- package/dist/agent/command-guard.service.js +48 -0
- package/dist/agent/command-guard.service.js.map +1 -0
- package/dist/agent/interruption.service.d.ts +11 -0
- package/dist/agent/interruption.service.js +52 -0
- package/dist/agent/interruption.service.js.map +1 -0
- package/dist/agent/system-executor.service.d.ts +32 -0
- package/dist/agent/system-executor.service.js +200 -0
- package/dist/agent/system-executor.service.js.map +1 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +38 -0
- package/dist/app.module.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +137 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +141 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.command.d.ts +2 -0
- package/dist/commands/config.command.js +83 -0
- package/dist/commands/config.command.js.map +1 -0
- package/dist/commands/logs.command.d.ts +5 -0
- package/dist/commands/logs.command.js +130 -0
- package/dist/commands/logs.command.js.map +1 -0
- package/dist/commands/profile.command.d.ts +5 -0
- package/dist/commands/profile.command.js +293 -0
- package/dist/commands/profile.command.js.map +1 -0
- package/dist/commands/setup.command.d.ts +1 -0
- package/dist/commands/setup.command.js +94 -0
- package/dist/commands/setup.command.js.map +1 -0
- package/dist/commands/setup.helpers.d.ts +34 -0
- package/dist/commands/setup.helpers.js +265 -0
- package/dist/commands/setup.helpers.js.map +1 -0
- package/dist/commands/skills.command.d.ts +2 -0
- package/dist/commands/skills.command.js +111 -0
- package/dist/commands/skills.command.js.map +1 -0
- package/dist/common/adapters/cli-interaction.adapter.d.ts +8 -0
- package/dist/common/adapters/cli-interaction.adapter.js +67 -0
- package/dist/common/adapters/cli-interaction.adapter.js.map +1 -0
- package/dist/common/adapters/interaction-adapter.interface.d.ts +6 -0
- package/dist/common/adapters/interaction-adapter.interface.js +10 -0
- package/dist/common/adapters/interaction-adapter.interface.js.map +1 -0
- package/dist/common/constants.d.ts +3 -0
- package/dist/common/constants.js +7 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/index.d.ts +4 -0
- package/dist/common/index.js +21 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/logger.d.ts +9 -0
- package/dist/common/logger.js +87 -0
- package/dist/common/logger.js.map +1 -0
- package/dist/common/paths.d.ts +12 -0
- package/dist/common/paths.js +28 -0
- package/dist/common/paths.js.map +1 -0
- package/dist/common/types/message.types.d.ts +48 -0
- package/dist/common/types/message.types.js +18 -0
- package/dist/common/types/message.types.js.map +1 -0
- package/dist/common/types/tool.types.d.ts +20 -0
- package/dist/common/types/tool.types.js +3 -0
- package/dist/common/types/tool.types.js.map +1 -0
- package/dist/common/utils/type-guards.d.ts +8 -0
- package/dist/common/utils/type-guards.js +46 -0
- package/dist/common/utils/type-guards.js.map +1 -0
- package/dist/config/config-loader.d.ts +6 -0
- package/dist/config/config-loader.js +90 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config.module.d.ts +2 -0
- package/dist/config/config.module.js +28 -0
- package/dist/config/config.module.js.map +1 -0
- package/dist/config/config.types.d.ts +55 -0
- package/dist/config/config.types.js +21 -0
- package/dist/config/config.types.js.map +1 -0
- package/dist/daemon.d.ts +2 -0
- package/dist/daemon.js +28 -0
- package/dist/daemon.js.map +1 -0
- package/dist/llm/anthropic/anthropic.provider.d.ts +15 -0
- package/dist/llm/anthropic/anthropic.provider.js +162 -0
- package/dist/llm/anthropic/anthropic.provider.js.map +1 -0
- package/dist/llm/google/google.provider.d.ts +14 -0
- package/dist/llm/google/google.provider.js +189 -0
- package/dist/llm/google/google.provider.js.map +1 -0
- package/dist/llm/llm-factory.service.d.ts +24 -0
- package/dist/llm/llm-factory.service.js +76 -0
- package/dist/llm/llm-factory.service.js.map +1 -0
- package/dist/llm/llm.interface.d.ts +19 -0
- package/dist/llm/llm.interface.js +5 -0
- package/dist/llm/llm.interface.js.map +1 -0
- package/dist/llm/llm.module.d.ts +2 -0
- package/dist/llm/llm.module.js +34 -0
- package/dist/llm/llm.module.js.map +1 -0
- package/dist/llm/nvidia/nvidia.provider.d.ts +11 -0
- package/dist/llm/nvidia/nvidia.provider.js +49 -0
- package/dist/llm/nvidia/nvidia.provider.js.map +1 -0
- package/dist/llm/openai/openai.provider.d.ts +9 -0
- package/dist/llm/openai/openai.provider.js +35 -0
- package/dist/llm/openai/openai.provider.js.map +1 -0
- package/dist/llm/openai-compatible/openai-compatible.helper.d.ts +4 -0
- package/dist/llm/openai-compatible/openai-compatible.helper.js +155 -0
- package/dist/llm/openai-compatible/openai-compatible.helper.js.map +1 -0
- package/dist/llm/proxy/proxy.provider.d.ts +9 -0
- package/dist/llm/proxy/proxy.provider.js +35 -0
- package/dist/llm/proxy/proxy.provider.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +14 -0
- package/dist/main.js.map +1 -0
- package/dist/prisma/prisma.module.d.ts +2 -0
- package/dist/prisma/prisma.module.js +22 -0
- package/dist/prisma/prisma.module.js.map +1 -0
- package/dist/prisma/prisma.service.d.ts +9 -0
- package/dist/prisma/prisma.service.js +40 -0
- package/dist/prisma/prisma.service.js.map +1 -0
- package/dist/sessions/sessions.module.d.ts +2 -0
- package/dist/sessions/sessions.module.js +23 -0
- package/dist/sessions/sessions.module.js.map +1 -0
- package/dist/sessions/sessions.service.d.ts +21 -0
- package/dist/sessions/sessions.service.js +82 -0
- package/dist/sessions/sessions.service.js.map +1 -0
- package/dist/skills/definitions/directory_explorer.md +69 -0
- package/dist/skills/definitions/execute_command.md +27 -0
- package/dist/skills/definitions/git_manager.md +98 -0
- package/dist/skills/definitions/read_file.md +25 -0
- package/dist/skills/skills-bundle.d.ts +7 -0
- package/dist/skills/skills-bundle.js +27 -0
- package/dist/skills/skills-bundle.js.map +1 -0
- package/dist/skills/skills-parser.d.ts +8 -0
- package/dist/skills/skills-parser.js +67 -0
- package/dist/skills/skills-parser.js.map +1 -0
- package/dist/skills/skills.module.d.ts +2 -0
- package/dist/skills/skills.module.js +22 -0
- package/dist/skills/skills.module.js.map +1 -0
- package/dist/skills/skills.service.d.ts +22 -0
- package/dist/skills/skills.service.js +150 -0
- package/dist/skills/skills.service.js.map +1 -0
- package/dist/skills/skills.types.d.ts +16 -0
- package/dist/skills/skills.types.js +3 -0
- package/dist/skills/skills.types.js.map +1 -0
- package/dist/soul/prompts/core.md +28 -0
- package/dist/soul/prompts/rules.md +40 -0
- package/dist/soul/prompts/runtime.md +13 -0
- package/dist/soul/prompts/voice.md +45 -0
- package/dist/soul/soul.module.d.ts +2 -0
- package/dist/soul/soul.module.js +22 -0
- package/dist/soul/soul.module.js.map +1 -0
- package/dist/soul/soul.service.d.ts +22 -0
- package/dist/soul/soul.service.js +89 -0
- package/dist/soul/soul.service.js.map +1 -0
- package/dist/telegram/pairing.service.d.ts +11 -0
- package/dist/telegram/pairing.service.js +81 -0
- package/dist/telegram/pairing.service.js.map +1 -0
- package/dist/telegram/telegram-interaction.adapter.d.ts +16 -0
- package/dist/telegram/telegram-interaction.adapter.js +54 -0
- package/dist/telegram/telegram-interaction.adapter.js.map +1 -0
- package/dist/telegram/telegram.module.d.ts +2 -0
- package/dist/telegram/telegram.module.js +25 -0
- package/dist/telegram/telegram.module.js.map +1 -0
- package/dist/telegram/telegram.service.d.ts +28 -0
- package/dist/telegram/telegram.service.js +255 -0
- package/dist/telegram/telegram.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +68 -0
- package/prisma/migrations/20260403134611_init/migration.sql +40 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const HarubashiPaths: {
|
|
2
|
+
root: string;
|
|
3
|
+
configFile: string;
|
|
4
|
+
databasesDir: string;
|
|
5
|
+
skillsDir: string;
|
|
6
|
+
logsDir: string;
|
|
7
|
+
logFile: string;
|
|
8
|
+
databaseFile(profile: string): string;
|
|
9
|
+
databaseUrl(profile: string): string;
|
|
10
|
+
bundledSchemaPath(): string;
|
|
11
|
+
bundledSkillsDir(): string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HarubashiPaths = void 0;
|
|
4
|
+
const os = require("os");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const ROOT = path.join(os.homedir(), '.harubashi');
|
|
7
|
+
exports.HarubashiPaths = {
|
|
8
|
+
root: ROOT,
|
|
9
|
+
configFile: path.join(ROOT, 'config.yaml'),
|
|
10
|
+
databasesDir: path.join(ROOT, 'databases'),
|
|
11
|
+
skillsDir: path.join(ROOT, 'skills'),
|
|
12
|
+
logsDir: path.join(ROOT, 'logs'),
|
|
13
|
+
logFile: path.join(ROOT, 'logs', 'harubashi.log'),
|
|
14
|
+
databaseFile(profile) {
|
|
15
|
+
return path.join(ROOT, 'databases', `${profile}.db`);
|
|
16
|
+
},
|
|
17
|
+
databaseUrl(profile) {
|
|
18
|
+
const filePath = this.databaseFile(profile).replace(/\\/g, '/');
|
|
19
|
+
return `file:${filePath}`;
|
|
20
|
+
},
|
|
21
|
+
bundledSchemaPath() {
|
|
22
|
+
return path.resolve(__dirname, '..', '..', 'prisma', 'schema.prisma');
|
|
23
|
+
},
|
|
24
|
+
bundledSkillsDir() {
|
|
25
|
+
return path.resolve(__dirname, '..', 'skills', 'definitions');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/common/paths.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAO7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAEtC,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;IAC1C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IACpC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;IAGjD,YAAY,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,KAAK,CAAC,CAAC;IACvD,CAAC;IAMD,WAAW,CAAC,OAAe;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChE,OAAO,QAAQ,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAMD,iBAAiB;QAGf,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC;IAMD,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare enum MessageRole {
|
|
2
|
+
USER = "user",
|
|
3
|
+
ASSISTANT = "assistant"
|
|
4
|
+
}
|
|
5
|
+
export declare enum ContentBlockType {
|
|
6
|
+
Text = "text",
|
|
7
|
+
Image = "image",
|
|
8
|
+
ToolUse = "tool_use",
|
|
9
|
+
ToolResult = "tool_result",
|
|
10
|
+
Thinking = "thinking",
|
|
11
|
+
RedactedThinking = "redacted_thinking"
|
|
12
|
+
}
|
|
13
|
+
export interface TextBlock {
|
|
14
|
+
type: ContentBlockType.Text;
|
|
15
|
+
text: string;
|
|
16
|
+
thoughtSignature?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ImageBlock {
|
|
19
|
+
type: ContentBlockType.Image;
|
|
20
|
+
source: {
|
|
21
|
+
type: 'base64';
|
|
22
|
+
media_type: string;
|
|
23
|
+
data: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface ToolUseBlock {
|
|
27
|
+
type: ContentBlockType.ToolUse;
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
input: Record<string, unknown>;
|
|
31
|
+
thoughtSignature?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ToolResultBlock {
|
|
34
|
+
type: ContentBlockType.ToolResult;
|
|
35
|
+
tool_use_id: string;
|
|
36
|
+
content: ContentBlock[];
|
|
37
|
+
is_error?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface ThinkingBlock {
|
|
40
|
+
type: ContentBlockType.Thinking;
|
|
41
|
+
thinking: string;
|
|
42
|
+
signature: string;
|
|
43
|
+
}
|
|
44
|
+
export interface RedactedThinkingBlock {
|
|
45
|
+
type: ContentBlockType.RedactedThinking;
|
|
46
|
+
data: string;
|
|
47
|
+
}
|
|
48
|
+
export type ContentBlock = TextBlock | ImageBlock | ToolUseBlock | ToolResultBlock | ThinkingBlock | RedactedThinkingBlock;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentBlockType = exports.MessageRole = void 0;
|
|
4
|
+
var MessageRole;
|
|
5
|
+
(function (MessageRole) {
|
|
6
|
+
MessageRole["USER"] = "user";
|
|
7
|
+
MessageRole["ASSISTANT"] = "assistant";
|
|
8
|
+
})(MessageRole || (exports.MessageRole = MessageRole = {}));
|
|
9
|
+
var ContentBlockType;
|
|
10
|
+
(function (ContentBlockType) {
|
|
11
|
+
ContentBlockType["Text"] = "text";
|
|
12
|
+
ContentBlockType["Image"] = "image";
|
|
13
|
+
ContentBlockType["ToolUse"] = "tool_use";
|
|
14
|
+
ContentBlockType["ToolResult"] = "tool_result";
|
|
15
|
+
ContentBlockType["Thinking"] = "thinking";
|
|
16
|
+
ContentBlockType["RedactedThinking"] = "redacted_thinking";
|
|
17
|
+
})(ContentBlockType || (exports.ContentBlockType = ContentBlockType = {}));
|
|
18
|
+
//# sourceMappingURL=message.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.types.js","sourceRoot":"","sources":["../../../src/common/types/message.types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,sCAAuB,CAAA;AACzB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,wCAAoB,CAAA;IACpB,8CAA0B,CAAA;IAC1B,yCAAqB,CAAA;IACrB,0DAAsC,CAAA;AACxC,CAAC,EAPW,gBAAgB,gCAAhB,gBAAgB,QAO3B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface ToolInputSchema {
|
|
2
|
+
type: 'object';
|
|
3
|
+
properties: Record<string, unknown>;
|
|
4
|
+
required?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface ToolDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
input_schema: ToolInputSchema;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolCall {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
input: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface ToolResult {
|
|
17
|
+
tool_use_id: string;
|
|
18
|
+
output: string;
|
|
19
|
+
is_error: boolean;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.types.js","sourceRoot":"","sources":["../../../src/common/types/tool.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TextBlock, ImageBlock, ToolUseBlock, ToolResultBlock, ThinkingBlock, RedactedThinkingBlock } from '../types/message.types';
|
|
2
|
+
export declare function isTextBlock(block: unknown): block is TextBlock;
|
|
3
|
+
export declare function isImageBlock(block: unknown): block is ImageBlock;
|
|
4
|
+
export declare function isToolUseBlock(block: unknown): block is ToolUseBlock;
|
|
5
|
+
export declare function isToolResultBlock(block: unknown): block is ToolResultBlock;
|
|
6
|
+
export declare function isThinkingBlock(block: unknown): block is ThinkingBlock;
|
|
7
|
+
export declare function isRedactedThinkingBlock(block: unknown): block is RedactedThinkingBlock;
|
|
8
|
+
export declare function isSystemToolUseBlock(block: unknown): block is ToolUseBlock;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTextBlock = isTextBlock;
|
|
4
|
+
exports.isImageBlock = isImageBlock;
|
|
5
|
+
exports.isToolUseBlock = isToolUseBlock;
|
|
6
|
+
exports.isToolResultBlock = isToolResultBlock;
|
|
7
|
+
exports.isThinkingBlock = isThinkingBlock;
|
|
8
|
+
exports.isRedactedThinkingBlock = isRedactedThinkingBlock;
|
|
9
|
+
exports.isSystemToolUseBlock = isSystemToolUseBlock;
|
|
10
|
+
const message_types_1 = require("../types/message.types");
|
|
11
|
+
function isTextBlock(block) {
|
|
12
|
+
return (typeof block === 'object' &&
|
|
13
|
+
block !== null &&
|
|
14
|
+
block.type === message_types_1.ContentBlockType.Text);
|
|
15
|
+
}
|
|
16
|
+
function isImageBlock(block) {
|
|
17
|
+
return (typeof block === 'object' &&
|
|
18
|
+
block !== null &&
|
|
19
|
+
block.type === message_types_1.ContentBlockType.Image);
|
|
20
|
+
}
|
|
21
|
+
function isToolUseBlock(block) {
|
|
22
|
+
return (typeof block === 'object' &&
|
|
23
|
+
block !== null &&
|
|
24
|
+
block.type === message_types_1.ContentBlockType.ToolUse);
|
|
25
|
+
}
|
|
26
|
+
function isToolResultBlock(block) {
|
|
27
|
+
return (typeof block === 'object' &&
|
|
28
|
+
block !== null &&
|
|
29
|
+
block.type === message_types_1.ContentBlockType.ToolResult);
|
|
30
|
+
}
|
|
31
|
+
function isThinkingBlock(block) {
|
|
32
|
+
return (typeof block === 'object' &&
|
|
33
|
+
block !== null &&
|
|
34
|
+
block.type === message_types_1.ContentBlockType.Thinking);
|
|
35
|
+
}
|
|
36
|
+
function isRedactedThinkingBlock(block) {
|
|
37
|
+
return (typeof block === 'object' &&
|
|
38
|
+
block !== null &&
|
|
39
|
+
block.type === message_types_1.ContentBlockType.RedactedThinking);
|
|
40
|
+
}
|
|
41
|
+
function isSystemToolUseBlock(block) {
|
|
42
|
+
if (!isToolUseBlock(block))
|
|
43
|
+
return false;
|
|
44
|
+
return block.name.startsWith('system_');
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=type-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../../src/common/utils/type-guards.ts"],"names":[],"mappings":";;AAWA,kCAMC;AAED,oCAMC;AAED,wCAMC;AAED,8CAMC;AAED,0CAMC;AAED,0DAQC;AAED,oDAGC;AAhED,0DASgC;AAEhC,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,IAAI,CACvD,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,KAAK,CACxD,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,OAAO,CAC1D,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,UAAU,CAC7D,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,QAAQ,CAC3D,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsB,CAAC,IAAI,KAAK,gCAAgB,CAAC,gBAAgB,CACnE,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HarubashiConfig, Profile } from './config.types';
|
|
2
|
+
export declare function loadHarubashiConfig(): HarubashiConfig;
|
|
3
|
+
export declare function getActiveProfile(config: HarubashiConfig): Profile;
|
|
4
|
+
export declare function saveHarubashiConfig(config: HarubashiConfig): void;
|
|
5
|
+
export declare function flattenForNestConfig(config: HarubashiConfig): Record<string, string | undefined>;
|
|
6
|
+
export declare function loadAndFlatten(): Record<string, string | undefined>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadHarubashiConfig = loadHarubashiConfig;
|
|
4
|
+
exports.getActiveProfile = getActiveProfile;
|
|
5
|
+
exports.saveHarubashiConfig = saveHarubashiConfig;
|
|
6
|
+
exports.flattenForNestConfig = flattenForNestConfig;
|
|
7
|
+
exports.loadAndFlatten = loadAndFlatten;
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const yaml = require("js-yaml");
|
|
10
|
+
const paths_1 = require("../common/paths");
|
|
11
|
+
const config_types_1 = require("./config.types");
|
|
12
|
+
function loadHarubashiConfig() {
|
|
13
|
+
const configPath = paths_1.HarubashiPaths.configFile;
|
|
14
|
+
if (!fs.existsSync(configPath)) {
|
|
15
|
+
throw new config_types_1.ConfigMissingError(configPath);
|
|
16
|
+
}
|
|
17
|
+
let raw;
|
|
18
|
+
try {
|
|
19
|
+
const text = fs.readFileSync(configPath, 'utf-8');
|
|
20
|
+
raw = yaml.load(text);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
throw new config_types_1.ConfigInvalidError(`Failed to parse YAML at ${configPath}: ${err.message}`);
|
|
24
|
+
}
|
|
25
|
+
if (!raw || typeof raw !== 'object') {
|
|
26
|
+
throw new config_types_1.ConfigInvalidError('Config root must be an object.');
|
|
27
|
+
}
|
|
28
|
+
const cfg = raw;
|
|
29
|
+
if (!cfg.activeProfile || typeof cfg.activeProfile !== 'string') {
|
|
30
|
+
throw new config_types_1.ConfigInvalidError('Missing required field "activeProfile".');
|
|
31
|
+
}
|
|
32
|
+
if (!cfg.profiles || typeof cfg.profiles !== 'object') {
|
|
33
|
+
throw new config_types_1.ConfigInvalidError('Missing required field "profiles".');
|
|
34
|
+
}
|
|
35
|
+
const active = cfg.profiles[cfg.activeProfile];
|
|
36
|
+
if (!active) {
|
|
37
|
+
throw new config_types_1.ConfigInvalidError(`activeProfile "${cfg.activeProfile}" does not exist in "profiles".`);
|
|
38
|
+
}
|
|
39
|
+
if (!active.llmProvider) {
|
|
40
|
+
throw new config_types_1.ConfigInvalidError(`Profile "${cfg.activeProfile}" is missing "llmProvider".`);
|
|
41
|
+
}
|
|
42
|
+
if (!active.providers) {
|
|
43
|
+
throw new config_types_1.ConfigInvalidError(`Profile "${cfg.activeProfile}" is missing "providers".`);
|
|
44
|
+
}
|
|
45
|
+
return cfg;
|
|
46
|
+
}
|
|
47
|
+
function getActiveProfile(config) {
|
|
48
|
+
return config.profiles[config.activeProfile];
|
|
49
|
+
}
|
|
50
|
+
function saveHarubashiConfig(config) {
|
|
51
|
+
const target = paths_1.HarubashiPaths.configFile;
|
|
52
|
+
const tmp = `${target}.tmp`;
|
|
53
|
+
fs.mkdirSync(paths_1.HarubashiPaths.root, { recursive: true });
|
|
54
|
+
fs.writeFileSync(tmp, yaml.dump(config, { indent: 2, lineWidth: 120 }), 'utf-8');
|
|
55
|
+
fs.renameSync(tmp, target);
|
|
56
|
+
}
|
|
57
|
+
function flattenForNestConfig(config) {
|
|
58
|
+
const profile = getActiveProfile(config);
|
|
59
|
+
const p = profile.providers;
|
|
60
|
+
const flat = {
|
|
61
|
+
DATABASE_URL: paths_1.HarubashiPaths.databaseUrl(config.activeProfile),
|
|
62
|
+
HARUBASHI_LLM_PROVIDER: profile.llmProvider,
|
|
63
|
+
GOOGLE_API_KEY: p.google?.apiKey,
|
|
64
|
+
GOOGLE_GEMINI_MODEL: p.google?.model,
|
|
65
|
+
NVIDIA_API_KEY: p.nvidia?.apiKey,
|
|
66
|
+
NVIDIA_MODEL: p.nvidia?.model,
|
|
67
|
+
NVIDIA_BASE_URL: p.nvidia?.baseURL,
|
|
68
|
+
ANTHROPIC_API_KEY: p.anthropic?.apiKey,
|
|
69
|
+
ANTHROPIC_MODEL: p.anthropic?.model,
|
|
70
|
+
OPENAI_API_KEY: p.openai?.apiKey,
|
|
71
|
+
HARUBASHI_PROXY_BASE_URL: p.proxy?.baseURL,
|
|
72
|
+
HARUBASHI_PROXY_API_KEY: p.proxy?.apiKey,
|
|
73
|
+
HARUBASHI_PROXY_MODEL: p.proxy?.model,
|
|
74
|
+
TELEGRAM_BOT_TOKEN: profile.telegram?.enabled === false ? undefined : profile.telegram?.botToken,
|
|
75
|
+
HARUBASHI_SAFE_COMMANDS: profile.commandGuard?.safeCommands?.join(','),
|
|
76
|
+
HARUBASHI_COMMAND_TIMEOUT: profile.commandGuard?.timeoutMs !== undefined
|
|
77
|
+
? String(profile.commandGuard.timeoutMs)
|
|
78
|
+
: undefined,
|
|
79
|
+
};
|
|
80
|
+
return flat;
|
|
81
|
+
}
|
|
82
|
+
function loadAndFlatten() {
|
|
83
|
+
const config = loadHarubashiConfig();
|
|
84
|
+
const flat = flattenForNestConfig(config);
|
|
85
|
+
if (flat.DATABASE_URL && !process.env.DATABASE_URL) {
|
|
86
|
+
process.env.DATABASE_URL = flat.DATABASE_URL;
|
|
87
|
+
}
|
|
88
|
+
return flat;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/config/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HarubashiConfigModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const config_1 = require("@nestjs/config");
|
|
12
|
+
const config_loader_1 = require("./config-loader");
|
|
13
|
+
let HarubashiConfigModule = class HarubashiConfigModule {
|
|
14
|
+
};
|
|
15
|
+
exports.HarubashiConfigModule = HarubashiConfigModule;
|
|
16
|
+
exports.HarubashiConfigModule = HarubashiConfigModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [
|
|
19
|
+
config_1.ConfigModule.forRoot({
|
|
20
|
+
isGlobal: true,
|
|
21
|
+
ignoreEnvFile: true,
|
|
22
|
+
ignoreEnvVars: false,
|
|
23
|
+
load: [() => (0, config_loader_1.loadAndFlatten)()],
|
|
24
|
+
}),
|
|
25
|
+
],
|
|
26
|
+
})
|
|
27
|
+
], HarubashiConfigModule);
|
|
28
|
+
//# sourceMappingURL=config.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.module.js","sourceRoot":"","sources":["../../src/config/config.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,mDAAiD;AAkB1C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IAVjC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,8BAAc,GAAE,CAAC;aAC/B,CAAC;SACH;KACF,CAAC;GACW,qBAAqB,CAAG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type ProviderName = 'google' | 'nvidia' | 'anthropic' | 'openai' | 'proxy';
|
|
2
|
+
export interface GoogleProviderConfig {
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface NvidiaProviderConfig {
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
baseURL?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AnthropicProviderConfig {
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface OpenAiProviderConfig {
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
model?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ProxyProviderConfig {
|
|
20
|
+
baseURL?: string;
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ProvidersBlock {
|
|
25
|
+
google?: GoogleProviderConfig;
|
|
26
|
+
nvidia?: NvidiaProviderConfig;
|
|
27
|
+
anthropic?: AnthropicProviderConfig;
|
|
28
|
+
openai?: OpenAiProviderConfig;
|
|
29
|
+
proxy?: ProxyProviderConfig;
|
|
30
|
+
}
|
|
31
|
+
export interface TelegramConfig {
|
|
32
|
+
enabled?: boolean;
|
|
33
|
+
botToken?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface CommandGuardConfig {
|
|
36
|
+
safeCommands?: string[];
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface Profile {
|
|
40
|
+
llmProvider: ProviderName;
|
|
41
|
+
providers: ProvidersBlock;
|
|
42
|
+
telegram?: TelegramConfig;
|
|
43
|
+
commandGuard?: CommandGuardConfig;
|
|
44
|
+
}
|
|
45
|
+
export interface HarubashiConfig {
|
|
46
|
+
activeProfile: string;
|
|
47
|
+
profiles: Record<string, Profile>;
|
|
48
|
+
}
|
|
49
|
+
export declare class ConfigMissingError extends Error {
|
|
50
|
+
readonly configPath: string;
|
|
51
|
+
constructor(configPath: string);
|
|
52
|
+
}
|
|
53
|
+
export declare class ConfigInvalidError extends Error {
|
|
54
|
+
constructor(message: string);
|
|
55
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigInvalidError = exports.ConfigMissingError = void 0;
|
|
4
|
+
class ConfigMissingError extends Error {
|
|
5
|
+
configPath;
|
|
6
|
+
constructor(configPath) {
|
|
7
|
+
super(`Harubashi config not found at "${configPath}". ` +
|
|
8
|
+
`Please run 'harubashi setup' first.`);
|
|
9
|
+
this.configPath = configPath;
|
|
10
|
+
this.name = 'ConfigMissingError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.ConfigMissingError = ConfigMissingError;
|
|
14
|
+
class ConfigInvalidError extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(`Invalid Harubashi config: ${message}`);
|
|
17
|
+
this.name = 'ConfigInvalidError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.ConfigInvalidError = ConfigInvalidError;
|
|
21
|
+
//# sourceMappingURL=config.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../src/config/config.types.ts"],"names":[],"mappings":";;;AAgEA,MAAa,kBAAmB,SAAQ,KAAK;IACf;IAA5B,YAA4B,UAAkB;QAC5C,KAAK,CACH,kCAAkC,UAAU,KAAK;YAC/C,qCAAqC,CACxC,CAAC;QAJwB,eAAU,GAAV,UAAU,CAAQ;QAK5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AARD,gDAQC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC"}
|
package/dist/daemon.d.ts
ADDED
package/dist/daemon.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDaemon = runDaemon;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const core_1 = require("@nestjs/core");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const app_module_1 = require("./app.module");
|
|
8
|
+
const sessions_service_1 = require("./sessions/sessions.service");
|
|
9
|
+
const telegram_service_1 = require("./telegram/telegram.service");
|
|
10
|
+
const logger_1 = require("./common/logger");
|
|
11
|
+
async function runDaemon() {
|
|
12
|
+
const app = await core_1.NestFactory.createApplicationContext(app_module_1.AppModule, {
|
|
13
|
+
logger: (0, logger_1.createHarubashiLogger)({ appName: 'Harubashi' }),
|
|
14
|
+
});
|
|
15
|
+
const logger = new common_1.Logger('Daemon');
|
|
16
|
+
const sessions = app.get(sessions_service_1.SessionsService);
|
|
17
|
+
const telegram = app.get(telegram_service_1.TelegramService);
|
|
18
|
+
await sessions.ensureDefaultUser();
|
|
19
|
+
await telegram.start();
|
|
20
|
+
logger.log('Harubashi daemon is running. Press Ctrl+C to stop.');
|
|
21
|
+
}
|
|
22
|
+
if (require.main === module) {
|
|
23
|
+
runDaemon().catch((err) => {
|
|
24
|
+
console.error('Fatal error during daemon bootstrap:', err);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":";;AAQA,8BAmBC;AA3BD,4BAA0B;AAC1B,uCAA2C;AAC3C,2CAAwC;AACxC,6CAAyC;AACzC,kEAA8D;AAC9D,kEAA8D;AAC9D,4CAAwD;AAEjD,KAAK,UAAU,SAAS;IAG7B,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,wBAAwB,CAAC,sBAAS,EAAE;QAChE,MAAM,EAAE,IAAA,8BAAqB,EAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KACxD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC;IAG1C,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IAGnC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEvB,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACnE,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { ILlmProvider, LlmMessage, LlmResponse } from '../llm.interface';
|
|
3
|
+
import { ToolDefinition } from '../../common/types/tool.types';
|
|
4
|
+
export declare class AnthropicProvider implements ILlmProvider {
|
|
5
|
+
private readonly configService;
|
|
6
|
+
private readonly client;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private readonly model;
|
|
9
|
+
constructor(configService: ConfigService);
|
|
10
|
+
generateResponse(systemPrompt: string, messages: LlmMessage[], tools: ToolDefinition[], signal?: AbortSignal): Promise<LlmResponse>;
|
|
11
|
+
private formatMessages;
|
|
12
|
+
private contentBlockToAnthropic;
|
|
13
|
+
private formatTools;
|
|
14
|
+
private parseResponse;
|
|
15
|
+
}
|