context-forge-cli 0.4.9__tar.gz → 0.4.10__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.
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/PKG-INFO +1 -1
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/token_analyzer.py +6 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/mcp_server.py +13 -3
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/pyproject.toml +1 -1
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/.contextforge.toml +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/.github/workflows/publish.yml +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/.gitignore +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/.python-version +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/AGENTS.md +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/PLAN.md +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/README.md +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/altimate_code.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/base.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/claude_code.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/claude_desktop.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/codex.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/gemini.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/registry.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/cli.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/analytics.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/compactor.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/db.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/injector.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/scanner.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/core/summarizer.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/models/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/models/config.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/models/session.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/app.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/clipboard.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/styles.tcss +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/session_detail.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/session_table.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/stats_panel.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/status_bar.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/tokens_panel.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/transfer_panel.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/utils/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/utils/display.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/utils/tokens.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/adapters/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/adapters/test_claude_code.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/conftest.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/__init__.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/test_compactor.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/test_db.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/test_injector.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/test_summarizer.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/core/test_token_analyzer.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/fixtures/claude_session_sample.jsonl +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/test_mcp_server.py +0 -0
- {context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: context-forge-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.10
|
|
4
4
|
Summary: Session manager and context bridge for agentic CLI tools
|
|
5
5
|
Project-URL: Homepage, https://github.com/emmver/contextforge
|
|
6
6
|
Project-URL: Repository, https://github.com/emmver/contextforge
|
|
@@ -21,6 +21,9 @@ class TurnStats:
|
|
|
21
21
|
text_tokens: int = 0
|
|
22
22
|
tool_call_tokens: int = 0
|
|
23
23
|
tool_result_tokens: int = 0
|
|
24
|
+
content: str = "" # full message text content
|
|
25
|
+
tool_calls: list[dict] = field(default_factory=list) # [{name, input}]
|
|
26
|
+
tool_results: list[dict] = field(default_factory=list) # [{output}]
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
@dataclass
|
|
@@ -102,6 +105,9 @@ def analyze_tokens(
|
|
|
102
105
|
text_tokens=text_tokens,
|
|
103
106
|
tool_call_tokens=tool_call_tokens,
|
|
104
107
|
tool_result_tokens=tool_result_tokens,
|
|
108
|
+
content=msg.content,
|
|
109
|
+
tool_calls=msg.tool_calls,
|
|
110
|
+
tool_results=msg.tool_results,
|
|
105
111
|
))
|
|
106
112
|
|
|
107
113
|
return SessionTokenReport(
|
|
@@ -16,9 +16,10 @@ mcp = FastMCP(
|
|
|
16
16
|
"ContextForge provides read-only access to indexed agentic-tool sessions "
|
|
17
17
|
"and their token usage. Start with list_sessions to discover what's available "
|
|
18
18
|
"(supports pagination via offset/limit and date filtering via window). "
|
|
19
|
-
"Use get_session_tokens for token stats — pass
|
|
20
|
-
"turns_limit/turns_offset to page through per-turn
|
|
21
|
-
"
|
|
19
|
+
"Use get_session_tokens for token stats and conversation content — pass "
|
|
20
|
+
"include_turns=True with turns_limit/turns_offset to page through per-turn "
|
|
21
|
+
"data including full message text, tool calls, and tool results. "
|
|
22
|
+
"Use get_token_analytics for aggregated stats across all tools."
|
|
22
23
|
),
|
|
23
24
|
)
|
|
24
25
|
|
|
@@ -187,6 +188,15 @@ def get_session_tokens(
|
|
|
187
188
|
"text_tokens": t.text_tokens,
|
|
188
189
|
"tool_call_tokens": t.tool_call_tokens,
|
|
189
190
|
"tool_result_tokens": t.tool_result_tokens,
|
|
191
|
+
"content": t.content[:8000],
|
|
192
|
+
"tool_calls": [
|
|
193
|
+
{"name": tc.get("name", "?"), "input": tc.get("input", "")[:4000]}
|
|
194
|
+
for tc in t.tool_calls
|
|
195
|
+
],
|
|
196
|
+
"tool_results": [
|
|
197
|
+
{"output": tr.get("output", "")[:4000]}
|
|
198
|
+
for tr in t.tool_results
|
|
199
|
+
],
|
|
190
200
|
}
|
|
191
201
|
for t in turns
|
|
192
202
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/adapters/claude_desktop.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/session_detail.py
RENAMED
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/session_table.py
RENAMED
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/stats_panel.py
RENAMED
|
File without changes
|
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/tokens_panel.py
RENAMED
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/contextforge/tui/widgets/transfer_panel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{context_forge_cli-0.4.9 → context_forge_cli-0.4.10}/tests/fixtures/claude_session_sample.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|