mindcraft 0.1.4-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/FAQ.md +38 -0
- package/LICENSE +21 -0
- package/README.md +255 -0
- package/andy.json +6 -0
- package/bin/mindcraft.js +80 -0
- package/keys.example.json +19 -0
- package/main.js +80 -0
- package/package.json +78 -0
- package/patches/minecraft-data+3.97.0.patch +13 -0
- package/patches/mineflayer+4.33.0.patch +54 -0
- package/patches/mineflayer-pathfinder+2.4.5.patch +265 -0
- package/patches/mineflayer-pvp+1.3.2.patch +13 -0
- package/patches/prismarine-viewer+1.33.0.patch +13 -0
- package/patches/protodef+1.19.0.patch +15 -0
- package/profiles/andy-4-reasoning.json +14 -0
- package/profiles/andy-4.json +7 -0
- package/profiles/azure.json +19 -0
- package/profiles/claude.json +7 -0
- package/profiles/claude_thinker.json +15 -0
- package/profiles/deepseek.json +7 -0
- package/profiles/defaults/_default.json +256 -0
- package/profiles/defaults/assistant.json +14 -0
- package/profiles/defaults/creative.json +14 -0
- package/profiles/defaults/god_mode.json +14 -0
- package/profiles/defaults/survival.json +14 -0
- package/profiles/freeguy.json +7 -0
- package/profiles/gemini.json +9 -0
- package/profiles/gpt.json +12 -0
- package/profiles/grok.json +7 -0
- package/profiles/llama.json +10 -0
- package/profiles/mercury.json +9 -0
- package/profiles/mistral.json +5 -0
- package/profiles/qwen.json +17 -0
- package/profiles/tasks/construction_profile.json +42 -0
- package/profiles/tasks/cooking_profile.json +11 -0
- package/profiles/tasks/crafting_profile.json +71 -0
- package/profiles/vllm.json +10 -0
- package/settings.js +64 -0
- package/src/agent/action_manager.js +177 -0
- package/src/agent/agent.js +561 -0
- package/src/agent/coder.js +229 -0
- package/src/agent/commands/actions.js +504 -0
- package/src/agent/commands/index.js +259 -0
- package/src/agent/commands/queries.js +347 -0
- package/src/agent/connection_handler.js +96 -0
- package/src/agent/conversation.js +353 -0
- package/src/agent/history.js +122 -0
- package/src/agent/library/full_state.js +89 -0
- package/src/agent/library/index.js +23 -0
- package/src/agent/library/lockdown.js +32 -0
- package/src/agent/library/skill_library.js +93 -0
- package/src/agent/library/skills.js +2093 -0
- package/src/agent/library/world.js +431 -0
- package/src/agent/memory_bank.js +25 -0
- package/src/agent/mindserver_proxy.js +136 -0
- package/src/agent/modes.js +446 -0
- package/src/agent/npc/build_goal.js +80 -0
- package/src/agent/npc/construction/dirt_shelter.json +38 -0
- package/src/agent/npc/construction/large_house.json +230 -0
- package/src/agent/npc/construction/small_stone_house.json +42 -0
- package/src/agent/npc/construction/small_wood_house.json +42 -0
- package/src/agent/npc/controller.js +261 -0
- package/src/agent/npc/data.js +50 -0
- package/src/agent/npc/item_goal.js +355 -0
- package/src/agent/npc/utils.js +126 -0
- package/src/agent/self_prompter.js +146 -0
- package/src/agent/settings.js +7 -0
- package/src/agent/speak.js +150 -0
- package/src/agent/tasks/construction_tasks.js +1104 -0
- package/src/agent/tasks/cooking_tasks.js +358 -0
- package/src/agent/tasks/tasks.js +594 -0
- package/src/agent/templates/execTemplate.js +6 -0
- package/src/agent/templates/lintTemplate.js +10 -0
- package/src/agent/vision/browser_viewer.js +8 -0
- package/src/agent/vision/camera.js +78 -0
- package/src/agent/vision/vision_interpreter.js +82 -0
- package/src/mindcraft/index.js +28 -0
- package/src/mindcraft/mcserver.js +154 -0
- package/src/mindcraft/mindcraft.js +111 -0
- package/src/mindcraft/mindserver.js +328 -0
- package/src/mindcraft/public/index.html +1253 -0
- package/src/mindcraft/public/settings_spec.json +145 -0
- package/src/mindcraft/userconfig.js +72 -0
- package/src/mindcraft-py/example.py +27 -0
- package/src/mindcraft-py/init-mindcraft.js +24 -0
- package/src/mindcraft-py/mindcraft.py +99 -0
- package/src/models/_model_map.js +89 -0
- package/src/models/azure.js +32 -0
- package/src/models/cerebras.js +61 -0
- package/src/models/claude.js +87 -0
- package/src/models/deepseek.js +59 -0
- package/src/models/gemini.js +176 -0
- package/src/models/glhf.js +71 -0
- package/src/models/gpt.js +147 -0
- package/src/models/grok.js +82 -0
- package/src/models/groq.js +95 -0
- package/src/models/huggingface.js +86 -0
- package/src/models/hyperbolic.js +114 -0
- package/src/models/lmstudio.js +74 -0
- package/src/models/mercury.js +95 -0
- package/src/models/mistral.js +94 -0
- package/src/models/novita.js +71 -0
- package/src/models/ollama.js +115 -0
- package/src/models/openrouter.js +77 -0
- package/src/models/prompter.js +366 -0
- package/src/models/qwen.js +80 -0
- package/src/models/replicate.js +60 -0
- package/src/models/vllm.js +81 -0
- package/src/process/agent_process.js +84 -0
- package/src/process/init_agent.js +54 -0
- package/src/utils/examples.js +83 -0
- package/src/utils/keys.js +34 -0
- package/src/utils/math.js +13 -0
- package/src/utils/mcdata.js +572 -0
- package/src/utils/text.js +78 -0
- package/src/utils/translator.js +30 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import 'ses';
|
|
2
|
+
|
|
3
|
+
// This sets up the secure environment
|
|
4
|
+
// We disable some of the taming to allow for more flexibility
|
|
5
|
+
|
|
6
|
+
// For configuration, see https://github.com/endojs/endo/blob/master/packages/ses/docs/lockdown.md
|
|
7
|
+
|
|
8
|
+
let lockeddown = false;
|
|
9
|
+
export function lockdown() {
|
|
10
|
+
if (lockeddown) return;
|
|
11
|
+
lockeddown = true;
|
|
12
|
+
lockdown({
|
|
13
|
+
// basic devex and quality of life improvements
|
|
14
|
+
localeTaming: 'unsafe',
|
|
15
|
+
consoleTaming: 'unsafe',
|
|
16
|
+
errorTaming: 'unsafe',
|
|
17
|
+
stackFiltering: 'verbose',
|
|
18
|
+
// allow eval outside of created compartments
|
|
19
|
+
// (mineflayer dep "protodef" uses eval)
|
|
20
|
+
evalTaming: 'unsafeEval',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const makeCompartment = (endowments = {}) => {
|
|
25
|
+
return new Compartment({
|
|
26
|
+
// provide untamed Math, Date, etc
|
|
27
|
+
Math,
|
|
28
|
+
Date,
|
|
29
|
+
// standard endowments
|
|
30
|
+
...endowments
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { cosineSimilarity } from '../../utils/math.js';
|
|
2
|
+
import { getSkillDocs } from './index.js';
|
|
3
|
+
import { wordOverlapScore } from '../../utils/text.js';
|
|
4
|
+
|
|
5
|
+
export class SkillLibrary {
|
|
6
|
+
constructor(agent,embedding_model) {
|
|
7
|
+
this.agent = agent;
|
|
8
|
+
this.embedding_model = embedding_model;
|
|
9
|
+
this.skill_docs_embeddings = {};
|
|
10
|
+
this.skill_docs = null;
|
|
11
|
+
this.always_show_skills = ['skills.placeBlock', 'skills.wait', 'skills.breakBlockAt']
|
|
12
|
+
}
|
|
13
|
+
async initSkillLibrary() {
|
|
14
|
+
const skillDocs = getSkillDocs();
|
|
15
|
+
this.skill_docs = skillDocs;
|
|
16
|
+
if (this.embedding_model) {
|
|
17
|
+
try {
|
|
18
|
+
const embeddingPromises = skillDocs.map((doc) => {
|
|
19
|
+
return (async () => {
|
|
20
|
+
let func_name_desc = doc.split('\n').slice(0, 2).join('');
|
|
21
|
+
this.skill_docs_embeddings[doc] = await this.embedding_model.embed(func_name_desc);
|
|
22
|
+
})();
|
|
23
|
+
});
|
|
24
|
+
await Promise.all(embeddingPromises);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
console.warn('Error with embedding model, using word-overlap instead.');
|
|
27
|
+
this.embedding_model = null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
this.always_show_skills_docs = {};
|
|
31
|
+
for (const skillName of this.always_show_skills) {
|
|
32
|
+
this.always_show_skills_docs[skillName] = this.skill_docs.find(doc => doc.includes(skillName));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async getAllSkillDocs() {
|
|
37
|
+
return this.skill_docs;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async getRelevantSkillDocs(message, select_num) {
|
|
41
|
+
if(!message) // use filler message if none is provided
|
|
42
|
+
message = '(no message)';
|
|
43
|
+
let skill_doc_similarities = [];
|
|
44
|
+
|
|
45
|
+
if (select_num === -1) {
|
|
46
|
+
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
|
47
|
+
.map(doc_key => ({
|
|
48
|
+
doc_key,
|
|
49
|
+
similarity_score: 0
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
else if (!this.embedding_model) {
|
|
53
|
+
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
|
54
|
+
.map(doc_key => ({
|
|
55
|
+
doc_key,
|
|
56
|
+
similarity_score: wordOverlapScore(message, this.skill_docs_embeddings[doc_key])
|
|
57
|
+
}))
|
|
58
|
+
.sort((a, b) => b.similarity_score - a.similarity_score);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
let latest_message_embedding = await this.embedding_model.embed(message);
|
|
62
|
+
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
|
63
|
+
.map(doc_key => ({
|
|
64
|
+
doc_key,
|
|
65
|
+
similarity_score: cosineSimilarity(latest_message_embedding, this.skill_docs_embeddings[doc_key])
|
|
66
|
+
}))
|
|
67
|
+
.sort((a, b) => b.similarity_score - a.similarity_score);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
let length = skill_doc_similarities.length;
|
|
71
|
+
if (select_num === -1 || select_num > length) {
|
|
72
|
+
select_num = length;
|
|
73
|
+
}
|
|
74
|
+
// Get initial docs from similarity scores
|
|
75
|
+
let selected_docs = new Set(skill_doc_similarities.slice(0, select_num).map(doc => doc.doc_key));
|
|
76
|
+
|
|
77
|
+
// Add always show docs
|
|
78
|
+
Object.values(this.always_show_skills_docs).forEach(doc => {
|
|
79
|
+
if (doc) {
|
|
80
|
+
selected_docs.add(doc);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
let relevant_skill_docs = '#### RELEVANT CODE DOCS ###\nThe following functions are available to use:\n';
|
|
85
|
+
relevant_skill_docs += Array.from(selected_docs).join('\n### ');
|
|
86
|
+
|
|
87
|
+
console.log('Selected skill docs:', Array.from(selected_docs).map(doc => {
|
|
88
|
+
const first_line_break = doc.indexOf('\n');
|
|
89
|
+
return first_line_break > 0 ? doc.substring(0, first_line_break) : doc;
|
|
90
|
+
}));
|
|
91
|
+
return relevant_skill_docs;
|
|
92
|
+
}
|
|
93
|
+
}
|