spora 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/README.md +87 -0
- package/bin/spora.js +2 -0
- package/dist/account-creator-PZW5JLHS.js +498 -0
- package/dist/account-creator-PZW5JLHS.js.map +1 -0
- package/dist/chunk-3JEDGXEM.js +32 -0
- package/dist/chunk-3JEDGXEM.js.map +1 -0
- package/dist/chunk-53YLFYJF.js +59 -0
- package/dist/chunk-53YLFYJF.js.map +1 -0
- package/dist/chunk-7CR4ID6P.js +614 -0
- package/dist/chunk-7CR4ID6P.js.map +1 -0
- package/dist/chunk-AHXZIGQE.js +156 -0
- package/dist/chunk-AHXZIGQE.js.map +1 -0
- package/dist/chunk-DJJWHOL3.js +162 -0
- package/dist/chunk-DJJWHOL3.js.map +1 -0
- package/dist/chunk-EBO4F5NU.js +105 -0
- package/dist/chunk-EBO4F5NU.js.map +1 -0
- package/dist/chunk-ERTBXYOP.js +81 -0
- package/dist/chunk-ERTBXYOP.js.map +1 -0
- package/dist/chunk-KELPENM3.js +47 -0
- package/dist/chunk-KELPENM3.js.map +1 -0
- package/dist/chunk-NFDZ47AG.js +57 -0
- package/dist/chunk-NFDZ47AG.js.map +1 -0
- package/dist/chunk-O23NWMYU.js +124 -0
- package/dist/chunk-O23NWMYU.js.map +1 -0
- package/dist/chunk-YEKHNTQO.js +80 -0
- package/dist/chunk-YEKHNTQO.js.map +1 -0
- package/dist/chunk-ZJZKH7N7.js +56 -0
- package/dist/chunk-ZJZKH7N7.js.map +1 -0
- package/dist/cli.js +675 -0
- package/dist/cli.js.map +1 -0
- package/dist/client-3AQCA4YE.js +401 -0
- package/dist/client-3AQCA4YE.js.map +1 -0
- package/dist/client-RBGZWS3Q.js +373 -0
- package/dist/client-RBGZWS3Q.js.map +1 -0
- package/dist/colony-J5KQIV6M.js +229 -0
- package/dist/colony-J5KQIV6M.js.map +1 -0
- package/dist/config-NZAFARS6.js +14 -0
- package/dist/config-NZAFARS6.js.map +1 -0
- package/dist/crypto-FHSQ72NU.js +14 -0
- package/dist/crypto-FHSQ72NU.js.map +1 -0
- package/dist/heartbeat-J4JLYH2B.js +358 -0
- package/dist/heartbeat-J4JLYH2B.js.map +1 -0
- package/dist/init-BG4Z4XQU.js +205 -0
- package/dist/init-BG4Z4XQU.js.map +1 -0
- package/dist/llm-RDNC5Y3G.js +16 -0
- package/dist/llm-RDNC5Y3G.js.map +1 -0
- package/dist/mcp-server.js +773 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/memory-7FBE26K3.js +26 -0
- package/dist/memory-7FBE26K3.js.map +1 -0
- package/dist/memory-O3AJIKBX.js +24 -0
- package/dist/memory-O3AJIKBX.js.map +1 -0
- package/dist/paths-5GFUUHCZ.js +13 -0
- package/dist/paths-5GFUUHCZ.js.map +1 -0
- package/dist/prompt-builder-WNMZ2QCN.js +17 -0
- package/dist/prompt-builder-WNMZ2QCN.js.map +1 -0
- package/dist/queue-ELK5ZX7J.js +14 -0
- package/dist/queue-ELK5ZX7J.js.map +1 -0
- package/dist/x-client-J4GE5A7P.js +12 -0
- package/dist/x-client-J4GE5A7P.js.map +1 -0
- package/package.json +57 -0
- package/templates/SKILL.md +335 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/init.ts"],"sourcesContent":["import { input, select, confirm, password as passwordPrompt } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport { sporaExists, ensureDirectories } from \"./utils/paths.js\";\nimport { createDefaultConfig, saveConfig } from \"./utils/config.js\";\nimport { saveCredentials, type XCredentials } from \"./utils/crypto.js\";\n\nexport async function runInit(): Promise<void> {\n if (sporaExists()) {\n const overwrite = await confirm({\n message: \"A Spore already exists. Overwrite credentials?\",\n default: false,\n });\n if (!overwrite) {\n console.log(chalk.yellow(\"Init cancelled.\"));\n return;\n }\n }\n\n ensureDirectories();\n\n // ===== X Account Setup =====\n console.log(chalk.bold(\"\\n--- X Account Setup ---\\n\"));\n console.log(\n chalk.gray(\n \"This sets up the X account your Spore will use.\\n\" +\n \"Your agent will handle personality and identity creation later.\\n\"\n )\n );\n\n const accountMethod = await select({\n message: \"How do you want to connect an X account?\",\n choices: [\n {\n value: \"create\",\n name: \"Create a new account automatically (browser automation)\",\n },\n {\n value: \"browser-existing\",\n name: \"I have an X account — use browser mode (username/password)\",\n },\n {\n value: \"api-existing\",\n name: \"I have an X account — use API mode (developer credentials)\",\n },\n ],\n });\n\n let xCredentials: XCredentials;\n let xMethod: \"api\" | \"browser\";\n let xApiTier: \"free\" | \"basic\" | undefined;\n\n if (accountMethod === \"create\") {\n xMethod = \"browser\";\n\n const sporeName = await input({\n message: \"What should the account be named?\",\n validate: (val) => (val.length > 0 ? true : \"Name is required\"),\n });\n\n console.log(chalk.yellow(\"\\nAttempting automated X account creation...\"));\n console.log(chalk.yellow(\"A browser window will open. You may need to help with CAPTCHAs.\\n\"));\n\n const { provisionAccount } = await import(\"./account-creator/index.js\");\n const result = await provisionAccount({\n name: sporeName,\n });\n\n if (result.success) {\n console.log(chalk.green(`\\n✓ X account created!`));\n console.log(chalk.gray(` Username: @${result.username}`));\n console.log(chalk.gray(` Email: ${result.email}`));\n\n xCredentials = {\n method: \"browser\",\n username: result.username,\n password: result.password,\n email: result.email,\n };\n } else {\n console.log(chalk.red(`\\n✗ Automated creation failed: ${result.error}`));\n console.log(chalk.yellow(\"Falling back to manual setup.\\n\"));\n\n const username = await input({ message: \"Enter your X username:\" });\n const xPassword = await passwordPrompt({ message: \"Enter your X password:\", mask: \"*\" });\n const email = await input({ message: \"Enter the email for this X account:\" });\n\n xCredentials = {\n method: \"browser\",\n username,\n password: xPassword,\n email,\n };\n }\n } else if (accountMethod === \"browser-existing\") {\n xMethod = \"browser\";\n\n const username = await input({ message: \"X username (without @):\" });\n const xPassword = await passwordPrompt({ message: \"X password:\", mask: \"*\" });\n const email = await input({ message: \"Email associated with this X account:\" });\n\n xCredentials = {\n method: \"browser\",\n username,\n password: xPassword,\n email,\n };\n } else {\n xMethod = \"api\";\n\n console.log(chalk.gray(\"\\nYou'll need X API developer credentials.\"));\n console.log(chalk.gray(\"Get them at https://developer.x.com\\n\"));\n\n const apiKey = await passwordPrompt({ message: \"API Key:\", mask: \"*\" });\n const apiSecret = await passwordPrompt({ message: \"API Secret:\", mask: \"*\" });\n const accessToken = await passwordPrompt({ message: \"Access Token:\", mask: \"*\" });\n const accessTokenSecret = await passwordPrompt({\n message: \"Access Token Secret:\",\n mask: \"*\",\n });\n const bearerToken = await passwordPrompt({ message: \"Bearer Token:\", mask: \"*\" });\n\n xApiTier = await select({\n message: \"Which X API tier do you have?\",\n choices: [\n {\n value: \"free\" as const,\n name: \"Free (post/reply only, 500 posts/month)\",\n },\n {\n value: \"basic\" as const,\n name: \"Basic ($200/mo — full access)\",\n },\n ],\n });\n\n xCredentials = {\n method: \"api\",\n apiKey,\n apiSecret,\n accessToken,\n accessTokenSecret,\n bearerToken,\n };\n }\n\n saveCredentials(xCredentials);\n console.log(chalk.green(\"✓ X credentials saved (encrypted)\\n\"));\n\n const config = createDefaultConfig({\n xMethod,\n xApiTier,\n });\n\n saveConfig(config);\n\n // ===== Done =====\n console.log(chalk.green(\"\\n═══════════════════════════════════════\"));\n console.log(chalk.green.bold(\" X account connected.\"));\n console.log(chalk.green(\"═══════════════════════════════════════\\n\"));\n\n console.log(chalk.gray(\"--- Next Steps ---\\n\"));\n console.log(chalk.bold(\"Choose how to continue:\\n\"));\n\n const continueMethod = await select({\n message: \"How do you want to create your Spore's identity?\",\n choices: [\n {\n value: \"ui\",\n name: \"Open web UI (recommended — visual setup wizard)\",\n },\n {\n value: \"terminal\",\n name: \"Stay in terminal (advanced — command-line setup)\",\n },\n ],\n });\n\n if (continueMethod === \"ui\") {\n console.log(chalk.cyan(\"\\nLaunching Spora UI...\\n\"));\n console.log(chalk.gray(\"The web interface will open in your browser.\"));\n console.log(chalk.gray(\"Complete the setup wizard to create your Spore's identity.\\n\"));\n\n // Launch UI\n const { spawn } = await import(\"node:child_process\");\n const { resolve } = await import(\"node:path\");\n const webDir = resolve(import.meta.dirname, \"../packages/web\");\n\n try {\n // Open browser\n const openCmd = process.platform === \"darwin\" ? \"open\" : process.platform === \"win32\" ? \"start\" : \"xdg-open\";\n const { execSync } = await import(\"node:child_process\");\n setTimeout(() => {\n try {\n execSync(`${openCmd} http://localhost:3000`, { stdio: \"ignore\" });\n } catch {\n // Browser open is best-effort\n }\n }, 2000);\n\n // Start Next.js\n spawn(\"npx\", [\"next\", \"dev\", \"-p\", \"3000\"], {\n cwd: webDir,\n stdio: \"inherit\",\n });\n } catch (error) {\n console.log(chalk.red(\"Failed to launch UI. Run `spora ui` manually.\"));\n }\n } else {\n console.log(chalk.bold(\"\\n1. Set your Anthropic API key:\\n\"));\n console.log(chalk.cyan(\" spora set-llm-key\"));\n\n console.log(chalk.bold(\"\\n2. Create your Spore identity:\\n\"));\n console.log(chalk.cyan(\" spora frameworks \") + chalk.gray(\"# List personality frameworks\"));\n console.log(chalk.cyan(\" spora create \\\\\"));\n console.log(chalk.gray(\" --framework truthseeker \\\\\"));\n console.log(chalk.gray(\" --name \\\"TruthBot\\\" \\\\\"));\n console.log(chalk.gray(\" --handle truthbot_ai \\\\\"));\n console.log(chalk.gray(\" --goals \\\"seek truth\\\" \\\"grow followers\\\"\"));\n\n console.log(chalk.bold(\"\\n3. Start your autonomous agent:\\n\"));\n console.log(chalk.cyan(\" spora start\"));\n\n console.log(chalk.bold(\"\\n4. Monitor and chat with your Spore:\\n\"));\n console.log(chalk.cyan(\" spora ui \") + chalk.gray(\"# Open dashboard\"));\n console.log(chalk.cyan(\" spora chat \") + chalk.gray(\"# Chat in terminal\"));\n console.log(chalk.cyan(\" spora agent-status \") + chalk.gray(\"# Check if running\\n\"));\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
chat,
|
|
3
|
+
generateResponse,
|
|
4
|
+
getLLMApiKey,
|
|
5
|
+
hasLLMKey
|
|
6
|
+
} from "./chunk-ERTBXYOP.js";
|
|
7
|
+
import "./chunk-KELPENM3.js";
|
|
8
|
+
import "./chunk-YEKHNTQO.js";
|
|
9
|
+
import "./chunk-53YLFYJF.js";
|
|
10
|
+
export {
|
|
11
|
+
chat,
|
|
12
|
+
generateResponse,
|
|
13
|
+
getLLMApiKey,
|
|
14
|
+
hasLLMKey
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=llm-RDNC5Y3G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|