strix-agent 0.1.10__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.
@@ -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
- - Work NON-STOP until finding something significant
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(keymap_indicator.update, "[dim]ESC to stop agent[/dim]")
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
@@ -229,9 +229,6 @@ def clone_repository(repo_url: str, run_name: str) -> str:
229
229
  [
230
230
  git_executable,
231
231
  "clone",
232
- "--depth=1",
233
- "--no-recurse-submodules",
234
- "--single-branch",
235
232
  repo_url,
236
233
  str(clone_path),
237
234
  ],
@@ -580,10 +577,8 @@ def pull_docker_image() -> None:
580
577
  return
581
578
 
582
579
  console.print()
583
- console.print(f"[bold cyan]🐳 Pulling Docker image:[/bold cyan] {STRIX_IMAGE}")
584
- console.print(
585
- "[dim yellow]This only happens on first run and may take a few minutes...[/dim yellow]"
586
- )
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...[/]")
587
582
  console.print()
588
583
 
589
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[:250] + "..." if len(code) > 250 else 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}[/bold #22c55e]"
31
+ return f"[bold #22c55e]{target_url}[/]"
32
32
  if target_repo := target.get("target_repo"):
33
- return f"[bold #22c55e]{target_repo}[/bold #22c55e]"
33
+ return f"[bold #22c55e]{target_repo}[/]"
34
34
  if target_path := target.get("target_path"):
35
- return f"[bold #22c55e]{target_path}[/bold #22c55e]"
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}[/bold #22c55e]"
52
+ content = f"🤖 Spawned subagent [bold #22c55e]{name}[/]"
53
53
  if task:
54
54
  content += f"\n Task: [dim]{task}[/dim]"
55
55
 
@@ -125,7 +125,7 @@ class TerminalRenderer(BaseToolRenderer):
125
125
  if not command:
126
126
  return ""
127
127
 
128
- if len(command) > 200:
129
- command = command[:197] + "..."
128
+ if len(command) > 400:
129
+ command = command[:397] + "..."
130
130
 
131
131
  return cls.escape_markup(command)
@@ -20,7 +20,7 @@ class ThinkRenderer(BaseToolRenderer):
20
20
  header = "🧠 [bold #a855f7]Thinking[/]"
21
21
 
22
22
  if thought:
23
- thought_display = thought[:200] + "..." if len(thought) > 200 else 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/llm.py CHANGED
@@ -313,7 +313,7 @@ class LLM:
313
313
  completion_args["stop"] = ["</function>"]
314
314
 
315
315
  if self._should_include_reasoning_effort():
316
- completion_args["reasoning_effort"] = "medium"
316
+ completion_args["reasoning_effort"] = "high"
317
317
 
318
318
  queue = get_global_queue()
319
319
  response = await queue.make_request(completion_args)
@@ -348,7 +348,7 @@ class LLM:
348
348
 
349
349
  try:
350
350
  cost = completion_cost(response) or 0.0
351
- except (ValueError, TypeError, RuntimeError) as e:
351
+ except Exception as e: # noqa: BLE001
352
352
  logger.warning(f"Failed to calculate cost: {e}")
353
353
  cost = 0.0
354
354
 
@@ -370,5 +370,5 @@ class LLM:
370
370
  logger.info(f"Cache creation: {cache_creation_tokens} tokens written to cache")
371
371
 
372
372
  logger.info(f"Usage stats: {self.usage_stats}")
373
- except (AttributeError, TypeError, ValueError) as e:
373
+ except Exception as e: # noqa: BLE001
374
374
  logger.warning(f"Failed to update usage stats: {e}")
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})
@@ -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=f"strix-scan-{scan_id}",
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
- containers = self.client.containers.list(filters={"label": f"strix-scan-id={scan_id}"})
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: Execute one command at a time. For multiple commands, chain them with
59
- && or ; operators, or make separate tool calls.
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,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: strix-agent
3
- Version: 0.1.10
3
+ Version: 0.1.12
4
4
  Summary: Open-source AI Hackers for your apps
5
5
  License: Apache-2.0
6
6
  Keywords: cybersecurity,security,vulnerability,scanner,pentest,agent,ai,cli
@@ -47,9 +47,6 @@ Description-Content-Type: text/markdown
47
47
  [![Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
48
48
  [![Vercel AI Accelerator 2025](https://img.shields.io/badge/Vercel%20AI-Accelerator%202025-000000?style=flat&logo=vercel)](https://vercel.com/ai-accelerator)
49
49
  [![Status: Alpha](https://img.shields.io/badge/status-alpha-orange.svg)](https://github.com/usestrix/strix)
50
- [![Discord](https://dcbadge.limes.pink/api/server/yduEyduBsp?style=flat)](https://discord.gg/yduEyduBsp)
51
-
52
- **⚡ Use it to hack your apps before the bad guys do ⚡**
53
50
 
54
51
  </div>
55
52
 
@@ -174,15 +171,5 @@ Our managed platform provides:
174
171
 
175
172
  Have questions? Found a bug? Want to contribute? **[Join our Discord!](https://discord.gg/yduEyduBsp)**
176
173
 
177
- ---
178
-
179
- <div align="center">
180
-
181
- ### About • Links
182
-
183
- **[OmniSecure Inc.](https://omnisecure.ai)** • Applied AI Research Lab
184
-
185
- [Discord Community](https://discord.gg/yduEyduBsp) • [Enterprise Solutions](https://form.typeform.com/to/ljtvl6X0) • [Report Issues](https://github.com/usestrix/strix/issues)
186
-
187
174
  </div>
188
175
 
@@ -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=NDOnqVDC1Eayixmv2PZEO-OM0_Ok0fWLZ5fhS2XOHzI,15412
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=x05-SyJrZrodGbw-vS5f0oNMJrXzM2ESRKlQu83d3O8,39284
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=3T2ncIPXMvtPP_GRiai5zWuO4PXz89Xphet365LLcy4,21650
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,21 +17,21 @@ 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=uddPvUVpeCU3ihHfn3zpM-IaWC883A8lEsmDNJ4j6WQ,1208
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=9gcwJIzp9R9pOn8DtYv8WtRF1QL-sWXihGiA3JMbZmw,1981
24
- strix/cli/tool_components/terminal_renderer.py,sha256=09gP26djA9i3uz1Lwbc09gYn9EQQGoFBNqMM86607nw,3330
25
- strix/cli/tool_components/thinking_renderer.py,sha256=s8Y1V8lvDYv9sottCZPOWQmKLyvDP1wpHO22x7XMc_U,927
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
29
29
  strix/llm/__init__.py,sha256=tzsJlDGGQE_Hw917dyzBWtwXsajZsIS-qdlPuS6EmSY,139
30
30
  strix/llm/config.py,sha256=iBv1tuUOUDcP2gVQWhjtN8wtO5lWOipsER7Rnc3p6k4,603
31
- strix/llm/llm.py,sha256=wtzAh7THjPoZGOH12Fe-5IDZn_9qwwS7M9-4EfXFfWc,12719
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=M84mVstjWY3-fwc2KyVAcfpF3IMHWnbkjRpGUUQ1TcM,2474
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=n0RqsTuWqYSlSIyowtXbTkZ32_69vAPRhqP-Nq5JHyA,12695
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=X-dbr9Bybdx58qvA71GCHPCpdfj__85DpsUCf_t_1qk,6971
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.10.dist-info/LICENSE,sha256=fblpcTQlHjFL2NOSV_4XDJiz4q2bLtZ-l6yvlhPnueM,11345
96
- strix_agent-0.1.10.dist-info/METADATA,sha256=OIeEKEsIIN1KSrXmr4WvHgMDeQbcZ5xggLXVZxBaDok,6607
97
- strix_agent-0.1.10.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
98
- strix_agent-0.1.10.dist-info/entry_points.txt,sha256=sswIgnkzSVSzQ3Rd046g7mhIPQaj_7RYlXgU_bQelF0,45
99
- strix_agent-0.1.10.dist-info/RECORD,,
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,,