ollaagent 0.1.8__tar.gz → 0.2.0__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.
Files changed (33) hide show
  1. {ollaagent-0.1.8 → ollaagent-0.2.0}/CHANGELOG.md +25 -0
  2. {ollaagent-0.1.8 → ollaagent-0.2.0}/PKG-INFO +1 -1
  3. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/agent.py +2 -7
  4. {ollaagent-0.1.8 → ollaagent-0.2.0}/pyproject.toml +1 -1
  5. {ollaagent-0.1.8 → ollaagent-0.2.0}/uv.lock +1 -1
  6. {ollaagent-0.1.8 → ollaagent-0.2.0}/.agentic_python/guidelines.md +0 -0
  7. {ollaagent-0.1.8 → ollaagent-0.2.0}/.agentic_python/reviewer_role.md +0 -0
  8. {ollaagent-0.1.8 → ollaagent-0.2.0}/.env.sample +0 -0
  9. {ollaagent-0.1.8 → ollaagent-0.2.0}/.gitignore +0 -0
  10. {ollaagent-0.1.8 → ollaagent-0.2.0}/.python-version +0 -0
  11. {ollaagent-0.1.8 → ollaagent-0.2.0}/AGENT.md +0 -0
  12. {ollaagent-0.1.8 → ollaagent-0.2.0}/CLAUDE.md +0 -0
  13. {ollaagent-0.1.8 → ollaagent-0.2.0}/LICENSE +0 -0
  14. {ollaagent-0.1.8 → ollaagent-0.2.0}/README.md +0 -0
  15. {ollaagent-0.1.8 → ollaagent-0.2.0}/README_ko.md +0 -0
  16. {ollaagent-0.1.8 → ollaagent-0.2.0}/main.py +0 -0
  17. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/__init__.py +0 -0
  18. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/config_loader.py +0 -0
  19. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/memory.py +0 -0
  20. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/ollama_client.py +0 -0
  21. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/permissions.py +0 -0
  22. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/plan_mode.py +0 -0
  23. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/subagent.py +0 -0
  24. {ollaagent-0.1.8 → ollaagent-0.2.0}/ollaAgent/tool_bash.py +0 -0
  25. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/__init__.py +0 -0
  26. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/conftest.py +0 -0
  27. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_agent.py +0 -0
  28. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_config_loader.py +0 -0
  29. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_memory.py +0 -0
  30. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_permissions.py +0 -0
  31. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_plan_mode.py +0 -0
  32. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_subagent.py +0 -0
  33. {ollaagent-0.1.8 → ollaagent-0.2.0}/tests/test_tool_bash.py +0 -0
@@ -7,6 +7,31 @@ Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.2.0] - 2026-03-23
11
+
12
+ ### Fixed
13
+ - 이중 출력 완전 해결 — `Live(auto_refresh=False)` + `live.refresh()` + `Markdown` 유지
14
+ - `Text` + 완료 후 Markdown 재출력 방식 폐기
15
+ - chunk마다 즉시 Markdown 갱신 → 실시간성 + 가독성 동시 확보
16
+
17
+ ### Removed
18
+ - 불필요해진 `Text` import 제거
19
+ - `transient=True` 관련 테스트 3종 제거
20
+
21
+ ---
22
+
23
+ ## [0.1.9] - 2026-03-23
24
+
25
+ ### Fixed
26
+ - 스트리밍 중 plain text와 Markdown이 이중 출력되던 문제 — `Live(transient=True)` 적용으로 스트림 종료 시 plain text 자동 삭제
27
+
28
+ ### Tests
29
+ - `test_markdown_printed_once_after_stream` — Markdown 1회만 출력 검증
30
+ - `test_markdown_not_printed_when_no_content` — content 없으면 Markdown 미출력 검증
31
+ - `test_live_created_with_transient_true` — `transient=True` 설정 검증
32
+
33
+ ---
34
+
10
35
  ## [0.1.8] - 2026-03-23
11
36
 
12
37
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ollaagent
3
- Version: 0.1.8
3
+ Version: 0.2.0
4
4
  Summary: Local LLM agent powered by ollama — memory, plan mode, subagents
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -15,7 +15,7 @@ try:
15
15
  except ImportError:
16
16
  pass # Windows 환경에서는 무시
17
17
 
18
- __version__ = "0.1.8"
18
+ __version__ = "0.2.0"
19
19
 
20
20
  from dotenv import load_dotenv
21
21
  from ollama import Client
@@ -23,7 +23,6 @@ from rich.console import Console
23
23
  from rich.live import Live
24
24
  from rich.markdown import Markdown
25
25
  from rich.panel import Panel
26
- from rich.text import Text
27
26
 
28
27
  from ollaAgent.config_loader import build_system_prompt, load_config
29
28
  from ollaAgent.memory import SESSION_DIR, SessionMemory, save_session
@@ -420,17 +419,13 @@ def stream_response(stream: Any) -> tuple[str, str, dict[int, dict], int]:
420
419
  content = msg.get("content") or ""
421
420
  if content:
422
421
  assistant_content += content
423
- live.update(Text(assistant_content))
422
+ live.update(Markdown(assistant_content))
424
423
  live.refresh() # 매 chunk 즉시 출력
425
424
  _accumulate_tool_calls(msg, accumulated_tool_calls)
426
425
  # done=True 인 마지막 chunk에서 토큰 수 캡처
427
426
  if chunk.get("done"):
428
427
  prompt_eval_count = chunk.get("prompt_eval_count") or 0
429
428
 
430
- # 스트림 완료 후 Markdown으로 최종 렌더링 (가독성 확보)
431
- if assistant_content:
432
- console.print(Markdown(assistant_content))
433
-
434
429
  return (
435
430
  assistant_content,
436
431
  thinking_content,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ollaagent"
3
- version = "0.1.8"
3
+ version = "0.2.0"
4
4
  description = "Local LLM agent powered by ollama — memory, plan mode, subagents"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -187,7 +187,7 @@ wheels = [
187
187
 
188
188
  [[package]]
189
189
  name = "ollaagent"
190
- version = "0.1.7"
190
+ version = "0.1.9"
191
191
  source = { editable = "." }
192
192
  dependencies = [
193
193
  { name = "ollama" },
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