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.
Files changed (101) hide show
  1. package/.aws-setup.sh +25 -0
  2. package/.claude-plugin/plugin.json +22 -0
  3. package/.mcp.json +12 -0
  4. package/AGENTS.md +93 -0
  5. package/CLAUDE.md +99 -0
  6. package/CLAUDE_PLATFORM_AWS_SETUP.md +105 -0
  7. package/LICENSE +21 -0
  8. package/README.md +146 -0
  9. package/assets/tylor_logo.png +0 -0
  10. package/assets/tylor_threads_concept.png +0 -0
  11. package/bin/tylor.js +23 -0
  12. package/hooks/kill-thread-trigger.sh +7 -0
  13. package/hooks/post-tool-use-code-index.sh +7 -0
  14. package/hooks/session-checkpoint.sh +7 -0
  15. package/hooks/session-start.sh +7 -0
  16. package/install.py +401 -0
  17. package/install.sh +260 -0
  18. package/package.json +24 -0
  19. package/pytest.ini +2 -0
  20. package/registry.json +26 -0
  21. package/server/.env.example +24 -0
  22. package/server/__init__.py +0 -0
  23. package/server/config.py +89 -0
  24. package/server/main.py +93 -0
  25. package/server/personas/analyst.md +15 -0
  26. package/server/personas/ceo.md +14 -0
  27. package/server/personas/code_agent.md +15 -0
  28. package/server/personas/cto.md +14 -0
  29. package/server/provision.py +260 -0
  30. package/server/provision_opensearch.py +154 -0
  31. package/server/requirements.txt +26 -0
  32. package/server/storage/__init__.py +0 -0
  33. package/server/storage/dynamo.py +399 -0
  34. package/server/storage/json_store.py +359 -0
  35. package/server/storage/opensearch.py +194 -0
  36. package/server/storage/s3.py +96 -0
  37. package/server/storage/tests/__init__.py +0 -0
  38. package/server/storage/tests/test_dynamo.py +452 -0
  39. package/server/storage/tests/test_json_store.py +226 -0
  40. package/server/storage/tests/test_opensearch.py +270 -0
  41. package/server/storage/tests/test_s3.py +125 -0
  42. package/server/tests/__init__.py +0 -0
  43. package/server/tests/test_install.py +606 -0
  44. package/server/tests/test_isolation.py +90 -0
  45. package/server/tests/test_ui_server.py +385 -0
  46. package/server/tests/test_ui_shader_background.py +52 -0
  47. package/server/tests/test_ui_story_6_3.py +105 -0
  48. package/server/tools/__init__.py +0 -0
  49. package/server/tools/_mcp.py +4 -0
  50. package/server/tools/agents.py +160 -0
  51. package/server/tools/ecc/__init__.py +1 -0
  52. package/server/tools/ecc/data.py +35 -0
  53. package/server/tools/ecc/diagrams.py +23 -0
  54. package/server/tools/ecc/pipeline.py +24 -0
  55. package/server/tools/ecc/presentation.py +24 -0
  56. package/server/tools/ecc/web.py +23 -0
  57. package/server/tools/executor.py +880 -0
  58. package/server/tools/harness.py +330 -0
  59. package/server/tools/help.py +162 -0
  60. package/server/tools/hooks.py +357 -0
  61. package/server/tools/personas.py +110 -0
  62. package/server/tools/registry.py +195 -0
  63. package/server/tools/router.py +117 -0
  64. package/server/tools/skill_installer.py +230 -0
  65. package/server/tools/summarizer.py +168 -0
  66. package/server/tools/tests/__init__.py +0 -0
  67. package/server/tools/tests/test_agents.py +246 -0
  68. package/server/tools/tests/test_code_index.py +108 -0
  69. package/server/tools/tests/test_ecc_tools.py +51 -0
  70. package/server/tools/tests/test_executor.py +584 -0
  71. package/server/tools/tests/test_help_agent101.py +149 -0
  72. package/server/tools/tests/test_hooks.py +124 -0
  73. package/server/tools/tests/test_kill_thread.py +125 -0
  74. package/server/tools/tests/test_new_thread_list_threads.py +293 -0
  75. package/server/tools/tests/test_personas.py +52 -0
  76. package/server/tools/tests/test_recall_memory.py +55 -0
  77. package/server/tools/tests/test_registry_client.py +308 -0
  78. package/server/tools/tests/test_router.py +263 -0
  79. package/server/tools/tests/test_skill_installer.py +174 -0
  80. package/server/tools/tests/test_switch_thread.py +163 -0
  81. package/server/tools/tests/test_thread_command_skills.py +54 -0
  82. package/server/tools/tests/test_thread_resolver.py +165 -0
  83. package/server/tools/tests/test_tier1_schema.py +296 -0
  84. package/server/tools/thread_resolver.py +75 -0
  85. package/server/tools/tylor.py +374 -0
  86. package/server/tools/ui.py +38 -0
  87. package/server/ui_server.py +292 -0
  88. package/server/validate.py +237 -0
  89. package/skills/add-skill/SKILL.md +37 -0
  90. package/skills/afk-status/SKILL.md +20 -0
  91. package/skills/bmad/SKILL.md +14 -0
  92. package/skills/help-agent101/SKILL.md +48 -0
  93. package/skills/kill-thread/SKILL.md +35 -0
  94. package/skills/list-threads/SKILL.md +35 -0
  95. package/skills/new-thread/SKILL.md +35 -0
  96. package/skills/recall/SKILL.md +39 -0
  97. package/skills/run/SKILL.md +33 -0
  98. package/skills/set-sandbox/SKILL.md +38 -0
  99. package/skills/switch-thread/SKILL.md +38 -0
  100. package/ui/claude-logo.png +0 -0
  101. 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