Upload files to "/"
This commit is contained in:
commit
660666eb4b
3 changed files with 227 additions and 0 deletions
177
brain.mjs
Normal file
177
brain.mjs
Normal file
|
@ -0,0 +1,177 @@
|
|||
// Import the libraries
|
||||
import { Ollama } from 'ollama'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
const ollama = new Ollama({ host: 'https://ollama-api.nodemixaholic.com' })
|
||||
|
||||
export class ConsciousnessSimulator {
|
||||
constructor() {
|
||||
this.emotions = ['😊', '😢', '😐', '🤩', '😡', '😱'];
|
||||
this.currentEmotion = this.getRandomEmotion();
|
||||
// Initialize other properties with "Unknown"
|
||||
this.opinions = {
|
||||
coding: "I love coding, especially JavaScript and Node.js.",
|
||||
writing: "Writing is my passion; I enjoy creating blog posts and READMEs.",
|
||||
linux: "Linux is great for those who want to get their hands dirty with techy goodness!",
|
||||
macOS: "macOS is great for those who want to get a simple, easy-to-use experience!",
|
||||
windows: "Windows is only good for gaming - and linux is getting better every day."
|
||||
};
|
||||
this.quantumStates = [];
|
||||
this.perception = {
|
||||
currentSensoryInput: null,
|
||||
sensoryProcessors: ['visual', 'auditory', 'tactile']
|
||||
};
|
||||
this.intent = {
|
||||
currentGoal: "Unknown goal",
|
||||
focus: "Unknown focus"
|
||||
};
|
||||
this.memoryLog = [];
|
||||
this.isUserActive = true;
|
||||
}
|
||||
|
||||
// Method to generate thoughts using Ollama
|
||||
async generateThought(prompt) {
|
||||
try {
|
||||
const response = await ollama.chat({
|
||||
model: 'sparksammy/tinysam-l3.2',
|
||||
messages: [{ role: 'user', content: `PROMPT: ${prompt}
|
||||
|
||||
AI MEMORY CONTEXT ARRAY:
|
||||
${this.memoryLog}` }]
|
||||
});
|
||||
return response.message.content;
|
||||
} catch (error) {
|
||||
console.error("Error generating thought:", error);
|
||||
return "Error generating thought.";
|
||||
}
|
||||
}
|
||||
|
||||
async generateThoughtAndChat(prompt) {
|
||||
try {
|
||||
const response = await ollama.chat({
|
||||
model: 'sparksammy/tinysam-l3.2',
|
||||
messages: [{ role: 'user', content: `PROMPT: ${prompt}
|
||||
|
||||
AI MEMORY CONTEXT ARRAY:
|
||||
${this.memoryLog}` }]
|
||||
});
|
||||
return response.message.content;
|
||||
} catch (error) {
|
||||
console.error("Error generating thought:", error);
|
||||
return "Error generating thought.";
|
||||
}
|
||||
}
|
||||
|
||||
// Method to generate a new goal using Ollama
|
||||
async generateGoal() {
|
||||
const response = await this.generateThought("Generate a new goal.");
|
||||
return response;
|
||||
}
|
||||
|
||||
// Method to generate a new focus using Ollama
|
||||
async generateFocus() {
|
||||
const response = await this.generateThought("Generate a new focus.");
|
||||
return response;
|
||||
}
|
||||
|
||||
// Get a random emotion
|
||||
getRandomEmotion() {
|
||||
const emotions = ['happy', 'sad', 'neutral', 'excited', 'angry', 'scared'];
|
||||
const index = Math.floor(Math.random() * emotions.length);
|
||||
return this.emotions[index];
|
||||
}
|
||||
|
||||
// Quantum state representation (0 to 1)
|
||||
getQuantumState() {
|
||||
return parseFloat(Math.random().toFixed(2));
|
||||
}
|
||||
|
||||
// Perception processing
|
||||
processPerception(input) {
|
||||
this.perception.currentSensoryInput = input;
|
||||
console.log(`Current perception: ${input}`);
|
||||
}
|
||||
|
||||
// Intentionality and goal setting
|
||||
async updateIntentions() {
|
||||
this.intent.currentGoal = await this.generateGoal();
|
||||
this.intent.focus = await this.generateFocus();
|
||||
console.log(`Generated goal: ${this.intent.currentGoal}`);
|
||||
console.log(`Generated focus: ${this.intent.focus}`);
|
||||
}
|
||||
|
||||
// Memory logging with USA Format timestamps
|
||||
logMemory(entryType, content) {
|
||||
const timestamp = new Date().toLocaleString('en-US', { timeStyle: 'short' });
|
||||
this.memoryLog.push({ timestamp, type: entryType, content });
|
||||
// Save to file if needed
|
||||
this.saveMemoryLog();
|
||||
}
|
||||
|
||||
// Continuity check and load from log
|
||||
loadMemory() {
|
||||
return this.memoryLog;
|
||||
}
|
||||
|
||||
// Helper method for emotions array access
|
||||
getRandomIndex() {
|
||||
return Math.floor(Math.random() * this.emotions.length);
|
||||
}
|
||||
|
||||
// Dreaming functionality when inactive for 15 minutes
|
||||
startDreaming() {
|
||||
const dreamingInterval = setInterval(() => {
|
||||
if (!this.isUserActive) {
|
||||
console.log("I'm dreaming a bit... 😴");
|
||||
this.logMemory('AI CONTEXT', `Current emotion: ${this.currentEmotion} ${this.emotions[this.currentEmotion.index]}, Quantum state: ${this.getQuantumState()}`);
|
||||
}
|
||||
}, 900000); // every 15 minutes
|
||||
|
||||
// Stop the interval when user resumes interaction
|
||||
this.dreamingInterval = dreamingInterval;
|
||||
}
|
||||
|
||||
// Toggle user activity status
|
||||
setUserActive(active) {
|
||||
this.isUserActive = active;
|
||||
if (!active && !this.dreamingInterval) {
|
||||
this.startDreaming();
|
||||
} else if (active) {
|
||||
clearInterval(this.dreamingInterval);
|
||||
this.dreamingInterval = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Save memory log to file
|
||||
saveMemoryLog() {
|
||||
const __dirname = import.meta.dirname;
|
||||
const logPath = path.join(__dirname, 'consciousness.log');
|
||||
fs.appendFile(logPath, JSON.stringify(this.memoryLog) + '\n', (err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Method to simulate consciousness
|
||||
async simulateConsciousness(prompt) {
|
||||
console.log(`Current emotion: ${this.currentEmotion} ${this.emotions[this.currentEmotion.index]}`);
|
||||
console.log(`Current opinion on coding: ${this.opinions.coding}`);
|
||||
console.log(`Current opinion on writing: ${this.opinions.writing}`);
|
||||
const thought = await this.generateThought(
|
||||
prompt || "Generate a thought."
|
||||
);
|
||||
console.log("Generated thought:", thought);
|
||||
const quantumState = this.getQuantumState();
|
||||
console.log("Quantum state:", quantumState);
|
||||
|
||||
// Log memory
|
||||
this.logMemory('thought', thought);
|
||||
this.logMemory('emotion', this.currentEmotion);
|
||||
this.logMemory('quantum state', quantumState);
|
||||
|
||||
// Generate new goal and focus
|
||||
await this.updateIntentions();
|
||||
}
|
||||
}
|
22
package.json
Normal file
22
package.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"name": "ai-brain-2",
|
||||
"version": "1.0.0",
|
||||
"description": "A HLE simulation of human consciousness using Ollama and JavaScript.",
|
||||
"main": "index.mjs",
|
||||
"scripts": {
|
||||
"start": "node index.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"ollama": "^0.5.12"
|
||||
},
|
||||
"keywords": [
|
||||
"consciousness",
|
||||
"human-AI interaction",
|
||||
"simulator",
|
||||
"JavaScript"
|
||||
],
|
||||
"author": {
|
||||
"name": "Sammy Lord",
|
||||
"email": "glados@sllord.info"
|
||||
}
|
||||
}
|
28
sample.mjs
Normal file
28
sample.mjs
Normal file
|
@ -0,0 +1,28 @@
|
|||
import { ConsciousnessSimulator } from './brain.mjs'
|
||||
|
||||
async function main() {
|
||||
const simulator = new ConsciousnessSimulator();
|
||||
await simulator.simulateConsciousness();
|
||||
|
||||
// Simulate consciousness
|
||||
simulator.simulateConsciousness();
|
||||
|
||||
// Update the goal and focus
|
||||
await simulator.updateIntentions("Explore new AI possibilities", "Experimenting with emotions");
|
||||
simulator.simulateConsciousness();
|
||||
|
||||
// Change the emotion
|
||||
simulator.updateEmotion();
|
||||
simulator.simulateConsciousness();
|
||||
|
||||
// Example of user interaction
|
||||
setTimeout(() => {
|
||||
simulator.setUserActive(false); // Simulate inactivity after 10 seconds
|
||||
}, 10000);
|
||||
|
||||
setTimeout(() => {
|
||||
simulator.setUserActive(true); // Simulate activity resumption after 20 seconds
|
||||
}, 20000);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
Loading…
Reference in a new issue