agentic-threat-hunting-framework 0.2.3__py3-none-any.whl → 0.3.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.
- {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/METADATA +38 -40
- agentic_threat_hunting_framework-0.3.0.dist-info/RECORD +51 -0
- athf/__version__.py +1 -1
- athf/cli.py +7 -2
- athf/commands/__init__.py +4 -0
- athf/commands/agent.py +452 -0
- athf/commands/context.py +6 -9
- athf/commands/env.py +2 -2
- athf/commands/hunt.py +3 -3
- athf/commands/init.py +45 -0
- athf/commands/research.py +530 -0
- athf/commands/similar.py +5 -5
- athf/core/research_manager.py +419 -0
- athf/core/web_search.py +340 -0
- athf/data/__init__.py +19 -0
- athf/data/docs/CHANGELOG.md +147 -0
- athf/data/docs/CLI_REFERENCE.md +1797 -0
- athf/data/docs/INSTALL.md +594 -0
- athf/data/docs/README.md +31 -0
- athf/data/docs/environment.md +256 -0
- athf/data/docs/getting-started.md +419 -0
- athf/data/docs/level4-agentic-workflows.md +480 -0
- athf/data/docs/lock-pattern.md +149 -0
- athf/data/docs/maturity-model.md +400 -0
- athf/data/docs/why-athf.md +44 -0
- athf/data/hunts/FORMAT_GUIDELINES.md +507 -0
- athf/data/hunts/H-0001.md +453 -0
- athf/data/hunts/H-0002.md +436 -0
- athf/data/hunts/H-0003.md +546 -0
- athf/data/hunts/README.md +231 -0
- athf/data/integrations/MCP_CATALOG.md +45 -0
- athf/data/integrations/README.md +129 -0
- athf/data/integrations/quickstart/splunk.md +162 -0
- athf/data/knowledge/hunting-knowledge.md +2375 -0
- athf/data/prompts/README.md +172 -0
- athf/data/prompts/ai-workflow.md +581 -0
- athf/data/prompts/basic-prompts.md +316 -0
- athf/data/templates/HUNT_LOCK.md +228 -0
- agentic_threat_hunting_framework-0.2.3.dist-info/RECORD +0 -23
- {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/WHEEL +0 -0
- {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/entry_points.txt +0 -0
- {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {agentic_threat_hunting_framework-0.2.3.dist-info → agentic_threat_hunting_framework-0.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentic-threat-hunting-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Agentic Threat Hunting Framework - Memory and AI for threat hunters
|
|
5
5
|
Author-email: Sydney Marrone <athf@nebulock.io>
|
|
6
6
|
Maintainer-email: Sydney Marrone <athf@nebulock.io>
|
|
@@ -33,6 +33,7 @@ Requires-Dist: click>=8.0.0
|
|
|
33
33
|
Requires-Dist: pyyaml>=6.0
|
|
34
34
|
Requires-Dist: rich>=10.0.0
|
|
35
35
|
Requires-Dist: jinja2>=3.0.0
|
|
36
|
+
Requires-Dist: importlib_resources>=5.0.0; python_version < "3.9"
|
|
36
37
|
Provides-Extra: dev
|
|
37
38
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
39
|
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
@@ -76,6 +77,7 @@ ATHF provides structure and persistence for threat hunting programs. It's a mark
|
|
|
76
77
|
- Maintains a searchable repository of past investigations
|
|
77
78
|
- Enables AI assistants to reference your environment and previous work
|
|
78
79
|
- Works with any SIEM/EDR platform
|
|
80
|
+
- **NEW:** Includes AI-powered research and hypothesis generation agents (v0.3.0+)
|
|
79
81
|
|
|
80
82
|
## The Problem
|
|
81
83
|
|
|
@@ -115,8 +117,8 @@ ATHF defines a simple maturity model. Each level builds on the previous one.
|
|
|
115
117
|
| **0** | Ad-hoc | Hunts exist in Slack, tickets, or analyst notes |
|
|
116
118
|
| **1** | Documented | Persistent hunt records using LOCK |
|
|
117
119
|
| **2** | Searchable | AI reads and recalls your hunts |
|
|
118
|
-
| **3** | Generative | AI executes queries via MCP tools |
|
|
119
|
-
| **4** | Agentic | Autonomous agents monitor and act |
|
|
120
|
+
| **3** | Generative | AI executes queries via MCP tools, conducts research |
|
|
121
|
+
| **4** | Agentic | Autonomous agents monitor and act, generate hypotheses |
|
|
120
122
|
|
|
121
123
|
**Level 1:** Operational within a day
|
|
122
124
|
**Level 2:** Operational within a week
|
|
@@ -136,8 +138,11 @@ pip install agentic-threat-hunting-framework
|
|
|
136
138
|
# Initialize your hunt program
|
|
137
139
|
athf init
|
|
138
140
|
|
|
139
|
-
#
|
|
140
|
-
athf
|
|
141
|
+
# NEW: Conduct research before hunting (5-skill methodology)
|
|
142
|
+
athf research new --topic "LSASS dumping" --technique T1003.001
|
|
143
|
+
|
|
144
|
+
# Create your first hunt (link to research)
|
|
145
|
+
athf hunt new --technique T1003.001 --title "LSASS Credential Dumping" --research R-0001
|
|
141
146
|
```
|
|
142
147
|
|
|
143
148
|
### Option 2: Install from Source (Development)
|
|
@@ -161,7 +166,8 @@ git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
|
161
166
|
cd agentic-threat-hunting-framework
|
|
162
167
|
|
|
163
168
|
# Copy a template and start documenting
|
|
164
|
-
|
|
169
|
+
mkdir -p hunts
|
|
170
|
+
cp athf/data/templates/HUNT_LOCK.md hunts/H-0001.md
|
|
165
171
|
|
|
166
172
|
# Customize AGENTS.md with your environment
|
|
167
173
|
# Add your SIEM, EDR, and data sources
|
|
@@ -182,6 +188,23 @@ athf init # Interactive setup
|
|
|
182
188
|
athf init --non-interactive # Use defaults
|
|
183
189
|
```
|
|
184
190
|
|
|
191
|
+
### Research & Hypothesis Generation (NEW in v0.3.0)
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Conduct thorough pre-hunt research (15-20 min)
|
|
195
|
+
athf research new --topic "LSASS dumping" --technique T1003.001
|
|
196
|
+
|
|
197
|
+
# Quick research for urgent hunts (5 min)
|
|
198
|
+
athf research new --topic "Pass-the-Hash" --depth basic
|
|
199
|
+
|
|
200
|
+
# Generate AI-powered hypothesis from threat intel
|
|
201
|
+
athf agent run hypothesis-generator --threat-intel "APT29 targeting SaaS"
|
|
202
|
+
|
|
203
|
+
# List research and agents
|
|
204
|
+
athf research list
|
|
205
|
+
athf agent list
|
|
206
|
+
```
|
|
207
|
+
|
|
185
208
|
### Create Hunts
|
|
186
209
|
|
|
187
210
|
```bash
|
|
@@ -189,7 +212,8 @@ athf hunt new # Interactive mode
|
|
|
189
212
|
athf hunt new \
|
|
190
213
|
--technique T1003.001 \
|
|
191
214
|
--title "LSASS Dumping Detection" \
|
|
192
|
-
--platform windows
|
|
215
|
+
--platform windows \
|
|
216
|
+
--research R-0001 # Link to research document
|
|
193
217
|
```
|
|
194
218
|
|
|
195
219
|
### List & Search
|
|
@@ -199,6 +223,7 @@ athf hunt list # Show all hunts
|
|
|
199
223
|
athf hunt list --status completed # Filter by status
|
|
200
224
|
athf hunt list --output json # JSON output
|
|
201
225
|
athf hunt search "kerberoasting" # Full-text search
|
|
226
|
+
athf research search "credential" # Search research docs
|
|
202
227
|
```
|
|
203
228
|
|
|
204
229
|
### Validate & Stats
|
|
@@ -208,6 +233,7 @@ athf hunt validate # Validate all hunts
|
|
|
208
233
|
athf hunt validate H-0001 # Validate specific hunt
|
|
209
234
|
athf hunt stats # Show statistics
|
|
210
235
|
athf hunt coverage # MITRE ATT&CK coverage
|
|
236
|
+
athf research stats # Research metrics
|
|
211
237
|
```
|
|
212
238
|
|
|
213
239
|
**Full documentation:** [CLI Reference](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/docs/CLI_REFERENCE.md)
|
|
@@ -222,35 +248,12 @@ Watch ATHF in action: initialize a workspace, create hunts, and explore your thr
|
|
|
222
248
|
|
|
223
249
|
## Installation
|
|
224
250
|
|
|
225
|
-
|
|
251
|
+
See the [Quick Start](#-quick-start) section above for installation options (PyPI, source, or pure markdown).
|
|
252
|
+
|
|
253
|
+
**Prerequisites:**
|
|
226
254
|
- Python 3.8-3.13 (for CLI option)
|
|
227
255
|
- Your favorite AI code assistant
|
|
228
256
|
|
|
229
|
-
### From PyPI (Recommended)
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
pip install agentic-threat-hunting-framework
|
|
233
|
-
athf init
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### From Source (Development)
|
|
237
|
-
|
|
238
|
-
```bash
|
|
239
|
-
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
240
|
-
cd agentic-threat-hunting-framework
|
|
241
|
-
pip install -e .
|
|
242
|
-
athf init
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Markdown-Only Setup (No Installation)
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
git clone https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
249
|
-
cd agentic-threat-hunting-framework
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
Start documenting hunts in the `hunts/` directory using the LOCK pattern.
|
|
253
|
-
|
|
254
257
|
## Documentation
|
|
255
258
|
|
|
256
259
|
### Core Concepts
|
|
@@ -297,21 +300,16 @@ Agentic threat hunting is not about replacing analysts. It's about building syst
|
|
|
297
300
|
|
|
298
301
|
When your framework has memory, you stop losing knowledge to turnover or forgotten notes. When your AI assistant can reference that memory, it becomes a force multiplier.
|
|
299
302
|
|
|
300
|
-
## 💬 Community &
|
|
303
|
+
## 💬 Community & Adoption
|
|
301
304
|
|
|
302
305
|
- **GitHub Discussions:** [Ask questions, share hunts](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)
|
|
303
306
|
- **Issues:** [Report bugs or request features](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/issues)
|
|
304
|
-
- **Adoption Guide:** See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/USING_ATHF.md) for how to use ATHF in your organization
|
|
305
307
|
- **LinkedIn:** [Nebulock Inc.](https://www.linkedin.com/company/nebulock-inc) - Follow for updates
|
|
306
308
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours.
|
|
309
|
+
**Using ATHF in Your Organization:** ATHF is a framework to internalize, not a platform to extend. Fork it, customize it, make it yours. See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/USING_ATHF.md) for adoption guidance. Your hunts stay yours—sharing back is optional but appreciated.
|
|
310
310
|
|
|
311
311
|
**Repository:** [https://github.com/Nebulock-Inc/agentic-threat-hunting-framework](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework)
|
|
312
312
|
|
|
313
|
-
See [USING_ATHF.md](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/blob/main/USING_ATHF.md) for adoption guidance. Your hunts stay yours—sharing back is optional but appreciated ([Discussions](https://github.com/Nebulock-Inc/agentic-threat-hunting-framework/discussions)).
|
|
314
|
-
|
|
315
313
|
The goal is to help every threat hunting team move from ad-hoc memory to structured, agentic capability.
|
|
316
314
|
|
|
317
315
|
---
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/licenses/LICENSE,sha256=_KObErRfiKoolznt-DF0nJnr3U9Rdh7Z4Ba7G5qqckk,1071
|
|
2
|
+
athf/__init__.py,sha256=OrjZe8P97_BTEkscapnwSsqKSjwXNP9d8-HtGr19Ni0,241
|
|
3
|
+
athf/__version__.py,sha256=1uOy8XMZ6490EmE359rotOAMj4-r0qm1IZG5gSmm_7g,59
|
|
4
|
+
athf/cli.py,sha256=rkg_Nx9Yy_UqTXBOh-pwaiD-lXO0_IXQMA1SQpDj7g0,4639
|
|
5
|
+
athf/commands/__init__.py,sha256=KbpUcLPjmltq5a_m1MjhrIe4sk3DvqsnAw1wCAZfZNo,85
|
|
6
|
+
athf/commands/agent.py,sha256=k-NWiLppt2oWbiJ-hx1inkK51jhfsAYiFhixbzzQmQI,16565
|
|
7
|
+
athf/commands/context.py,sha256=V-at81-OgKcLY-In48-AccTnHfTgdofmnjE8S5kypoI,12678
|
|
8
|
+
athf/commands/env.py,sha256=JPKRsv48cgsIAjSFaGJ1-Nu0nQKGSVg4AbiFxb9jVX4,11887
|
|
9
|
+
athf/commands/hunt.py,sha256=PcYz0Zj9qqB10s9mkbfHk-hl2IbcfJekeB6cA2exXPo,22991
|
|
10
|
+
athf/commands/init.py,sha256=Qn0iETNyuQvM-ySqCeoDz-pPemeuzROX_karQF5yN_o,12685
|
|
11
|
+
athf/commands/investigate.py,sha256=mK_id5vjfN_ukqB_-fyia0FNa0pBmtn0Xv6CKHQI1Qo,24663
|
|
12
|
+
athf/commands/research.py,sha256=FrLph4agaGQ_rIxMh0OQwh1MIGDFtj40zJ3E1ZFwaAw,18112
|
|
13
|
+
athf/commands/similar.py,sha256=FTTVr4zzP9bdJrirscp6pOxdQbE8zot6pa20-_TYiuo,11804
|
|
14
|
+
athf/core/__init__.py,sha256=yG7C8ljx3UW4QZoYvDjUxsWHlbS8M-GLGB7Je7rRfqo,31
|
|
15
|
+
athf/core/attack_matrix.py,sha256=QZKKmxckQ6-U7lqVdGUJoj2jEAhP3Juvr3sqaNx2oTw,3238
|
|
16
|
+
athf/core/hunt_manager.py,sha256=PFsg8Ecg94NCpuFZpApo82lyORkgK5IfOIih-7-XsmM,11580
|
|
17
|
+
athf/core/hunt_parser.py,sha256=FUj0yyBIcZnaS9aItMImeBDhegQwpkewIwUMNXW_ZWU,5122
|
|
18
|
+
athf/core/investigation_parser.py,sha256=wbfjnq4gFgIc0a4bHIAnidVNPhbHDpIXWY1SGLk0Xls,6804
|
|
19
|
+
athf/core/research_manager.py,sha256=i4fUjuZJcAik8I4pwbLkQlu6cuxkWDlqaIRQrzAfB0s,14512
|
|
20
|
+
athf/core/template_engine.py,sha256=vNTVhlxIXZpxU7VmQyrqCSt6ORS0IVjAV54TOmUDMTE,5636
|
|
21
|
+
athf/core/web_search.py,sha256=B9IhmwH7gy2RVA6WSN3L7yGp3Q4L8OsiiwcEvnnZejU,10320
|
|
22
|
+
athf/data/__init__.py,sha256=QtgONloCaS3E9Ow995FMxyy6BbszpfmYeWpySQ2b9Mc,502
|
|
23
|
+
athf/data/docs/CHANGELOG.md,sha256=1dAondeKsQnGOn9esy9oZ29uG_oGgRuHxmkcmGQ1Cwo,5950
|
|
24
|
+
athf/data/docs/CLI_REFERENCE.md,sha256=zqUp-tu8OAcqzpOwx3XvzEq7UV6woDraUOcWasZI0a8,43748
|
|
25
|
+
athf/data/docs/INSTALL.md,sha256=JOWxk6q2-rdpgCnWdSPb3-Cp8rX1y4nQm7ObKz2G0uM,13117
|
|
26
|
+
athf/data/docs/README.md,sha256=rp-XQZeqteXJz7M2qKX3sl6o0AVfhGmz8GcNNKAt8pM,1061
|
|
27
|
+
athf/data/docs/environment.md,sha256=K88NBWZM2bI1Jztd0ORa6AYaMgPVjVB-K2fJl8S5-g8,8306
|
|
28
|
+
athf/data/docs/getting-started.md,sha256=j4SAXe-Rm1RhYBDvWaNpV8XS0rc_mZ2Ew0yPCxE4_wQ,14156
|
|
29
|
+
athf/data/docs/level4-agentic-workflows.md,sha256=DX54qu8LbJysjDfQLGSEPSO_Q6BUACLpa-XCsR6xUp4,13439
|
|
30
|
+
athf/data/docs/lock-pattern.md,sha256=eICjNh5SAgIhkOYBDhHg1tgw4A29xgnRDWC9vH1wLEQ,4863
|
|
31
|
+
athf/data/docs/maturity-model.md,sha256=S2m8JSQDe9R5ROBWS4Gy0-sRF5I7mo-CI3cUnmNpxmk,16347
|
|
32
|
+
athf/data/docs/why-athf.md,sha256=rIoUb7iqdZKbuWNyRlGxhZrRkLx7gWAGS-kurEZDt04,2148
|
|
33
|
+
athf/data/hunts/FORMAT_GUIDELINES.md,sha256=lMyBekmOzhtO1olO1P-M0Gi_n5oY60k7qkRZE63sTgw,15010
|
|
34
|
+
athf/data/hunts/H-0001.md,sha256=rdUIpQ_uN8bx7XS1ED85rW5aRKxFOpMg0X7PANY7eCY,23220
|
|
35
|
+
athf/data/hunts/H-0002.md,sha256=yF5ZEfl7NAJJMjuVf9ZitafwDfWMTzyU5fgkrAQ4U6I,20405
|
|
36
|
+
athf/data/hunts/H-0003.md,sha256=w0iAaplcM0kFWRmVhQsX53LVIWaRDJsB3TWalI1zz_o,27436
|
|
37
|
+
athf/data/hunts/README.md,sha256=WMj871_NTsMjYBriQ3xezOBktUs3KT7MTKVJSo0iwXA,5812
|
|
38
|
+
athf/data/integrations/MCP_CATALOG.md,sha256=hJ_cyHijEjWdkFiX7WEyBtJqlLtKuRzZCKlqrhbSLrU,1782
|
|
39
|
+
athf/data/integrations/README.md,sha256=jkiK0u5pNjodmFuNKKMR0G40Soq8pqBRVsaP89wP70w,4336
|
|
40
|
+
athf/data/integrations/quickstart/splunk.md,sha256=6REsD05zQOPcT6ezxyeysOtTRsSp7JO6vK_epd7GCJU,4897
|
|
41
|
+
athf/data/knowledge/hunting-knowledge.md,sha256=djublWCzFexl5ssssL6KfMm4RnUI0ANoWMY9zLSQDd0,91107
|
|
42
|
+
athf/data/prompts/README.md,sha256=5Jtz38Csh-rWjgX_zN46e3DxJoOfeeVQLDcIpcVExJ0,5029
|
|
43
|
+
athf/data/prompts/ai-workflow.md,sha256=rZtOcGuAEi35qx7182TwHJEORdz1-RxkZMBVkg611Rs,17087
|
|
44
|
+
athf/data/prompts/basic-prompts.md,sha256=2bunpO35RoBdJWYthXVi40RNl2UWrfwOaFthBLHF5sU,8463
|
|
45
|
+
athf/data/templates/HUNT_LOCK.md,sha256=zXxHaKMWbRDLewLTegYJMbXRM72s9gFFvjdwFfGNeJE,7386
|
|
46
|
+
athf/utils/__init__.py,sha256=aEAPI1xnAsowOtc036cCb9ZOek5nrrfevu8PElhbNgk,30
|
|
47
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/METADATA,sha256=TT9rzSs2CSKI3TTKMkSP7ZRehUXtntbgYCWfCFK7qbU,15838
|
|
48
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
49
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/entry_points.txt,sha256=GopR2iTiBs-yNMWiUZ2DaFIFglXxWJx1XPjTa3ePtfE,39
|
|
50
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/top_level.txt,sha256=Cxxg6SMLfawDJWBITsciRzq27XV8fiaAor23o9Byoes,5
|
|
51
|
+
agentic_threat_hunting_framework-0.3.0.dist-info/RECORD,,
|
athf/__version__.py
CHANGED
athf/cli.py
CHANGED
|
@@ -6,7 +6,8 @@ import click
|
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
|
|
8
8
|
from athf.__version__ import __version__
|
|
9
|
-
from athf.commands import context, env, hunt, init, investigate, similar
|
|
9
|
+
from athf.commands import context, env, hunt, init, investigate, research, similar
|
|
10
|
+
from athf.commands.agent import agent
|
|
10
11
|
|
|
11
12
|
console = Console()
|
|
12
13
|
|
|
@@ -40,7 +41,7 @@ Getting Started:
|
|
|
40
41
|
Documentation:
|
|
41
42
|
• Full docs: https://github.com/Nebulock-Inc/agentic-threat-hunting-framework
|
|
42
43
|
• CLI reference: docs/CLI_REFERENCE.md
|
|
43
|
-
• AI workflows: prompts/ai-workflow.md
|
|
44
|
+
• AI workflows: Run 'athf init' to get prompts/ai-workflow.md
|
|
44
45
|
|
|
45
46
|
\b
|
|
46
47
|
Need help? Run 'athf COMMAND --help' for command-specific help.
|
|
@@ -80,12 +81,16 @@ def cli() -> None:
|
|
|
80
81
|
cli.add_command(init.init)
|
|
81
82
|
cli.add_command(hunt.hunt)
|
|
82
83
|
cli.add_command(investigate.investigate)
|
|
84
|
+
cli.add_command(research.research)
|
|
83
85
|
|
|
84
86
|
# Phase 1 commands (env, context, similar)
|
|
85
87
|
cli.add_command(env.env)
|
|
86
88
|
cli.add_command(context.context)
|
|
87
89
|
cli.add_command(similar.similar)
|
|
88
90
|
|
|
91
|
+
# Agent commands
|
|
92
|
+
cli.add_command(agent)
|
|
93
|
+
|
|
89
94
|
|
|
90
95
|
@cli.command(hidden=True)
|
|
91
96
|
def wisdom() -> None:
|