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.
Files changed (116) hide show
  1. package/FAQ.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +255 -0
  4. package/andy.json +6 -0
  5. package/bin/mindcraft.js +80 -0
  6. package/keys.example.json +19 -0
  7. package/main.js +80 -0
  8. package/package.json +78 -0
  9. package/patches/minecraft-data+3.97.0.patch +13 -0
  10. package/patches/mineflayer+4.33.0.patch +54 -0
  11. package/patches/mineflayer-pathfinder+2.4.5.patch +265 -0
  12. package/patches/mineflayer-pvp+1.3.2.patch +13 -0
  13. package/patches/prismarine-viewer+1.33.0.patch +13 -0
  14. package/patches/protodef+1.19.0.patch +15 -0
  15. package/profiles/andy-4-reasoning.json +14 -0
  16. package/profiles/andy-4.json +7 -0
  17. package/profiles/azure.json +19 -0
  18. package/profiles/claude.json +7 -0
  19. package/profiles/claude_thinker.json +15 -0
  20. package/profiles/deepseek.json +7 -0
  21. package/profiles/defaults/_default.json +256 -0
  22. package/profiles/defaults/assistant.json +14 -0
  23. package/profiles/defaults/creative.json +14 -0
  24. package/profiles/defaults/god_mode.json +14 -0
  25. package/profiles/defaults/survival.json +14 -0
  26. package/profiles/freeguy.json +7 -0
  27. package/profiles/gemini.json +9 -0
  28. package/profiles/gpt.json +12 -0
  29. package/profiles/grok.json +7 -0
  30. package/profiles/llama.json +10 -0
  31. package/profiles/mercury.json +9 -0
  32. package/profiles/mistral.json +5 -0
  33. package/profiles/qwen.json +17 -0
  34. package/profiles/tasks/construction_profile.json +42 -0
  35. package/profiles/tasks/cooking_profile.json +11 -0
  36. package/profiles/tasks/crafting_profile.json +71 -0
  37. package/profiles/vllm.json +10 -0
  38. package/settings.js +64 -0
  39. package/src/agent/action_manager.js +177 -0
  40. package/src/agent/agent.js +561 -0
  41. package/src/agent/coder.js +229 -0
  42. package/src/agent/commands/actions.js +504 -0
  43. package/src/agent/commands/index.js +259 -0
  44. package/src/agent/commands/queries.js +347 -0
  45. package/src/agent/connection_handler.js +96 -0
  46. package/src/agent/conversation.js +353 -0
  47. package/src/agent/history.js +122 -0
  48. package/src/agent/library/full_state.js +89 -0
  49. package/src/agent/library/index.js +23 -0
  50. package/src/agent/library/lockdown.js +32 -0
  51. package/src/agent/library/skill_library.js +93 -0
  52. package/src/agent/library/skills.js +2093 -0
  53. package/src/agent/library/world.js +431 -0
  54. package/src/agent/memory_bank.js +25 -0
  55. package/src/agent/mindserver_proxy.js +136 -0
  56. package/src/agent/modes.js +446 -0
  57. package/src/agent/npc/build_goal.js +80 -0
  58. package/src/agent/npc/construction/dirt_shelter.json +38 -0
  59. package/src/agent/npc/construction/large_house.json +230 -0
  60. package/src/agent/npc/construction/small_stone_house.json +42 -0
  61. package/src/agent/npc/construction/small_wood_house.json +42 -0
  62. package/src/agent/npc/controller.js +261 -0
  63. package/src/agent/npc/data.js +50 -0
  64. package/src/agent/npc/item_goal.js +355 -0
  65. package/src/agent/npc/utils.js +126 -0
  66. package/src/agent/self_prompter.js +146 -0
  67. package/src/agent/settings.js +7 -0
  68. package/src/agent/speak.js +150 -0
  69. package/src/agent/tasks/construction_tasks.js +1104 -0
  70. package/src/agent/tasks/cooking_tasks.js +358 -0
  71. package/src/agent/tasks/tasks.js +594 -0
  72. package/src/agent/templates/execTemplate.js +6 -0
  73. package/src/agent/templates/lintTemplate.js +10 -0
  74. package/src/agent/vision/browser_viewer.js +8 -0
  75. package/src/agent/vision/camera.js +78 -0
  76. package/src/agent/vision/vision_interpreter.js +82 -0
  77. package/src/mindcraft/index.js +28 -0
  78. package/src/mindcraft/mcserver.js +154 -0
  79. package/src/mindcraft/mindcraft.js +111 -0
  80. package/src/mindcraft/mindserver.js +328 -0
  81. package/src/mindcraft/public/index.html +1253 -0
  82. package/src/mindcraft/public/settings_spec.json +145 -0
  83. package/src/mindcraft/userconfig.js +72 -0
  84. package/src/mindcraft-py/example.py +27 -0
  85. package/src/mindcraft-py/init-mindcraft.js +24 -0
  86. package/src/mindcraft-py/mindcraft.py +99 -0
  87. package/src/models/_model_map.js +89 -0
  88. package/src/models/azure.js +32 -0
  89. package/src/models/cerebras.js +61 -0
  90. package/src/models/claude.js +87 -0
  91. package/src/models/deepseek.js +59 -0
  92. package/src/models/gemini.js +176 -0
  93. package/src/models/glhf.js +71 -0
  94. package/src/models/gpt.js +147 -0
  95. package/src/models/grok.js +82 -0
  96. package/src/models/groq.js +95 -0
  97. package/src/models/huggingface.js +86 -0
  98. package/src/models/hyperbolic.js +114 -0
  99. package/src/models/lmstudio.js +74 -0
  100. package/src/models/mercury.js +95 -0
  101. package/src/models/mistral.js +94 -0
  102. package/src/models/novita.js +71 -0
  103. package/src/models/ollama.js +115 -0
  104. package/src/models/openrouter.js +77 -0
  105. package/src/models/prompter.js +366 -0
  106. package/src/models/qwen.js +80 -0
  107. package/src/models/replicate.js +60 -0
  108. package/src/models/vllm.js +81 -0
  109. package/src/process/agent_process.js +84 -0
  110. package/src/process/init_agent.js +54 -0
  111. package/src/utils/examples.js +83 -0
  112. package/src/utils/keys.js +34 -0
  113. package/src/utils/math.js +13 -0
  114. package/src/utils/mcdata.js +572 -0
  115. package/src/utils/text.js +78 -0
  116. 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
+ }