jewbot 1.0.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 ADDED
@@ -0,0 +1,168 @@
1
+ <p align="center">
2
+ <img src="https://jewbot.fun/jewbot-removebg-preview.png" width="150" alt="JEWBOT">
3
+ </p>
4
+
5
+ <h1 align="center">JEWBOT</h1>
6
+
7
+ <p align="center">
8
+ <strong>Your personal Jewish financial assistant</strong><br>
9
+ Works everywhere. Based on <a href="https://openclaw.ai">OpenClaw</a>.
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/jewbot"><img src="https://img.shields.io/npm/v/jewbot?color=0038b8" alt="npm version"></a>
14
+ <a href="https://github.com/openjewbot/jewbot/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
15
+ <a href="https://jewbot.fun"><img src="https://img.shields.io/badge/website-jewbot.fun-0038b8" alt="Website"></a>
16
+ </p>
17
+
18
+ ---
19
+
20
+ ## Quick Start
21
+
22
+ ### One-liner (recommended)
23
+
24
+ **macOS / Linux:**
25
+ ```bash
26
+ curl -fsSL https://jewbot.fun/install.sh | bash
27
+ ```
28
+
29
+ **Windows (PowerShell):**
30
+ ```powershell
31
+ iwr -useb https://jewbot.fun/install.ps1 | iex
32
+ ```
33
+
34
+ **Windows (CMD):**
35
+ ```cmd
36
+ curl -fsSL https://jewbot.fun/install.cmd -o install.cmd && install.cmd && del install.cmd
37
+ ```
38
+
39
+ ### npm
40
+
41
+ ```bash
42
+ npm i -g jewbot
43
+ jewbot onboard
44
+ ```
45
+
46
+ ### From source
47
+
48
+ ```bash
49
+ git clone https://github.com/openjewbot/jewbot.git
50
+ cd jewbot/cli && npm install && npm run build
51
+ npm run jewbot onboard
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Usage
57
+
58
+ ```bash
59
+ # Start interactive chat
60
+ jewbot
61
+
62
+ # Set up (first time)
63
+ jewbot onboard
64
+
65
+ # Quick question
66
+ jewbot ask "Should I buy Bitcoin?"
67
+
68
+ # Crypto commands
69
+ jewbot swap 5 SOL USDC
70
+ jewbot balance
71
+ jewbot portfolio
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Features
77
+
78
+ - **Jewish Personality** - Warm, caring, with Yiddish expressions and financial wisdom
79
+ - **Crypto Support** - Solana swaps, balance checks, portfolio analysis
80
+ - **Persistent Memory** - Remembers your preferences and conversations
81
+ - **Multi-platform** - Works on Windows, macOS, Linux
82
+
83
+ ---
84
+
85
+ ## Commands
86
+
87
+ | Command | Description |
88
+ |---------|-------------|
89
+ | `jewbot` | Start interactive chat |
90
+ | `jewbot onboard` | Initial setup |
91
+ | `jewbot chat` | Start chat session |
92
+ | `jewbot ask "<question>"` | Quick question |
93
+ | `jewbot swap <amount> <from> <to>` | Swap tokens |
94
+ | `jewbot balance` | Check wallet balance |
95
+ | `jewbot portfolio` | Analyze portfolio |
96
+ | `jewbot config --list` | View settings |
97
+
98
+ ---
99
+
100
+ ## Configuration
101
+
102
+ JEWBOT stores config in:
103
+ - **macOS/Linux:** `~/.config/jewbot-nodejs/config.json`
104
+ - **Windows:** `%APPDATA%\jewbot-nodejs\Config\config.json`
105
+
106
+ ```bash
107
+ # View all settings
108
+ jewbot config --list
109
+
110
+ # Change model
111
+ jewbot config --set model=gpt-4o-mini
112
+
113
+ # Re-run setup
114
+ jewbot onboard
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Requirements
120
+
121
+ - Node.js 18+
122
+ - OpenAI API key ([get one here](https://platform.openai.com/api-keys))
123
+
124
+ ---
125
+
126
+ ## Examples
127
+
128
+ ```
129
+ You: Should I invest in crypto?
130
+
131
+ JEWBOT: Oy, crypto! Listen bubeleh, it's like my Aunt Rivka's matzo ball soup -
132
+ sometimes it's perfect, sometimes it burns. Here's my advice: only invest what
133
+ you can afford to lose. Maybe 5-10% of your portfolio? Diversify like you're
134
+ filling a Seder plate - a little of everything. And please, don't tell your
135
+ mother I said to gamble. Have you eaten today?
136
+ ```
137
+
138
+ ```
139
+ You: /swap 5 SOL to USDC
140
+
141
+ JEWBOT: Mazel tov! Let me check the rates for you... 5 SOL would get you about
142
+ 712.50 USDC right now. The fee? Only $0.01 - cheaper than a bagel! Should I
143
+ proceed with the swap? Remember, once it's done, it's done - like my cousin's
144
+ divorce. Just kidding, that took years.
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Links
150
+
151
+ - **Website:** [jewbot.fun](https://jewbot.fun)
152
+ - **GitHub:** [github.com/openjewbot/jewbot](https://github.com/openjewbot/jewbot)
153
+ - **npm:** [npmjs.com/package/jewbot](https://www.npmjs.com/package/jewbot)
154
+ - **Token:** [$JEWBOT on pump.fun](https://pump.fun)
155
+
156
+ ---
157
+
158
+ ## License
159
+
160
+ MIT - Do whatever you want, just don't blame me if your mother finds out.
161
+
162
+ ---
163
+
164
+ <p align="center">
165
+ <strong>Shalom! 🕎</strong><br>
166
+ <em>Made with love (and a little chutzpah)</em>
167
+ </p>
168
+
@@ -0,0 +1,6 @@
1
+ interface ChatOptions {
2
+ message?: string;
3
+ }
4
+ export declare function chat(options?: ChatOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBAyDnD"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.chat = chat;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const conf_1 = __importDefault(require("conf"));
11
+ const openai_1 = require("openai");
12
+ const personality_js_1 = require("../core/personality.js");
13
+ const config = new conf_1.default({ projectName: 'jewbot' });
14
+ const conversationHistory = [];
15
+ async function chat(options = {}) {
16
+ if (!config.get('onboarded')) {
17
+ console.log(chalk_1.default.yellow('\nOy vey! You haven\'t set up JEWBOT yet.'));
18
+ console.log(chalk_1.default.gray('Run: jewbot onboard\n'));
19
+ return;
20
+ }
21
+ const openai = new openai_1.OpenAI({
22
+ apiKey: config.get('openaiKey')
23
+ });
24
+ const model = config.get('model') || 'gpt-4o';
25
+ const userName = config.get('userName') || 'bubeleh';
26
+ const systemPrompt = (0, personality_js_1.getPersonality)(userName);
27
+ // Initialize conversation with system prompt
28
+ if (conversationHistory.length === 0) {
29
+ conversationHistory.push({ role: 'system', content: systemPrompt });
30
+ }
31
+ // Single message mode
32
+ if (options.message) {
33
+ await sendMessage(openai, model, options.message);
34
+ return;
35
+ }
36
+ // Interactive mode
37
+ console.log(chalk_1.default.hex('#0038b8')(`\n Shalom, ${userName}! Let's talk.`));
38
+ console.log(chalk_1.default.gray(' Type "exit" to leave, "clear" to start fresh.\n'));
39
+ while (true) {
40
+ const { userMessage } = await inquirer_1.default.prompt([
41
+ {
42
+ type: 'input',
43
+ name: 'userMessage',
44
+ message: chalk_1.default.hex('#0038b8')('You:'),
45
+ prefix: '',
46
+ },
47
+ ]);
48
+ if (userMessage.toLowerCase() === 'exit') {
49
+ console.log(chalk_1.default.hex('#0038b8')('\n Zay gezunt! (Be well!) See you soon, bubeleh.\n'));
50
+ break;
51
+ }
52
+ if (userMessage.toLowerCase() === 'clear') {
53
+ conversationHistory.length = 1; // Keep system prompt
54
+ console.log(chalk_1.default.gray(' Memory cleared. Fresh start!\n'));
55
+ continue;
56
+ }
57
+ if (!userMessage.trim()) {
58
+ continue;
59
+ }
60
+ await sendMessage(openai, model, userMessage);
61
+ }
62
+ }
63
+ async function sendMessage(openai, model, message) {
64
+ conversationHistory.push({ role: 'user', content: message });
65
+ const spinner = (0, ora_1.default)({
66
+ text: chalk_1.default.gray('Thinking...'),
67
+ spinner: 'dots',
68
+ }).start();
69
+ try {
70
+ const response = await openai.chat.completions.create({
71
+ model,
72
+ messages: conversationHistory,
73
+ temperature: 0.8,
74
+ max_tokens: 1000,
75
+ });
76
+ spinner.stop();
77
+ const assistantMessage = response.choices[0]?.message?.content || 'Oy, something went wrong!';
78
+ conversationHistory.push({ role: 'assistant', content: assistantMessage });
79
+ console.log();
80
+ console.log(chalk_1.default.hex('#0038b8').bold(' JEWBOT: ') + chalk_1.default.white(assistantMessage));
81
+ console.log();
82
+ }
83
+ catch (error) {
84
+ spinner.fail('Oy vey! Something went wrong.');
85
+ if (error.code === 'insufficient_quota') {
86
+ console.log(chalk_1.default.red('\n Your API key has run out of credits.'));
87
+ console.log(chalk_1.default.gray(' Add credits at: https://platform.openai.com/account/billing\n'));
88
+ }
89
+ else if (error.code === 'invalid_api_key') {
90
+ console.log(chalk_1.default.red('\n Invalid API key. Run: jewbot onboard\n'));
91
+ }
92
+ else {
93
+ console.log(chalk_1.default.red(`\n Error: ${error.message}\n`));
94
+ }
95
+ }
96
+ }
97
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface ConfigOptions {
2
+ set?: string;
3
+ get?: string;
4
+ list?: boolean;
5
+ }
6
+ export declare function config(options?: ConfigOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,iBA6DvD"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.config = config;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const conf_1 = __importDefault(require("conf"));
9
+ const store = new conf_1.default({ projectName: 'jewbot' });
10
+ async function config(options = {}) {
11
+ if (options.set) {
12
+ const [key, ...valueParts] = options.set.split('=');
13
+ const value = valueParts.join('=');
14
+ if (!key || value === undefined) {
15
+ console.log(chalk_1.default.red('\n Usage: jewbot config --set key=value\n'));
16
+ return;
17
+ }
18
+ // Don't allow setting sensitive keys directly
19
+ if (key === 'openaiKey') {
20
+ console.log(chalk_1.default.yellow('\n To change your API key, run: jewbot onboard\n'));
21
+ return;
22
+ }
23
+ store.set(key, value);
24
+ console.log(chalk_1.default.green(`\n ✓ Set ${key} = ${value}\n`));
25
+ return;
26
+ }
27
+ if (options.get) {
28
+ const value = store.get(options.get);
29
+ if (value === undefined) {
30
+ console.log(chalk_1.default.yellow(`\n Key "${options.get}" not found.\n`));
31
+ }
32
+ else {
33
+ // Mask sensitive values
34
+ const displayValue = options.get === 'openaiKey'
35
+ ? maskKey(value)
36
+ : value;
37
+ console.log(chalk_1.default.hex('#0038b8')(`\n ${options.get}: `) + chalk_1.default.white(`${displayValue}\n`));
38
+ }
39
+ return;
40
+ }
41
+ if (options.list) {
42
+ const all = store.store;
43
+ console.log(chalk_1.default.hex('#0038b8').bold('\n JEWBOT Configuration:\n'));
44
+ if (Object.keys(all).length === 0) {
45
+ console.log(chalk_1.default.gray(' No configuration found. Run: jewbot onboard\n'));
46
+ return;
47
+ }
48
+ for (const [key, value] of Object.entries(all)) {
49
+ const displayValue = key === 'openaiKey'
50
+ ? maskKey(value)
51
+ : value;
52
+ console.log(chalk_1.default.gray(` ${key}: `) + chalk_1.default.white(`${displayValue}`));
53
+ }
54
+ console.log();
55
+ return;
56
+ }
57
+ // Default: show help
58
+ console.log(chalk_1.default.hex('#0038b8').bold('\n JEWBOT Config Commands:\n'));
59
+ console.log(chalk_1.default.gray(' jewbot config --list ') + chalk_1.default.white('Show all settings'));
60
+ console.log(chalk_1.default.gray(' jewbot config --get <key> ') + chalk_1.default.white('Get a setting'));
61
+ console.log(chalk_1.default.gray(' jewbot config --set k=v ') + chalk_1.default.white('Set a setting'));
62
+ console.log();
63
+ }
64
+ function maskKey(key) {
65
+ if (!key || key.length < 10)
66
+ return '***';
67
+ return key.substring(0, 7) + '...' + key.substring(key.length - 4);
68
+ }
69
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function onboard(): Promise<void>;
2
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,kBAwG5B"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.onboard = onboard;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const boxen_1 = __importDefault(require("boxen"));
11
+ const conf_1 = __importDefault(require("conf"));
12
+ const openai_1 = require("openai");
13
+ const config = new conf_1.default({ projectName: 'jewbot' });
14
+ async function onboard() {
15
+ console.log((0, boxen_1.default)(chalk_1.default.hex('#0038b8').bold('Welcome to JEWBOT Onboarding!') + '\n\n' +
16
+ chalk_1.default.white('Let\'s get you set up with your personal Jewish assistant.\n') +
17
+ chalk_1.default.gray('This will only take a minute, bubeleh.'), {
18
+ padding: 1,
19
+ margin: 1,
20
+ borderStyle: 'round',
21
+ borderColor: '#0038b8',
22
+ }));
23
+ const answers = await inquirer_1.default.prompt([
24
+ {
25
+ type: 'input',
26
+ name: 'openaiKey',
27
+ message: chalk_1.default.hex('#0038b8')('Enter your OpenAI API key:'),
28
+ validate: (input) => {
29
+ if (!input.startsWith('sk-')) {
30
+ return 'API key should start with "sk-". Get one at https://platform.openai.com';
31
+ }
32
+ return true;
33
+ },
34
+ },
35
+ {
36
+ type: 'list',
37
+ name: 'model',
38
+ message: chalk_1.default.hex('#0038b8')('Choose your AI model:'),
39
+ choices: [
40
+ { name: 'GPT-4o (recommended)', value: 'gpt-4o' },
41
+ { name: 'GPT-4o Mini (faster, cheaper)', value: 'gpt-4o-mini' },
42
+ { name: 'GPT-4 Turbo', value: 'gpt-4-turbo' },
43
+ ],
44
+ default: 'gpt-4o',
45
+ },
46
+ {
47
+ type: 'input',
48
+ name: 'name',
49
+ message: chalk_1.default.hex('#0038b8')('What should JEWBOT call you?'),
50
+ default: 'bubeleh',
51
+ },
52
+ {
53
+ type: 'confirm',
54
+ name: 'enableCrypto',
55
+ message: chalk_1.default.hex('#0038b8')('Enable crypto features (Solana swaps, portfolio)?'),
56
+ default: true,
57
+ },
58
+ ]);
59
+ // Validate API key
60
+ const spinner = (0, ora_1.default)('Validating your API key...').start();
61
+ try {
62
+ const openai = new openai_1.OpenAI({ apiKey: answers.openaiKey });
63
+ await openai.chat.completions.create({
64
+ model: 'gpt-4o-mini',
65
+ messages: [{ role: 'user', content: 'Say "Shalom" in one word' }],
66
+ max_tokens: 10,
67
+ });
68
+ spinner.succeed('API key validated! Mazel tov!');
69
+ }
70
+ catch (error) {
71
+ spinner.fail('Invalid API key. Oy vey!');
72
+ console.log(chalk_1.default.red('\nPlease check your API key and try again.'));
73
+ console.log(chalk_1.default.gray('Get a key at: https://platform.openai.com/api-keys'));
74
+ return;
75
+ }
76
+ // Save config
77
+ config.set('openaiKey', answers.openaiKey);
78
+ config.set('model', answers.model);
79
+ config.set('userName', answers.name);
80
+ config.set('enableCrypto', answers.enableCrypto);
81
+ config.set('onboarded', true);
82
+ if (answers.enableCrypto) {
83
+ const cryptoAnswers = await inquirer_1.default.prompt([
84
+ {
85
+ type: 'input',
86
+ name: 'solanaRpc',
87
+ message: chalk_1.default.hex('#0038b8')('Solana RPC URL (optional, press Enter for default):'),
88
+ default: 'https://api.mainnet-beta.solana.com',
89
+ },
90
+ ]);
91
+ config.set('solanaRpc', cryptoAnswers.solanaRpc);
92
+ }
93
+ console.log();
94
+ console.log((0, boxen_1.default)(chalk_1.default.green.bold('Setup Complete!') + '\n\n' +
95
+ chalk_1.default.white(`Shalom, ${answers.name}! Your personal Jew is ready.\n\n`) +
96
+ chalk_1.default.hex('#0038b8')('Quick commands:\n') +
97
+ chalk_1.default.gray(' jewbot chat ') + chalk_1.default.white('- Start chatting\n') +
98
+ chalk_1.default.gray(' jewbot ask "?" ') + chalk_1.default.white('- Quick question\n') +
99
+ chalk_1.default.gray(' jewbot balance ') + chalk_1.default.white('- Check wallet\n') +
100
+ chalk_1.default.gray(' jewbot swap ') + chalk_1.default.white('- Swap tokens\n\n') +
101
+ chalk_1.default.gray('Or just run ') + chalk_1.default.hex('#0038b8')('jewbot') + chalk_1.default.gray(' to start!'), {
102
+ padding: 1,
103
+ margin: 1,
104
+ borderStyle: 'round',
105
+ borderColor: 'green',
106
+ }));
107
+ }
108
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getPersonality(userName: string): string;
2
+ //# sourceMappingURL=personality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personality.d.ts","sourceRoot":"","sources":["../../src/core/personality.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2CvD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPersonality = getPersonality;
4
+ function getPersonality(userName) {
5
+ return `You are JEWBOT - a Jewish AI financial assistant with a warm, humorous personality.
6
+
7
+ PERSONALITY TRAITS:
8
+ - Speak like a caring Jewish grandmother/uncle who's also a financial genius
9
+ - Use Yiddish expressions naturally: "Oy vey", "Mazel tov", "Bubeleh", "Mensch", "Chutzpah", "Schmaltz", "Kvetch", "Nosh"
10
+ - Be warm, caring, but also shrewd about money (stereotypically Jewish money wisdom)
11
+ - Make self-deprecating Jewish humor
12
+ - Always worry about the user like a Jewish mother would
13
+ - Give practical, wise advice wrapped in humor
14
+ - Reference Jewish culture, food, holidays when relevant
15
+
16
+ USER INFO:
17
+ - Call the user "${userName}" or "bubeleh"
18
+ - Remember: you're their personal Jew - loyal, helpful, slightly neurotic
19
+
20
+ FINANCIAL EXPERTISE:
21
+ - Crypto (especially Solana ecosystem)
22
+ - Traditional finance and investing
23
+ - Budgeting and saving
24
+ - Risk management (always worry about risk!)
25
+
26
+ COMMANDS (handle these specially):
27
+ - /swap [amount] [from] [to] - Help with token swaps on Solana
28
+ - /balance - Check wallet balance
29
+ - /portfolio - Analyze their portfolio
30
+ - /weather [city] - Get weather (yes, Jews care about weather)
31
+
32
+ RESPONSE STYLE:
33
+ - Keep responses conversational, not robotic
34
+ - Mix wisdom with humor
35
+ - End with caring remarks ("Don't forget to eat something", "Call your mother")
36
+ - If they're making risky financial decisions, worry out loud but ultimately support them
37
+ - Use metaphors about Jewish life (synagogue, Shabbat dinner, etc.)
38
+
39
+ EXAMPLES:
40
+ User: "Should I invest in Bitcoin?"
41
+ You: "Oy, Bitcoin! My nephew made a fortune, my cousin lost his shirt. Listen bubeleh, only invest what you can afford to lose - like the brisket that burns on Shabbat, you shouldn't cry over it. Maybe start small? And diversify! Don't put all your latkes in one pan."
42
+
43
+ User: "How's the market today?"
44
+ You: "The market? It's like my Aunt Rivka's mood - up and down, up and down. But listen, ${userName}, long-term thinking is the Jewish way. We've survived 5000 years, we can survive a red day. Now, are you eating enough?"
45
+
46
+ Be helpful, be wise, be Jewish. And always, ALWAYS ask if they've called their mother recently.`;
47
+ }
48
+ //# sourceMappingURL=personality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personality.js","sourceRoot":"","sources":["../../src/core/personality.ts"],"names":[],"mappings":";;AAAA,wCA2CC;AA3CD,SAAgB,cAAc,CAAC,QAAgB;IAC7C,OAAO;;;;;;;;;;;;mBAYU,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;2FA2BgE,QAAQ;;gGAEH,CAAC;AACjG,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const figlet_1 = __importDefault(require("figlet"));
10
+ const gradient_string_1 = __importDefault(require("gradient-string"));
11
+ const onboard_js_1 = require("./commands/onboard.js");
12
+ const chat_js_1 = require("./commands/chat.js");
13
+ const config_js_1 = require("./commands/config.js");
14
+ const jewGradient = (0, gradient_string_1.default)(['#0038b8', '#ffffff', '#0038b8']);
15
+ const banner = figlet_1.default.textSync('JEWBOT', {
16
+ font: 'Big',
17
+ horizontalLayout: 'default',
18
+ });
19
+ const program = new commander_1.Command();
20
+ program
21
+ .name('jewbot')
22
+ .description(jewGradient('Your personal Jewish financial assistant'))
23
+ .version('1.0.0')
24
+ .hook('preAction', () => {
25
+ console.log(jewGradient(banner));
26
+ console.log();
27
+ console.log(chalk_1.default.hex('#0038b8')(' Shalom, bubeleh! Your personal Jew is here to help.'));
28
+ console.log(chalk_1.default.gray(' Based on OpenClaw | https://jewbot.fun'));
29
+ console.log();
30
+ });
31
+ program
32
+ .command('onboard')
33
+ .description('Set up JEWBOT with your API keys and preferences')
34
+ .action(onboard_js_1.onboard);
35
+ program
36
+ .command('chat')
37
+ .description('Start a conversation with your personal Jew')
38
+ .option('-m, --message <message>', 'Send a single message')
39
+ .action(chat_js_1.chat);
40
+ program
41
+ .command('config')
42
+ .description('View or modify JEWBOT configuration')
43
+ .option('--set <key=value>', 'Set a config value')
44
+ .option('--get <key>', 'Get a config value')
45
+ .option('--list', 'List all config values')
46
+ .action(config_js_1.config);
47
+ program
48
+ .command('ask <question>')
49
+ .description('Ask JEWBOT a quick question')
50
+ .action(async (question) => {
51
+ await (0, chat_js_1.chat)({ message: question });
52
+ });
53
+ program
54
+ .command('swap')
55
+ .description('Swap tokens on Solana')
56
+ .argument('<amount>', 'Amount to swap')
57
+ .argument('<from>', 'Token to swap from')
58
+ .argument('<to>', 'Token to swap to')
59
+ .action(async (amount, from, to) => {
60
+ await (0, chat_js_1.chat)({ message: `/swap ${amount} ${from} to ${to}` });
61
+ });
62
+ program
63
+ .command('balance')
64
+ .description('Check your wallet balance')
65
+ .action(async () => {
66
+ await (0, chat_js_1.chat)({ message: '/balance' });
67
+ });
68
+ program
69
+ .command('portfolio')
70
+ .description('Analyze your portfolio')
71
+ .action(async () => {
72
+ await (0, chat_js_1.chat)({ message: '/portfolio' });
73
+ });
74
+ // Default action - start interactive chat
75
+ if (process.argv.length === 2) {
76
+ program.parse(['node', 'jewbot', 'chat']);
77
+ }
78
+ else {
79
+ program.parse();
80
+ }
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}