htmlgraph 0.28.6__py3-none-any.whl → 0.28.8__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.
htmlgraph/__init__.py CHANGED
@@ -123,7 +123,7 @@ from htmlgraph.types import (
123
123
  )
124
124
  from htmlgraph.work_type_utils import infer_work_type, infer_work_type_from_id
125
125
 
126
- __version__ = "0.28.6"
126
+ __version__ = "0.28.8"
127
127
  __all__ = [
128
128
  # Exceptions
129
129
  "HtmlGraphError",
htmlgraph/api/main.py CHANGED
@@ -719,7 +719,7 @@ def get_app(db_path: str) -> FastAPI:
719
719
  SELECT event_id, agent_id, event_type, timestamp, status
720
720
  FROM agent_events
721
721
  WHERE parent_event_id = ?
722
- ORDER BY timestamp ASC
722
+ ORDER BY timestamp DESC
723
723
  """
724
724
  async with db.execute(child_query, (parent_event_id,)) as child_cursor:
725
725
  child_rows = await child_cursor.fetchall()
@@ -1116,7 +1116,7 @@ def get_app(db_path: str) -> FastAPI:
1116
1116
  feature_id
1117
1117
  FROM agent_events
1118
1118
  WHERE parent_event_id = ?
1119
- ORDER BY timestamp ASC
1119
+ ORDER BY timestamp DESC
1120
1120
  """
1121
1121
 
1122
1122
  # Recursive helper to fetch children at any depth
@@ -2302,7 +2302,7 @@ def get_app(db_path: str) -> FastAPI:
2302
2302
  cost_tokens
2303
2303
  FROM agent_events
2304
2304
  WHERE timestamp >= ? AND timestamp < datetime('now')
2305
- ORDER BY timestamp ASC
2305
+ ORDER BY timestamp DESC
2306
2306
  LIMIT 1000
2307
2307
  """
2308
2308
  cursor = await db.execute(historical_query, [last_timestamp])
@@ -2369,7 +2369,7 @@ def get_app(db_path: str) -> FastAPI:
2369
2369
  cost_tokens
2370
2370
  FROM agent_events
2371
2371
  WHERE timestamp > ?
2372
- ORDER BY timestamp ASC
2372
+ ORDER BY timestamp DESC
2373
2373
  LIMIT 100
2374
2374
  """
2375
2375
 
@@ -491,51 +491,56 @@ def extract_file_paths(tool_input: dict[str, Any], tool_name: str) -> list[str]:
491
491
  def format_tool_summary(
492
492
  tool_name: str, tool_input: dict[str, Any], tool_result: dict | None = None
493
493
  ) -> str:
494
- """Format a human-readable summary of the tool call."""
494
+ """
495
+ Format a human-readable summary of the tool call.
496
+
497
+ Returns only the description part (without tool name prefix) since tool_name
498
+ is stored as a separate field in the database. Frontend can format as needed.
499
+ """
495
500
  if tool_name == "Read":
496
- path = tool_input.get("file_path", "unknown")
497
- return f"Read: {path}"
501
+ path = str(tool_input.get("file_path", "unknown"))
502
+ return path
498
503
 
499
504
  elif tool_name == "Write":
500
- path = tool_input.get("file_path", "unknown")
501
- return f"Write: {path}"
505
+ path = str(tool_input.get("file_path", "unknown"))
506
+ return path
502
507
 
503
508
  elif tool_name == "Edit":
504
- path = tool_input.get("file_path", "unknown")
505
- old = tool_input.get("old_string", "")[:30]
506
- return f"Edit: {path} ({old}...)"
509
+ path = str(tool_input.get("file_path", "unknown"))
510
+ old = str(tool_input.get("old_string", ""))[:30]
511
+ return f"{path} ({old}...)"
507
512
 
508
513
  elif tool_name == "Bash":
509
- cmd = tool_input.get("command", "")[:60]
510
- desc = tool_input.get("description", "")
514
+ cmd = str(tool_input.get("command", ""))[:60]
515
+ desc = str(tool_input.get("description", ""))
511
516
  if desc:
512
- return f"Bash: {desc}"
513
- return f"Bash: {cmd}"
517
+ return desc
518
+ return cmd
514
519
 
515
520
  elif tool_name == "Glob":
516
- pattern = tool_input.get("pattern", "")
517
- return f"Glob: {pattern}"
521
+ pattern = str(tool_input.get("pattern", ""))
522
+ return pattern
518
523
 
519
524
  elif tool_name == "Grep":
520
- pattern = tool_input.get("pattern", "")
521
- return f"Grep: {pattern}"
525
+ pattern = str(tool_input.get("pattern", ""))
526
+ return pattern
522
527
 
523
528
  elif tool_name == "Task":
524
- desc = tool_input.get("description", "")[:50]
525
- agent = tool_input.get("subagent_type", "")
526
- return f"Task ({agent}): {desc}"
529
+ desc = str(tool_input.get("description", ""))[:50]
530
+ agent = str(tool_input.get("subagent_type", ""))
531
+ return f"({agent}): {desc}"
527
532
 
528
533
  elif tool_name == "TodoWrite":
529
534
  todos = tool_input.get("todos", [])
530
- return f"TodoWrite: {len(todos)} items"
535
+ return f"{len(todos)} items"
531
536
 
532
537
  elif tool_name == "WebSearch":
533
- query = tool_input.get("query", "")[:40]
534
- return f"WebSearch: {query}"
538
+ query = str(tool_input.get("query", ""))[:40]
539
+ return query
535
540
 
536
541
  elif tool_name == "WebFetch":
537
- url = tool_input.get("url", "")[:40]
538
- return f"WebFetch: {url}"
542
+ url = str(tool_input.get("url", ""))[:40]
543
+ return url
539
544
 
540
545
  elif tool_name == "UserQuery":
541
546
  # Extract the actual prompt text from the tool_input
@@ -546,7 +551,7 @@ def format_tool_summary(
546
551
  return preview
547
552
 
548
553
  else:
549
- return f"{tool_name}: {str(tool_input)[:50]}"
554
+ return str(tool_input)[:50]
550
555
 
551
556
 
552
557
  def record_event_to_sqlite(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.28.6
3
+ Version: 0.28.8
4
4
  Summary: HTML is All You Need - Graph database on web standards
5
5
  Project-URL: Homepage, https://github.com/Shakes-tzd/htmlgraph
6
6
  Project-URL: Documentation, https://github.com/Shakes-tzd/htmlgraph#readme
@@ -1,4 +1,4 @@
1
- htmlgraph/__init__.py,sha256=Ir54wx56rvFfWXaY8Gs5QPFn1Un66fiy6-JFZpBYyis,6595
1
+ htmlgraph/__init__.py,sha256=V0B14PG5igDUlgy7oLF90EXzfPf_B_HXmrqo4YnB9qU,6595
2
2
  htmlgraph/__init__.pyi,sha256=8JuFVuDll9jMx9s8ZQHt2tXic-geOJHiXUMB2YjmHhU,6683
3
3
  htmlgraph/agent_detection.py,sha256=wEmrDv4hssPX2OkEnJZBHPbalxcaloiJF_hOOow_5WE,3511
4
4
  htmlgraph/agent_registry.py,sha256=80TPYr4P0YMizPUbTH4N5wH6D84IKs-HPBLHGeeP6bY,9449
@@ -97,7 +97,7 @@ htmlgraph/api/broadcast.py,sha256=G2vsgbUFOeahy8l1GJwu5X2yBJAID02lgNXxyDMexx0,90
97
97
  htmlgraph/api/broadcast_routes.py,sha256=OJQaUx6_izB_TlyL5N7tzTx3nD9sFs3RUhehlRtl_3k,11376
98
98
  htmlgraph/api/broadcast_websocket.py,sha256=ZTHmLsYCExaCkHiDD7LNKQaAjaTQadNoO4OZOrGsU3Q,3822
99
99
  htmlgraph/api/cost_alerts_websocket.py,sha256=jmPJ0kO7PKXYe-MwN0rReQ6ACa6E--p9DaMCqDDs3IE,14478
100
- htmlgraph/api/main.py,sha256=UValgmvNF_BTqy-caB02k8-27xxt1zk5Af4efL9LF9Y,103438
100
+ htmlgraph/api/main.py,sha256=zYDj36inj9nl66WVYmdyKARXH0N_Ruynup23nCudVEM,103442
101
101
  htmlgraph/api/offline.py,sha256=u6RbmeoDPvPsFJYsTNhFZ6yoNE0bgYXFzUi2g2pmeYU,25881
102
102
  htmlgraph/api/presence.py,sha256=eF7j5yp7lgO9tF0_VMdE0zeWrUYIAYhgOUHSKe8dr70,14246
103
103
  htmlgraph/api/reactive.py,sha256=WW8bBCiu9RBCgNeKE-fohvklJNBnvWj_zdllPkZun2M,14941
@@ -226,7 +226,7 @@ htmlgraph/hooks/cigs_pretool_enforcer.py,sha256=LC5y5IrKdTx2aq5ht5U7Tceq0k63-7EI
226
226
  htmlgraph/hooks/concurrent_sessions.py,sha256=qOiwDfynphVG0-2pVBakEzOwMORU8ebN1gMjcN4S0z0,6476
227
227
  htmlgraph/hooks/context.py,sha256=tJ4dIL8uTFHyqyuuMc-ETDuOikeD5cN3Mdjmfg6W0HE,13108
228
228
  htmlgraph/hooks/drift_handler.py,sha256=UchkeVmjgI6J4NE4vKNTHsY6ZorvUHvp1FOfwTEY-Cs,17626
229
- htmlgraph/hooks/event_tracker.py,sha256=ltvNwIYgkonWXyfynU8ZwHtIwBN_udT2Hw5VWoZdee4,54329
229
+ htmlgraph/hooks/event_tracker.py,sha256=Q_K6t670XvgoLSQuZPnafKyOCAMxYpOJfrO7Ba2h97c,54425
230
230
  htmlgraph/hooks/git_commands.py,sha256=NPzthfzGJ_bkDi7soehHOxI9FLL-6BL8Tie9Byb_zf4,4803
231
231
  htmlgraph/hooks/hooks-config.example.json,sha256=tXpk-U-FZzGOoNJK2uiDMbIHCYEHA794J-El0fBwkqg,197
232
232
  htmlgraph/hooks/installer.py,sha256=NdZHOER7DHFyZYXiZIS-CgLt1ZUxJ4O4ju8HcPjJajs,11816
@@ -341,11 +341,11 @@ htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4be
341
341
  htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
342
342
  htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
343
343
  htmlgraph/templates/orchestration-view.html,sha256=DlS7LlcjH0oO_KYILjuF1X42t8QhKLH4F85rkO54alY,10472
344
- htmlgraph-0.28.6.data/data/htmlgraph/styles.css,sha256=oDUSC8jG-V-hKojOBO9J88hxAeY2wJrBYTq0uCwX_Y4,7135
345
- htmlgraph-0.28.6.data/data/htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4bet1H4ZsDpI,7642
346
- htmlgraph-0.28.6.data/data/htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
347
- htmlgraph-0.28.6.data/data/htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
348
- htmlgraph-0.28.6.dist-info/METADATA,sha256=CnCqJ2FscHn3F5y4INlg7vgzrxxF628Injt9cVYNYeQ,10220
349
- htmlgraph-0.28.6.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
350
- htmlgraph-0.28.6.dist-info/entry_points.txt,sha256=Wmdo5cx8pt6NoMsssVE2mZH1CZLSUsrg_3iSWatiyn0,103
351
- htmlgraph-0.28.6.dist-info/RECORD,,
344
+ htmlgraph-0.28.8.data/data/htmlgraph/styles.css,sha256=oDUSC8jG-V-hKojOBO9J88hxAeY2wJrBYTq0uCwX_Y4,7135
345
+ htmlgraph-0.28.8.data/data/htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4bet1H4ZsDpI,7642
346
+ htmlgraph-0.28.8.data/data/htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
347
+ htmlgraph-0.28.8.data/data/htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
348
+ htmlgraph-0.28.8.dist-info/METADATA,sha256=IPfCuODE1MboouvO5Y9AnXPSOaYrpjAC4zyKtOIACn0,10220
349
+ htmlgraph-0.28.8.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
350
+ htmlgraph-0.28.8.dist-info/entry_points.txt,sha256=Wmdo5cx8pt6NoMsssVE2mZH1CZLSUsrg_3iSWatiyn0,103
351
+ htmlgraph-0.28.8.dist-info/RECORD,,