heya-agent 0.0.1__tar.gz

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. heya_agent-0.0.1/LICENSE +21 -0
  2. heya_agent-0.0.1/PKG-INFO +173 -0
  3. heya_agent-0.0.1/README.md +140 -0
  4. heya_agent-0.0.1/heya/__init__.py +3 -0
  5. heya_agent-0.0.1/heya/agent.py +837 -0
  6. heya_agent-0.0.1/heya/agent_defs.py +63 -0
  7. heya_agent-0.0.1/heya/approval.py +127 -0
  8. heya_agent-0.0.1/heya/attachments.py +58 -0
  9. heya_agent-0.0.1/heya/config.py +762 -0
  10. heya_agent-0.0.1/heya/context.py +129 -0
  11. heya_agent-0.0.1/heya/credentials.py +35 -0
  12. heya_agent-0.0.1/heya/diagnosis.py +342 -0
  13. heya_agent-0.0.1/heya/guidance/banned-words.md +588 -0
  14. heya_agent-0.0.1/heya/guidance/code-review.md +19 -0
  15. heya_agent-0.0.1/heya/guidance/diagnosis.md +101 -0
  16. heya_agent-0.0.1/heya/guidance/environment.md +32 -0
  17. heya_agent-0.0.1/heya/guidance/explore.md +36 -0
  18. heya_agent-0.0.1/heya/guidance/minimal-code.md +68 -0
  19. heya_agent-0.0.1/heya/guidance/remediation.md +69 -0
  20. heya_agent-0.0.1/heya/guidance/reproduction.md +99 -0
  21. heya_agent-0.0.1/heya/guidance/support-reply.md +51 -0
  22. heya_agent-0.0.1/heya/guidance/triage.md +68 -0
  23. heya_agent-0.0.1/heya/guidance/writing-voice.md +38 -0
  24. heya_agent-0.0.1/heya/hooks.py +155 -0
  25. heya_agent-0.0.1/heya/init.py +122 -0
  26. heya_agent-0.0.1/heya/llm_client.py +172 -0
  27. heya_agent-0.0.1/heya/main.py +448 -0
  28. heya_agent-0.0.1/heya/mcp_callbacks.py +143 -0
  29. heya_agent-0.0.1/heya/mcp_oauth.py +195 -0
  30. heya_agent-0.0.1/heya/mcp_runtime.py +681 -0
  31. heya_agent-0.0.1/heya/memory.py +193 -0
  32. heya_agent-0.0.1/heya/plugins.py +114 -0
  33. heya_agent-0.0.1/heya/preflight.py +36 -0
  34. heya_agent-0.0.1/heya/process.py +110 -0
  35. heya_agent-0.0.1/heya/remediation.py +132 -0
  36. heya_agent-0.0.1/heya/reproduction.py +144 -0
  37. heya_agent-0.0.1/heya/review.py +289 -0
  38. heya_agent-0.0.1/heya/sessions.py +94 -0
  39. heya_agent-0.0.1/heya/skills.py +182 -0
  40. heya_agent-0.0.1/heya/subagents.py +127 -0
  41. heya_agent-0.0.1/heya/text.py +61 -0
  42. heya_agent-0.0.1/heya/tomlw.py +39 -0
  43. heya_agent-0.0.1/heya/tools.py +844 -0
  44. heya_agent-0.0.1/heya/tools_browser.py +148 -0
  45. heya_agent-0.0.1/heya/tools_files.py +158 -0
  46. heya_agent-0.0.1/heya/tools_guidance.py +87 -0
  47. heya_agent-0.0.1/heya/tools_mcp.py +33 -0
  48. heya_agent-0.0.1/heya/tools_web.py +209 -0
  49. heya_agent-0.0.1/heya/tools_wp.py +116 -0
  50. heya_agent-0.0.1/heya/triage.py +86 -0
  51. heya_agent-0.0.1/heya/ui.py +222 -0
  52. heya_agent-0.0.1/heya_agent.egg-info/PKG-INFO +173 -0
  53. heya_agent-0.0.1/heya_agent.egg-info/SOURCES.txt +99 -0
  54. heya_agent-0.0.1/heya_agent.egg-info/dependency_links.txt +1 -0
  55. heya_agent-0.0.1/heya_agent.egg-info/entry_points.txt +2 -0
  56. heya_agent-0.0.1/heya_agent.egg-info/requires.txt +15 -0
  57. heya_agent-0.0.1/heya_agent.egg-info/top_level.txt +1 -0
  58. heya_agent-0.0.1/pyproject.toml +48 -0
  59. heya_agent-0.0.1/setup.cfg +4 -0
  60. heya_agent-0.0.1/tests/test_agent.py +1521 -0
  61. heya_agent-0.0.1/tests/test_agent_defs.py +50 -0
  62. heya_agent-0.0.1/tests/test_approval.py +199 -0
  63. heya_agent-0.0.1/tests/test_attachments.py +49 -0
  64. heya_agent-0.0.1/tests/test_config.py +810 -0
  65. heya_agent-0.0.1/tests/test_context.py +103 -0
  66. heya_agent-0.0.1/tests/test_context_integration.py +95 -0
  67. heya_agent-0.0.1/tests/test_credentials.py +38 -0
  68. heya_agent-0.0.1/tests/test_diagnosis.py +176 -0
  69. heya_agent-0.0.1/tests/test_hooks.py +116 -0
  70. heya_agent-0.0.1/tests/test_init.py +131 -0
  71. heya_agent-0.0.1/tests/test_llm_client.py +272 -0
  72. heya_agent-0.0.1/tests/test_main.py +390 -0
  73. heya_agent-0.0.1/tests/test_mcp_callbacks.py +147 -0
  74. heya_agent-0.0.1/tests/test_mcp_integration.py +720 -0
  75. heya_agent-0.0.1/tests/test_mcp_oauth.py +149 -0
  76. heya_agent-0.0.1/tests/test_mcp_runtime.py +710 -0
  77. heya_agent-0.0.1/tests/test_memory.py +147 -0
  78. heya_agent-0.0.1/tests/test_memory_integration.py +52 -0
  79. heya_agent-0.0.1/tests/test_parallel_subagents_integration.py +113 -0
  80. heya_agent-0.0.1/tests/test_plugins.py +86 -0
  81. heya_agent-0.0.1/tests/test_preflight.py +45 -0
  82. heya_agent-0.0.1/tests/test_process.py +75 -0
  83. heya_agent-0.0.1/tests/test_remediation.py +125 -0
  84. heya_agent-0.0.1/tests/test_reproduction.py +104 -0
  85. heya_agent-0.0.1/tests/test_review.py +335 -0
  86. heya_agent-0.0.1/tests/test_review_integration.py +140 -0
  87. heya_agent-0.0.1/tests/test_sessions.py +57 -0
  88. heya_agent-0.0.1/tests/test_skills.py +148 -0
  89. heya_agent-0.0.1/tests/test_smoke.py +42 -0
  90. heya_agent-0.0.1/tests/test_subagent_integration.py +81 -0
  91. heya_agent-0.0.1/tests/test_subagents.py +162 -0
  92. heya_agent-0.0.1/tests/test_text.py +60 -0
  93. heya_agent-0.0.1/tests/test_tools.py +961 -0
  94. heya_agent-0.0.1/tests/test_tools_browser.py +113 -0
  95. heya_agent-0.0.1/tests/test_tools_files.py +236 -0
  96. heya_agent-0.0.1/tests/test_tools_guidance.py +108 -0
  97. heya_agent-0.0.1/tests/test_tools_mcp.py +31 -0
  98. heya_agent-0.0.1/tests/test_tools_web.py +153 -0
  99. heya_agent-0.0.1/tests/test_tools_wp.py +195 -0
  100. heya_agent-0.0.1/tests/test_triage.py +64 -0
  101. heya_agent-0.0.1/tests/test_ui.py +123 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shameem Reza
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,173 @@
1
+ Metadata-Version: 2.4
2
+ Name: heya-agent
3
+ Version: 0.0.1
4
+ Summary: A single, local-first, model-agnostic, tool-using AI agent.
5
+ Author: Shameem Reza
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/shameemreza/heya
8
+ Project-URL: Repository, https://github.com/shameemreza/heya
9
+ Keywords: ai,agent,cli,local-first,woocommerce,wordpress,support
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Topic :: Utilities
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: httpx>=0.27
21
+ Requires-Dist: beautifulsoup4>=4.12
22
+ Requires-Dist: rich>=13
23
+ Requires-Dist: prompt_toolkit>=3
24
+ Provides-Extra: browser
25
+ Requires-Dist: playwright>=1.40; extra == "browser"
26
+ Provides-Extra: mcp
27
+ Requires-Dist: mcp>=1.0; extra == "mcp"
28
+ Provides-Extra: test
29
+ Requires-Dist: pytest>=8; extra == "test"
30
+ Requires-Dist: mcp>=1.0; extra == "test"
31
+ Requires-Dist: trustme>=1.0; extra == "test"
32
+ Dynamic: license-file
33
+
34
+ # Heya
35
+
36
+ Heya is a single, local-first AI agent that runs in your terminal. One model,
37
+ one agent, a toolbox. It reads a request, decides what to do, calls tools, and
38
+ loops until the task is done.
39
+
40
+ The model is a configuration choice, not part of the design. The same loop runs
41
+ against a small local model through Ollama or a frontier cloud model through
42
+ OpenRouter, OpenAI, LM Studio, or anything that speaks the OpenAI chat API. Point
43
+ it at whatever you have. Your prompts and your data stay on your machine.
44
+
45
+ It is built in plain Python with no agent framework, so you can see exactly what
46
+ every part does.
47
+
48
+ ## Why you might use it
49
+
50
+ Most agents are general. Heya is general too, but it carries a real specialty: a
51
+ WordPress and WooCommerce diagnostic assistant that takes a bug from a ticket to
52
+ a proven answer. And because it is model-agnostic and local-first, you run all of
53
+ that on your own models, with no vendor lock-in and nothing leaving your machine.
54
+
55
+ It also hosts the Claude Code ecosystem. Your existing Claude skills, plugins,
56
+ hooks, commands, and sub-agents work in Heya with no re-install, so you bring
57
+ what you already have.
58
+
59
+ ## What it can do
60
+
61
+ - **Diagnostic assistant.** Give Heya a bug report, a ticket, or a log. It
62
+ reproduces the issue on a disposable WordPress Playground (or a dev site),
63
+ finds the root cause, proposes and verifies a fix, and hands you a paste-ready
64
+ triage comment with a verdict, impact, suggested priority, evidence, and a
65
+ one-click repro link. Every stage is evidence-gated: no evidence, no verdict.
66
+ It can also rank a backlog into a pick-list so you know what to work on.
67
+ - **Hosts your Claude ecosystem.** Discovers your `~/.claude` skills and plugins
68
+ and makes them available through a `Skill` tool, runs lifecycle hooks (off by
69
+ default), and turns Claude sub-agent and command definitions into Heya roles
70
+ and commands.
71
+ - **Sub-agents.** Delegate a self-contained task to a fresh, context-isolated
72
+ child agent, or fan several read-only children out in parallel and synthesize
73
+ their reports.
74
+ - **MCP client.** Connect Model Context Protocol servers over stdio or HTTP, with
75
+ OAuth, sampling, elicitation, and logging.
76
+ - **Memory.** Heya remembers facts across sessions in plain markdown files you
77
+ can read and edit.
78
+ - **Code review.** A deterministic gather, fan-out, adversarially-verify,
79
+ synthesize pipeline that reports real issues and says "nothing blocks" rather
80
+ than inventing findings.
81
+ - **Cost and context controls.** An optional cheaper model for forgiving work,
82
+ a per-task token budget, and context compaction so long sessions keep working
83
+ on small-window local models.
84
+ - **Files, shell, web, and a real browser.** All writes, shell commands, and
85
+ browser clicks ask before they run. Reads run on their own. Everything is
86
+ confined to an allow-list of folders.
87
+
88
+ ## Install
89
+
90
+ You need Python 3.11 or newer. The package is `heya-agent`; the command is
91
+ `heya`.
92
+
93
+ ```bash
94
+ pipx install heya-agent
95
+ ```
96
+
97
+ [pipx](https://pipx.pypa.io) installs it into its own isolated environment and
98
+ puts `heya` on your PATH. If you do not have pipx, `pip install heya-agent`
99
+ works too. Then run `heya init` to set up a model.
100
+
101
+ The browser tools are optional, since they pull in Playwright and a Chromium
102
+ binary. Add them when you want them:
103
+
104
+ ```bash
105
+ pipx install "heya-agent[browser]"
106
+ python -m playwright install chromium
107
+ ```
108
+
109
+ Heya runs fine without them. The browser tools just return an install hint until
110
+ you do.
111
+
112
+ Connecting MCP servers (hosting other tools over the Model Context Protocol)
113
+ needs the `mcp` extra:
114
+
115
+ ```bash
116
+ pipx install "heya-agent[mcp]"
117
+ ```
118
+
119
+ ### From source (for contributors)
120
+
121
+ ```bash
122
+ git clone git@github.com:shameemreza/heya.git
123
+ cd heya
124
+ python3 -m venv .venv
125
+ .venv/bin/pip install -e ".[test]"
126
+ .venv/bin/python -m pytest
127
+ ```
128
+
129
+ ## Point it at a model
130
+
131
+ Run the setup wizard. It walks you through a local (Ollama) or cloud model and
132
+ writes the config for you:
133
+
134
+ ```bash
135
+ heya init
136
+ ```
137
+
138
+ A pasted cloud key is stored in a locked credentials file, never in the config.
139
+ On the local path the wizard offers to download a model for you. If you would
140
+ rather configure by hand, copy `config.example.toml` to
141
+ `~/.config/heya/config.toml` and edit it. See
142
+ [docs/guide/getting-started.md](docs/guide/getting-started.md).
143
+
144
+ ## Run it
145
+
146
+ ```bash
147
+ heya "summarize what changed in the last 3 commits"
148
+ ```
149
+
150
+ Triage a bug end to end:
151
+
152
+ ```bash
153
+ heya "triage this: variation coupons apply to the parent price at checkout on WP 6.5 / WC 8.7"
154
+ ```
155
+
156
+ Use a skill you already have:
157
+
158
+ ```bash
159
+ heya "use my support-reply skill to draft a response to this ticket: ..."
160
+ ```
161
+
162
+ ## Docs
163
+
164
+ - [Getting started](docs/guide/getting-started.md)
165
+ - [Configuration reference](docs/guide/configuration.md)
166
+ - [The diagnostic workflow](docs/guide/diagnostic-workflow.md)
167
+ - [Hosting your Claude skills, plugins, and tools](docs/guide/hosting-claude-ecosystem.md)
168
+ - [Tools and safety](docs/guide/tools-and-safety.md)
169
+ - [Connect your own MCP servers](docs/guide/mcp.md)
170
+
171
+ ## License
172
+
173
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,140 @@
1
+ # Heya
2
+
3
+ Heya is a single, local-first AI agent that runs in your terminal. One model,
4
+ one agent, a toolbox. It reads a request, decides what to do, calls tools, and
5
+ loops until the task is done.
6
+
7
+ The model is a configuration choice, not part of the design. The same loop runs
8
+ against a small local model through Ollama or a frontier cloud model through
9
+ OpenRouter, OpenAI, LM Studio, or anything that speaks the OpenAI chat API. Point
10
+ it at whatever you have. Your prompts and your data stay on your machine.
11
+
12
+ It is built in plain Python with no agent framework, so you can see exactly what
13
+ every part does.
14
+
15
+ ## Why you might use it
16
+
17
+ Most agents are general. Heya is general too, but it carries a real specialty: a
18
+ WordPress and WooCommerce diagnostic assistant that takes a bug from a ticket to
19
+ a proven answer. And because it is model-agnostic and local-first, you run all of
20
+ that on your own models, with no vendor lock-in and nothing leaving your machine.
21
+
22
+ It also hosts the Claude Code ecosystem. Your existing Claude skills, plugins,
23
+ hooks, commands, and sub-agents work in Heya with no re-install, so you bring
24
+ what you already have.
25
+
26
+ ## What it can do
27
+
28
+ - **Diagnostic assistant.** Give Heya a bug report, a ticket, or a log. It
29
+ reproduces the issue on a disposable WordPress Playground (or a dev site),
30
+ finds the root cause, proposes and verifies a fix, and hands you a paste-ready
31
+ triage comment with a verdict, impact, suggested priority, evidence, and a
32
+ one-click repro link. Every stage is evidence-gated: no evidence, no verdict.
33
+ It can also rank a backlog into a pick-list so you know what to work on.
34
+ - **Hosts your Claude ecosystem.** Discovers your `~/.claude` skills and plugins
35
+ and makes them available through a `Skill` tool, runs lifecycle hooks (off by
36
+ default), and turns Claude sub-agent and command definitions into Heya roles
37
+ and commands.
38
+ - **Sub-agents.** Delegate a self-contained task to a fresh, context-isolated
39
+ child agent, or fan several read-only children out in parallel and synthesize
40
+ their reports.
41
+ - **MCP client.** Connect Model Context Protocol servers over stdio or HTTP, with
42
+ OAuth, sampling, elicitation, and logging.
43
+ - **Memory.** Heya remembers facts across sessions in plain markdown files you
44
+ can read and edit.
45
+ - **Code review.** A deterministic gather, fan-out, adversarially-verify,
46
+ synthesize pipeline that reports real issues and says "nothing blocks" rather
47
+ than inventing findings.
48
+ - **Cost and context controls.** An optional cheaper model for forgiving work,
49
+ a per-task token budget, and context compaction so long sessions keep working
50
+ on small-window local models.
51
+ - **Files, shell, web, and a real browser.** All writes, shell commands, and
52
+ browser clicks ask before they run. Reads run on their own. Everything is
53
+ confined to an allow-list of folders.
54
+
55
+ ## Install
56
+
57
+ You need Python 3.11 or newer. The package is `heya-agent`; the command is
58
+ `heya`.
59
+
60
+ ```bash
61
+ pipx install heya-agent
62
+ ```
63
+
64
+ [pipx](https://pipx.pypa.io) installs it into its own isolated environment and
65
+ puts `heya` on your PATH. If you do not have pipx, `pip install heya-agent`
66
+ works too. Then run `heya init` to set up a model.
67
+
68
+ The browser tools are optional, since they pull in Playwright and a Chromium
69
+ binary. Add them when you want them:
70
+
71
+ ```bash
72
+ pipx install "heya-agent[browser]"
73
+ python -m playwright install chromium
74
+ ```
75
+
76
+ Heya runs fine without them. The browser tools just return an install hint until
77
+ you do.
78
+
79
+ Connecting MCP servers (hosting other tools over the Model Context Protocol)
80
+ needs the `mcp` extra:
81
+
82
+ ```bash
83
+ pipx install "heya-agent[mcp]"
84
+ ```
85
+
86
+ ### From source (for contributors)
87
+
88
+ ```bash
89
+ git clone git@github.com:shameemreza/heya.git
90
+ cd heya
91
+ python3 -m venv .venv
92
+ .venv/bin/pip install -e ".[test]"
93
+ .venv/bin/python -m pytest
94
+ ```
95
+
96
+ ## Point it at a model
97
+
98
+ Run the setup wizard. It walks you through a local (Ollama) or cloud model and
99
+ writes the config for you:
100
+
101
+ ```bash
102
+ heya init
103
+ ```
104
+
105
+ A pasted cloud key is stored in a locked credentials file, never in the config.
106
+ On the local path the wizard offers to download a model for you. If you would
107
+ rather configure by hand, copy `config.example.toml` to
108
+ `~/.config/heya/config.toml` and edit it. See
109
+ [docs/guide/getting-started.md](docs/guide/getting-started.md).
110
+
111
+ ## Run it
112
+
113
+ ```bash
114
+ heya "summarize what changed in the last 3 commits"
115
+ ```
116
+
117
+ Triage a bug end to end:
118
+
119
+ ```bash
120
+ heya "triage this: variation coupons apply to the parent price at checkout on WP 6.5 / WC 8.7"
121
+ ```
122
+
123
+ Use a skill you already have:
124
+
125
+ ```bash
126
+ heya "use my support-reply skill to draft a response to this ticket: ..."
127
+ ```
128
+
129
+ ## Docs
130
+
131
+ - [Getting started](docs/guide/getting-started.md)
132
+ - [Configuration reference](docs/guide/configuration.md)
133
+ - [The diagnostic workflow](docs/guide/diagnostic-workflow.md)
134
+ - [Hosting your Claude skills, plugins, and tools](docs/guide/hosting-claude-ecosystem.md)
135
+ - [Tools and safety](docs/guide/tools-and-safety.md)
136
+ - [Connect your own MCP servers](docs/guide/mcp.md)
137
+
138
+ ## License
139
+
140
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,3 @@
1
+ """Heya — a single, local-first, tool-using AI agent."""
2
+
3
+ __version__ = "0.0.1"