hanzo-mcp 0.7.7__py3-none-any.whl → 0.8.0__py3-none-any.whl
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.
Potentially problematic release.
This version of hanzo-mcp might be problematic. Click here for more details.
- hanzo_mcp/__init__.py +6 -0
- hanzo_mcp/__main__.py +1 -1
- hanzo_mcp/analytics/__init__.py +2 -2
- hanzo_mcp/analytics/posthog_analytics.py +76 -82
- hanzo_mcp/cli.py +31 -36
- hanzo_mcp/cli_enhanced.py +94 -72
- hanzo_mcp/cli_plugin.py +27 -17
- hanzo_mcp/config/__init__.py +2 -2
- hanzo_mcp/config/settings.py +112 -88
- hanzo_mcp/config/tool_config.py +32 -34
- hanzo_mcp/dev_server.py +66 -67
- hanzo_mcp/prompts/__init__.py +94 -12
- hanzo_mcp/prompts/enhanced_prompts.py +809 -0
- hanzo_mcp/prompts/example_custom_prompt.py +6 -5
- hanzo_mcp/prompts/project_todo_reminder.py +0 -1
- hanzo_mcp/prompts/tool_explorer.py +10 -7
- hanzo_mcp/server.py +17 -21
- hanzo_mcp/server_enhanced.py +15 -22
- hanzo_mcp/tools/__init__.py +56 -28
- hanzo_mcp/tools/agent/__init__.py +16 -19
- hanzo_mcp/tools/agent/agent.py +82 -65
- hanzo_mcp/tools/agent/agent_tool.py +152 -122
- hanzo_mcp/tools/agent/agent_tool_v1_deprecated.py +66 -62
- hanzo_mcp/tools/agent/clarification_protocol.py +55 -50
- hanzo_mcp/tools/agent/clarification_tool.py +11 -10
- hanzo_mcp/tools/agent/claude_cli_tool.py +21 -20
- hanzo_mcp/tools/agent/claude_desktop_auth.py +130 -144
- hanzo_mcp/tools/agent/cli_agent_base.py +59 -53
- hanzo_mcp/tools/agent/code_auth.py +102 -107
- hanzo_mcp/tools/agent/code_auth_tool.py +28 -27
- hanzo_mcp/tools/agent/codex_cli_tool.py +20 -19
- hanzo_mcp/tools/agent/critic_tool.py +86 -73
- hanzo_mcp/tools/agent/gemini_cli_tool.py +21 -20
- hanzo_mcp/tools/agent/grok_cli_tool.py +21 -20
- hanzo_mcp/tools/agent/iching_tool.py +404 -139
- hanzo_mcp/tools/agent/network_tool.py +89 -73
- hanzo_mcp/tools/agent/prompt.py +2 -1
- hanzo_mcp/tools/agent/review_tool.py +101 -98
- hanzo_mcp/tools/agent/swarm_alias.py +87 -0
- hanzo_mcp/tools/agent/swarm_tool.py +246 -161
- hanzo_mcp/tools/agent/swarm_tool_v1_deprecated.py +134 -92
- hanzo_mcp/tools/agent/tool_adapter.py +21 -11
- hanzo_mcp/tools/common/__init__.py +1 -1
- hanzo_mcp/tools/common/base.py +3 -5
- hanzo_mcp/tools/common/batch_tool.py +46 -39
- hanzo_mcp/tools/common/config_tool.py +120 -84
- hanzo_mcp/tools/common/context.py +1 -5
- hanzo_mcp/tools/common/context_fix.py +5 -3
- hanzo_mcp/tools/common/critic_tool.py +4 -8
- hanzo_mcp/tools/common/decorators.py +58 -56
- hanzo_mcp/tools/common/enhanced_base.py +29 -32
- hanzo_mcp/tools/common/fastmcp_pagination.py +91 -94
- hanzo_mcp/tools/common/forgiving_edit.py +91 -87
- hanzo_mcp/tools/common/mode.py +15 -17
- hanzo_mcp/tools/common/mode_loader.py +27 -24
- hanzo_mcp/tools/common/paginated_base.py +61 -53
- hanzo_mcp/tools/common/paginated_response.py +72 -79
- hanzo_mcp/tools/common/pagination.py +50 -53
- hanzo_mcp/tools/common/permissions.py +4 -4
- hanzo_mcp/tools/common/personality.py +186 -138
- hanzo_mcp/tools/common/plugin_loader.py +54 -54
- hanzo_mcp/tools/common/stats.py +65 -47
- hanzo_mcp/tools/common/test_helpers.py +31 -0
- hanzo_mcp/tools/common/thinking_tool.py +4 -8
- hanzo_mcp/tools/common/tool_disable.py +17 -12
- hanzo_mcp/tools/common/tool_enable.py +13 -14
- hanzo_mcp/tools/common/tool_list.py +36 -28
- hanzo_mcp/tools/common/truncate.py +23 -23
- hanzo_mcp/tools/config/__init__.py +4 -4
- hanzo_mcp/tools/config/config_tool.py +42 -29
- hanzo_mcp/tools/config/index_config.py +37 -34
- hanzo_mcp/tools/config/mode_tool.py +175 -55
- hanzo_mcp/tools/database/__init__.py +15 -12
- hanzo_mcp/tools/database/database_manager.py +77 -75
- hanzo_mcp/tools/database/graph.py +137 -91
- hanzo_mcp/tools/database/graph_add.py +30 -18
- hanzo_mcp/tools/database/graph_query.py +178 -102
- hanzo_mcp/tools/database/graph_remove.py +33 -28
- hanzo_mcp/tools/database/graph_search.py +97 -75
- hanzo_mcp/tools/database/graph_stats.py +91 -59
- hanzo_mcp/tools/database/sql.py +107 -79
- hanzo_mcp/tools/database/sql_query.py +30 -24
- hanzo_mcp/tools/database/sql_search.py +29 -25
- hanzo_mcp/tools/database/sql_stats.py +47 -35
- hanzo_mcp/tools/editor/neovim_command.py +25 -28
- hanzo_mcp/tools/editor/neovim_edit.py +21 -23
- hanzo_mcp/tools/editor/neovim_session.py +60 -54
- hanzo_mcp/tools/filesystem/__init__.py +31 -30
- hanzo_mcp/tools/filesystem/ast_multi_edit.py +329 -249
- hanzo_mcp/tools/filesystem/ast_tool.py +4 -4
- hanzo_mcp/tools/filesystem/base.py +1 -1
- hanzo_mcp/tools/filesystem/batch_search.py +316 -224
- hanzo_mcp/tools/filesystem/content_replace.py +4 -4
- hanzo_mcp/tools/filesystem/diff.py +71 -59
- hanzo_mcp/tools/filesystem/directory_tree.py +7 -7
- hanzo_mcp/tools/filesystem/directory_tree_paginated.py +49 -37
- hanzo_mcp/tools/filesystem/edit.py +4 -4
- hanzo_mcp/tools/filesystem/find.py +173 -80
- hanzo_mcp/tools/filesystem/find_files.py +73 -52
- hanzo_mcp/tools/filesystem/git_search.py +157 -104
- hanzo_mcp/tools/filesystem/grep.py +8 -8
- hanzo_mcp/tools/filesystem/multi_edit.py +4 -8
- hanzo_mcp/tools/filesystem/read.py +12 -10
- hanzo_mcp/tools/filesystem/rules_tool.py +59 -43
- hanzo_mcp/tools/filesystem/search_tool.py +263 -207
- hanzo_mcp/tools/filesystem/symbols_tool.py +94 -54
- hanzo_mcp/tools/filesystem/tree.py +35 -33
- hanzo_mcp/tools/filesystem/unix_aliases.py +13 -18
- hanzo_mcp/tools/filesystem/watch.py +37 -36
- hanzo_mcp/tools/filesystem/write.py +4 -8
- hanzo_mcp/tools/jupyter/__init__.py +4 -4
- hanzo_mcp/tools/jupyter/base.py +4 -5
- hanzo_mcp/tools/jupyter/jupyter.py +67 -47
- hanzo_mcp/tools/jupyter/notebook_edit.py +4 -4
- hanzo_mcp/tools/jupyter/notebook_read.py +4 -7
- hanzo_mcp/tools/llm/__init__.py +5 -7
- hanzo_mcp/tools/llm/consensus_tool.py +72 -52
- hanzo_mcp/tools/llm/llm_manage.py +101 -60
- hanzo_mcp/tools/llm/llm_tool.py +226 -166
- hanzo_mcp/tools/llm/provider_tools.py +25 -26
- hanzo_mcp/tools/lsp/__init__.py +1 -1
- hanzo_mcp/tools/lsp/lsp_tool.py +228 -143
- hanzo_mcp/tools/mcp/__init__.py +2 -3
- hanzo_mcp/tools/mcp/mcp_add.py +27 -25
- hanzo_mcp/tools/mcp/mcp_remove.py +7 -8
- hanzo_mcp/tools/mcp/mcp_stats.py +23 -22
- hanzo_mcp/tools/mcp/mcp_tool.py +129 -98
- hanzo_mcp/tools/memory/__init__.py +39 -21
- hanzo_mcp/tools/memory/knowledge_tools.py +124 -99
- hanzo_mcp/tools/memory/memory_tools.py +90 -108
- hanzo_mcp/tools/search/__init__.py +7 -2
- hanzo_mcp/tools/search/find_tool.py +297 -212
- hanzo_mcp/tools/search/unified_search.py +366 -314
- hanzo_mcp/tools/shell/__init__.py +8 -7
- hanzo_mcp/tools/shell/auto_background.py +56 -49
- hanzo_mcp/tools/shell/base.py +1 -1
- hanzo_mcp/tools/shell/base_process.py +75 -75
- hanzo_mcp/tools/shell/bash_session.py +2 -2
- hanzo_mcp/tools/shell/bash_session_executor.py +4 -4
- hanzo_mcp/tools/shell/bash_tool.py +24 -31
- hanzo_mcp/tools/shell/command_executor.py +12 -12
- hanzo_mcp/tools/shell/logs.py +43 -33
- hanzo_mcp/tools/shell/npx.py +13 -13
- hanzo_mcp/tools/shell/npx_background.py +24 -21
- hanzo_mcp/tools/shell/npx_tool.py +18 -22
- hanzo_mcp/tools/shell/open.py +19 -21
- hanzo_mcp/tools/shell/pkill.py +31 -26
- hanzo_mcp/tools/shell/process_tool.py +32 -32
- hanzo_mcp/tools/shell/processes.py +57 -58
- hanzo_mcp/tools/shell/run_background.py +24 -25
- hanzo_mcp/tools/shell/run_command.py +5 -5
- hanzo_mcp/tools/shell/run_command_windows.py +5 -5
- hanzo_mcp/tools/shell/session_storage.py +3 -3
- hanzo_mcp/tools/shell/streaming_command.py +141 -126
- hanzo_mcp/tools/shell/uvx.py +24 -25
- hanzo_mcp/tools/shell/uvx_background.py +35 -33
- hanzo_mcp/tools/shell/uvx_tool.py +18 -22
- hanzo_mcp/tools/todo/__init__.py +6 -2
- hanzo_mcp/tools/todo/todo.py +50 -37
- hanzo_mcp/tools/todo/todo_read.py +5 -8
- hanzo_mcp/tools/todo/todo_write.py +5 -7
- hanzo_mcp/tools/vector/__init__.py +40 -28
- hanzo_mcp/tools/vector/ast_analyzer.py +176 -143
- hanzo_mcp/tools/vector/git_ingester.py +170 -179
- hanzo_mcp/tools/vector/index_tool.py +96 -44
- hanzo_mcp/tools/vector/infinity_store.py +283 -228
- hanzo_mcp/tools/vector/mock_infinity.py +39 -40
- hanzo_mcp/tools/vector/project_manager.py +88 -78
- hanzo_mcp/tools/vector/vector.py +59 -42
- hanzo_mcp/tools/vector/vector_index.py +30 -27
- hanzo_mcp/tools/vector/vector_search.py +64 -45
- hanzo_mcp/types.py +6 -4
- {hanzo_mcp-0.7.7.dist-info → hanzo_mcp-0.8.0.dist-info}/METADATA +1 -1
- hanzo_mcp-0.8.0.dist-info/RECORD +185 -0
- hanzo_mcp-0.7.7.dist-info/RECORD +0 -182
- {hanzo_mcp-0.7.7.dist-info → hanzo_mcp-0.8.0.dist-info}/WHEEL +0 -0
- {hanzo_mcp-0.7.7.dist-info → hanzo_mcp-0.8.0.dist-info}/entry_points.txt +0 -0
- {hanzo_mcp-0.7.7.dist-info → hanzo_mcp-0.8.0.dist-info}/top_level.txt +0 -0
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"""Tool personality system for organizing development tools based on famous programmers."""
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
+
from typing import Set, Dict, List, Optional
|
|
4
5
|
from dataclasses import dataclass
|
|
5
|
-
from typing import Dict, List, Optional, Set
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
@dataclass
|
|
9
9
|
class ToolPersonality:
|
|
10
10
|
"""Represents a programmer personality with tool preferences."""
|
|
11
|
+
|
|
11
12
|
name: str
|
|
12
13
|
programmer: str
|
|
13
14
|
description: str
|
|
14
15
|
tools: List[str]
|
|
15
16
|
environment: Optional[Dict[str, str]] = None
|
|
16
17
|
philosophy: Optional[str] = None
|
|
17
|
-
|
|
18
|
+
|
|
18
19
|
def __post_init__(self):
|
|
19
20
|
"""Validate personality configuration."""
|
|
20
21
|
if not self.name:
|
|
@@ -25,39 +26,39 @@ class ToolPersonality:
|
|
|
25
26
|
|
|
26
27
|
class PersonalityRegistry:
|
|
27
28
|
"""Registry for tool personalities."""
|
|
28
|
-
|
|
29
|
+
|
|
29
30
|
_personalities: Dict[str, ToolPersonality] = {}
|
|
30
31
|
_active_personality: Optional[str] = None
|
|
31
|
-
|
|
32
|
+
|
|
32
33
|
@classmethod
|
|
33
34
|
def register(cls, personality: ToolPersonality) -> None:
|
|
34
35
|
"""Register a tool personality."""
|
|
35
36
|
cls._personalities[personality.name] = personality
|
|
36
|
-
|
|
37
|
+
|
|
37
38
|
@classmethod
|
|
38
39
|
def get(cls, name: str) -> Optional[ToolPersonality]:
|
|
39
40
|
"""Get a personality by name."""
|
|
40
41
|
return cls._personalities.get(name)
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
@classmethod
|
|
43
44
|
def list(cls) -> List[ToolPersonality]:
|
|
44
45
|
"""List all registered personalities."""
|
|
45
46
|
return list(cls._personalities.values())
|
|
46
|
-
|
|
47
|
+
|
|
47
48
|
@classmethod
|
|
48
49
|
def set_active(cls, name: str) -> None:
|
|
49
50
|
"""Set the active personality."""
|
|
50
51
|
if name not in cls._personalities:
|
|
51
52
|
raise ValueError(f"Personality '{name}' not found")
|
|
52
53
|
cls._active_personality = name
|
|
53
|
-
|
|
54
|
+
|
|
54
55
|
@classmethod
|
|
55
56
|
def get_active(cls) -> Optional[ToolPersonality]:
|
|
56
57
|
"""Get the active personality."""
|
|
57
58
|
if cls._active_personality:
|
|
58
59
|
return cls._personalities.get(cls._active_personality)
|
|
59
60
|
return None
|
|
60
|
-
|
|
61
|
+
|
|
61
62
|
@classmethod
|
|
62
63
|
def get_active_tools(cls) -> Set[str]:
|
|
63
64
|
"""Get the set of tools from the active personality."""
|
|
@@ -87,8 +88,11 @@ personalities = [
|
|
|
87
88
|
programmer="Guido van Rossum",
|
|
88
89
|
description="Python's BDFL - readability counts",
|
|
89
90
|
philosophy="There should be one-- and preferably only one --obvious way to do it.",
|
|
90
|
-
tools=ESSENTIAL_TOOLS
|
|
91
|
-
|
|
91
|
+
tools=ESSENTIAL_TOOLS
|
|
92
|
+
+ ["uvx", "jupyter", "multi_edit", "symbols", "rules"]
|
|
93
|
+
+ AI_TOOLS
|
|
94
|
+
+ SEARCH_TOOLS,
|
|
95
|
+
environment={"PYTHONPATH": ".", "PYTEST_ARGS": "-xvs"},
|
|
92
96
|
),
|
|
93
97
|
ToolPersonality(
|
|
94
98
|
name="matz",
|
|
@@ -96,15 +100,18 @@ personalities = [
|
|
|
96
100
|
description="Ruby creator - optimize for developer happiness",
|
|
97
101
|
philosophy="Ruby is designed to make programmers happy.",
|
|
98
102
|
tools=ESSENTIAL_TOOLS + ["npx", "symbols", "batch", "todo"] + SEARCH_TOOLS,
|
|
99
|
-
environment={"RUBY_VERSION": "3.0", "BUNDLE_PATH": "vendor/bundle"}
|
|
103
|
+
environment={"RUBY_VERSION": "3.0", "BUNDLE_PATH": "vendor/bundle"},
|
|
100
104
|
),
|
|
101
105
|
ToolPersonality(
|
|
102
106
|
name="brendan",
|
|
103
107
|
programmer="Brendan Eich",
|
|
104
108
|
description="JavaScript creator - dynamic and flexible",
|
|
105
109
|
philosophy="Always bet on JS.",
|
|
106
|
-
tools=ESSENTIAL_TOOLS
|
|
107
|
-
|
|
110
|
+
tools=ESSENTIAL_TOOLS
|
|
111
|
+
+ ["npx", "watch", "symbols", "todo", "rules"]
|
|
112
|
+
+ BUILD_TOOLS
|
|
113
|
+
+ SEARCH_TOOLS,
|
|
114
|
+
environment={"NODE_ENV": "development", "NPM_CONFIG_LOGLEVEL": "warn"},
|
|
108
115
|
),
|
|
109
116
|
ToolPersonality(
|
|
110
117
|
name="dennis",
|
|
@@ -112,15 +119,18 @@ personalities = [
|
|
|
112
119
|
description="C creator - close to the metal",
|
|
113
120
|
philosophy="UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.",
|
|
114
121
|
tools=ESSENTIAL_TOOLS + ["symbols", "content_replace"] + UNIX_TOOLS,
|
|
115
|
-
environment={"CC": "gcc", "CFLAGS": "-Wall -O2"}
|
|
122
|
+
environment={"CC": "gcc", "CFLAGS": "-Wall -O2"},
|
|
116
123
|
),
|
|
117
124
|
ToolPersonality(
|
|
118
125
|
name="bjarne",
|
|
119
126
|
programmer="Bjarne Stroustrup",
|
|
120
127
|
description="C++ creator - zero-overhead abstractions",
|
|
121
128
|
philosophy="C++ is designed to allow you to express ideas.",
|
|
122
|
-
tools=ESSENTIAL_TOOLS
|
|
123
|
-
|
|
129
|
+
tools=ESSENTIAL_TOOLS
|
|
130
|
+
+ ["symbols", "multi_edit", "content_replace"]
|
|
131
|
+
+ UNIX_TOOLS
|
|
132
|
+
+ BUILD_TOOLS,
|
|
133
|
+
environment={"CXX": "g++", "CXXFLAGS": "-std=c++20 -Wall"},
|
|
124
134
|
),
|
|
125
135
|
ToolPersonality(
|
|
126
136
|
name="james",
|
|
@@ -128,15 +138,18 @@ personalities = [
|
|
|
128
138
|
description="Java creator - write once, run anywhere",
|
|
129
139
|
philosophy="Java is C++ without the guns, knives, and clubs.",
|
|
130
140
|
tools=ESSENTIAL_TOOLS + ["symbols", "batch", "todo"] + BUILD_TOOLS,
|
|
131
|
-
environment={"JAVA_HOME": "/usr/lib/jvm/java-11-openjdk"}
|
|
141
|
+
environment={"JAVA_HOME": "/usr/lib/jvm/java-11-openjdk"},
|
|
132
142
|
),
|
|
133
143
|
ToolPersonality(
|
|
134
144
|
name="anders",
|
|
135
145
|
programmer="Anders Hejlsberg",
|
|
136
146
|
description="TypeScript/C# creator - type safety matters",
|
|
137
147
|
philosophy="TypeScript is JavaScript that scales.",
|
|
138
|
-
tools=ESSENTIAL_TOOLS
|
|
139
|
-
|
|
148
|
+
tools=ESSENTIAL_TOOLS
|
|
149
|
+
+ ["npx", "symbols", "watch", "rules"]
|
|
150
|
+
+ BUILD_TOOLS
|
|
151
|
+
+ SEARCH_TOOLS,
|
|
152
|
+
environment={"TYPESCRIPT_VERSION": "5.0"},
|
|
140
153
|
),
|
|
141
154
|
ToolPersonality(
|
|
142
155
|
name="larry",
|
|
@@ -144,7 +157,7 @@ personalities = [
|
|
|
144
157
|
description="Perl creator - there's more than one way to do it",
|
|
145
158
|
philosophy="The three chief virtues of a programmer are laziness, impatience, and hubris.",
|
|
146
159
|
tools=ESSENTIAL_TOOLS + ["grep", "content_replace", "batch"] + UNIX_TOOLS,
|
|
147
|
-
environment={"PERL5LIB": "./lib"}
|
|
160
|
+
environment={"PERL5LIB": "./lib"},
|
|
148
161
|
),
|
|
149
162
|
ToolPersonality(
|
|
150
163
|
name="rasmus",
|
|
@@ -152,7 +165,7 @@ personalities = [
|
|
|
152
165
|
description="PHP creator - pragmatic web development",
|
|
153
166
|
philosophy="I'm not a real programmer. I throw together things until it works.",
|
|
154
167
|
tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch"] + DATABASE_TOOLS,
|
|
155
|
-
environment={"PHP_VERSION": "8.0"}
|
|
168
|
+
environment={"PHP_VERSION": "8.0"},
|
|
156
169
|
),
|
|
157
170
|
ToolPersonality(
|
|
158
171
|
name="rich",
|
|
@@ -160,25 +173,29 @@ personalities = [
|
|
|
160
173
|
description="Clojure creator - simplicity matters",
|
|
161
174
|
philosophy="Programming is not about typing... it's about thinking.",
|
|
162
175
|
tools=ESSENTIAL_TOOLS + ["symbols", "todo", "batch"] + AI_TOOLS,
|
|
163
|
-
environment={"CLOJURE_VERSION": "1.11"}
|
|
176
|
+
environment={"CLOJURE_VERSION": "1.11"},
|
|
164
177
|
),
|
|
165
|
-
|
|
166
178
|
# 11-20: Systems & Infrastructure
|
|
167
179
|
ToolPersonality(
|
|
168
180
|
name="linus",
|
|
169
181
|
programmer="Linus Torvalds",
|
|
170
182
|
description="Linux & Git creator - pragmatic excellence",
|
|
171
183
|
philosophy="Talk is cheap. Show me the code.",
|
|
172
|
-
tools=ESSENTIAL_TOOLS
|
|
173
|
-
|
|
184
|
+
tools=ESSENTIAL_TOOLS
|
|
185
|
+
+ ["git_search", "diff", "content_replace", "critic"]
|
|
186
|
+
+ UNIX_TOOLS,
|
|
187
|
+
environment={"KERNEL_VERSION": "6.0", "GIT_AUTHOR_NAME": "Linus Torvalds"},
|
|
174
188
|
),
|
|
175
189
|
ToolPersonality(
|
|
176
190
|
name="rob",
|
|
177
191
|
programmer="Rob Pike",
|
|
178
192
|
description="Go creator - simplicity and concurrency",
|
|
179
193
|
philosophy="A little copying is better than a little dependency.",
|
|
180
|
-
tools=ESSENTIAL_TOOLS
|
|
181
|
-
|
|
194
|
+
tools=ESSENTIAL_TOOLS
|
|
195
|
+
+ ["symbols", "batch", "process"]
|
|
196
|
+
+ UNIX_TOOLS
|
|
197
|
+
+ BUILD_TOOLS,
|
|
198
|
+
environment={"GOPATH": "~/go", "GO111MODULE": "on"},
|
|
182
199
|
),
|
|
183
200
|
ToolPersonality(
|
|
184
201
|
name="ken",
|
|
@@ -186,7 +203,7 @@ personalities = [
|
|
|
186
203
|
description="Unix creator - elegant minimalism",
|
|
187
204
|
philosophy="When in doubt, use brute force.",
|
|
188
205
|
tools=ESSENTIAL_TOOLS + UNIX_TOOLS,
|
|
189
|
-
environment={"PATH": "/usr/local/bin:$PATH"}
|
|
206
|
+
environment={"PATH": "/usr/local/bin:$PATH"},
|
|
190
207
|
),
|
|
191
208
|
ToolPersonality(
|
|
192
209
|
name="bill",
|
|
@@ -194,7 +211,7 @@ personalities = [
|
|
|
194
211
|
description="Vi creator & BSD contributor",
|
|
195
212
|
philosophy="The best way to predict the future is to invent it.",
|
|
196
213
|
tools=ESSENTIAL_TOOLS + ["neovim_edit", "neovim_command"] + UNIX_TOOLS,
|
|
197
|
-
environment={"EDITOR": "vi"}
|
|
214
|
+
environment={"EDITOR": "vi"},
|
|
198
215
|
),
|
|
199
216
|
ToolPersonality(
|
|
200
217
|
name="richard",
|
|
@@ -202,7 +219,7 @@ personalities = [
|
|
|
202
219
|
description="GNU creator - software freedom",
|
|
203
220
|
philosophy="Free software is a matter of liberty, not price.",
|
|
204
221
|
tools=ESSENTIAL_TOOLS + ["content_replace", "batch"] + UNIX_TOOLS,
|
|
205
|
-
environment={"EDITOR": "emacs"}
|
|
222
|
+
environment={"EDITOR": "emacs"},
|
|
206
223
|
),
|
|
207
224
|
ToolPersonality(
|
|
208
225
|
name="brian",
|
|
@@ -210,7 +227,7 @@ personalities = [
|
|
|
210
227
|
description="AWK co-creator & Unix pioneer",
|
|
211
228
|
philosophy="Controlling complexity is the essence of computer programming.",
|
|
212
229
|
tools=ESSENTIAL_TOOLS + ["grep", "content_replace"] + UNIX_TOOLS,
|
|
213
|
-
environment={"AWK": "gawk"}
|
|
230
|
+
environment={"AWK": "gawk"},
|
|
214
231
|
),
|
|
215
232
|
ToolPersonality(
|
|
216
233
|
name="donald",
|
|
@@ -218,15 +235,17 @@ personalities = [
|
|
|
218
235
|
description="TeX creator - literate programming",
|
|
219
236
|
philosophy="Premature optimization is the root of all evil.",
|
|
220
237
|
tools=ESSENTIAL_TOOLS + ["symbols", "todo", "critic"],
|
|
221
|
-
environment={"TEXMFHOME": "~/texmf"}
|
|
238
|
+
environment={"TEXMFHOME": "~/texmf"},
|
|
222
239
|
),
|
|
223
240
|
ToolPersonality(
|
|
224
241
|
name="graydon",
|
|
225
242
|
programmer="Graydon Hoare",
|
|
226
243
|
description="Rust creator - memory safety without GC",
|
|
227
244
|
philosophy="Memory safety without garbage collection, concurrency without data races.",
|
|
228
|
-
tools=ESSENTIAL_TOOLS
|
|
229
|
-
|
|
245
|
+
tools=ESSENTIAL_TOOLS
|
|
246
|
+
+ ["symbols", "multi_edit", "critic", "todo"]
|
|
247
|
+
+ BUILD_TOOLS,
|
|
248
|
+
environment={"RUST_BACKTRACE": "1", "CARGO_HOME": "~/.cargo"},
|
|
230
249
|
),
|
|
231
250
|
ToolPersonality(
|
|
232
251
|
name="ryan",
|
|
@@ -234,7 +253,7 @@ personalities = [
|
|
|
234
253
|
description="Node.js & Deno creator",
|
|
235
254
|
philosophy="I/O needs to be done differently.",
|
|
236
255
|
tools=ESSENTIAL_TOOLS + ["npx", "uvx", "watch", "process"] + BUILD_TOOLS,
|
|
237
|
-
environment={"DENO_DIR": "~/.deno"}
|
|
256
|
+
environment={"DENO_DIR": "~/.deno"},
|
|
238
257
|
),
|
|
239
258
|
ToolPersonality(
|
|
240
259
|
name="mitchell",
|
|
@@ -242,9 +261,8 @@ personalities = [
|
|
|
242
261
|
description="HashiCorp founder - infrastructure as code",
|
|
243
262
|
philosophy="Automate everything.",
|
|
244
263
|
tools=ESSENTIAL_TOOLS + ["bash", "process", "watch", "todo"] + BUILD_TOOLS,
|
|
245
|
-
environment={"TERRAFORM_VERSION": "1.0"}
|
|
264
|
+
environment={"TERRAFORM_VERSION": "1.0"},
|
|
246
265
|
),
|
|
247
|
-
|
|
248
266
|
# 21-30: Web & Frontend
|
|
249
267
|
ToolPersonality(
|
|
250
268
|
name="tim",
|
|
@@ -252,7 +270,7 @@ personalities = [
|
|
|
252
270
|
description="WWW inventor - open web",
|
|
253
271
|
philosophy="The Web is for everyone.",
|
|
254
272
|
tools=ESSENTIAL_TOOLS + ["npx", "watch", "rules"] + SEARCH_TOOLS,
|
|
255
|
-
environment={"W3C_VALIDATOR": "true"}
|
|
273
|
+
environment={"W3C_VALIDATOR": "true"},
|
|
256
274
|
),
|
|
257
275
|
ToolPersonality(
|
|
258
276
|
name="douglas",
|
|
@@ -260,7 +278,7 @@ personalities = [
|
|
|
260
278
|
description="JSON creator - JavaScript the good parts",
|
|
261
279
|
philosophy="JavaScript has some extraordinarily good parts.",
|
|
262
280
|
tools=ESSENTIAL_TOOLS + ["npx", "symbols", "critic"] + SEARCH_TOOLS,
|
|
263
|
-
environment={"JSLINT": "true"}
|
|
281
|
+
environment={"JSLINT": "true"},
|
|
264
282
|
),
|
|
265
283
|
ToolPersonality(
|
|
266
284
|
name="john",
|
|
@@ -268,7 +286,7 @@ personalities = [
|
|
|
268
286
|
description="jQuery creator - write less, do more",
|
|
269
287
|
philosophy="Do more with less code.",
|
|
270
288
|
tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols"] + SEARCH_TOOLS,
|
|
271
|
-
environment={"JQUERY_VERSION": "3.6"}
|
|
289
|
+
environment={"JQUERY_VERSION": "3.6"},
|
|
272
290
|
),
|
|
273
291
|
ToolPersonality(
|
|
274
292
|
name="evan",
|
|
@@ -276,7 +294,7 @@ personalities = [
|
|
|
276
294
|
description="Vue.js creator - progressive framework",
|
|
277
295
|
philosophy="Approachable, versatile, performant.",
|
|
278
296
|
tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols", "todo"] + BUILD_TOOLS,
|
|
279
|
-
environment={"VUE_VERSION": "3"}
|
|
297
|
+
environment={"VUE_VERSION": "3"},
|
|
280
298
|
),
|
|
281
299
|
ToolPersonality(
|
|
282
300
|
name="jordan",
|
|
@@ -284,7 +302,7 @@ personalities = [
|
|
|
284
302
|
description="React creator - declarative UIs",
|
|
285
303
|
philosophy="Learn once, write anywhere.",
|
|
286
304
|
tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols", "rules"] + BUILD_TOOLS,
|
|
287
|
-
environment={"REACT_VERSION": "18"}
|
|
305
|
+
environment={"REACT_VERSION": "18"},
|
|
288
306
|
),
|
|
289
307
|
ToolPersonality(
|
|
290
308
|
name="jeremy",
|
|
@@ -292,7 +310,7 @@ personalities = [
|
|
|
292
310
|
description="CoffeeScript & Backbone creator",
|
|
293
311
|
philosophy="It's just JavaScript.",
|
|
294
312
|
tools=ESSENTIAL_TOOLS + ["npx", "symbols", "watch"],
|
|
295
|
-
environment={"COFFEE_VERSION": "2.0"}
|
|
313
|
+
environment={"COFFEE_VERSION": "2.0"},
|
|
296
314
|
),
|
|
297
315
|
ToolPersonality(
|
|
298
316
|
name="david",
|
|
@@ -300,7 +318,7 @@ personalities = [
|
|
|
300
318
|
description="Rails creator - convention over configuration",
|
|
301
319
|
philosophy="Optimize for programmer happiness.",
|
|
302
320
|
tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch", "todo"] + DATABASE_TOOLS,
|
|
303
|
-
environment={"RAILS_ENV": "development"}
|
|
321
|
+
environment={"RAILS_ENV": "development"},
|
|
304
322
|
),
|
|
305
323
|
ToolPersonality(
|
|
306
324
|
name="taylor",
|
|
@@ -308,7 +326,7 @@ personalities = [
|
|
|
308
326
|
description="Laravel creator - PHP artisan",
|
|
309
327
|
philosophy="Love beautiful code? We do too.",
|
|
310
328
|
tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch"] + DATABASE_TOOLS,
|
|
311
|
-
environment={"LARAVEL_VERSION": "10"}
|
|
329
|
+
environment={"LARAVEL_VERSION": "10"},
|
|
312
330
|
),
|
|
313
331
|
ToolPersonality(
|
|
314
332
|
name="adrian",
|
|
@@ -316,7 +334,7 @@ personalities = [
|
|
|
316
334
|
description="Django co-creator - web framework for perfectionists",
|
|
317
335
|
philosophy="The web framework for perfectionists with deadlines.",
|
|
318
336
|
tools=ESSENTIAL_TOOLS + ["uvx", "sql_query", "watch"] + DATABASE_TOOLS,
|
|
319
|
-
environment={"DJANGO_SETTINGS_MODULE": "settings"}
|
|
337
|
+
environment={"DJANGO_SETTINGS_MODULE": "settings"},
|
|
320
338
|
),
|
|
321
339
|
ToolPersonality(
|
|
322
340
|
name="matt",
|
|
@@ -324,9 +342,8 @@ personalities = [
|
|
|
324
342
|
description="WordPress creator - democratize publishing",
|
|
325
343
|
philosophy="Code is poetry.",
|
|
326
344
|
tools=ESSENTIAL_TOOLS + ["sql_query", "watch", "rules"] + DATABASE_TOOLS,
|
|
327
|
-
environment={"WP_DEBUG": "true"}
|
|
345
|
+
environment={"WP_DEBUG": "true"},
|
|
328
346
|
),
|
|
329
|
-
|
|
330
347
|
# 31-40: Database & Data
|
|
331
348
|
ToolPersonality(
|
|
332
349
|
name="michael_s",
|
|
@@ -334,7 +351,7 @@ personalities = [
|
|
|
334
351
|
description="PostgreSQL creator - ACID matters",
|
|
335
352
|
philosophy="One size does not fit all in databases.",
|
|
336
353
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "todo"],
|
|
337
|
-
environment={"PGDATA": "/var/lib/postgresql/data"}
|
|
354
|
+
environment={"PGDATA": "/var/lib/postgresql/data"},
|
|
338
355
|
),
|
|
339
356
|
ToolPersonality(
|
|
340
357
|
name="michael_w",
|
|
@@ -342,7 +359,7 @@ personalities = [
|
|
|
342
359
|
description="MySQL/MariaDB creator",
|
|
343
360
|
philosophy="A small fast database for the web.",
|
|
344
361
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["watch"],
|
|
345
|
-
environment={"MYSQL_HOME": "/usr/local/mysql"}
|
|
362
|
+
environment={"MYSQL_HOME": "/usr/local/mysql"},
|
|
346
363
|
),
|
|
347
364
|
ToolPersonality(
|
|
348
365
|
name="salvatore",
|
|
@@ -350,7 +367,7 @@ personalities = [
|
|
|
350
367
|
description="Redis creator - data structures server",
|
|
351
368
|
philosophy="Simplicity is a great virtue.",
|
|
352
369
|
tools=ESSENTIAL_TOOLS + ["bash", "watch", "process"] + DATABASE_TOOLS,
|
|
353
|
-
environment={"REDIS_VERSION": "7.0"}
|
|
370
|
+
environment={"REDIS_VERSION": "7.0"},
|
|
354
371
|
),
|
|
355
372
|
ToolPersonality(
|
|
356
373
|
name="dwight",
|
|
@@ -358,7 +375,7 @@ personalities = [
|
|
|
358
375
|
description="MongoDB co-creator - document databases",
|
|
359
376
|
philosophy="Build the database you want to use.",
|
|
360
377
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["watch", "todo"],
|
|
361
|
-
environment={"MONGO_VERSION": "6.0"}
|
|
378
|
+
environment={"MONGO_VERSION": "6.0"},
|
|
362
379
|
),
|
|
363
380
|
ToolPersonality(
|
|
364
381
|
name="edgar",
|
|
@@ -366,7 +383,7 @@ personalities = [
|
|
|
366
383
|
description="Relational model inventor",
|
|
367
384
|
philosophy="Data independence is key.",
|
|
368
385
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["critic"],
|
|
369
|
-
environment={"SQL_MODE": "ANSI"}
|
|
386
|
+
environment={"SQL_MODE": "ANSI"},
|
|
370
387
|
),
|
|
371
388
|
ToolPersonality(
|
|
372
389
|
name="jim_gray",
|
|
@@ -374,7 +391,7 @@ personalities = [
|
|
|
374
391
|
description="Transaction processing pioneer",
|
|
375
392
|
philosophy="The transaction is the unit of work.",
|
|
376
393
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "critic"],
|
|
377
|
-
environment={"ISOLATION_LEVEL": "SERIALIZABLE"}
|
|
394
|
+
environment={"ISOLATION_LEVEL": "SERIALIZABLE"},
|
|
378
395
|
),
|
|
379
396
|
ToolPersonality(
|
|
380
397
|
name="jeff_dean",
|
|
@@ -382,7 +399,7 @@ personalities = [
|
|
|
382
399
|
description="MapReduce & BigTable co-creator",
|
|
383
400
|
philosophy="Design for planet-scale.",
|
|
384
401
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + VECTOR_TOOLS + ["batch"],
|
|
385
|
-
environment={"HADOOP_HOME": "/opt/hadoop"}
|
|
402
|
+
environment={"HADOOP_HOME": "/opt/hadoop"},
|
|
386
403
|
),
|
|
387
404
|
ToolPersonality(
|
|
388
405
|
name="sanjay",
|
|
@@ -390,7 +407,7 @@ personalities = [
|
|
|
390
407
|
description="MapReduce & BigTable co-creator",
|
|
391
408
|
philosophy="Simple abstractions for complex systems.",
|
|
392
409
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process"],
|
|
393
|
-
environment={"SPARK_HOME": "/opt/spark"}
|
|
410
|
+
environment={"SPARK_HOME": "/opt/spark"},
|
|
394
411
|
),
|
|
395
412
|
ToolPersonality(
|
|
396
413
|
name="mike",
|
|
@@ -398,7 +415,7 @@ personalities = [
|
|
|
398
415
|
description="Hadoop co-creator",
|
|
399
416
|
philosophy="Storage is cheap, compute is cheap.",
|
|
400
417
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process"],
|
|
401
|
-
environment={"HADOOP_CONF_DIR": "/etc/hadoop"}
|
|
418
|
+
environment={"HADOOP_CONF_DIR": "/etc/hadoop"},
|
|
402
419
|
),
|
|
403
420
|
ToolPersonality(
|
|
404
421
|
name="matei",
|
|
@@ -406,9 +423,8 @@ personalities = [
|
|
|
406
423
|
description="Apache Spark creator",
|
|
407
424
|
philosophy="In-memory computing changes everything.",
|
|
408
425
|
tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process", "jupyter"],
|
|
409
|
-
environment={"SPARK_MASTER": "local[*]"}
|
|
426
|
+
environment={"SPARK_MASTER": "local[*]"},
|
|
410
427
|
),
|
|
411
|
-
|
|
412
428
|
# 41-50: AI & Machine Learning
|
|
413
429
|
ToolPersonality(
|
|
414
430
|
name="yann",
|
|
@@ -416,7 +432,7 @@ personalities = [
|
|
|
416
432
|
description="Deep learning pioneer - ConvNets",
|
|
417
433
|
philosophy="AI is not magic; it's just math and data.",
|
|
418
434
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "watch"],
|
|
419
|
-
environment={"PYTORCH_VERSION": "2.0"}
|
|
435
|
+
environment={"PYTORCH_VERSION": "2.0"},
|
|
420
436
|
),
|
|
421
437
|
ToolPersonality(
|
|
422
438
|
name="geoffrey",
|
|
@@ -424,7 +440,7 @@ personalities = [
|
|
|
424
440
|
description="Deep learning godfather",
|
|
425
441
|
philosophy="The brain has to work with what it's got.",
|
|
426
442
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter"],
|
|
427
|
-
environment={"TF_VERSION": "2.13"}
|
|
443
|
+
environment={"TF_VERSION": "2.13"},
|
|
428
444
|
),
|
|
429
445
|
ToolPersonality(
|
|
430
446
|
name="yoshua",
|
|
@@ -432,7 +448,7 @@ personalities = [
|
|
|
432
448
|
description="Deep learning pioneer",
|
|
433
449
|
philosophy="We need to think about AI that helps humanity.",
|
|
434
450
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "batch"],
|
|
435
|
-
environment={"THEANO_FLAGS": "device=cuda"}
|
|
451
|
+
environment={"THEANO_FLAGS": "device=cuda"},
|
|
436
452
|
),
|
|
437
453
|
ToolPersonality(
|
|
438
454
|
name="andrew",
|
|
@@ -440,7 +456,7 @@ personalities = [
|
|
|
440
456
|
description="AI educator & Coursera co-founder",
|
|
441
457
|
philosophy="AI is the new electricity.",
|
|
442
458
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "todo", "watch"],
|
|
443
|
-
environment={"CUDA_VISIBLE_DEVICES": "0"}
|
|
459
|
+
environment={"CUDA_VISIBLE_DEVICES": "0"},
|
|
444
460
|
),
|
|
445
461
|
ToolPersonality(
|
|
446
462
|
name="demis",
|
|
@@ -448,7 +464,7 @@ personalities = [
|
|
|
448
464
|
description="DeepMind co-founder",
|
|
449
465
|
philosophy="Solve intelligence, use it to solve everything else.",
|
|
450
466
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["agent", "consensus"],
|
|
451
|
-
environment={"JAX_VERSION": "0.4"}
|
|
467
|
+
environment={"JAX_VERSION": "0.4"},
|
|
452
468
|
),
|
|
453
469
|
ToolPersonality(
|
|
454
470
|
name="ilya",
|
|
@@ -456,7 +472,7 @@ personalities = [
|
|
|
456
472
|
description="OpenAI co-founder",
|
|
457
473
|
philosophy="Scale is all you need.",
|
|
458
474
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["agent", "consensus", "critic"],
|
|
459
|
-
environment={"OPENAI_API_KEY": "sk-..."}
|
|
475
|
+
environment={"OPENAI_API_KEY": "sk-..."},
|
|
460
476
|
),
|
|
461
477
|
ToolPersonality(
|
|
462
478
|
name="andrej",
|
|
@@ -464,7 +480,7 @@ personalities = [
|
|
|
464
480
|
description="AI educator & Tesla AI director",
|
|
465
481
|
philosophy="Build it from scratch to understand it.",
|
|
466
482
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "todo"],
|
|
467
|
-
environment={"CUDA_HOME": "/usr/local/cuda"}
|
|
483
|
+
environment={"CUDA_HOME": "/usr/local/cuda"},
|
|
468
484
|
),
|
|
469
485
|
ToolPersonality(
|
|
470
486
|
name="chris",
|
|
@@ -472,7 +488,7 @@ personalities = [
|
|
|
472
488
|
description="AI interpretability researcher",
|
|
473
489
|
philosophy="Understanding neural networks matters.",
|
|
474
490
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "critic"],
|
|
475
|
-
environment={"DISTILL_MODE": "interactive"}
|
|
491
|
+
environment={"DISTILL_MODE": "interactive"},
|
|
476
492
|
),
|
|
477
493
|
ToolPersonality(
|
|
478
494
|
name="francois",
|
|
@@ -480,7 +496,7 @@ personalities = [
|
|
|
480
496
|
description="Keras creator",
|
|
481
497
|
philosophy="Deep learning for humans.",
|
|
482
498
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "todo"],
|
|
483
|
-
environment={"KERAS_BACKEND": "tensorflow"}
|
|
499
|
+
environment={"KERAS_BACKEND": "tensorflow"},
|
|
484
500
|
),
|
|
485
501
|
ToolPersonality(
|
|
486
502
|
name="jeremy_howard",
|
|
@@ -488,9 +504,8 @@ personalities = [
|
|
|
488
504
|
description="fast.ai founder",
|
|
489
505
|
philosophy="Deep learning should be accessible to all.",
|
|
490
506
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "rules"],
|
|
491
|
-
environment={"FASTAI_VERSION": "2.7"}
|
|
507
|
+
environment={"FASTAI_VERSION": "2.7"},
|
|
492
508
|
),
|
|
493
|
-
|
|
494
509
|
# 51-60: Security & Cryptography
|
|
495
510
|
ToolPersonality(
|
|
496
511
|
name="bruce",
|
|
@@ -498,7 +513,7 @@ personalities = [
|
|
|
498
513
|
description="Security expert & cryptographer",
|
|
499
514
|
philosophy="Security is a process, not a product.",
|
|
500
515
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"] + UNIX_TOOLS,
|
|
501
|
-
environment={"SECURITY_AUDIT": "true"}
|
|
516
|
+
environment={"SECURITY_AUDIT": "true"},
|
|
502
517
|
),
|
|
503
518
|
ToolPersonality(
|
|
504
519
|
name="phil",
|
|
@@ -506,7 +521,7 @@ personalities = [
|
|
|
506
521
|
description="PGP creator - privacy matters",
|
|
507
522
|
philosophy="If privacy is outlawed, only outlaws will have privacy.",
|
|
508
523
|
tools=ESSENTIAL_TOOLS + ["critic", "content_replace"] + UNIX_TOOLS,
|
|
509
|
-
environment={"GPG_TTY": "$(tty)"}
|
|
524
|
+
environment={"GPG_TTY": "$(tty)"},
|
|
510
525
|
),
|
|
511
526
|
ToolPersonality(
|
|
512
527
|
name="whitfield",
|
|
@@ -514,7 +529,7 @@ personalities = [
|
|
|
514
529
|
description="Public-key cryptography pioneer",
|
|
515
530
|
philosophy="Privacy is necessary for an open society.",
|
|
516
531
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols"],
|
|
517
|
-
environment={"OPENSSL_VERSION": "3.0"}
|
|
532
|
+
environment={"OPENSSL_VERSION": "3.0"},
|
|
518
533
|
),
|
|
519
534
|
ToolPersonality(
|
|
520
535
|
name="ralph",
|
|
@@ -522,7 +537,7 @@ personalities = [
|
|
|
522
537
|
description="Merkle trees inventor",
|
|
523
538
|
philosophy="Cryptography is about mathematical guarantees.",
|
|
524
539
|
tools=ESSENTIAL_TOOLS + ["symbols", "critic", "batch"],
|
|
525
|
-
environment={"HASH_ALGORITHM": "SHA256"}
|
|
540
|
+
environment={"HASH_ALGORITHM": "SHA256"},
|
|
526
541
|
),
|
|
527
542
|
ToolPersonality(
|
|
528
543
|
name="daniel_b",
|
|
@@ -530,7 +545,7 @@ personalities = [
|
|
|
530
545
|
description="djb - qmail & Curve25519 creator",
|
|
531
546
|
philosophy="Security through simplicity.",
|
|
532
547
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols"] + UNIX_TOOLS,
|
|
533
|
-
environment={"QMAIL_HOME": "/var/qmail"}
|
|
548
|
+
environment={"QMAIL_HOME": "/var/qmail"},
|
|
534
549
|
),
|
|
535
550
|
ToolPersonality(
|
|
536
551
|
name="moxie",
|
|
@@ -538,7 +553,7 @@ personalities = [
|
|
|
538
553
|
description="Signal creator - privacy for everyone",
|
|
539
554
|
philosophy="Making private communication simple.",
|
|
540
555
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "rules"],
|
|
541
|
-
environment={"SIGNAL_PROTOCOL": "true"}
|
|
556
|
+
environment={"SIGNAL_PROTOCOL": "true"},
|
|
542
557
|
),
|
|
543
558
|
ToolPersonality(
|
|
544
559
|
name="theo",
|
|
@@ -546,7 +561,7 @@ personalities = [
|
|
|
546
561
|
description="OpenBSD creator - security by default",
|
|
547
562
|
philosophy="Shut up and hack.",
|
|
548
563
|
tools=ESSENTIAL_TOOLS + ["critic", "diff"] + UNIX_TOOLS,
|
|
549
|
-
environment={"OPENBSD_VERSION": "7.3"}
|
|
564
|
+
environment={"OPENBSD_VERSION": "7.3"},
|
|
550
565
|
),
|
|
551
566
|
ToolPersonality(
|
|
552
567
|
name="dan_kaminsky",
|
|
@@ -554,7 +569,7 @@ personalities = [
|
|
|
554
569
|
description="DNS security researcher",
|
|
555
570
|
philosophy="Break it to make it better.",
|
|
556
571
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "process"] + UNIX_TOOLS,
|
|
557
|
-
environment={"DNSSEC": "true"}
|
|
572
|
+
environment={"DNSSEC": "true"},
|
|
558
573
|
),
|
|
559
574
|
ToolPersonality(
|
|
560
575
|
name="katie",
|
|
@@ -562,7 +577,7 @@ personalities = [
|
|
|
562
577
|
description="Bug bounty pioneer",
|
|
563
578
|
philosophy="Hackers are a resource, not a threat.",
|
|
564
579
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "todo"],
|
|
565
|
-
environment={"BUG_BOUNTY": "enabled"}
|
|
580
|
+
environment={"BUG_BOUNTY": "enabled"},
|
|
566
581
|
),
|
|
567
582
|
ToolPersonality(
|
|
568
583
|
name="matt_blaze",
|
|
@@ -570,9 +585,8 @@ personalities = [
|
|
|
570
585
|
description="Cryptographer & security researcher",
|
|
571
586
|
philosophy="Crypto is hard to get right.",
|
|
572
587
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"],
|
|
573
|
-
environment={"CRYPTO_LIBRARY": "nacl"}
|
|
588
|
+
environment={"CRYPTO_LIBRARY": "nacl"},
|
|
574
589
|
),
|
|
575
|
-
|
|
576
590
|
# 61-70: Gaming & Graphics
|
|
577
591
|
ToolPersonality(
|
|
578
592
|
name="john_carmack",
|
|
@@ -580,7 +594,7 @@ personalities = [
|
|
|
580
594
|
description="id Software - Doom & Quake creator",
|
|
581
595
|
philosophy="Focus is a matter of deciding what things you're not going to do.",
|
|
582
596
|
tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process"] + BUILD_TOOLS,
|
|
583
|
-
environment={"OPENGL_VERSION": "4.6"}
|
|
597
|
+
environment={"OPENGL_VERSION": "4.6"},
|
|
584
598
|
),
|
|
585
599
|
ToolPersonality(
|
|
586
600
|
name="sid",
|
|
@@ -588,7 +602,7 @@ personalities = [
|
|
|
588
602
|
description="Civilization creator",
|
|
589
603
|
philosophy="A game is a series of interesting choices.",
|
|
590
604
|
tools=ESSENTIAL_TOOLS + ["todo", "watch", "process"],
|
|
591
|
-
environment={"GAME_MODE": "debug"}
|
|
605
|
+
environment={"GAME_MODE": "debug"},
|
|
592
606
|
),
|
|
593
607
|
ToolPersonality(
|
|
594
608
|
name="shigeru",
|
|
@@ -596,7 +610,7 @@ personalities = [
|
|
|
596
610
|
description="Mario & Zelda creator",
|
|
597
611
|
philosophy="A delayed game is eventually good, but a rushed game is forever bad.",
|
|
598
612
|
tools=ESSENTIAL_TOOLS + ["todo", "watch", "critic"],
|
|
599
|
-
environment={"NINTENDO_SDK": "true"}
|
|
613
|
+
environment={"NINTENDO_SDK": "true"},
|
|
600
614
|
),
|
|
601
615
|
ToolPersonality(
|
|
602
616
|
name="gabe",
|
|
@@ -604,7 +618,7 @@ personalities = [
|
|
|
604
618
|
description="Valve founder - Half-Life & Steam",
|
|
605
619
|
philosophy="The easiest way to stop piracy is not by putting antipiracy technology to work. It's by giving those people a service that's better than what they're receiving from the pirates.",
|
|
606
620
|
tools=ESSENTIAL_TOOLS + ["process", "watch", "todo"] + BUILD_TOOLS,
|
|
607
|
-
environment={"STEAM_RUNTIME": "1"}
|
|
621
|
+
environment={"STEAM_RUNTIME": "1"},
|
|
608
622
|
),
|
|
609
623
|
ToolPersonality(
|
|
610
624
|
name="markus",
|
|
@@ -612,7 +626,7 @@ personalities = [
|
|
|
612
626
|
description="Minecraft creator - Notch",
|
|
613
627
|
philosophy="Just make games for yourself and try to have fun.",
|
|
614
628
|
tools=ESSENTIAL_TOOLS + ["watch", "todo", "process"],
|
|
615
|
-
environment={"LWJGL_VERSION": "3.3"}
|
|
629
|
+
environment={"LWJGL_VERSION": "3.3"},
|
|
616
630
|
),
|
|
617
631
|
ToolPersonality(
|
|
618
632
|
name="jonathan",
|
|
@@ -620,7 +634,7 @@ personalities = [
|
|
|
620
634
|
description="Braid & The Witness creator",
|
|
621
635
|
philosophy="Optimize for deep, meaningful experiences.",
|
|
622
636
|
tools=ESSENTIAL_TOOLS + ["symbols", "critic", "watch"],
|
|
623
|
-
environment={"JAI_COMPILER": "beta"}
|
|
637
|
+
environment={"JAI_COMPILER": "beta"},
|
|
624
638
|
),
|
|
625
639
|
ToolPersonality(
|
|
626
640
|
name="casey",
|
|
@@ -628,7 +642,7 @@ personalities = [
|
|
|
628
642
|
description="Handmade Hero creator",
|
|
629
643
|
philosophy="Performance matters. Write code from scratch.",
|
|
630
644
|
tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process", "critic"],
|
|
631
|
-
environment={"HANDMADE": "true"}
|
|
645
|
+
environment={"HANDMADE": "true"},
|
|
632
646
|
),
|
|
633
647
|
ToolPersonality(
|
|
634
648
|
name="tim_sweeney",
|
|
@@ -636,7 +650,7 @@ personalities = [
|
|
|
636
650
|
description="Epic Games founder - Unreal Engine",
|
|
637
651
|
philosophy="The engine is the game.",
|
|
638
652
|
tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process"] + BUILD_TOOLS,
|
|
639
|
-
environment={"UNREAL_ENGINE": "5"}
|
|
653
|
+
environment={"UNREAL_ENGINE": "5"},
|
|
640
654
|
),
|
|
641
655
|
ToolPersonality(
|
|
642
656
|
name="hideo",
|
|
@@ -644,7 +658,7 @@ personalities = [
|
|
|
644
658
|
description="Metal Gear creator",
|
|
645
659
|
philosophy="70% of my body is made of movies.",
|
|
646
660
|
tools=ESSENTIAL_TOOLS + ["todo", "watch", "critic"],
|
|
647
|
-
environment={"KOJIMA_PRODUCTIONS": "true"}
|
|
661
|
+
environment={"KOJIMA_PRODUCTIONS": "true"},
|
|
648
662
|
),
|
|
649
663
|
ToolPersonality(
|
|
650
664
|
name="will",
|
|
@@ -652,9 +666,8 @@ personalities = [
|
|
|
652
666
|
description="SimCity & The Sims creator",
|
|
653
667
|
philosophy="Games are a form of communication.",
|
|
654
668
|
tools=ESSENTIAL_TOOLS + ["todo", "watch", "process"],
|
|
655
|
-
environment={"SIMULATION_MODE": "debug"}
|
|
669
|
+
environment={"SIMULATION_MODE": "debug"},
|
|
656
670
|
),
|
|
657
|
-
|
|
658
671
|
# 71-80: Open Source Leaders
|
|
659
672
|
ToolPersonality(
|
|
660
673
|
name="miguel",
|
|
@@ -662,7 +675,7 @@ personalities = [
|
|
|
662
675
|
description="GNOME & Mono creator",
|
|
663
676
|
philosophy="Open source is about standing on the shoulders of giants.",
|
|
664
677
|
tools=ESSENTIAL_TOOLS + ["symbols", "todo"] + BUILD_TOOLS,
|
|
665
|
-
environment={"MONO_VERSION": "6.12"}
|
|
678
|
+
environment={"MONO_VERSION": "6.12"},
|
|
666
679
|
),
|
|
667
680
|
ToolPersonality(
|
|
668
681
|
name="nat",
|
|
@@ -670,7 +683,7 @@ personalities = [
|
|
|
670
683
|
description="GitHub CEO & AI entrepreneur",
|
|
671
684
|
philosophy="Developers are the builders of the digital world.",
|
|
672
685
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["git_search", "todo"],
|
|
673
|
-
environment={"GITHUB_TOKEN": "ghp_..."}
|
|
686
|
+
environment={"GITHUB_TOKEN": "ghp_..."},
|
|
674
687
|
),
|
|
675
688
|
ToolPersonality(
|
|
676
689
|
name="patrick",
|
|
@@ -678,7 +691,7 @@ personalities = [
|
|
|
678
691
|
description="Slackware creator",
|
|
679
692
|
philosophy="Keep it simple, keep it stable.",
|
|
680
693
|
tools=ESSENTIAL_TOOLS + UNIX_TOOLS,
|
|
681
|
-
environment={"SLACKWARE_VERSION": "15.0"}
|
|
694
|
+
environment={"SLACKWARE_VERSION": "15.0"},
|
|
682
695
|
),
|
|
683
696
|
ToolPersonality(
|
|
684
697
|
name="ian",
|
|
@@ -686,7 +699,7 @@ personalities = [
|
|
|
686
699
|
description="Debian founder",
|
|
687
700
|
philosophy="Free software, free society.",
|
|
688
701
|
tools=ESSENTIAL_TOOLS + UNIX_TOOLS + ["todo"],
|
|
689
|
-
environment={"DEBIAN_FRONTEND": "noninteractive"}
|
|
702
|
+
environment={"DEBIAN_FRONTEND": "noninteractive"},
|
|
690
703
|
),
|
|
691
704
|
ToolPersonality(
|
|
692
705
|
name="mark_shuttleworth",
|
|
@@ -694,7 +707,7 @@ personalities = [
|
|
|
694
707
|
description="Ubuntu founder",
|
|
695
708
|
philosophy="Linux for human beings.",
|
|
696
709
|
tools=ESSENTIAL_TOOLS + ["todo", "rules"] + BUILD_TOOLS,
|
|
697
|
-
environment={"UBUNTU_VERSION": "22.04"}
|
|
710
|
+
environment={"UBUNTU_VERSION": "22.04"},
|
|
698
711
|
),
|
|
699
712
|
ToolPersonality(
|
|
700
713
|
name="lennart",
|
|
@@ -702,7 +715,7 @@ personalities = [
|
|
|
702
715
|
description="systemd creator",
|
|
703
716
|
philosophy="Do one thing and do it well... or do everything.",
|
|
704
717
|
tools=ESSENTIAL_TOOLS + ["process", "watch"] + UNIX_TOOLS,
|
|
705
|
-
environment={"SYSTEMD_VERSION": "253"}
|
|
718
|
+
environment={"SYSTEMD_VERSION": "253"},
|
|
706
719
|
),
|
|
707
720
|
ToolPersonality(
|
|
708
721
|
name="bram",
|
|
@@ -710,7 +723,7 @@ personalities = [
|
|
|
710
723
|
description="Vim creator",
|
|
711
724
|
philosophy="The best way to avoid RSI is to not type so much.",
|
|
712
725
|
tools=ESSENTIAL_TOOLS + ["neovim_edit", "neovim_command", "neovim_session"],
|
|
713
|
-
environment={"VIM_VERSION": "9.0"}
|
|
726
|
+
environment={"VIM_VERSION": "9.0"},
|
|
714
727
|
),
|
|
715
728
|
ToolPersonality(
|
|
716
729
|
name="daniel_r",
|
|
@@ -718,7 +731,7 @@ personalities = [
|
|
|
718
731
|
description="Gentoo founder",
|
|
719
732
|
philosophy="Your system, your way.",
|
|
720
733
|
tools=ESSENTIAL_TOOLS + BUILD_TOOLS + UNIX_TOOLS,
|
|
721
|
-
environment={"GENTOO_PROFILE": "default/linux/amd64/17.1"}
|
|
734
|
+
environment={"GENTOO_PROFILE": "default/linux/amd64/17.1"},
|
|
722
735
|
),
|
|
723
736
|
ToolPersonality(
|
|
724
737
|
name="judd",
|
|
@@ -726,7 +739,7 @@ personalities = [
|
|
|
726
739
|
description="Arch Linux creator",
|
|
727
740
|
philosophy="Keep it simple.",
|
|
728
741
|
tools=ESSENTIAL_TOOLS + BUILD_TOOLS + UNIX_TOOLS,
|
|
729
|
-
environment={"ARCH_VERSION": "rolling"}
|
|
742
|
+
environment={"ARCH_VERSION": "rolling"},
|
|
730
743
|
),
|
|
731
744
|
ToolPersonality(
|
|
732
745
|
name="fabrice",
|
|
@@ -734,9 +747,8 @@ personalities = [
|
|
|
734
747
|
description="QEMU & FFmpeg creator",
|
|
735
748
|
philosophy="Small, fast, and elegant code.",
|
|
736
749
|
tools=ESSENTIAL_TOOLS + ["symbols", "process"] + BUILD_TOOLS,
|
|
737
|
-
environment={"QEMU_VERSION": "8.0"}
|
|
750
|
+
environment={"QEMU_VERSION": "8.0"},
|
|
738
751
|
),
|
|
739
|
-
|
|
740
752
|
# 81-90: Modern Innovators
|
|
741
753
|
ToolPersonality(
|
|
742
754
|
name="vitalik",
|
|
@@ -744,7 +756,7 @@ personalities = [
|
|
|
744
756
|
description="Ethereum creator",
|
|
745
757
|
philosophy="Decentralization matters.",
|
|
746
758
|
tools=ESSENTIAL_TOOLS + ["symbols", "critic", "todo"] + AI_TOOLS,
|
|
747
|
-
environment={"ETH_NETWORK": "mainnet"}
|
|
759
|
+
environment={"ETH_NETWORK": "mainnet"},
|
|
748
760
|
),
|
|
749
761
|
ToolPersonality(
|
|
750
762
|
name="satoshi",
|
|
@@ -752,7 +764,7 @@ personalities = [
|
|
|
752
764
|
description="Bitcoin creator",
|
|
753
765
|
philosophy="Trust in mathematics.",
|
|
754
766
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols"] + UNIX_TOOLS,
|
|
755
|
-
environment={"BITCOIN_NETWORK": "mainnet"}
|
|
767
|
+
environment={"BITCOIN_NETWORK": "mainnet"},
|
|
756
768
|
),
|
|
757
769
|
ToolPersonality(
|
|
758
770
|
name="chris_lattner",
|
|
@@ -760,7 +772,7 @@ personalities = [
|
|
|
760
772
|
description="LLVM & Swift creator",
|
|
761
773
|
philosophy="Compiler infrastructure should be modular.",
|
|
762
774
|
tools=ESSENTIAL_TOOLS + ["symbols", "multi_edit", "critic"] + BUILD_TOOLS,
|
|
763
|
-
environment={"LLVM_VERSION": "16"}
|
|
775
|
+
environment={"LLVM_VERSION": "16"},
|
|
764
776
|
),
|
|
765
777
|
ToolPersonality(
|
|
766
778
|
name="joe",
|
|
@@ -768,7 +780,7 @@ personalities = [
|
|
|
768
780
|
description="Erlang creator",
|
|
769
781
|
philosophy="Let it crash.",
|
|
770
782
|
tools=ESSENTIAL_TOOLS + ["process", "watch", "critic"],
|
|
771
|
-
environment={"ERL_VERSION": "OTP-26"}
|
|
783
|
+
environment={"ERL_VERSION": "OTP-26"},
|
|
772
784
|
),
|
|
773
785
|
ToolPersonality(
|
|
774
786
|
name="jose",
|
|
@@ -776,7 +788,7 @@ personalities = [
|
|
|
776
788
|
description="Elixir creator",
|
|
777
789
|
philosophy="Productive. Reliable. Fast.",
|
|
778
790
|
tools=ESSENTIAL_TOOLS + ["watch", "process", "todo"],
|
|
779
|
-
environment={"ELIXIR_VERSION": "1.15"}
|
|
791
|
+
environment={"ELIXIR_VERSION": "1.15"},
|
|
780
792
|
),
|
|
781
793
|
ToolPersonality(
|
|
782
794
|
name="sebastian",
|
|
@@ -784,7 +796,7 @@ personalities = [
|
|
|
784
796
|
description="Udacity founder & self-driving car pioneer",
|
|
785
797
|
philosophy="Education should be accessible to all.",
|
|
786
798
|
tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch"],
|
|
787
|
-
environment={"ROS_VERSION": "noetic"}
|
|
799
|
+
environment={"ROS_VERSION": "noetic"},
|
|
788
800
|
),
|
|
789
801
|
ToolPersonality(
|
|
790
802
|
name="palmer",
|
|
@@ -792,7 +804,7 @@ personalities = [
|
|
|
792
804
|
description="Oculus founder",
|
|
793
805
|
philosophy="VR is the final medium.",
|
|
794
806
|
tools=ESSENTIAL_TOOLS + ["watch", "process"] + BUILD_TOOLS,
|
|
795
|
-
environment={"UNITY_VERSION": "2023.1"}
|
|
807
|
+
environment={"UNITY_VERSION": "2023.1"},
|
|
796
808
|
),
|
|
797
809
|
ToolPersonality(
|
|
798
810
|
name="dylan",
|
|
@@ -800,7 +812,7 @@ personalities = [
|
|
|
800
812
|
description="Figma co-founder",
|
|
801
813
|
philosophy="Design tools should be collaborative.",
|
|
802
814
|
tools=ESSENTIAL_TOOLS + ["watch", "todo", "rules"],
|
|
803
|
-
environment={"FIGMA_API": "enabled"}
|
|
815
|
+
environment={"FIGMA_API": "enabled"},
|
|
804
816
|
),
|
|
805
817
|
ToolPersonality(
|
|
806
818
|
name="guillermo",
|
|
@@ -808,7 +820,7 @@ personalities = [
|
|
|
808
820
|
description="Vercel founder & Next.js creator",
|
|
809
821
|
philosophy="Make the Web. Faster.",
|
|
810
822
|
tools=ESSENTIAL_TOOLS + ["npx", "watch", "rules"] + BUILD_TOOLS,
|
|
811
|
-
environment={"NEXT_VERSION": "14"}
|
|
823
|
+
environment={"NEXT_VERSION": "14"},
|
|
812
824
|
),
|
|
813
825
|
ToolPersonality(
|
|
814
826
|
name="tom",
|
|
@@ -816,19 +828,35 @@ personalities = [
|
|
|
816
828
|
description="GitHub co-founder & TOML creator",
|
|
817
829
|
philosophy="Optimize for happiness.",
|
|
818
830
|
tools=ESSENTIAL_TOOLS + ["git_search", "todo", "rules"],
|
|
819
|
-
environment={"GITHUB_ACTIONS": "true"}
|
|
831
|
+
environment={"GITHUB_ACTIONS": "true"},
|
|
820
832
|
),
|
|
821
|
-
|
|
822
833
|
# 91-100: Special Configurations
|
|
823
834
|
ToolPersonality(
|
|
824
835
|
name="fullstack",
|
|
825
836
|
programmer="Full Stack Developer",
|
|
826
837
|
description="Every tool for every job",
|
|
827
838
|
philosophy="Jack of all trades, master of... well, all trades.",
|
|
828
|
-
tools=list(
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
839
|
+
tools=list(
|
|
840
|
+
set(
|
|
841
|
+
ESSENTIAL_TOOLS
|
|
842
|
+
+ AI_TOOLS
|
|
843
|
+
+ SEARCH_TOOLS
|
|
844
|
+
+ DATABASE_TOOLS
|
|
845
|
+
+ BUILD_TOOLS
|
|
846
|
+
+ UNIX_TOOLS
|
|
847
|
+
+ VECTOR_TOOLS
|
|
848
|
+
+ [
|
|
849
|
+
"todo",
|
|
850
|
+
"rules",
|
|
851
|
+
"watch",
|
|
852
|
+
"jupyter",
|
|
853
|
+
"neovim_edit",
|
|
854
|
+
"mcp",
|
|
855
|
+
"consensus",
|
|
856
|
+
]
|
|
857
|
+
)
|
|
858
|
+
),
|
|
859
|
+
environment={"ALL_TOOLS": "enabled"},
|
|
832
860
|
),
|
|
833
861
|
ToolPersonality(
|
|
834
862
|
name="minimal",
|
|
@@ -836,15 +864,18 @@ personalities = [
|
|
|
836
864
|
description="Just the essentials",
|
|
837
865
|
philosophy="Less is more.",
|
|
838
866
|
tools=ESSENTIAL_TOOLS,
|
|
839
|
-
environment={"MINIMAL_MODE": "true"}
|
|
867
|
+
environment={"MINIMAL_MODE": "true"},
|
|
840
868
|
),
|
|
841
869
|
ToolPersonality(
|
|
842
870
|
name="data_scientist",
|
|
843
871
|
programmer="Data Scientist",
|
|
844
872
|
description="Analyze all the things",
|
|
845
873
|
philosophy="In God we trust. All others must bring data.",
|
|
846
|
-
tools=ESSENTIAL_TOOLS
|
|
847
|
-
|
|
874
|
+
tools=ESSENTIAL_TOOLS
|
|
875
|
+
+ ["jupyter", "sql_query", "stats"]
|
|
876
|
+
+ VECTOR_TOOLS
|
|
877
|
+
+ AI_TOOLS,
|
|
878
|
+
environment={"JUPYTER_THEME": "dark"},
|
|
848
879
|
),
|
|
849
880
|
ToolPersonality(
|
|
850
881
|
name="devops",
|
|
@@ -852,7 +883,7 @@ personalities = [
|
|
|
852
883
|
description="Automate everything",
|
|
853
884
|
philosophy="You build it, you run it.",
|
|
854
885
|
tools=ESSENTIAL_TOOLS + BUILD_TOOLS + ["process", "watch", "todo"] + UNIX_TOOLS,
|
|
855
|
-
environment={"CI_CD": "enabled"}
|
|
886
|
+
environment={"CI_CD": "enabled"},
|
|
856
887
|
),
|
|
857
888
|
ToolPersonality(
|
|
858
889
|
name="security",
|
|
@@ -860,7 +891,7 @@ personalities = [
|
|
|
860
891
|
description="Break it to secure it",
|
|
861
892
|
philosophy="The only secure system is one that's powered off.",
|
|
862
893
|
tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"] + UNIX_TOOLS,
|
|
863
|
-
environment={"SECURITY_MODE": "paranoid"}
|
|
894
|
+
environment={"SECURITY_MODE": "paranoid"},
|
|
864
895
|
),
|
|
865
896
|
ToolPersonality(
|
|
866
897
|
name="academic",
|
|
@@ -868,15 +899,18 @@ personalities = [
|
|
|
868
899
|
description="Publish or perish",
|
|
869
900
|
philosophy="Standing on the shoulders of giants.",
|
|
870
901
|
tools=ESSENTIAL_TOOLS + ["jupyter", "todo", "critic"] + AI_TOOLS + SEARCH_TOOLS,
|
|
871
|
-
environment={"LATEX_ENGINE": "xelatex"}
|
|
902
|
+
environment={"LATEX_ENGINE": "xelatex"},
|
|
872
903
|
),
|
|
873
904
|
ToolPersonality(
|
|
874
905
|
name="startup",
|
|
875
906
|
programmer="Startup Founder",
|
|
876
907
|
description="Move fast and fix things",
|
|
877
908
|
philosophy="Done is better than perfect.",
|
|
878
|
-
tools=ESSENTIAL_TOOLS
|
|
879
|
-
|
|
909
|
+
tools=ESSENTIAL_TOOLS
|
|
910
|
+
+ ["todo", "agent", "consensus"]
|
|
911
|
+
+ BUILD_TOOLS
|
|
912
|
+
+ DATABASE_TOOLS,
|
|
913
|
+
environment={"STARTUP_MODE": "hustle"},
|
|
880
914
|
),
|
|
881
915
|
ToolPersonality(
|
|
882
916
|
name="enterprise",
|
|
@@ -884,7 +918,7 @@ personalities = [
|
|
|
884
918
|
description="Process and compliance",
|
|
885
919
|
philosophy="Nobody ever got fired for buying IBM.",
|
|
886
920
|
tools=ESSENTIAL_TOOLS + ["todo", "critic", "rules", "stats"] + DATABASE_TOOLS,
|
|
887
|
-
environment={"COMPLIANCE": "SOC2"}
|
|
921
|
+
environment={"COMPLIANCE": "SOC2"},
|
|
888
922
|
),
|
|
889
923
|
ToolPersonality(
|
|
890
924
|
name="creative",
|
|
@@ -892,19 +926,32 @@ personalities = [
|
|
|
892
926
|
description="Code as art",
|
|
893
927
|
philosophy="Programming is the art of the possible.",
|
|
894
928
|
tools=ESSENTIAL_TOOLS + ["watch", "jupyter", "todo"] + AI_TOOLS,
|
|
895
|
-
environment={"P5_MODE": "global"}
|
|
929
|
+
environment={"P5_MODE": "global"},
|
|
896
930
|
),
|
|
897
931
|
ToolPersonality(
|
|
898
932
|
name="hanzo",
|
|
899
933
|
programmer="Hanzo AI Default",
|
|
900
934
|
description="Balanced productivity and quality",
|
|
901
935
|
philosophy="The Zen of Model Context Protocol.",
|
|
902
|
-
tools=ESSENTIAL_TOOLS
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
936
|
+
tools=ESSENTIAL_TOOLS
|
|
937
|
+
+ [
|
|
938
|
+
"agent",
|
|
939
|
+
"consensus",
|
|
940
|
+
"critic",
|
|
941
|
+
"todo",
|
|
942
|
+
"rules",
|
|
943
|
+
"symbols",
|
|
944
|
+
"search",
|
|
945
|
+
"git_search",
|
|
946
|
+
"watch",
|
|
947
|
+
"jupyter",
|
|
948
|
+
]
|
|
949
|
+
+ BUILD_TOOLS,
|
|
950
|
+
environment={"HANZO_MODE": "zen"},
|
|
951
|
+
),
|
|
906
952
|
]
|
|
907
953
|
|
|
954
|
+
|
|
908
955
|
# Register all personalities
|
|
909
956
|
def register_default_personalities():
|
|
910
957
|
"""Register all default tool personalities."""
|
|
@@ -916,21 +963,22 @@ def register_default_personalities():
|
|
|
916
963
|
def ensure_agent_enabled(personality: ToolPersonality) -> ToolPersonality:
|
|
917
964
|
"""Ensure agent tool is enabled if API keys are present."""
|
|
918
965
|
api_keys_present = any(
|
|
919
|
-
os.environ.get(key)
|
|
966
|
+
os.environ.get(key)
|
|
967
|
+
for key in [
|
|
920
968
|
"OPENAI_API_KEY",
|
|
921
|
-
"ANTHROPIC_API_KEY",
|
|
969
|
+
"ANTHROPIC_API_KEY",
|
|
922
970
|
"GOOGLE_API_KEY",
|
|
923
971
|
"HANZO_API_KEY",
|
|
924
972
|
"GROQ_API_KEY",
|
|
925
973
|
"TOGETHER_API_KEY",
|
|
926
974
|
"MISTRAL_API_KEY",
|
|
927
|
-
"PERPLEXITY_API_KEY"
|
|
975
|
+
"PERPLEXITY_API_KEY",
|
|
928
976
|
]
|
|
929
977
|
)
|
|
930
|
-
|
|
978
|
+
|
|
931
979
|
if api_keys_present and "agent" not in personality.tools:
|
|
932
980
|
personality.tools.append("agent")
|
|
933
981
|
if "consensus" not in personality.tools:
|
|
934
982
|
personality.tools.append("consensus")
|
|
935
|
-
|
|
983
|
+
|
|
936
984
|
return personality
|