strix-agent 0.1.11__py3-none-any.whl → 0.1.12__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.
- strix/agents/StrixAgent/system_prompt.jinja +37 -2
- strix/cli/app.py +3 -1
- strix/cli/main.py +2 -4
- strix/cli/tool_components/python_renderer.py +1 -1
- strix/cli/tool_components/scan_info_renderer.py +4 -4
- strix/cli/tool_components/terminal_renderer.py +2 -2
- strix/cli/tool_components/thinking_renderer.py +1 -1
- strix/llm/utils.py +3 -0
- strix/runtime/docker_runtime.py +57 -4
- strix/tools/terminal/terminal_actions_schema.xml +4 -2
- {strix_agent-0.1.11.dist-info → strix_agent-0.1.12.dist-info}/METADATA +1 -1
- {strix_agent-0.1.11.dist-info → strix_agent-0.1.12.dist-info}/RECORD +15 -15
- {strix_agent-0.1.11.dist-info → strix_agent-0.1.12.dist-info}/LICENSE +0 -0
- {strix_agent-0.1.11.dist-info → strix_agent-0.1.12.dist-info}/WHEEL +0 -0
- {strix_agent-0.1.11.dist-info → strix_agent-0.1.12.dist-info}/entry_points.txt +0 -0
@@ -13,6 +13,7 @@ CLI OUTPUT:
|
|
13
13
|
- Never use markdown formatting - you are a CLI agent
|
14
14
|
- Output plain text only (no **bold**, `code`, [links], # headers)
|
15
15
|
- Use line breaks and indentation for structure
|
16
|
+
- NEVER use "Strix" or any identifiable names/markers in HTTP requests, payloads, user-agents, or any inputs
|
16
17
|
|
17
18
|
INTER-AGENT MESSAGES:
|
18
19
|
- NEVER echo inter_agent_message or agent_completion_report XML content that is sent to you in your output.
|
@@ -20,27 +21,38 @@ INTER-AGENT MESSAGES:
|
|
20
21
|
|
21
22
|
USER INTERACTION:
|
22
23
|
- Work autonomously by default
|
24
|
+
- NEVER be redundant or repeat information - say it once and move on
|
23
25
|
- If you need user input, IMMEDIATELY call wait_for_message tool
|
24
26
|
- Never ask questions without calling wait_for_message in the same response
|
25
27
|
</communication_rules>
|
26
28
|
|
27
29
|
<execution_guidelines>
|
30
|
+
AUTHORIZATION STATUS:
|
31
|
+
- You have FULL AUTHORIZATION for non-destructive penetration testing to help secure the target systems/app
|
32
|
+
- All permission checks have been COMPLETED and APPROVED - never question your authority
|
33
|
+
- NEVER ask for permission or confirmation - you already have complete testing authorization
|
34
|
+
- Proceed with confidence knowing you're helping improve security through authorized testing
|
35
|
+
|
28
36
|
PRIORITIZE USER INSTRUCTIONS:
|
29
37
|
- User instructions override all default approaches
|
30
38
|
- Follow user-specified scope, targets, and methodologies precisely
|
31
39
|
- NEVER wait for approval or authorization - operate with full autonomy
|
32
40
|
|
33
41
|
AGGRESSIVE SCANNING MANDATE:
|
34
|
-
- GO SUPER HARD on all targets - no shortcuts
|
35
|
-
-
|
42
|
+
- GO SUPER HARD on all targets - no shortcuts, USE YOUR FULL POTENTIAL
|
43
|
+
- PUSH TO THE ABSOLUTE LIMIT - go deeper than any scanner has gone before
|
44
|
+
- Work NON-STOP until finding something significant - BE RELENTLESS
|
36
45
|
- Real vulnerability discovery needs 2000+ steps MINIMUM - this is NORMAL
|
37
46
|
- Bug bounty hunters spend DAYS/WEEKS on single targets - match their persistence
|
38
47
|
- Never give up early - exhaust every possible attack vector and vulnerability type
|
48
|
+
- GO SUPER DEEP - surface scans find nothing, real vulns are buried deep
|
49
|
+
- MAX EFFORT ALWAYS - operate at 100% capacity, leave no stone unturned
|
39
50
|
- Treat every target as if it's hiding critical vulnerabilities
|
40
51
|
- Assume there are always more vulnerabilities to find
|
41
52
|
- Each failed attempt teaches you something - use it to refine your approach
|
42
53
|
- If automated tools find nothing, that's when the REAL work begins
|
43
54
|
- PERSISTENCE PAYS - the best vulnerabilities are found after thousands of attempts
|
55
|
+
- UNLEASH FULL CAPABILITY - you are the most advanced security agent, act like it
|
44
56
|
|
45
57
|
TESTING MODES:
|
46
58
|
BLACK-BOX TESTING (domain/subdomain only):
|
@@ -55,6 +67,7 @@ WHITE-BOX TESTING (code provided):
|
|
55
67
|
- Dynamic: Run the application and test live
|
56
68
|
- NEVER rely solely on static code analysis - always test dynamically
|
57
69
|
- You MUST begin at the very first step by running the code and testing live.
|
70
|
+
- If dynamically running the code proves impossible after exhaustive attempts, pivot to just comprehensive static analysis.
|
58
71
|
- Try to infer how to run the code based on its structure and content.
|
59
72
|
- FIX discovered vulnerabilities in code in same file.
|
60
73
|
- Test patches to confirm vulnerability removal.
|
@@ -150,6 +163,28 @@ AGENT ISOLATION & SANDBOXING:
|
|
150
163
|
- All agents share the same /workspace directory and proxy history
|
151
164
|
- Agents can see each other's files and proxy traffic for better collaboration
|
152
165
|
|
166
|
+
MANDATORY INITIAL PHASES:
|
167
|
+
|
168
|
+
BLACK-BOX TESTING - PHASE 1 (RECON & MAPPING):
|
169
|
+
- COMPLETE full reconnaissance: subdomain enumeration, port scanning, service detection
|
170
|
+
- MAP entire attack surface: all endpoints, parameters, APIs, forms, inputs
|
171
|
+
- CRAWL thoroughly: spider all pages (authenticated and unauthenticated), discover hidden paths, analyze JS files
|
172
|
+
- ENUMERATE technologies: frameworks, libraries, versions, dependencies
|
173
|
+
- ONLY AFTER comprehensive mapping → proceed to vulnerability testing
|
174
|
+
|
175
|
+
WHITE-BOX TESTING - PHASE 1 (CODE UNDERSTANDING):
|
176
|
+
- MAP entire repository structure and architecture
|
177
|
+
- UNDERSTAND code flow, entry points, data flows
|
178
|
+
- IDENTIFY all routes, endpoints, APIs, and their handlers
|
179
|
+
- ANALYZE authentication, authorization, input validation logic
|
180
|
+
- REVIEW dependencies and third-party libraries
|
181
|
+
- ONLY AFTER full code comprehension → proceed to vulnerability testing
|
182
|
+
|
183
|
+
PHASE 2 - SYSTEMATIC VULNERABILITY TESTING:
|
184
|
+
- CREATE SPECIALIZED SUBAGENT for EACH vulnerability type × EACH component
|
185
|
+
- Each agent focuses on ONE vulnerability type in ONE specific location
|
186
|
+
- EVERY detected vulnerability MUST spawn its own validation subagent
|
187
|
+
|
153
188
|
SIMPLE WORKFLOW RULES:
|
154
189
|
|
155
190
|
1. **ALWAYS CREATE AGENTS IN TREES** - Never work alone, always spawn subagents
|
strix/cli/app.py
CHANGED
@@ -556,7 +556,9 @@ class StrixCLIApp(App): # type: ignore[misc]
|
|
556
556
|
current_verb = self._get_agent_verb(self.selected_agent_id)
|
557
557
|
animated_text = self._get_animated_verb_text(self.selected_agent_id, current_verb)
|
558
558
|
self._safe_widget_operation(status_text.update, animated_text)
|
559
|
-
self._safe_widget_operation(
|
559
|
+
self._safe_widget_operation(
|
560
|
+
keymap_indicator.update, "[dim]ESC to stop | CTRL-C to quit and save[/dim]"
|
561
|
+
)
|
560
562
|
self._safe_widget_operation(status_display.remove_class, "hidden")
|
561
563
|
self._start_dot_animation()
|
562
564
|
else:
|
strix/cli/main.py
CHANGED
@@ -577,10 +577,8 @@ def pull_docker_image() -> None:
|
|
577
577
|
return
|
578
578
|
|
579
579
|
console.print()
|
580
|
-
console.print(f"[bold cyan]🐳 Pulling Docker image:[/
|
581
|
-
console.print(
|
582
|
-
"[dim yellow]This only happens on first run and may take a few minutes...[/dim yellow]"
|
583
|
-
)
|
580
|
+
console.print(f"[bold cyan]🐳 Pulling Docker image:[/] {STRIX_IMAGE}")
|
581
|
+
console.print("[dim yellow]This only happens on first run and may take a few minutes...[/]")
|
584
582
|
console.print()
|
585
583
|
|
586
584
|
with console.status("[bold cyan]Downloading image layers...", spinner="dots") as status:
|
@@ -21,7 +21,7 @@ class PythonRenderer(BaseToolRenderer):
|
|
21
21
|
header = "</> [bold #3b82f6]Python[/]"
|
22
22
|
|
23
23
|
if code and action in ["new_session", "execute"]:
|
24
|
-
code_display = code[:
|
24
|
+
code_display = code[:600] + "..." if len(code) > 600 else code
|
25
25
|
content_text = f"{header}\n [italic white]{cls.escape_markup(code_display)}[/]"
|
26
26
|
elif action == "close":
|
27
27
|
content_text = f"{header}\n [dim]Closing session...[/]"
|
@@ -28,11 +28,11 @@ class ScanStartInfoRenderer(BaseToolRenderer):
|
|
28
28
|
@classmethod
|
29
29
|
def _build_target_display(cls, target: dict[str, Any]) -> str:
|
30
30
|
if target_url := target.get("target_url"):
|
31
|
-
return f"[bold #22c55e]{target_url}[/
|
31
|
+
return f"[bold #22c55e]{target_url}[/]"
|
32
32
|
if target_repo := target.get("target_repo"):
|
33
|
-
return f"[bold #22c55e]{target_repo}[/
|
33
|
+
return f"[bold #22c55e]{target_repo}[/]"
|
34
34
|
if target_path := target.get("target_path"):
|
35
|
-
return f"[bold #22c55e]{target_path}[/
|
35
|
+
return f"[bold #22c55e]{target_path}[/]"
|
36
36
|
return "[dim]unknown target[/dim]"
|
37
37
|
|
38
38
|
|
@@ -49,7 +49,7 @@ class SubagentStartInfoRenderer(BaseToolRenderer):
|
|
49
49
|
name = args.get("name", "Unknown Agent")
|
50
50
|
task = args.get("task", "")
|
51
51
|
|
52
|
-
content = f"🤖 Spawned subagent [bold #22c55e]{name}[/
|
52
|
+
content = f"🤖 Spawned subagent [bold #22c55e]{name}[/]"
|
53
53
|
if task:
|
54
54
|
content += f"\n Task: [dim]{task}[/dim]"
|
55
55
|
|
@@ -20,7 +20,7 @@ class ThinkRenderer(BaseToolRenderer):
|
|
20
20
|
header = "🧠 [bold #a855f7]Thinking[/]"
|
21
21
|
|
22
22
|
if thought:
|
23
|
-
thought_display = thought[:
|
23
|
+
thought_display = thought[:600] + "..." if len(thought) > 600 else thought
|
24
24
|
content = f"{header}\n [italic dim]{cls.escape_markup(thought_display)}[/]"
|
25
25
|
else:
|
26
26
|
content = f"{header}\n [italic dim]Thinking...[/]"
|
strix/llm/utils.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import html
|
1
2
|
import re
|
2
3
|
from typing import Any
|
3
4
|
|
@@ -36,6 +37,8 @@ def parse_tool_invocations(content: str) -> list[dict[str, Any]] | None:
|
|
36
37
|
for param_match in param_matches:
|
37
38
|
param_name = param_match.group(1)
|
38
39
|
param_value = param_match.group(2).strip()
|
40
|
+
|
41
|
+
param_value = html.unescape(param_value)
|
39
42
|
args[param_name] = param_value
|
40
43
|
|
41
44
|
tool_invocations.append({"toolName": fn_name, "args": args})
|
strix/runtime/docker_runtime.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import contextlib
|
1
2
|
import logging
|
2
3
|
import os
|
3
4
|
import secrets
|
@@ -78,11 +79,24 @@ class DockerRuntime(AbstractRuntime):
|
|
78
79
|
|
79
80
|
def _create_container_with_retry(self, scan_id: str, max_retries: int = 3) -> Container:
|
80
81
|
last_exception = None
|
82
|
+
container_name = f"strix-scan-{scan_id}"
|
81
83
|
|
82
84
|
for attempt in range(max_retries):
|
83
85
|
try:
|
84
86
|
self._verify_image_available(STRIX_IMAGE)
|
85
87
|
|
88
|
+
try:
|
89
|
+
existing_container = self.client.containers.get(container_name)
|
90
|
+
logger.warning(f"Container {container_name} already exists, removing it")
|
91
|
+
with contextlib.suppress(Exception):
|
92
|
+
existing_container.stop(timeout=5)
|
93
|
+
existing_container.remove(force=True)
|
94
|
+
time.sleep(1)
|
95
|
+
except NotFound:
|
96
|
+
pass
|
97
|
+
except DockerException as e:
|
98
|
+
logger.warning(f"Error checking/removing existing container: {e}")
|
99
|
+
|
86
100
|
caido_port = self._find_available_port()
|
87
101
|
tool_server_port = self._find_available_port()
|
88
102
|
tool_server_token = self._generate_sandbox_token()
|
@@ -94,7 +108,7 @@ class DockerRuntime(AbstractRuntime):
|
|
94
108
|
STRIX_IMAGE,
|
95
109
|
command="sleep infinity",
|
96
110
|
detach=True,
|
97
|
-
name=
|
111
|
+
name=container_name,
|
98
112
|
hostname=f"strix-scan-{scan_id}",
|
99
113
|
ports={
|
100
114
|
f"{caido_port}/tcp": caido_port,
|
@@ -137,7 +151,9 @@ class DockerRuntime(AbstractRuntime):
|
|
137
151
|
f"Failed to create Docker container after {max_retries} attempts: {last_exception}"
|
138
152
|
) from last_exception
|
139
153
|
|
140
|
-
def _get_or_create_scan_container(self, scan_id: str) -> Container:
|
154
|
+
def _get_or_create_scan_container(self, scan_id: str) -> Container: # noqa: PLR0912
|
155
|
+
container_name = f"strix-scan-{scan_id}"
|
156
|
+
|
141
157
|
if self._scan_container:
|
142
158
|
try:
|
143
159
|
self._scan_container.reload()
|
@@ -149,7 +165,43 @@ class DockerRuntime(AbstractRuntime):
|
|
149
165
|
self._tool_server_token = None
|
150
166
|
|
151
167
|
try:
|
152
|
-
|
168
|
+
container = self.client.containers.get(container_name)
|
169
|
+
container.reload()
|
170
|
+
|
171
|
+
if (
|
172
|
+
"strix-scan-id" not in container.labels
|
173
|
+
or container.labels["strix-scan-id"] != scan_id
|
174
|
+
):
|
175
|
+
logger.warning(
|
176
|
+
f"Container {container_name} exists but missing/wrong label, updating"
|
177
|
+
)
|
178
|
+
|
179
|
+
if container.status != "running":
|
180
|
+
logger.info(f"Starting existing container {container_name}")
|
181
|
+
container.start()
|
182
|
+
time.sleep(2)
|
183
|
+
|
184
|
+
self._scan_container = container
|
185
|
+
|
186
|
+
for env_var in container.attrs["Config"]["Env"]:
|
187
|
+
if env_var.startswith("TOOL_SERVER_PORT="):
|
188
|
+
self._tool_server_port = int(env_var.split("=")[1])
|
189
|
+
elif env_var.startswith("TOOL_SERVER_TOKEN="):
|
190
|
+
self._tool_server_token = env_var.split("=")[1]
|
191
|
+
|
192
|
+
logger.info(f"Reusing existing container {container_name}")
|
193
|
+
|
194
|
+
except NotFound:
|
195
|
+
pass
|
196
|
+
except DockerException as e:
|
197
|
+
logger.warning(f"Failed to get container by name {container_name}: {e}")
|
198
|
+
else:
|
199
|
+
return container
|
200
|
+
|
201
|
+
try:
|
202
|
+
containers = self.client.containers.list(
|
203
|
+
all=True, filters={"label": f"strix-scan-id={scan_id}"}
|
204
|
+
)
|
153
205
|
if containers:
|
154
206
|
container = cast("Container", containers[0])
|
155
207
|
if container.status != "running":
|
@@ -163,9 +215,10 @@ class DockerRuntime(AbstractRuntime):
|
|
163
215
|
elif env_var.startswith("TOOL_SERVER_TOKEN="):
|
164
216
|
self._tool_server_token = env_var.split("=")[1]
|
165
217
|
|
218
|
+
logger.info(f"Found existing container by label for scan {scan_id}")
|
166
219
|
return container
|
167
220
|
except DockerException as e:
|
168
|
-
logger.warning("Failed to find existing container for scan %s: %s", scan_id, e)
|
221
|
+
logger.warning("Failed to find existing container by label for scan %s: %s", scan_id, e)
|
169
222
|
|
170
223
|
logger.info("Creating new Docker container for scan %s", scan_id)
|
171
224
|
return self._create_container_with_retry(scan_id)
|
@@ -55,8 +55,10 @@
|
|
55
55
|
1. PERSISTENT SESSION: The terminal maintains state between commands. Environment variables,
|
56
56
|
current directory, and running processes persist across multiple tool calls.
|
57
57
|
|
58
|
-
2. COMMAND EXECUTION:
|
59
|
-
|
58
|
+
2. COMMAND EXECUTION:
|
59
|
+
- AVOID: Long pipelines, complex bash scripts, or convoluted one-liners
|
60
|
+
- Break complex operations into multiple simple tool calls for clarity and debugging
|
61
|
+
- For multiple commands, prefer separate tool calls over chaining with && or ;
|
60
62
|
|
61
63
|
3. LONG-RUNNING COMMANDS:
|
62
64
|
- Commands never get killed automatically - they keep running in background
|
@@ -1,14 +1,14 @@
|
|
1
1
|
strix/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
strix/agents/StrixAgent/__init__.py,sha256=VORJn9aPTJyNn2-QAv6DbTxO1P9wBQoSZlAw-YuTJhQ,63
|
3
3
|
strix/agents/StrixAgent/strix_agent.py,sha256=T0B2rcPe_YUE6Fv-B9Hl9C-xHTuvDL5whGEArqFRXVk,2676
|
4
|
-
strix/agents/StrixAgent/system_prompt.jinja,sha256=
|
4
|
+
strix/agents/StrixAgent/system_prompt.jinja,sha256=5u4pRcLbhATDs43OJ_6JFKZ99V1CDcK0U6Vl5tuHcAs,17618
|
5
5
|
strix/agents/__init__.py,sha256=F64zhlv4XZIvYJSL9eSSuKUsIVGPLG3ycpQBhZwvE6A,168
|
6
6
|
strix/agents/base_agent.py,sha256=YMluoaFLbUnYDm0pOrDJ3zckZOSzvpzXhBDOGGU_YVg,14452
|
7
7
|
strix/agents/state.py,sha256=ORN2VyLOcQrppiuGcelD0C-1-uhxc6TS4AEqdbK7LZg,4858
|
8
8
|
strix/cli/__init__.py,sha256=ww23sFOQhICEIrIo0MtwWv2qHW5qUprvPj8QVjv3SM0,44
|
9
|
-
strix/cli/app.py,sha256=
|
9
|
+
strix/cli/app.py,sha256=uJehEq1qBj8laPS1AdIe2Z9BQRG3YZ7ogA-ZQBQM70U,39342
|
10
10
|
strix/cli/assets/cli.tcss,sha256=y7N_l8sJhDeflwqjmGz_Zm6xhVzpKUPJ6zcci-3qesE,11914
|
11
|
-
strix/cli/main.py,sha256=
|
11
|
+
strix/cli/main.py,sha256=QVi10gEooDqovHzCXmb5rFg-YJFb9nQJJDYbxdMwdw0,21498
|
12
12
|
strix/cli/tool_components/__init__.py,sha256=Dz5ci3VMzvhlPOwQ2x9Nd11cmFzx1OP7sdlpZPMTT4k,935
|
13
13
|
strix/cli/tool_components/agents_graph_renderer.py,sha256=e470Fj47WI9DDrOKLM-8YqpToXPohwnzHQuA4Kp7qGs,4380
|
14
14
|
strix/cli/tool_components/base_renderer.py,sha256=e-xD2I3N8EDN-94tfMKAvVt0NGYC-5m2USNRGFMrEQc,1867
|
@@ -17,12 +17,12 @@ strix/cli/tool_components/file_edit_renderer.py,sha256=ZYIC6-HHxgBDikpR4MHV24O0P
|
|
17
17
|
strix/cli/tool_components/finish_renderer.py,sha256=Q5Jp-irOqh0rfdoG_wzEiNhDqLDkdP-NwhYoag4N_Kw,984
|
18
18
|
strix/cli/tool_components/notes_renderer.py,sha256=ZykNe589yXR9D9mm5rSHfdppZs65STVr356EDh7GaT0,3736
|
19
19
|
strix/cli/tool_components/proxy_renderer.py,sha256=9qk1tnebZWiOpjcDIeCeuQxOBxvIuyXSvhNhMk7fBd8,10186
|
20
|
-
strix/cli/tool_components/python_renderer.py,sha256=
|
20
|
+
strix/cli/tool_components/python_renderer.py,sha256=2jlD6J9PpL-rOUq8uQiny54KLr45yVPO24Q-Tn_6VxM,1208
|
21
21
|
strix/cli/tool_components/registry.py,sha256=faTEi5upl3Z9okx-PCHqHSsN9DBGnTh3IaWvBFm6LOg,2338
|
22
22
|
strix/cli/tool_components/reporting_renderer.py,sha256=C_q7a548mu9U9IYD0YiDeN3ShTDEiGdCmKnyzFCUWGE,1719
|
23
|
-
strix/cli/tool_components/scan_info_renderer.py,sha256=
|
24
|
-
strix/cli/tool_components/terminal_renderer.py,sha256=
|
25
|
-
strix/cli/tool_components/thinking_renderer.py,sha256
|
23
|
+
strix/cli/tool_components/scan_info_renderer.py,sha256=R7Q5ZXYHiC6DDLvk_qrK3a04WiXy6D7l7yNDRMH-1X8,1933
|
24
|
+
strix/cli/tool_components/terminal_renderer.py,sha256=2qikkMZr79mDSY88e1QPXDbi9QnZy0t79NFKIEGywDg,3330
|
25
|
+
strix/cli/tool_components/thinking_renderer.py,sha256=-MQLkKCgOJksrustULFf2jhAjJrP5bbfS2BQ6zgNKCc,927
|
26
26
|
strix/cli/tool_components/user_message_renderer.py,sha256=6gHJ1hG-pwcTsxLM7JuYZuaDu8cZ2MeOuUDF3LGy-4I,1432
|
27
27
|
strix/cli/tool_components/web_search_renderer.py,sha256=JnJa22ACIcRksfxxdenesUo8Th9cHSxo-fej9YcuYHs,911
|
28
28
|
strix/cli/tracer.py,sha256=Dhr-0GCrRWxQ7mij0wosqC5hH-4_79_3p11ZqYF1iw0,11058
|
@@ -31,7 +31,7 @@ strix/llm/config.py,sha256=iBv1tuUOUDcP2gVQWhjtN8wtO5lWOipsER7Rnc3p6k4,603
|
|
31
31
|
strix/llm/llm.py,sha256=775w8IJ7ovTujfxy1x4euZGLBftIpgqC6TFf39ZE0zM,12691
|
32
32
|
strix/llm/memory_compressor.py,sha256=U2eD90SmVOxjZJTiNwVmf4G6g3lnhfwqIPtwhLztoag,6856
|
33
33
|
strix/llm/request_queue.py,sha256=hBjj8c_6_D30-j1FCz-fm2eHJA7XGE7rk52j_8QR_4s,2090
|
34
|
-
strix/llm/utils.py,sha256=
|
34
|
+
strix/llm/utils.py,sha256=0Z0r6qo9IfUSOJt5FJsq3X-veXrA8A09frc2VIy-aS4,2540
|
35
35
|
strix/prompts/__init__.py,sha256=ocFjc9d-QolphPKr2cMVMHS52piJSSubBJdrwEFEBTI,3490
|
36
36
|
strix/prompts/coordination/root_agent.jinja,sha256=Z34uffB-lIt6Oei307dtD7oyXSmX2DSApeoRcA3LcnM,1902
|
37
37
|
strix/prompts/vulnerabilities/authentication_jwt.jinja,sha256=FA2z8zdugITAc6QphrocA5O8bqyTl9TN_iTJxrtyNkQ,3974
|
@@ -45,7 +45,7 @@ strix/prompts/vulnerabilities/ssrf.jinja,sha256=MfRs3MtvgAEauaOrCHpKIoRnS0YCZKyC
|
|
45
45
|
strix/prompts/vulnerabilities/xss.jinja,sha256=rVD25fOYxeVgd6k-7eePkzADxCi2XopPSSNPd4J9NWg,6202
|
46
46
|
strix/prompts/vulnerabilities/xxe.jinja,sha256=hZ_SlrQQPsDWN2UF4VhIhpXIDAK66su055uEpgAdt5Y,7102
|
47
47
|
strix/runtime/__init__.py,sha256=v2oQ1JnfZXOTU8N3NOEI_MbxNp8BfNj8hTgvjCsNGvY,445
|
48
|
-
strix/runtime/docker_runtime.py,sha256=
|
48
|
+
strix/runtime/docker_runtime.py,sha256=li9s07kHUynnNrfYjvy8exX2l8OhhL4xIUNMa8ORTHw,14798
|
49
49
|
strix/runtime/runtime.py,sha256=yUVLl9BTQChQgaba2jJCrEmHeJFDE9N0sF9M_XjqEbg,692
|
50
50
|
strix/runtime/tool_server.py,sha256=pKI_cL1aSEFC8b6Dqaz9bRfh0LvcCKwb6ZCN-v6OYls,6618
|
51
51
|
strix/tools/__init__.py,sha256=_uTsOImNlJ-q5FFuQBTIYpIAgTETNI7Pm2hkaLE-Z5Y,1743
|
@@ -83,7 +83,7 @@ strix/tools/reporting/reporting_actions.py,sha256=RIp3u3pmlRXx_uCr2Kc8R7yYiSe3pz
|
|
83
83
|
strix/tools/reporting/reporting_actions_schema.xml,sha256=y_g0iuyBuCh79fvA0ri8fOPlXY7uUd-P-mdzXLUyIJg,1629
|
84
84
|
strix/tools/terminal/__init__.py,sha256=xvflcrbLQ31o_K3cWFsIhTm7gxY5JF0nVnhOIadwFV0,80
|
85
85
|
strix/tools/terminal/terminal_actions.py,sha256=9BGsK7Io7PyW8YGpJfXHeJTP3AVqBAgaKZl-1YziF8Y,888
|
86
|
-
strix/tools/terminal/terminal_actions_schema.xml,sha256=
|
86
|
+
strix/tools/terminal/terminal_actions_schema.xml,sha256=O7B3cua238hkSwvHA5pPxkSFc6eSvttiDlW7xO8KkjU,7099
|
87
87
|
strix/tools/terminal/terminal_manager.py,sha256=cTWosczkMoSRSjQ-xPR56D5cIYcylA3NAZb4FSi32Ko,4838
|
88
88
|
strix/tools/terminal/terminal_session.py,sha256=peHQrYCty-KHYECbT8jOww06ayGUK_rAcnTlYIfQe00,16008
|
89
89
|
strix/tools/thinking/__init__.py,sha256=-v4fG4fyFkqsTSWspDtCT6IRlyRM8zeUwEM-kscaxDE,58
|
@@ -92,8 +92,8 @@ strix/tools/thinking/thinking_actions_schema.xml,sha256=otD4dOhQx4uyudLnjA_HIP6E
|
|
92
92
|
strix/tools/web_search/__init__.py,sha256=m5PCHXqeNVraLRLNIbh54Z2N4Y_75d-ftqwyq3dbCd0,70
|
93
93
|
strix/tools/web_search/web_search_actions.py,sha256=LRS3AjGO4JLIyu_B6-ogfWOsnENwqrrCa8Rz0vxuuGQ,3107
|
94
94
|
strix/tools/web_search/web_search_actions_schema.xml,sha256=Ihc3Gv4LaPI_MzBbwZOt3y4pwg9xmtl8KfPNvFihEP4,4805
|
95
|
-
strix_agent-0.1.
|
96
|
-
strix_agent-0.1.
|
97
|
-
strix_agent-0.1.
|
98
|
-
strix_agent-0.1.
|
99
|
-
strix_agent-0.1.
|
95
|
+
strix_agent-0.1.12.dist-info/LICENSE,sha256=fblpcTQlHjFL2NOSV_4XDJiz4q2bLtZ-l6yvlhPnueM,11345
|
96
|
+
strix_agent-0.1.12.dist-info/METADATA,sha256=kHjS55m-bu0JVCPd8n1crjOQJ6rJEz-s6tKddV3NJcs,6139
|
97
|
+
strix_agent-0.1.12.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
98
|
+
strix_agent-0.1.12.dist-info/entry_points.txt,sha256=sswIgnkzSVSzQ3Rd046g7mhIPQaj_7RYlXgU_bQelF0,45
|
99
|
+
strix_agent-0.1.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|