tylor-mcp 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/.aws-setup.sh +25 -0
- package/.claude-plugin/plugin.json +22 -0
- package/.mcp.json +12 -0
- package/AGENTS.md +93 -0
- package/CLAUDE.md +99 -0
- package/CLAUDE_PLATFORM_AWS_SETUP.md +105 -0
- package/LICENSE +21 -0
- package/README.md +146 -0
- package/assets/tylor_logo.png +0 -0
- package/assets/tylor_threads_concept.png +0 -0
- package/bin/tylor.js +23 -0
- package/hooks/kill-thread-trigger.sh +7 -0
- package/hooks/post-tool-use-code-index.sh +7 -0
- package/hooks/session-checkpoint.sh +7 -0
- package/hooks/session-start.sh +7 -0
- package/install.py +401 -0
- package/install.sh +260 -0
- package/package.json +24 -0
- package/pytest.ini +2 -0
- package/registry.json +26 -0
- package/server/.env.example +24 -0
- package/server/__init__.py +0 -0
- package/server/config.py +89 -0
- package/server/main.py +93 -0
- package/server/personas/analyst.md +15 -0
- package/server/personas/ceo.md +14 -0
- package/server/personas/code_agent.md +15 -0
- package/server/personas/cto.md +14 -0
- package/server/provision.py +260 -0
- package/server/provision_opensearch.py +154 -0
- package/server/requirements.txt +26 -0
- package/server/storage/__init__.py +0 -0
- package/server/storage/dynamo.py +399 -0
- package/server/storage/json_store.py +359 -0
- package/server/storage/opensearch.py +194 -0
- package/server/storage/s3.py +96 -0
- package/server/storage/tests/__init__.py +0 -0
- package/server/storage/tests/test_dynamo.py +452 -0
- package/server/storage/tests/test_json_store.py +226 -0
- package/server/storage/tests/test_opensearch.py +270 -0
- package/server/storage/tests/test_s3.py +125 -0
- package/server/tests/__init__.py +0 -0
- package/server/tests/test_install.py +606 -0
- package/server/tests/test_isolation.py +90 -0
- package/server/tests/test_ui_server.py +385 -0
- package/server/tests/test_ui_shader_background.py +52 -0
- package/server/tests/test_ui_story_6_3.py +105 -0
- package/server/tools/__init__.py +0 -0
- package/server/tools/_mcp.py +4 -0
- package/server/tools/agents.py +160 -0
- package/server/tools/ecc/__init__.py +1 -0
- package/server/tools/ecc/data.py +35 -0
- package/server/tools/ecc/diagrams.py +23 -0
- package/server/tools/ecc/pipeline.py +24 -0
- package/server/tools/ecc/presentation.py +24 -0
- package/server/tools/ecc/web.py +23 -0
- package/server/tools/executor.py +880 -0
- package/server/tools/harness.py +330 -0
- package/server/tools/help.py +162 -0
- package/server/tools/hooks.py +357 -0
- package/server/tools/personas.py +110 -0
- package/server/tools/registry.py +195 -0
- package/server/tools/router.py +117 -0
- package/server/tools/skill_installer.py +230 -0
- package/server/tools/summarizer.py +168 -0
- package/server/tools/tests/__init__.py +0 -0
- package/server/tools/tests/test_agents.py +246 -0
- package/server/tools/tests/test_code_index.py +108 -0
- package/server/tools/tests/test_ecc_tools.py +51 -0
- package/server/tools/tests/test_executor.py +584 -0
- package/server/tools/tests/test_help_agent101.py +149 -0
- package/server/tools/tests/test_hooks.py +124 -0
- package/server/tools/tests/test_kill_thread.py +125 -0
- package/server/tools/tests/test_new_thread_list_threads.py +293 -0
- package/server/tools/tests/test_personas.py +52 -0
- package/server/tools/tests/test_recall_memory.py +55 -0
- package/server/tools/tests/test_registry_client.py +308 -0
- package/server/tools/tests/test_router.py +263 -0
- package/server/tools/tests/test_skill_installer.py +174 -0
- package/server/tools/tests/test_switch_thread.py +163 -0
- package/server/tools/tests/test_thread_command_skills.py +54 -0
- package/server/tools/tests/test_thread_resolver.py +165 -0
- package/server/tools/tests/test_tier1_schema.py +296 -0
- package/server/tools/thread_resolver.py +75 -0
- package/server/tools/tylor.py +374 -0
- package/server/tools/ui.py +38 -0
- package/server/ui_server.py +292 -0
- package/server/validate.py +237 -0
- package/skills/add-skill/SKILL.md +37 -0
- package/skills/afk-status/SKILL.md +20 -0
- package/skills/bmad/SKILL.md +14 -0
- package/skills/help-agent101/SKILL.md +48 -0
- package/skills/kill-thread/SKILL.md +35 -0
- package/skills/list-threads/SKILL.md +35 -0
- package/skills/new-thread/SKILL.md +35 -0
- package/skills/recall/SKILL.md +39 -0
- package/skills/run/SKILL.md +33 -0
- package/skills/set-sandbox/SKILL.md +38 -0
- package/skills/switch-thread/SKILL.md +38 -0
- package/ui/claude-logo.png +0 -0
- package/ui/index.html +1314 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: list-threads
|
|
3
|
+
description: List agent101 threads by calling list_threads and formatting active, killed, and message_count details.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /list-threads
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `/list-threads` or asks to show Tylor threads.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. Call `list_threads()`.
|
|
13
|
+
2. Show every returned thread in a compact table:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
Name | Thread ID | Status | message_count | Last activity
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
3. Mark `Status: active` rows as Active in the display.
|
|
20
|
+
4. If no threads exist, say no threads were found and suggest `/new-thread`.
|
|
21
|
+
|
|
22
|
+
## Error Handling
|
|
23
|
+
|
|
24
|
+
Use this recovery format exactly.
|
|
25
|
+
|
|
26
|
+
If the tool fails, respond with:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
Failed operation: list_threads
|
|
30
|
+
Reason: <tool error>
|
|
31
|
+
Recovery steps:
|
|
32
|
+
- Check that the agent101 MCP server is connected.
|
|
33
|
+
- Verify storage configuration in ~/.agent101/config.json or server/.env.
|
|
34
|
+
- Retry after restarting Claude Code if the MCP connection is stale.
|
|
35
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: new-thread
|
|
3
|
+
description: Create a new agent101 thread by prompting for a thread name and calling the new_thread MCP tool.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /new-thread
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `/new-thread` or asks to create a new Tylor thread.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. If the user did not provide a name, prompt for the thread name.
|
|
13
|
+
2. Call `new_thread(name: str)` with that exact thread name.
|
|
14
|
+
3. Show a formatted confirmation:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
Created thread: <name>
|
|
18
|
+
Thread ID: <thread_id>
|
|
19
|
+
Created at: <created_at>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Error Handling
|
|
23
|
+
|
|
24
|
+
Use this recovery format exactly.
|
|
25
|
+
|
|
26
|
+
If the tool fails, respond with:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
Failed operation: new_thread
|
|
30
|
+
Reason: <tool error>
|
|
31
|
+
Recovery steps:
|
|
32
|
+
- Choose a unique thread name.
|
|
33
|
+
- Use 3-64 characters.
|
|
34
|
+
- Use only letters, numbers, spaces, hyphens, and underscores.
|
|
35
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recall
|
|
3
|
+
description: Recall relevant agent101 memory facts by asking for a thread ID and query, then calling recall_memory.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /recall
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `/recall` or asks to search a thread's memory.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. Ask for the thread ID if it was not provided.
|
|
13
|
+
2. Ask for the recall query if it was not provided.
|
|
14
|
+
3. Call `recall_memory(thread_id: str, query: str)`.
|
|
15
|
+
4. Show a formatted confirmation and results:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Recall results for thread: <thread_id>
|
|
19
|
+
Query: <query>
|
|
20
|
+
results:
|
|
21
|
+
- <fact or memory content>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
5. If results are empty, say no matching memory was found.
|
|
25
|
+
|
|
26
|
+
## Error Handling
|
|
27
|
+
|
|
28
|
+
Use this recovery format exactly.
|
|
29
|
+
|
|
30
|
+
If the tool fails, respond with:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
Failed operation: recall_memory
|
|
34
|
+
Reason: <tool error>
|
|
35
|
+
Recovery steps:
|
|
36
|
+
- Verify the thread ID with /list-threads.
|
|
37
|
+
- Use a non-empty query.
|
|
38
|
+
- Check OPENSEARCH_HOST and Bedrock embedding configuration if semantic recall is unavailable.
|
|
39
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: run
|
|
3
|
+
description: Run a task in the active thread using the agent harness. Automatically routes to the right specialist (code agent, CTO, analyst, CEO) and activates BMAD workflows based on thread context. Just describe what you need.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /run
|
|
7
|
+
|
|
8
|
+
Use when the user wants to delegate a task to the right specialist agent for the active thread.
|
|
9
|
+
|
|
10
|
+
## How it works
|
|
11
|
+
|
|
12
|
+
1. Call `detect_thread_team(thread_id=<active_thread_id>, message=<user_message>)` to preview which agents will activate
|
|
13
|
+
2. Call `run_in_thread(thread_id=<active_thread_id>, message=<user_message>, cwd=<project_dir>)` to execute
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/run check if the frontend is polished
|
|
19
|
+
→ Frontend thread → code_agent activates → reads files, checks UI quality
|
|
20
|
+
|
|
21
|
+
/run design the database schema
|
|
22
|
+
→ Backend thread → cto + code_agent activate → architecture guidance
|
|
23
|
+
|
|
24
|
+
/run create a PRD for this feature
|
|
25
|
+
→ PRD thread → ceo + analyst activate + BMAD PRD workflow silently injected
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Notes
|
|
29
|
+
|
|
30
|
+
- The active thread is the one set by SwThread or CT
|
|
31
|
+
- Agents spawn only when the task matches their specialty
|
|
32
|
+
- BMAD workflows activate silently based on thread name
|
|
33
|
+
- Results stream back directly — no separate session needed
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: set-sandbox
|
|
3
|
+
description: Declare or clear sandbox roots used by agent101 AFK execution tools.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /set-sandbox
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `/set-sandbox`, asks to allow a project path for AFK execution, or asks to clear executor sandbox paths.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. Ask for the sandbox path if the user did not provide it.
|
|
13
|
+
2. If the user provided `clear`, call `set_sandbox(path="clear")`.
|
|
14
|
+
3. Otherwise call `set_sandbox(path="<path>")`.
|
|
15
|
+
4. Confirm the returned message and list the current sandbox roots.
|
|
16
|
+
5. If the user tries to run execution before any sandbox is set, call `execute_in_sandbox` only when appropriate and surface its no-sandbox error.
|
|
17
|
+
|
|
18
|
+
## Required Behavior
|
|
19
|
+
|
|
20
|
+
- Paths must be absolute after `~` expansion and must exist on disk.
|
|
21
|
+
- Additional paths append to existing sandbox roots.
|
|
22
|
+
- `clear` empties sandbox roots.
|
|
23
|
+
- `execute_in_sandbox` must refuse execution until roots are configured.
|
|
24
|
+
|
|
25
|
+
## Error Handling
|
|
26
|
+
|
|
27
|
+
Use this recovery format exactly.
|
|
28
|
+
|
|
29
|
+
If sandbox declaration fails, respond with:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
Failed operation: set_sandbox
|
|
33
|
+
Reason: <tool error>
|
|
34
|
+
Recovery steps:
|
|
35
|
+
- Provide an absolute existing path, or use ~/... for a home-relative path.
|
|
36
|
+
- Run /switch-thread first if no active thread is set.
|
|
37
|
+
- Use /set-sandbox clear to remove all sandbox roots.
|
|
38
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: switch-thread
|
|
3
|
+
description: Switch the active agent101 thread after listing available threads and asking the user to select one.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /switch-thread
|
|
7
|
+
|
|
8
|
+
Use when the user invokes `/switch-thread` or asks to switch Tylor threads.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. Call `list_threads()` first.
|
|
13
|
+
2. Show the list with thread name, status, message count, and thread ID.
|
|
14
|
+
3. If the user provided a partial or approximate thread name instead of a thread ID, call `switch_thread_by_name(query: str)`.
|
|
15
|
+
4. If `switch_thread_by_name` returns `status: ambiguous`, show the `Did you mean` choices and wait for the user's selection.
|
|
16
|
+
5. If the user selects from the list by exact thread ID, call `switch_thread(thread_id: str)` with the selected thread ID.
|
|
17
|
+
6. Show a formatted confirmation:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
Switched thread: <thread_id>
|
|
21
|
+
Status: switched
|
|
22
|
+
Switched at: <switched_at>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Error Handling
|
|
26
|
+
|
|
27
|
+
Use this recovery format exactly.
|
|
28
|
+
|
|
29
|
+
If the tool fails, respond with:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
Failed operation: switch_thread
|
|
33
|
+
Reason: <tool error>
|
|
34
|
+
Recovery steps:
|
|
35
|
+
- Run /list-threads to verify available threads.
|
|
36
|
+
- Select an exact thread ID from the displayed list or retry with a more specific fuzzy query.
|
|
37
|
+
- Create a new thread with /new-thread if no suitable thread exists.
|
|
38
|
+
```
|
|
Binary file
|