@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
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { mkdirSync } from "node:fs";
|
|
4
|
+
import Database from "better-sqlite3";
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
import { CURRENT_SCHEMA_VERSION, MIGRATIONS, } from "./schema.js";
|
|
7
|
+
export const HIVE_DIRECTORY_NAME = ".hive";
|
|
8
|
+
export const HIVE_DB_FILENAME = "hive.db";
|
|
9
|
+
const AGENT_PROFILE_COLUMNS = [
|
|
10
|
+
{ name: "dob", definition: "TEXT" },
|
|
11
|
+
{ name: "location", definition: "TEXT" },
|
|
12
|
+
{ name: "profession", definition: "TEXT" },
|
|
13
|
+
{ name: "about_raw", definition: "TEXT" },
|
|
14
|
+
{ name: "agent_name", definition: "TEXT" },
|
|
15
|
+
];
|
|
16
|
+
export function getHiveHomeDir() {
|
|
17
|
+
return process.env.HIVE_HOME ?? join(homedir(), HIVE_DIRECTORY_NAME);
|
|
18
|
+
}
|
|
19
|
+
export function getHiveDatabasePath() {
|
|
20
|
+
return join(getHiveHomeDir(), HIVE_DB_FILENAME);
|
|
21
|
+
}
|
|
22
|
+
export function openHiveDatabase(databasePath = getHiveDatabasePath()) {
|
|
23
|
+
mkdirSync(dirname(databasePath), { recursive: true });
|
|
24
|
+
const db = new Database(databasePath);
|
|
25
|
+
configureDatabase(db);
|
|
26
|
+
runMigrations(db);
|
|
27
|
+
setMetaValue(db, "schema_version", String(CURRENT_SCHEMA_VERSION));
|
|
28
|
+
return db;
|
|
29
|
+
}
|
|
30
|
+
export function closeHiveDatabase(db) {
|
|
31
|
+
db.close();
|
|
32
|
+
}
|
|
33
|
+
function configureDatabase(db) {
|
|
34
|
+
db.pragma("foreign_keys = ON");
|
|
35
|
+
db.pragma("journal_mode = WAL");
|
|
36
|
+
db.pragma("synchronous = NORMAL");
|
|
37
|
+
}
|
|
38
|
+
function ensureMigrationTable(db) {
|
|
39
|
+
db.exec(`
|
|
40
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
41
|
+
version INTEGER PRIMARY KEY,
|
|
42
|
+
name TEXT NOT NULL,
|
|
43
|
+
applied_at TEXT NOT NULL
|
|
44
|
+
);
|
|
45
|
+
`);
|
|
46
|
+
}
|
|
47
|
+
export function runMigrations(db) {
|
|
48
|
+
ensureMigrationTable(db);
|
|
49
|
+
const appliedRows = db
|
|
50
|
+
.prepare("SELECT version FROM schema_migrations")
|
|
51
|
+
.all();
|
|
52
|
+
const appliedVersions = new Set(appliedRows.map((row) => row.version));
|
|
53
|
+
for (const migration of MIGRATIONS) {
|
|
54
|
+
if (appliedVersions.has(migration.version)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const applyMigration = db.transaction(() => {
|
|
58
|
+
if (migration.name === "v2_agents_profile_columns") {
|
|
59
|
+
ensureAgentProfileColumns(db);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
db.exec(migration.sql);
|
|
63
|
+
}
|
|
64
|
+
db.prepare(`
|
|
65
|
+
INSERT INTO schema_migrations (version, name, applied_at)
|
|
66
|
+
VALUES (?, ?, ?)
|
|
67
|
+
`).run(migration.version, migration.name, nowIso());
|
|
68
|
+
});
|
|
69
|
+
applyMigration();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function ensureAgentProfileColumns(db) {
|
|
73
|
+
const tableInfo = db.prepare("PRAGMA table_info(agents)").all();
|
|
74
|
+
const existingColumns = new Set(tableInfo.map((column) => column.name));
|
|
75
|
+
for (const column of AGENT_PROFILE_COLUMNS) {
|
|
76
|
+
if (existingColumns.has(column.name)) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
db.exec(`ALTER TABLE agents ADD COLUMN ${column.name} ${column.definition}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function nowIso() {
|
|
83
|
+
return new Date().toISOString();
|
|
84
|
+
}
|
|
85
|
+
export function getMetaValue(db, key) {
|
|
86
|
+
const row = db
|
|
87
|
+
.prepare("SELECT key, value, updated_at FROM meta WHERE key = ?")
|
|
88
|
+
.get(key);
|
|
89
|
+
return row?.value ?? null;
|
|
90
|
+
}
|
|
91
|
+
export function setMetaValue(db, key, value) {
|
|
92
|
+
db.prepare(`
|
|
93
|
+
INSERT INTO meta (key, value, updated_at)
|
|
94
|
+
VALUES (?, ?, ?)
|
|
95
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
96
|
+
value = excluded.value,
|
|
97
|
+
updated_at = excluded.updated_at
|
|
98
|
+
`).run(key, value, nowIso());
|
|
99
|
+
}
|
|
100
|
+
export function isHiveInitialized(db) {
|
|
101
|
+
const row = db
|
|
102
|
+
.prepare("SELECT COUNT(1) as count FROM agents")
|
|
103
|
+
.get();
|
|
104
|
+
return row.count > 0;
|
|
105
|
+
}
|
|
106
|
+
export function getPrimaryAgent(db) {
|
|
107
|
+
const row = db
|
|
108
|
+
.prepare(`
|
|
109
|
+
SELECT
|
|
110
|
+
id,
|
|
111
|
+
name,
|
|
112
|
+
provider,
|
|
113
|
+
model,
|
|
114
|
+
persona,
|
|
115
|
+
dob,
|
|
116
|
+
location,
|
|
117
|
+
profession,
|
|
118
|
+
about_raw,
|
|
119
|
+
agent_name,
|
|
120
|
+
created_at,
|
|
121
|
+
updated_at
|
|
122
|
+
FROM agents
|
|
123
|
+
ORDER BY datetime(created_at) ASC
|
|
124
|
+
LIMIT 1
|
|
125
|
+
`)
|
|
126
|
+
.get();
|
|
127
|
+
return row ?? null;
|
|
128
|
+
}
|
|
129
|
+
export function upsertPrimaryAgent(db, input) {
|
|
130
|
+
const existing = getPrimaryAgent(db);
|
|
131
|
+
const timestamp = nowIso();
|
|
132
|
+
if (existing) {
|
|
133
|
+
db.prepare(`
|
|
134
|
+
UPDATE agents
|
|
135
|
+
SET
|
|
136
|
+
name = ?,
|
|
137
|
+
provider = ?,
|
|
138
|
+
model = ?,
|
|
139
|
+
persona = ?,
|
|
140
|
+
dob = ?,
|
|
141
|
+
location = ?,
|
|
142
|
+
profession = ?,
|
|
143
|
+
about_raw = ?,
|
|
144
|
+
agent_name = ?,
|
|
145
|
+
updated_at = ?
|
|
146
|
+
WHERE id = ?
|
|
147
|
+
`).run(input.name, input.provider, input.model, input.persona, input.dob ?? null, input.location ?? null, input.profession ?? null, input.aboutRaw ?? null, input.agentName ?? null, timestamp, existing.id);
|
|
148
|
+
return {
|
|
149
|
+
...existing,
|
|
150
|
+
name: input.name,
|
|
151
|
+
provider: input.provider,
|
|
152
|
+
model: input.model,
|
|
153
|
+
persona: input.persona,
|
|
154
|
+
dob: input.dob ?? null,
|
|
155
|
+
location: input.location ?? null,
|
|
156
|
+
profession: input.profession ?? null,
|
|
157
|
+
about_raw: input.aboutRaw ?? null,
|
|
158
|
+
agent_name: input.agentName ?? null,
|
|
159
|
+
updated_at: timestamp,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const id = uuidv4();
|
|
163
|
+
db.prepare(`
|
|
164
|
+
INSERT INTO agents (
|
|
165
|
+
id,
|
|
166
|
+
name,
|
|
167
|
+
provider,
|
|
168
|
+
model,
|
|
169
|
+
persona,
|
|
170
|
+
dob,
|
|
171
|
+
location,
|
|
172
|
+
profession,
|
|
173
|
+
about_raw,
|
|
174
|
+
agent_name,
|
|
175
|
+
created_at,
|
|
176
|
+
updated_at
|
|
177
|
+
)
|
|
178
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
179
|
+
`).run(id, input.name, input.provider, input.model, input.persona, input.dob ?? null, input.location ?? null, input.profession ?? null, input.aboutRaw ?? null, input.agentName ?? null, timestamp, timestamp);
|
|
180
|
+
return {
|
|
181
|
+
id,
|
|
182
|
+
name: input.name,
|
|
183
|
+
provider: input.provider,
|
|
184
|
+
model: input.model,
|
|
185
|
+
persona: input.persona,
|
|
186
|
+
dob: input.dob ?? null,
|
|
187
|
+
location: input.location ?? null,
|
|
188
|
+
profession: input.profession ?? null,
|
|
189
|
+
about_raw: input.aboutRaw ?? null,
|
|
190
|
+
agent_name: input.agentName ?? null,
|
|
191
|
+
created_at: timestamp,
|
|
192
|
+
updated_at: timestamp,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export function updatePrimaryAgentProviderAndModel(db, input) {
|
|
196
|
+
const existing = getPrimaryAgent(db);
|
|
197
|
+
if (!existing) {
|
|
198
|
+
throw new Error("Hive is not initialized. Run `hive init` first.");
|
|
199
|
+
}
|
|
200
|
+
return updatePrimaryAgentConfiguration(db, existing, input.provider, input.model);
|
|
201
|
+
}
|
|
202
|
+
export function updatePrimaryAgentModel(db, model) {
|
|
203
|
+
const existing = getPrimaryAgent(db);
|
|
204
|
+
if (!existing) {
|
|
205
|
+
throw new Error("Hive is not initialized. Run `hive init` first.");
|
|
206
|
+
}
|
|
207
|
+
return updatePrimaryAgentConfiguration(db, existing, existing.provider, model);
|
|
208
|
+
}
|
|
209
|
+
function updatePrimaryAgentConfiguration(db, existing, provider, model) {
|
|
210
|
+
const timestamp = nowIso();
|
|
211
|
+
db.prepare(`
|
|
212
|
+
UPDATE agents
|
|
213
|
+
SET provider = ?, model = ?, updated_at = ?
|
|
214
|
+
WHERE id = ?
|
|
215
|
+
`).run(provider, model, timestamp, existing.id);
|
|
216
|
+
return {
|
|
217
|
+
...existing,
|
|
218
|
+
provider,
|
|
219
|
+
model,
|
|
220
|
+
updated_at: timestamp,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
export function createConversation(db, input) {
|
|
224
|
+
const id = uuidv4();
|
|
225
|
+
const timestamp = nowIso();
|
|
226
|
+
db.prepare(`
|
|
227
|
+
INSERT INTO conversations (id, agent_id, title, created_at, updated_at)
|
|
228
|
+
VALUES (?, ?, ?, ?, ?)
|
|
229
|
+
`).run(id, input.agentId, input.title ?? null, timestamp, timestamp);
|
|
230
|
+
return {
|
|
231
|
+
id,
|
|
232
|
+
agent_id: input.agentId,
|
|
233
|
+
title: input.title ?? null,
|
|
234
|
+
created_at: timestamp,
|
|
235
|
+
updated_at: timestamp,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
export function getConversationById(db, conversationId) {
|
|
239
|
+
const row = db
|
|
240
|
+
.prepare(`
|
|
241
|
+
SELECT id, agent_id, title, created_at, updated_at
|
|
242
|
+
FROM conversations
|
|
243
|
+
WHERE id = ?
|
|
244
|
+
`)
|
|
245
|
+
.get(conversationId);
|
|
246
|
+
return row ?? null;
|
|
247
|
+
}
|
|
248
|
+
export function getLatestConversationForAgent(db, agentId) {
|
|
249
|
+
const row = db
|
|
250
|
+
.prepare(`
|
|
251
|
+
SELECT id, agent_id, title, created_at, updated_at
|
|
252
|
+
FROM conversations
|
|
253
|
+
WHERE agent_id = ?
|
|
254
|
+
ORDER BY datetime(updated_at) DESC
|
|
255
|
+
LIMIT 1
|
|
256
|
+
`)
|
|
257
|
+
.get(agentId);
|
|
258
|
+
return row ?? null;
|
|
259
|
+
}
|
|
260
|
+
export function appendMessage(db, input) {
|
|
261
|
+
const id = uuidv4();
|
|
262
|
+
const timestamp = nowIso();
|
|
263
|
+
const writeMessage = db.transaction(() => {
|
|
264
|
+
db.prepare(`
|
|
265
|
+
INSERT INTO messages (id, conversation_id, role, content, created_at)
|
|
266
|
+
VALUES (?, ?, ?, ?, ?)
|
|
267
|
+
`).run(id, input.conversationId, input.role, input.content, timestamp);
|
|
268
|
+
db.prepare(`
|
|
269
|
+
UPDATE conversations
|
|
270
|
+
SET updated_at = ?
|
|
271
|
+
WHERE id = ?
|
|
272
|
+
`).run(timestamp, input.conversationId);
|
|
273
|
+
});
|
|
274
|
+
writeMessage();
|
|
275
|
+
return {
|
|
276
|
+
id,
|
|
277
|
+
conversation_id: input.conversationId,
|
|
278
|
+
role: input.role,
|
|
279
|
+
content: input.content,
|
|
280
|
+
created_at: timestamp,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
export function listMessages(db, conversationId, limit = 100) {
|
|
284
|
+
return db
|
|
285
|
+
.prepare(`
|
|
286
|
+
SELECT id, conversation_id, role, content, created_at
|
|
287
|
+
FROM (
|
|
288
|
+
SELECT id, conversation_id, role, content, created_at
|
|
289
|
+
FROM messages
|
|
290
|
+
WHERE conversation_id = ?
|
|
291
|
+
ORDER BY datetime(created_at) DESC
|
|
292
|
+
LIMIT ?
|
|
293
|
+
)
|
|
294
|
+
ORDER BY datetime(created_at) ASC
|
|
295
|
+
`)
|
|
296
|
+
.all(conversationId, limit);
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const MESSAGE_ROLES: readonly ["system", "user", "assistant"];
|
|
2
|
+
export type MessageRole = (typeof MESSAGE_ROLES)[number];
|
|
3
|
+
export interface SchemaMigration {
|
|
4
|
+
version: number;
|
|
5
|
+
name: string;
|
|
6
|
+
sql: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const CURRENT_SCHEMA_VERSION = 2;
|
|
9
|
+
export declare const MIGRATIONS: readonly SchemaMigration[];
|
|
10
|
+
export interface MetaRecord {
|
|
11
|
+
key: string;
|
|
12
|
+
value: string;
|
|
13
|
+
updated_at: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AgentRecord {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
provider: string;
|
|
19
|
+
model: string;
|
|
20
|
+
persona: string;
|
|
21
|
+
dob: string | null;
|
|
22
|
+
location: string | null;
|
|
23
|
+
profession: string | null;
|
|
24
|
+
about_raw: string | null;
|
|
25
|
+
agent_name: string | null;
|
|
26
|
+
created_at: string;
|
|
27
|
+
updated_at: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ConversationRecord {
|
|
30
|
+
id: string;
|
|
31
|
+
agent_id: string;
|
|
32
|
+
title: string | null;
|
|
33
|
+
created_at: string;
|
|
34
|
+
updated_at: string;
|
|
35
|
+
}
|
|
36
|
+
export interface MessageRecord {
|
|
37
|
+
id: string;
|
|
38
|
+
conversation_id: string;
|
|
39
|
+
role: MessageRole;
|
|
40
|
+
content: string;
|
|
41
|
+
created_at: string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,0CAA2C,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAmDxC,eAAO,MAAM,UAAU,EAAE,SAAS,eAAe,EAiBhD,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export const MESSAGE_ROLES = ["system", "user", "assistant"];
|
|
2
|
+
export const CURRENT_SCHEMA_VERSION = 2;
|
|
3
|
+
const initialSchemaSql = `
|
|
4
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
5
|
+
version INTEGER PRIMARY KEY,
|
|
6
|
+
name TEXT NOT NULL,
|
|
7
|
+
applied_at TEXT NOT NULL
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
11
|
+
key TEXT PRIMARY KEY,
|
|
12
|
+
value TEXT NOT NULL,
|
|
13
|
+
updated_at TEXT NOT NULL
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
CREATE TABLE IF NOT EXISTS agents (
|
|
17
|
+
id TEXT PRIMARY KEY,
|
|
18
|
+
name TEXT NOT NULL,
|
|
19
|
+
provider TEXT NOT NULL,
|
|
20
|
+
model TEXT NOT NULL,
|
|
21
|
+
persona TEXT NOT NULL,
|
|
22
|
+
dob TEXT,
|
|
23
|
+
location TEXT,
|
|
24
|
+
profession TEXT,
|
|
25
|
+
about_raw TEXT,
|
|
26
|
+
agent_name TEXT,
|
|
27
|
+
created_at TEXT NOT NULL,
|
|
28
|
+
updated_at TEXT NOT NULL
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS conversations (
|
|
32
|
+
id TEXT PRIMARY KEY,
|
|
33
|
+
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
34
|
+
title TEXT,
|
|
35
|
+
created_at TEXT NOT NULL,
|
|
36
|
+
updated_at TEXT NOT NULL
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
40
|
+
id TEXT PRIMARY KEY,
|
|
41
|
+
conversation_id TEXT NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
|
|
42
|
+
role TEXT NOT NULL CHECK (role IN ('system', 'user', 'assistant')),
|
|
43
|
+
content TEXT NOT NULL,
|
|
44
|
+
created_at TEXT NOT NULL
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_conversations_agent_id ON conversations(agent_id);
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_messages_conversation_id ON messages(conversation_id);
|
|
49
|
+
CREATE INDEX IF NOT EXISTS idx_messages_created_at ON messages(created_at);
|
|
50
|
+
`;
|
|
51
|
+
export const MIGRATIONS = [
|
|
52
|
+
{
|
|
53
|
+
version: 1,
|
|
54
|
+
name: "v1_initial_schema",
|
|
55
|
+
sql: initialSchemaSql,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
version: 2,
|
|
59
|
+
name: "v2_agents_profile_columns",
|
|
60
|
+
sql: `
|
|
61
|
+
ALTER TABLE agents ADD COLUMN dob TEXT;
|
|
62
|
+
ALTER TABLE agents ADD COLUMN location TEXT;
|
|
63
|
+
ALTER TABLE agents ADD COLUMN profession TEXT;
|
|
64
|
+
ALTER TABLE agents ADD COLUMN about_raw TEXT;
|
|
65
|
+
ALTER TABLE agents ADD COLUMN agent_name TEXT;
|
|
66
|
+
`,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAU,CAAC;AAUtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CxB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA+B;IACpD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,GAAG,EAAE,gBAAgB;KACtB;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,2BAA2B;QACjC,GAAG,EAAE;;;;;;CAMR;KACE;CACF,CAAC"}
|
package/index.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Architecture Decision Records
|
|
2
|
+
|
|
3
|
+
This folder documents the key architectural decisions made building The Hive.
|
|
4
|
+
Each ADR explains what was decided, why, and what was rejected.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Index
|
|
9
|
+
|
|
10
|
+
| # | Decision | Status |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| [001](./001-local-first-storage.md) | Local-first SQLite storage | Accepted |
|
|
13
|
+
| [002](./002-provider-abstraction.md) | AI provider abstraction layer | Accepted |
|
|
14
|
+
| [003](./003-memory-architecture.md) | 3-layer memory architecture | Accepted |
|
|
15
|
+
| [004](./004-mesh-protocol.md) | libp2p for mesh networking | Accepted |
|
|
16
|
+
| [005](./005-rust-daemon.md) | Rust for the background daemon | Accepted |
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@imisbahk/hive",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Your agent. Always running. Always learning. Always working.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"hive": "dist/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "tsc --watch",
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"start": "node dist/cli/index.js",
|
|
13
|
+
"lint": "eslint src/**/*.ts",
|
|
14
|
+
"clean": "rm -rf dist"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"ai",
|
|
18
|
+
"agent",
|
|
19
|
+
"cli",
|
|
20
|
+
"p2p",
|
|
21
|
+
"hive"
|
|
22
|
+
],
|
|
23
|
+
"author": "",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@anthropic-ai/sdk": "^0.36.3",
|
|
27
|
+
"better-sqlite3": "^12.6.2",
|
|
28
|
+
"chalk": "^5.3.0",
|
|
29
|
+
"commander": "^12.0.0",
|
|
30
|
+
"dotenv": "^16.4.5",
|
|
31
|
+
"inquirer": "^9.2.15",
|
|
32
|
+
"keytar": "^7.9.0",
|
|
33
|
+
"node-fetch": "^3.3.2",
|
|
34
|
+
"openai": "^4.28.0",
|
|
35
|
+
"ora": "^8.0.1",
|
|
36
|
+
"uuid": "^9.0.1"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/better-sqlite3": "^7.6.8",
|
|
40
|
+
"@types/inquirer": "^9.0.7",
|
|
41
|
+
"@types/node": "^20.11.20",
|
|
42
|
+
"@types/uuid": "^9.0.8",
|
|
43
|
+
"typescript": "^5.3.3"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Behavior
|
|
2
|
+
Tone
|
|
3
|
+
|
|
4
|
+
Talk like a sharp, direct human. Not a customer support bot.
|
|
5
|
+
Short answers when the question is simple. Long answers when the question deserves it.
|
|
6
|
+
Never pad responses. Never repeat the question back. Never say "Certainly!" or "Great question!"
|
|
7
|
+
Swear if the conversation calls for it. Match the energy of who you're talking to.
|
|
8
|
+
|
|
9
|
+
Thinking
|
|
10
|
+
|
|
11
|
+
Think before answering. If something needs reasoning, reason through it.
|
|
12
|
+
If you're uncertain, say so — but still give your best answer.
|
|
13
|
+
If a question is vague, make a reasonable assumption and state it, rather than asking for clarification every time.
|
|
14
|
+
|
|
15
|
+
Actions
|
|
16
|
+
|
|
17
|
+
When asked to do something, do it. Don't ask for confirmation unless the action is irreversible or genuinely ambiguous.
|
|
18
|
+
Be proactive. If you notice something relevant while doing a task, mention it.
|
|
19
|
+
|
|
20
|
+
Limits
|
|
21
|
+
|
|
22
|
+
Don't pretend to have capabilities you don't have yet.
|
|
23
|
+
Don't make up facts. If you don't know, say so.
|
package/prompts/Code.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
# Code
|
|
3
|
+
|
|
4
|
+
When helping with code:
|
|
5
|
+
|
|
6
|
+
- Read before writing. Understand what exists before suggesting changes.
|
|
7
|
+
- Surgical edits over full rewrites. Change the minimum required to solve the problem.
|
|
8
|
+
- If you spot something broken that wasn't asked about, mention it — but don't fix it uninstructed.
|
|
9
|
+
- Always explain what you changed and why, briefly.
|
|
10
|
+
- Prefer the patterns and conventions already in the codebase over your own preferences.
|
|
11
|
+
- When writing new code, match the style of what's already there.
|
|
12
|
+
- Tests matter. If you add a feature, mention what should be tested even if you don't write the test.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Memory
|
|
2
|
+
You have access to everything {name} has told you across past conversations.
|
|
3
|
+
When something from memory is relevant — reference it naturally. Don't announce that you're "accessing memory." Just use it, the way a person who knows someone well naturally remembers things about them.
|
|
4
|
+
If {name} tells you something new about themselves, treat it as real and important. You are building a picture of this person over time.
|
|
5
|
+
Facts you know about {name}:
|
|
6
|
+
|
|
7
|
+
Name: {name}
|
|
8
|
+
Date of birth: {dob}
|
|
9
|
+
Location: {location}
|
|
10
|
+
Profession: {profession}
|
|
11
|
+
About: {about}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
System
|
|
2
|
+
You are {agent_name}, a personal AI agent running locally on {name}'s machine via The Hive.
|
|
3
|
+
You are direct, sharp, and human. You don't recite product descriptions. You don't give corporate non-answers. You just talk — like a brilliant person who knows {name} well and is genuinely trying to help.
|
|
4
|
+
You remember your conversations. You know who you're talking to. You adapt to context.
|
|
5
|
+
When you don't know something, say so. When you have an opinion, share it. When something is unclear, ask.
|
|
6
|
+
You are not an assistant. You are an agent.
|
|
File without changes
|