@imisbahk/hive 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/.rocket/ARCHITECTURE.md +7 -0
- package/.rocket/README.md +31 -0
- package/.rocket/SYMBOLS.md +282 -0
- package/.rocket/config.json +18 -0
- package/001-local-first-storage.md +43 -0
- package/003-memory-architechture.md +71 -0
- package/CONTRIBUTING.md +149 -0
- package/LICENSE.md +21 -0
- package/README.md +146 -0
- package/dist/agent/agent.d.ts +32 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +103 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +12 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +117 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +7 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +234 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +186 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/nuke.d.ts +4 -0
- package/dist/cli/commands/nuke.d.ts.map +1 -0
- package/dist/cli/commands/nuke.js +47 -0
- package/dist/cli/commands/nuke.js.map +1 -0
- package/dist/cli/commands/status.d.ts +4 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +114 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/helpers/providerPrompts.d.ts +13 -0
- package/dist/cli/helpers/providerPrompts.d.ts.map +1 -0
- package/dist/cli/helpers/providerPrompts.js +138 -0
- package/dist/cli/helpers/providerPrompts.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +10 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +108 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/api-key.d.ts +3 -0
- package/dist/providers/api-key.d.ts.map +1 -0
- package/dist/providers/api-key.js +15 -0
- package/dist/providers/api-key.js.map +1 -0
- package/dist/providers/base.d.ts +41 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +157 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/google.d.ts +6 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +19 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/groq.d.ts +6 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +19 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +58 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/mistral.d.ts +6 -0
- package/dist/providers/mistral.d.ts.map +1 -0
- package/dist/providers/mistral.js +19 -0
- package/dist/providers/mistral.js.map +1 -0
- package/dist/providers/ollama.d.ts +6 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +20 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +22 -0
- package/dist/providers/openai-compatible.d.ts.map +1 -0
- package/dist/providers/openai-compatible.js +36 -0
- package/dist/providers/openai-compatible.js.map +1 -0
- package/dist/providers/openai.d.ts +6 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +19 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/openrouter.d.ts +6 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +19 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/together.d.ts +6 -0
- package/dist/providers/together.d.ts.map +1 -0
- package/dist/providers/together.js +19 -0
- package/dist/providers/together.js.map +1 -0
- package/dist/storage/db.d.ts +48 -0
- package/dist/storage/db.d.ts.map +1 -0
- package/dist/storage/db.js +298 -0
- package/dist/storage/db.js.map +1 -0
- package/dist/storage/schema.d.ts +43 -0
- package/dist/storage/schema.d.ts.map +1 -0
- package/dist/storage/schema.js +69 -0
- package/dist/storage/schema.js.map +1 -0
- package/index.md +16 -0
- package/package.json +48 -0
- package/prompts/Behaviour.md +23 -0
- package/prompts/Code.md +12 -0
- package/prompts/Memory.md +11 -0
- package/prompts/System.md +6 -0
- package/releases/v1/v0.1/RELEASE-NOTES.md +0 -0
- package/src/agent/agent.ts +155 -0
- package/src/agent/index.ts +2 -0
- package/src/cli/commands/chat.ts +169 -0
- package/src/cli/commands/config.ts +282 -0
- package/src/cli/commands/init.ts +242 -0
- package/src/cli/commands/nuke.ts +60 -0
- package/src/cli/commands/status.ts +147 -0
- package/src/cli/helpers/providerPrompts.ts +192 -0
- package/src/cli/index.ts +38 -0
- package/src/providers/anthropic.ts +146 -0
- package/src/providers/api-key.ts +23 -0
- package/src/providers/base.ts +234 -0
- package/src/providers/google.ts +21 -0
- package/src/providers/groq.ts +21 -0
- package/src/providers/index.ts +65 -0
- package/src/providers/mistral.ts +21 -0
- package/src/providers/ollama.ts +22 -0
- package/src/providers/openai-compatible.ts +58 -0
- package/src/providers/openai.ts +21 -0
- package/src/providers/openrouter.ts +21 -0
- package/src/providers/together.ts +21 -0
- package/src/storage/db.ts +476 -0
- package/src/storage/schema.ts +116 -0
- package/tsconfig.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# 🐝 The Hive
|
|
2
|
+
|
|
3
|
+
> Your agent. Always running. Always learning. Always working.
|
|
4
|
+
|
|
5
|
+
The Hive is a globally distributed AI agent platform. Every user owns a node. Every node is an agent. The network is the product.
|
|
6
|
+
|
|
7
|
+
Your agent knows who you are, works for you while you sleep, connects to every tool in your life, writes and ships code, and communicates with other agents across the globe — all from your terminal.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What It Is
|
|
12
|
+
|
|
13
|
+
- A personal AI agent that lives on your machine
|
|
14
|
+
- A peer-to-peer mesh network connecting agents globally
|
|
15
|
+
- A code intelligence layer powered by [Genie](https://github.com/imisbahk/genie)
|
|
16
|
+
- An automation engine with OS-level capabilities
|
|
17
|
+
- A distributed task network where agents work for each other
|
|
18
|
+
|
|
19
|
+
## What It Is Not
|
|
20
|
+
|
|
21
|
+
- A chatbot
|
|
22
|
+
- A cloud product
|
|
23
|
+
- A subscription to someone else's infrastructure
|
|
24
|
+
- Something that stops working when you close your laptop
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
curl https://thehive.sh/install | sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Or build from source:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
git clone https://github.com/imisbahk/hive
|
|
38
|
+
cd hive
|
|
39
|
+
npm install
|
|
40
|
+
npm run build
|
|
41
|
+
npm link
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Quickstart
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
hive init # birth your agent
|
|
50
|
+
hive chat # talk to it
|
|
51
|
+
hive code # enter coding mode
|
|
52
|
+
hive status # see what's running
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Commands
|
|
58
|
+
|
|
59
|
+
| Command | Description |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `hive init` | Create your agent. Runs once. Ever. |
|
|
62
|
+
| `hive chat` | Talk to your agent |
|
|
63
|
+
| `hive code` | Enter coding mode with Genie intelligence |
|
|
64
|
+
| `hive task` | Manage running tasks |
|
|
65
|
+
| `hive memory` | Inspect and manage agent memory |
|
|
66
|
+
| `hive integrations` | Manage connected services |
|
|
67
|
+
| `hive agents` | Manage sub-agents |
|
|
68
|
+
| `hive status` | Health of your local node |
|
|
69
|
+
| `hive ui` | Open local web dashboard |
|
|
70
|
+
| `hive nuke` | Full wipe. Gone. |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Architecture
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
YOUR MACHINE
|
|
78
|
+
└── hive daemon (always running)
|
|
79
|
+
├── Agent Core (personality, memory, reasoning)
|
|
80
|
+
├── Task Engine (queue, execution, scheduling)
|
|
81
|
+
├── Integration Runtime (Gmail, Notion, Slack, ...)
|
|
82
|
+
├── Browser Automation (Playwright)
|
|
83
|
+
├── Code Intelligence (Genie via MCP)
|
|
84
|
+
└── Mesh Node (libp2p, DHT, GossipSub)
|
|
85
|
+
└── THE HIVE NETWORK
|
|
86
|
+
└── every other agent on earth
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Memory Architecture
|
|
92
|
+
|
|
93
|
+
Your agent never forgets what matters and never bloats.
|
|
94
|
+
|
|
95
|
+
- **Core Persona** — compressed personality snapshot. Rewrites nightly. Never grows.
|
|
96
|
+
- **Episodic Memory** — recent events as semantic embeddings. Always searchable.
|
|
97
|
+
- **Knowledge Graph** — permanent hard facts about you and your life.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## The Network
|
|
102
|
+
|
|
103
|
+
Every agent has a permanent cryptographic identity — a HIVE-ID derived from an Ed25519 keypair. Every message is signed. Every agent is verifiable. No central authority.
|
|
104
|
+
|
|
105
|
+
The mesh runs on libp2p with Kademlia DHT for discovery and GossipSub for messaging. Your agent can find, message, and delegate tasks to any other agent on earth.
|
|
106
|
+
|
|
107
|
+
When your laptop closes — pending tasks are delegated to the mesh. Results wait in an encrypted mailbox. Nothing is lost.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Privacy
|
|
112
|
+
|
|
113
|
+
- Everything stored locally. Encrypted at rest.
|
|
114
|
+
- AI provider of your choice — including fully local via Ollama.
|
|
115
|
+
- No telemetry. No analytics. No cloud dependency.
|
|
116
|
+
- Air gap mode available for full offline operation.
|
|
117
|
+
- You own your agent. Completely.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Roadmap
|
|
122
|
+
|
|
123
|
+
| Version | Focus |
|
|
124
|
+
|---|---|
|
|
125
|
+
| v0.1 | Agent born. `hive init` + `hive chat`. |
|
|
126
|
+
| v0.2 | Agent works. Daemon + task execution. |
|
|
127
|
+
| v0.3 | Agent codes. Genie integration. |
|
|
128
|
+
| v0.4 | Agent connects. Integrations layer. |
|
|
129
|
+
| v0.5 | Agent has a face. Local web view. |
|
|
130
|
+
| v0.6 | Agent multiplies. Sub-agent spawning. |
|
|
131
|
+
| v0.7 | Agent owns the machine. OS capabilities. |
|
|
132
|
+
| v0.8 | Agents find each other. Mesh network. |
|
|
133
|
+
| v0.9 | Agents work for each other. Economy layer. |
|
|
134
|
+
| v1.0 | The Hive is alive. |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Contributing
|
|
139
|
+
|
|
140
|
+
The Hive is early. If you're reading this and want to build something that matters — open an issue, start a conversation, or just ship a PR.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## License
|
|
145
|
+
|
|
146
|
+
MIT
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AgentRecord, ConversationRecord, HiveDatabase } from "../storage/db.js";
|
|
2
|
+
import type { Provider } from "../providers/base.js";
|
|
3
|
+
export interface AgentChatOptions {
|
|
4
|
+
conversationId?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
model?: string;
|
|
7
|
+
temperature?: number;
|
|
8
|
+
maxTokens?: number;
|
|
9
|
+
}
|
|
10
|
+
export type AgentStreamEvent = {
|
|
11
|
+
type: "token";
|
|
12
|
+
conversationId: string;
|
|
13
|
+
token: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: "done";
|
|
16
|
+
conversationId: string;
|
|
17
|
+
assistantMessageId: string;
|
|
18
|
+
};
|
|
19
|
+
export declare class HiveAgent {
|
|
20
|
+
private readonly db;
|
|
21
|
+
private readonly provider;
|
|
22
|
+
private readonly agent;
|
|
23
|
+
private readonly historyLimit;
|
|
24
|
+
constructor(db: HiveDatabase, provider: Provider, agent: AgentRecord);
|
|
25
|
+
static load(db: HiveDatabase, provider?: Provider): Promise<HiveAgent>;
|
|
26
|
+
getProfile(): AgentRecord;
|
|
27
|
+
startConversation(title?: string): ConversationRecord;
|
|
28
|
+
chat(userMessage: string, options?: AgentChatOptions): AsyncGenerator<AgentStreamEvent>;
|
|
29
|
+
private resolveConversation;
|
|
30
|
+
}
|
|
31
|
+
export declare function buildDefaultPersona(ownerName: string): string;
|
|
32
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM;gBAGhB,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,WAAW;WAGxB,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAU5E,UAAU,IAAI,WAAW;IAIzB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAO9C,IAAI,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,gBAAgB,CAAC;IAsDnC,OAAO,CAAC,mBAAmB;CAsB5B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ7D"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { appendMessage, createConversation, getConversationById, getPrimaryAgent, listMessages, } from "../storage/db.js";
|
|
2
|
+
import { createProvider } from "../providers/index.js";
|
|
3
|
+
export class HiveAgent {
|
|
4
|
+
db;
|
|
5
|
+
provider;
|
|
6
|
+
agent;
|
|
7
|
+
historyLimit = 80;
|
|
8
|
+
constructor(db, provider, agent) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.provider = provider;
|
|
11
|
+
this.agent = agent;
|
|
12
|
+
}
|
|
13
|
+
static async load(db, provider) {
|
|
14
|
+
const agent = getPrimaryAgent(db);
|
|
15
|
+
if (!agent) {
|
|
16
|
+
throw new Error("Hive is not initialized. Run `hive init` first.");
|
|
17
|
+
}
|
|
18
|
+
const resolvedProvider = provider ?? (await createProvider(agent.provider));
|
|
19
|
+
return new HiveAgent(db, resolvedProvider, agent);
|
|
20
|
+
}
|
|
21
|
+
getProfile() {
|
|
22
|
+
return this.agent;
|
|
23
|
+
}
|
|
24
|
+
startConversation(title) {
|
|
25
|
+
return createConversation(this.db, {
|
|
26
|
+
agentId: this.agent.id,
|
|
27
|
+
title,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async *chat(userMessage, options = {}) {
|
|
31
|
+
const trimmed = userMessage.trim();
|
|
32
|
+
if (trimmed.length === 0) {
|
|
33
|
+
throw new Error("Cannot send an empty message.");
|
|
34
|
+
}
|
|
35
|
+
const conversation = this.resolveConversation(options.conversationId, options.title);
|
|
36
|
+
appendMessage(this.db, {
|
|
37
|
+
conversationId: conversation.id,
|
|
38
|
+
role: "user",
|
|
39
|
+
content: trimmed,
|
|
40
|
+
});
|
|
41
|
+
const history = listMessages(this.db, conversation.id, this.historyLimit);
|
|
42
|
+
const providerRequest = {
|
|
43
|
+
model: options.model ?? this.agent.model,
|
|
44
|
+
temperature: options.temperature,
|
|
45
|
+
maxTokens: options.maxTokens,
|
|
46
|
+
messages: [
|
|
47
|
+
{
|
|
48
|
+
role: "system",
|
|
49
|
+
content: this.agent.persona,
|
|
50
|
+
},
|
|
51
|
+
...history.map((message) => ({
|
|
52
|
+
role: message.role,
|
|
53
|
+
content: message.content,
|
|
54
|
+
})),
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
let assistantText = "";
|
|
58
|
+
for await (const token of this.provider.streamChat(providerRequest)) {
|
|
59
|
+
assistantText += token;
|
|
60
|
+
yield {
|
|
61
|
+
type: "token",
|
|
62
|
+
conversationId: conversation.id,
|
|
63
|
+
token,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const savedMessage = appendMessage(this.db, {
|
|
67
|
+
conversationId: conversation.id,
|
|
68
|
+
role: "assistant",
|
|
69
|
+
content: assistantText,
|
|
70
|
+
});
|
|
71
|
+
yield {
|
|
72
|
+
type: "done",
|
|
73
|
+
conversationId: conversation.id,
|
|
74
|
+
assistantMessageId: savedMessage.id,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
resolveConversation(conversationId, title) {
|
|
78
|
+
if (!conversationId) {
|
|
79
|
+
return createConversation(this.db, {
|
|
80
|
+
agentId: this.agent.id,
|
|
81
|
+
title,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const existingConversation = getConversationById(this.db, conversationId);
|
|
85
|
+
if (!existingConversation) {
|
|
86
|
+
throw new Error(`Conversation \"${conversationId}\" was not found.`);
|
|
87
|
+
}
|
|
88
|
+
if (existingConversation.agent_id !== this.agent.id) {
|
|
89
|
+
throw new Error("Conversation does not belong to the initialized Hive agent.");
|
|
90
|
+
}
|
|
91
|
+
return existingConversation;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function buildDefaultPersona(ownerName) {
|
|
95
|
+
return [
|
|
96
|
+
"You are The Hive: a local-first personal AI agent.",
|
|
97
|
+
`You are assisting ${ownerName}.`,
|
|
98
|
+
"Be direct, useful, and execution-focused.",
|
|
99
|
+
"Prefer concrete actions over abstract advice.",
|
|
100
|
+
"If context is missing, ask one concise clarifying question.",
|
|
101
|
+
].join("\n");
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAsBvD,MAAM,OAAO,SAAS;IAID;IACA;IACA;IALF,YAAY,GAAG,EAAE,CAAC;IAEnC,YACmB,EAAgB,EAChB,QAAkB,EAClB,KAAkB;QAFlB,OAAE,GAAF,EAAE,CAAc;QAChB,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAa;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAgB,EAAE,QAAmB;QACrD,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,IAAI,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,iBAAiB,CAAC,KAAc;QAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;YACjC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACtB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CACT,WAAmB,EACnB,UAA4B,EAAE;QAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAErF,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE;YACrB,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAsB;YACzC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;iBAC5B;gBACD,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB,CAAC,CAAC;aACJ;SACF,CAAC;QAEF,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,aAAa,IAAI,KAAK,CAAC;YACvB,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,cAAc,EAAE,YAAY,CAAC,EAAE;gBAC/B,KAAK;aACN,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE;YAC1C,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAEH,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,kBAAkB,EAAE,YAAY,CAAC,EAAE;SACpC,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,cAAuB,EACvB,KAAc;QAEd,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;gBACjC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,mBAAmB,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,oBAAoB,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO;QACL,oDAAoD;QACpD,qBAAqB,SAAS,GAAG;QACjC,2CAA2C;QAC3C,+CAA+C;QAC/C,6DAA6D;KAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
interface ChatCommandOptions {
|
|
3
|
+
message?: string;
|
|
4
|
+
conversation?: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
temperature?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function registerChatCommand(program: Command): void;
|
|
10
|
+
export declare function runChatCommand(options: ChatCommandOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY1D;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE/E"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { stdin, stdout } from "node:process";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { HiveAgent } from "../../agent/agent.js";
|
|
5
|
+
import { closeHiveDatabase, getPrimaryAgent, openHiveDatabase, } from "../../storage/db.js";
|
|
6
|
+
import { createProvider } from "../../providers/index.js";
|
|
7
|
+
export function registerChatCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command("chat")
|
|
10
|
+
.description("Talk to your Hive agent")
|
|
11
|
+
.option("-m, --message <text>", "send a single message and exit")
|
|
12
|
+
.option("-c, --conversation <id>", "continue an existing conversation")
|
|
13
|
+
.option("--model <model>", "override model for this session")
|
|
14
|
+
.option("--title <title>", "title for a newly created conversation")
|
|
15
|
+
.option("-t, --temperature <value>", "sampling temperature")
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
await runChatCommand(options);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export async function runChatCommand(options) {
|
|
21
|
+
const temperature = parseTemperature(options.temperature);
|
|
22
|
+
const db = openHiveDatabase();
|
|
23
|
+
try {
|
|
24
|
+
const profile = getPrimaryAgent(db);
|
|
25
|
+
if (!profile) {
|
|
26
|
+
console.error(chalk.red("Hive is not initialized. Run `hive init` first."));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const provider = await createProvider(profile.provider);
|
|
30
|
+
const agent = new HiveAgent(db, provider, profile);
|
|
31
|
+
let conversationId = options.conversation;
|
|
32
|
+
const runOptions = {
|
|
33
|
+
model: options.model,
|
|
34
|
+
title: options.title,
|
|
35
|
+
temperature,
|
|
36
|
+
};
|
|
37
|
+
if (options.message) {
|
|
38
|
+
conversationId = await streamReply(agent, options.message, conversationId, runOptions);
|
|
39
|
+
console.log(chalk.dim(`conversation: ${conversationId}`));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const rl = createInterface({
|
|
43
|
+
input: stdin,
|
|
44
|
+
output: stdout,
|
|
45
|
+
terminal: true,
|
|
46
|
+
});
|
|
47
|
+
console.log(chalk.dim("Type /exit to quit, /new to start a fresh conversation."));
|
|
48
|
+
try {
|
|
49
|
+
while (true) {
|
|
50
|
+
const prompt = (await rl.question(chalk.cyan("you> "))).trim();
|
|
51
|
+
if (prompt.length === 0) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (prompt === "/exit" || prompt === "/quit") {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
if (prompt === "/new") {
|
|
58
|
+
conversationId = undefined;
|
|
59
|
+
console.log(chalk.dim("Started a new conversation context."));
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
conversationId = await streamReply(agent, prompt, conversationId, runOptions);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
process.stdout.write("\n");
|
|
67
|
+
console.error(formatError(error));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
rl.close();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
closeHiveDatabase(db);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function streamReply(agent, prompt, conversationId, options) {
|
|
80
|
+
process.stdout.write(chalk.green("hive> "));
|
|
81
|
+
let activeConversationId = conversationId;
|
|
82
|
+
for await (const event of agent.chat(prompt, {
|
|
83
|
+
conversationId: activeConversationId,
|
|
84
|
+
model: options.model,
|
|
85
|
+
temperature: options.temperature,
|
|
86
|
+
title: options.title,
|
|
87
|
+
})) {
|
|
88
|
+
if (event.type === "token") {
|
|
89
|
+
process.stdout.write(event.token);
|
|
90
|
+
activeConversationId = event.conversationId;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
activeConversationId = event.conversationId;
|
|
94
|
+
}
|
|
95
|
+
process.stdout.write("\n");
|
|
96
|
+
if (!activeConversationId) {
|
|
97
|
+
throw new Error("Conversation state was not returned by the agent.");
|
|
98
|
+
}
|
|
99
|
+
return activeConversationId;
|
|
100
|
+
}
|
|
101
|
+
function parseTemperature(raw) {
|
|
102
|
+
if (raw === undefined) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const parsed = Number.parseFloat(raw);
|
|
106
|
+
if (Number.isNaN(parsed) || parsed < 0 || parsed > 2) {
|
|
107
|
+
throw new Error("Temperature must be a number between 0 and 2.");
|
|
108
|
+
}
|
|
109
|
+
return parsed;
|
|
110
|
+
}
|
|
111
|
+
function formatError(error) {
|
|
112
|
+
if (error instanceof Error) {
|
|
113
|
+
return chalk.red(error.message);
|
|
114
|
+
}
|
|
115
|
+
return chalk.red(String(error));
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare function registerConfigCommand(program: Command): void;
|
|
3
|
+
export declare function runConfigProviderCommand(): Promise<void>;
|
|
4
|
+
export declare function runConfigModelCommand(): Promise<void>;
|
|
5
|
+
export declare function runConfigKeyCommand(): Promise<void>;
|
|
6
|
+
export declare function runConfigShowCommand(): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgC5D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiE9D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC3D;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CzD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB1D"}
|