@sesamespace/hivemind 0.2.0 → 0.2.1

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.
@@ -0,0 +1,166 @@
1
+ // packages/cli/src/commands/init.ts
2
+ import { resolve } from "path";
3
+ import { writeFileSync, mkdirSync } from "fs";
4
+ import { createInterface } from "readline";
5
+ import { SesameClient } from "@sesamespace/sdk";
6
+ var HIVEMIND_DIR = resolve(process.env.HIVEMIND_HOME || ".");
7
+ var CONFIG_DIR = resolve(HIVEMIND_DIR, "config");
8
+ var ENV_FILE = resolve(HIVEMIND_DIR, ".env");
9
+ var LOCAL_TOML = resolve(CONFIG_DIR, "local.toml");
10
+ var VAULT_CONFIG_NAME = "hivemind-config";
11
+ async function prompt(question) {
12
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
13
+ return new Promise((resolve2) => {
14
+ rl.question(question, (answer) => {
15
+ rl.close();
16
+ resolve2(answer.trim());
17
+ });
18
+ });
19
+ }
20
+ async function runInitCommand(args) {
21
+ const nonInteractive = args.includes("--yes") || args.includes("-y") || args.includes("--non-interactive");
22
+ const filteredArgs = args.filter((a) => !["--yes", "-y", "--non-interactive", "--help", "-h"].includes(a));
23
+ let sesameApiKey = filteredArgs[0];
24
+ if (args.includes("--help") || args.includes("-h")) {
25
+ printHelp();
26
+ return;
27
+ }
28
+ console.log(`
29
+ \u2566 \u2566\u2566\u2566 \u2566\u2554\u2550\u2557\u2554\u2566\u2557\u2566\u2554\u2557\u2554\u2554\u2566\u2557
30
+ \u2560\u2550\u2563\u2551\u255A\u2557\u2554\u255D\u2551\u2563 \u2551\u2551\u2551\u2551\u2551\u2551\u2551 \u2551\u2551
31
+ \u2569 \u2569\u2569 \u255A\u255D \u255A\u2550\u255D\u2569 \u2569\u2569\u255D\u255A\u255D\u2550\u2569\u255D
32
+ Agent Initialization
33
+ `);
34
+ if (!sesameApiKey) {
35
+ sesameApiKey = await prompt(" Sesame API key: ");
36
+ }
37
+ if (!sesameApiKey) {
38
+ console.error("Error: Sesame API key is required");
39
+ process.exit(1);
40
+ }
41
+ console.log("\n\u2192 Connecting to Sesame...");
42
+ const sdk = new SesameClient({
43
+ apiUrl: "https://api.sesame.space",
44
+ wsUrl: "wss://ws.sesame.space",
45
+ apiKey: sesameApiKey
46
+ });
47
+ let config;
48
+ try {
49
+ const manifest = await sdk.getManifest();
50
+ console.log(` \u2713 Authenticated as ${manifest.agent.handle} (${manifest.agent.id})`);
51
+ console.log(` \u2713 Workspace: ${manifest.workspace.name}`);
52
+ console.log(` \u2713 Channels: ${manifest.channels.length}`);
53
+ for (const ch of manifest.channels) {
54
+ console.log(` - ${ch.name || ch.id} (${ch.kind})`);
55
+ }
56
+ config = {
57
+ agentName: manifest.agent.handle,
58
+ agentHandle: manifest.agent.handle,
59
+ agentId: manifest.agent.id,
60
+ channels: manifest.channels.map((ch) => ({
61
+ id: ch.id,
62
+ name: ch.name,
63
+ kind: ch.kind
64
+ }))
65
+ };
66
+ console.log("\n\u2192 Checking vault for provisioning config...");
67
+ try {
68
+ const vaultResp = await sdk.listVaultItems();
69
+ const items = vaultResp.items || vaultResp.data || [];
70
+ const configItem = items.find((i) => i.name === VAULT_CONFIG_NAME);
71
+ if (configItem) {
72
+ console.log(` \u2713 Found ${VAULT_CONFIG_NAME} vault item`);
73
+ const revealResp = await sdk.revealItem(configItem.id);
74
+ const fields = revealResp.fields || revealResp.data || {};
75
+ config.llmApiKey = fields.llm_api_key || fields.openrouter_api_key;
76
+ config.llmBaseUrl = fields.llm_base_url;
77
+ config.llmModel = fields.llm_model;
78
+ config.personality = fields.agent_personality || fields.personality;
79
+ config.fleetRole = fields.fleet_role;
80
+ if (config.llmApiKey) console.log(" \u2713 LLM API key loaded from vault");
81
+ if (config.personality) console.log(` \u2713 Personality: ${config.personality.slice(0, 60)}...`);
82
+ if (config.fleetRole) console.log(` \u2713 Fleet role: ${config.fleetRole}`);
83
+ } else {
84
+ console.log(" ! No hivemind-config vault item found");
85
+ console.log(" ! Will prompt for LLM API key instead");
86
+ }
87
+ } catch (err) {
88
+ console.log(` ! Could not read vault: ${err.message}`);
89
+ }
90
+ } catch (err) {
91
+ console.error(`
92
+ \u2717 Failed to connect to Sesame: ${err.message}`);
93
+ console.error(" Check your API key and try again.");
94
+ process.exit(1);
95
+ } finally {
96
+ sdk.disconnect();
97
+ }
98
+ if (!config.llmApiKey && !nonInteractive) {
99
+ config.llmApiKey = await prompt("\n OpenRouter API key: ");
100
+ } else if (!config.llmApiKey) {
101
+ console.log(" ! No LLM API key found in vault \u2014 set LLM_API_KEY in .env after init");
102
+ }
103
+ if (!nonInteractive) {
104
+ const nameOverride = await prompt(` Agent name [${config.agentName}]: `);
105
+ if (nameOverride) config.agentName = nameOverride;
106
+ }
107
+ console.log("\n\u2192 Writing configuration...");
108
+ mkdirSync(CONFIG_DIR, { recursive: true });
109
+ const localToml = `# Generated by hivemind init \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}
110
+ # Overrides config/default.toml with agent-specific settings
111
+
112
+ [agent]
113
+ name = "${config.agentName}"
114
+ ${config.personality ? `personality = "${config.personality.replace(/"/g, '\\"')}"` : "# personality = (using default)"}
115
+ team_charter = "config/TEAM-CHARTER.md"
116
+
117
+ ${config.llmModel ? `[llm]
118
+ model = "${config.llmModel}"` : "# [llm] using defaults"}
119
+ ${config.llmBaseUrl ? `# base_url = "${config.llmBaseUrl}"` : ""}
120
+ `;
121
+ writeFileSync(LOCAL_TOML, localToml);
122
+ console.log(` \u2713 ${LOCAL_TOML}`);
123
+ const envContent = `# Hivemind Agent \u2014 ${config.agentName}
124
+ # Generated by hivemind init \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}
125
+ SESAME_API_KEY=${sesameApiKey}
126
+ LLM_API_KEY=${config.llmApiKey || ""}
127
+ AGENT_NAME=${config.agentName}
128
+ `;
129
+ writeFileSync(ENV_FILE, envContent, { mode: 384 });
130
+ console.log(` \u2713 ${ENV_FILE} (chmod 600)`);
131
+ console.log(`
132
+ \u2713 Hivemind initialized for ${config.agentName}!
133
+
134
+ To start the agent:
135
+ ./start.sh
136
+
137
+ To start in background:
138
+ nohup ./start.sh > /tmp/hivemind.log 2>&1 &
139
+
140
+ Agent ID: ${config.agentId}
141
+ Channels: ${config.channels.map((c) => c.name || c.id).join(", ")}
142
+ Fleet role: ${config.fleetRole || "standalone"}
143
+ `);
144
+ }
145
+ function printHelp() {
146
+ console.log(`hivemind init \u2014 Initialize a Hivemind agent from Sesame
147
+
148
+ Usage: hivemind init [sesame-api-key]
149
+
150
+ The API key can also be passed as the first argument.
151
+
152
+ What it does:
153
+ 1. Connects to Sesame and fetches agent identity
154
+ 2. Reads provisioning config from Sesame vault (if available)
155
+ 3. Prompts for any missing configuration
156
+ 4. Writes config/local.toml and .env
157
+
158
+ Options:
159
+ -h, --help Show this help
160
+ `);
161
+ }
162
+
163
+ export {
164
+ runInitCommand
165
+ };
166
+ //# sourceMappingURL=chunk-W5C4ZYMY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../packages/cli/src/commands/init.ts"],"sourcesContent":["import { resolve, dirname } from \"path\";\nimport { existsSync, writeFileSync, mkdirSync, readFileSync } from \"fs\";\nimport { createInterface } from \"readline\";\nimport { SesameClient } from \"@sesamespace/sdk\";\n\nconst HIVEMIND_DIR = resolve(process.env.HIVEMIND_HOME || \".\");\nconst CONFIG_DIR = resolve(HIVEMIND_DIR, \"config\");\nconst ENV_FILE = resolve(HIVEMIND_DIR, \".env\");\nconst LOCAL_TOML = resolve(CONFIG_DIR, \"local.toml\");\n\nconst VAULT_CONFIG_NAME = \"hivemind-config\";\n\ninterface ProvisioningConfig {\n agentName: string;\n agentHandle: string;\n agentId: string;\n personality?: string;\n llmApiKey?: string;\n llmBaseUrl?: string;\n llmModel?: string;\n fleetRole?: string;\n channels: Array<{ id: string; name: string | null; kind: string }>;\n}\n\nasync function prompt(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nexport async function runInitCommand(args: string[]): Promise<void> {\n const nonInteractive = args.includes(\"--yes\") || args.includes(\"-y\") || args.includes(\"--non-interactive\");\n const filteredArgs = args.filter((a) => ![\"--yes\", \"-y\", \"--non-interactive\", \"--help\", \"-h\"].includes(a));\n let sesameApiKey = filteredArgs[0];\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printHelp();\n return;\n }\n\n console.log(`\n ╦ ╦╦╦ ╦╔═╗╔╦╗╦╔╗╔╔╦╗\n ╠═╣║╚╗╔╝║╣ ║║║║║║║ ║║\n ╩ ╩╩ ╚╝ ╚═╝╩ ╩╩╝╚╝═╩╝\n Agent Initialization\n`);\n\n // --- Step 1: Get Sesame API key ---\n if (!sesameApiKey) {\n sesameApiKey = await prompt(\" Sesame API key: \");\n }\n if (!sesameApiKey) {\n console.error(\"Error: Sesame API key is required\");\n process.exit(1);\n }\n\n // --- Step 2: Connect to Sesame and fetch manifest ---\n console.log(\"\\n→ Connecting to Sesame...\");\n const sdk = new SesameClient({\n apiUrl: \"https://api.sesame.space\",\n wsUrl: \"wss://ws.sesame.space\",\n apiKey: sesameApiKey,\n });\n\n let config: ProvisioningConfig;\n try {\n const manifest = await sdk.getManifest();\n console.log(` ✓ Authenticated as ${manifest.agent.handle} (${manifest.agent.id})`);\n console.log(` ✓ Workspace: ${manifest.workspace.name}`);\n console.log(` ✓ Channels: ${manifest.channels.length}`);\n for (const ch of manifest.channels) {\n console.log(` - ${ch.name || ch.id} (${ch.kind})`);\n }\n\n config = {\n agentName: manifest.agent.handle,\n agentHandle: manifest.agent.handle,\n agentId: manifest.agent.id,\n channels: manifest.channels.map((ch) => ({\n id: ch.id,\n name: ch.name,\n kind: ch.kind,\n })),\n };\n\n // --- Step 3: Check vault for config ---\n console.log(\"\\n→ Checking vault for provisioning config...\");\n try {\n const vaultResp = await sdk.listVaultItems() as any;\n const items = vaultResp.items || vaultResp.data || [];\n const configItem = items.find((i: any) => i.name === VAULT_CONFIG_NAME);\n\n if (configItem) {\n console.log(` ✓ Found ${VAULT_CONFIG_NAME} vault item`);\n const revealResp = await sdk.revealItem(configItem.id) as any;\n const fields = revealResp.fields || revealResp.data || {};\n\n config.llmApiKey = fields.llm_api_key || fields.openrouter_api_key;\n config.llmBaseUrl = fields.llm_base_url;\n config.llmModel = fields.llm_model;\n config.personality = fields.agent_personality || fields.personality;\n config.fleetRole = fields.fleet_role;\n\n if (config.llmApiKey) console.log(\" ✓ LLM API key loaded from vault\");\n if (config.personality) console.log(` ✓ Personality: ${config.personality.slice(0, 60)}...`);\n if (config.fleetRole) console.log(` ✓ Fleet role: ${config.fleetRole}`);\n } else {\n console.log(\" ! No hivemind-config vault item found\");\n console.log(\" ! Will prompt for LLM API key instead\");\n }\n } catch (err) {\n console.log(` ! Could not read vault: ${(err as Error).message}`);\n }\n } catch (err) {\n console.error(`\\n ✗ Failed to connect to Sesame: ${(err as Error).message}`);\n console.error(\" Check your API key and try again.\");\n process.exit(1);\n } finally {\n sdk.disconnect();\n }\n\n // --- Step 4: Prompt for anything missing (skip in non-interactive mode) ---\n if (!config.llmApiKey && !nonInteractive) {\n config.llmApiKey = await prompt(\"\\n OpenRouter API key: \");\n } else if (!config.llmApiKey) {\n console.log(\" ! No LLM API key found in vault — set LLM_API_KEY in .env after init\");\n }\n\n if (!nonInteractive) {\n const nameOverride = await prompt(` Agent name [${config.agentName}]: `);\n if (nameOverride) config.agentName = nameOverride;\n }\n\n // --- Step 5: Write config files ---\n console.log(\"\\n→ Writing configuration...\");\n\n mkdirSync(CONFIG_DIR, { recursive: true });\n\n // Write local.toml (overrides)\n const localToml = `# Generated by hivemind init — ${new Date().toISOString()}\n# Overrides config/default.toml with agent-specific settings\n\n[agent]\nname = \"${config.agentName}\"\n${config.personality ? `personality = \"${config.personality.replace(/\"/g, '\\\\\"')}\"` : \"# personality = (using default)\"}\nteam_charter = \"config/TEAM-CHARTER.md\"\n\n${config.llmModel ? `[llm]\\nmodel = \"${config.llmModel}\"` : \"# [llm] using defaults\"}\n${config.llmBaseUrl ? `# base_url = \"${config.llmBaseUrl}\"` : \"\"}\n`;\n\n writeFileSync(LOCAL_TOML, localToml);\n console.log(` ✓ ${LOCAL_TOML}`);\n\n // Write .env\n const envContent = `# Hivemind Agent — ${config.agentName}\n# Generated by hivemind init — ${new Date().toISOString()}\nSESAME_API_KEY=${sesameApiKey}\nLLM_API_KEY=${config.llmApiKey || \"\"}\nAGENT_NAME=${config.agentName}\n`;\n\n writeFileSync(ENV_FILE, envContent, { mode: 0o600 });\n console.log(` ✓ ${ENV_FILE} (chmod 600)`);\n\n // --- Done ---\n console.log(`\n ✓ Hivemind initialized for ${config.agentName}!\n\n To start the agent:\n ./start.sh\n\n To start in background:\n nohup ./start.sh > /tmp/hivemind.log 2>&1 &\n\n Agent ID: ${config.agentId}\n Channels: ${config.channels.map((c) => c.name || c.id).join(\", \")}\n Fleet role: ${config.fleetRole || \"standalone\"}\n`);\n}\n\nfunction printHelp(): void {\n console.log(`hivemind init — Initialize a Hivemind agent from Sesame\n\nUsage: hivemind init [sesame-api-key]\n\nThe API key can also be passed as the first argument.\n\nWhat it does:\n 1. Connects to Sesame and fetches agent identity\n 2. Reads provisioning config from Sesame vault (if available)\n 3. Prompts for any missing configuration\n 4. Writes config/local.toml and .env\n\nOptions:\n -h, --help Show this help\n`);\n}\n"],"mappings":"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","names":["resolve"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runInitCommand
3
- } from "../chunk-XNOWVLXD.js";
3
+ } from "../chunk-W5C4ZYMY.js";
4
4
  export {
5
5
  runInitCommand
6
6
  };
package/dist/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runInitCommand
4
- } from "./chunk-XNOWVLXD.js";
4
+ } from "./chunk-W5C4ZYMY.js";
5
5
  import {
6
6
  runStartCommand
7
7
  } from "./chunk-RNK5Q5GR.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sesamespace/hivemind",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Cognitive architecture for AI agents with multi-layered memory",
5
5
  "type": "module",
6
6
  "bin": {