padwan-cli 0.6.0__tar.gz → 0.6.1__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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 polarsen-io
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,17 +1,27 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: padwan-cli
3
- Version: 0.6.0
4
- Summary: CLI and TUI for padwan-llm
5
- Author-email: julien.brayere@polarsen.com
6
- Requires-Dist: padwan-llm[realtime]>=0.9.0
3
+ Version: 0.6.1
4
+ Summary: CLI and TUI for padwan-ai
5
+ Author-email: julien.brayere@polarsen.io
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Classifier: Environment :: Console
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.15
13
+ Requires-Dist: padwan-ai[realtime]>=0.11.1
7
14
  Requires-Dist: piou[tui]>=0.36.0
8
15
  Requires-Dist: tracktolib>=0.74.0
9
- Requires-Dist: padwan-llm[langfuse]>=0.9.0 ; extra == 'langfuse'
10
- Requires-Dist: padwan-llm[otel]>=0.9.0 ; extra == 'otel'
16
+ Requires-Dist: padwan-ai[langfuse]>=0.11.1 ; extra == 'langfuse'
17
+ Requires-Dist: padwan-ai[otel]>=0.11.1 ; extra == 'otel'
11
18
  Requires-Dist: opentelemetry-sdk>=1.44 ; extra == 'otel'
12
19
  Requires-Dist: opentelemetry-exporter-otlp>=1.44 ; extra == 'otel'
13
20
  Requires-Dist: sounddevice>=0.5 ; extra == 'voice'
14
- Requires-Python: >=3.14
21
+ Requires-Python: >=3.15
22
+ Project-URL: Homepage, https://polarsen-io.github.io/padwan-cli
23
+ Project-URL: Source, https://github.com/polarsen-io/padwan-cli
24
+ Project-URL: Changelog, https://github.com/polarsen-io/padwan-cli/blob/master/CHANGELOG.md
15
25
  Provides-Extra: langfuse
16
26
  Provides-Extra: otel
17
27
  Provides-Extra: voice
@@ -19,10 +29,10 @@ Description-Content-Type: text/markdown
19
29
 
20
30
  # Padwan CLI
21
31
 
22
- Interactive CLI/TUI for [`padwan-llm`](https://github.com/polarsen-io/padwan-llm).
32
+ Interactive CLI/TUI for [`padwan-ai`](https://github.com/polarsen-io/padwan-ai).
23
33
 
24
34
  > [!NOTE]
25
- > This is a playground for experimenting with `padwan-llm` features (streaming, agents, MCP, thinking tokens, batch jobs, realtime voice) — not a production-grade tool. Expect rough edges and breaking changes.
35
+ > This is a playground for experimenting with `padwan-ai` features (streaming, agents, MCP, thinking tokens, batch jobs, realtime voice) — not a production-grade tool. Expect rough edges and breaking changes.
26
36
 
27
37
  <img alt="Chat demo" src="https://github.com/polarsen-io/padwan-cli/raw/master/docs/static/chat.gif" width="800"/>
28
38
 
@@ -67,7 +77,7 @@ uvx --from "padwan-cli[voice]" padwan-talk
67
77
 
68
78
  ## Tracing
69
79
 
70
- Pass `--trace <backend>` (on the one-shot, `chat send`, and `talk` commands) to instrument all LLM calls with [padwan-llm's OTel GenAI telemetry](https://github.com/polarsen-io/padwan-llm/blob/master/docs/observability.md):
80
+ Pass `--trace <backend>` (on the one-shot, `chat send`, and `talk` commands) to instrument all LLM calls with [padwan-ai's OTel GenAI telemetry](https://github.com/polarsen-io/padwan-ai/blob/master/docs/observability.md):
71
81
 
72
82
  ```bash
73
83
  # Langfuse, using the standard LANGFUSE_* env vars
@@ -1,9 +1,9 @@
1
1
  # Padwan CLI
2
2
 
3
- Interactive CLI/TUI for [`padwan-llm`](https://github.com/polarsen-io/padwan-llm).
3
+ Interactive CLI/TUI for [`padwan-ai`](https://github.com/polarsen-io/padwan-ai).
4
4
 
5
5
  > [!NOTE]
6
- > This is a playground for experimenting with `padwan-llm` features (streaming, agents, MCP, thinking tokens, batch jobs, realtime voice) — not a production-grade tool. Expect rough edges and breaking changes.
6
+ > This is a playground for experimenting with `padwan-ai` features (streaming, agents, MCP, thinking tokens, batch jobs, realtime voice) — not a production-grade tool. Expect rough edges and breaking changes.
7
7
 
8
8
  <img alt="Chat demo" src="https://github.com/polarsen-io/padwan-cli/raw/master/docs/static/chat.gif" width="800"/>
9
9
 
@@ -48,7 +48,7 @@ uvx --from "padwan-cli[voice]" padwan-talk
48
48
 
49
49
  ## Tracing
50
50
 
51
- Pass `--trace <backend>` (on the one-shot, `chat send`, and `talk` commands) to instrument all LLM calls with [padwan-llm's OTel GenAI telemetry](https://github.com/polarsen-io/padwan-llm/blob/master/docs/observability.md):
51
+ Pass `--trace <backend>` (on the one-shot, `chat send`, and `talk` commands) to instrument all LLM calls with [padwan-ai's OTel GenAI telemetry](https://github.com/polarsen-io/padwan-ai/blob/master/docs/observability.md):
52
52
 
53
53
  ```bash
54
54
  # Langfuse, using the standard LANGFUSE_* env vars
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  from .run import cli, main, main_tui
4
2
 
5
3
  __all__ = ("cli", "main", "main_tui")
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  from .run import batch_group
4
2
 
5
3
  __all__ = ["batch_group"]
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  from typing import TYPE_CHECKING
4
2
 
5
3
  from rich.table import Table
@@ -7,7 +5,7 @@ from rich.table import Table
7
5
  from ..utils import console
8
6
 
9
7
  if TYPE_CHECKING:
10
- from padwan_llm.gemini import BatchJob
8
+ from padwan_ai.gemini import BatchJob
11
9
 
12
10
 
13
11
  def format_job(job: BatchJob) -> None:
@@ -1,13 +1,11 @@
1
- from __future__ import annotations
2
-
3
1
  import asyncio
4
2
  from pathlib import Path
5
3
 
6
4
  from piou import CommandGroup, Option
7
5
  from piou.tui import TuiContext, TuiOption
8
6
 
9
- from padwan_llm import GEMINI_MODELS
10
- from padwan_llm.gemini import BatchRequest, BatchResult, GeminiClient
7
+ from padwan_ai import GEMINI_MODELS
8
+ from padwan_ai.gemini import BatchRequest, BatchResult, GeminiClient
11
9
  from ..widgets import BatchProgressWidget, BatchResultWidget
12
10
  from .format import console, format_job, format_job_table
13
11
  from .utils import load_prompts_from_file, save_results_to_file
@@ -1,11 +1,9 @@
1
- from __future__ import annotations
2
-
3
1
  import csv
4
2
  import json
5
3
  from pathlib import Path
6
4
  from typing import TYPE_CHECKING
7
5
 
8
- from padwan_llm.gemini import BatchRequest, BatchResult
6
+ from padwan_ai.gemini import BatchRequest, BatchResult
9
7
 
10
8
  if TYPE_CHECKING:
11
9
  from typing import Any
@@ -10,7 +10,7 @@ from piou import Option, CommandGroup
10
10
  from piou.tui import PromptStyle, TuiContext, TuiOption
11
11
  from textual.css.query import NoMatches
12
12
 
13
- from padwan_llm import (
13
+ from padwan_ai import (
14
14
  AgentSession,
15
15
  ContentPart,
16
16
  ConversationSnapshot,
@@ -26,9 +26,9 @@ from padwan_llm import (
26
26
  text_file_part,
27
27
  text_part,
28
28
  )
29
- from padwan_llm.content import AudioFormat
30
- from padwan_llm.gemini import GeminiClient
31
- from padwan_llm.gemini.models import ThinkingConfig
29
+ from padwan_ai.content import AudioFormat
30
+ from padwan_ai.gemini import GeminiClient
31
+ from padwan_ai.gemini.models import ThinkingConfig
32
32
  from .trace import TRACE_BACKENDS, TraceBackend, enable_tracing
33
33
  from .utils import ALL_MODELS, console
34
34
  from .widgets import (
@@ -52,7 +52,7 @@ DATAGOUV_MCP_URL = "https://mcp.data.gouv.fr/mcp"
52
52
  class _InMemoryStore:
53
53
  """ConversationStore keeping snapshots in memory across /chat:send calls.
54
54
 
55
- Implements the `padwan_llm.ConversationStore` protocol so that
55
+ Implements the `padwan_ai.ConversationStore` protocol so that
56
56
  `AgentSession.load` / `AgentSession.save` transparently preserve chat
57
57
  history across successive command invocations within the same TUI run.
58
58
  """
@@ -369,7 +369,7 @@ async def chat_send_fn(
369
369
  except Exception as e:
370
370
  # Surface the error inline: the outer handler is
371
371
  # only reached after session teardown, which can
372
- # hang on the MCP listener (see padwan-llm mcp.py).
372
+ # hang on the MCP listener (see padwan-ai mcp.py).
373
373
  ctx.mount_widget(ErrorMessage(str(e)))
374
374
  needs_new_text_widget = True
375
375
  ctx.set_silent_queue(False)
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  import json
4
2
  import sys
5
3
  from pathlib import Path
@@ -10,7 +8,7 @@ from piou.tui import get_tui_context
10
8
 
11
9
  from rich.table import Table
12
10
 
13
- from padwan_llm import (
11
+ from padwan_ai import (
14
12
  ANTHROPIC_MODELS,
15
13
  GEMINI_MODELS,
16
14
  GROK_MODELS,
@@ -20,9 +18,9 @@ from padwan_llm import (
20
18
  LLMClient,
21
19
  content_parts,
22
20
  )
23
- from padwan_llm._base import OnThought
24
- from padwan_llm.conversation import Message
25
- from padwan_llm.errors import Provider
21
+ from padwan_ai._base import OnThought
22
+ from padwan_ai.conversation import Message
23
+ from padwan_ai.errors import Provider
26
24
 
27
25
  from .utils import console
28
26
  from .batch import batch_group
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  import asyncio
4
2
  import contextlib
5
3
  import functools
@@ -15,9 +13,9 @@ from piou import Option
15
13
  from piou.tui import get_tui_context
16
14
  from tracktolib.utils import BytesBuffer
17
15
 
18
- from padwan_llm import RealtimeClient, RealtimeConnection, RealtimeServerEvent
19
- from padwan_llm.errors import LLMError
20
- from padwan_llm.openai.realtime import NO_TURN_DETECTION, REALTIME_SAMPLE_RATE
16
+ from padwan_ai import RealtimeClient, RealtimeConnection, RealtimeServerEvent
17
+ from padwan_ai.errors import LLMError
18
+ from padwan_ai.openai.realtime import NO_TURN_DETECTION, REALTIME_SAMPLE_RATE
21
19
 
22
20
  from .trace import TRACE_BACKENDS, TraceBackend, enable_tracing
23
21
  from .utils import console
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  import atexit
4
2
  import os
5
3
  from typing import Literal, get_args
@@ -21,7 +19,7 @@ def _missing_extra(backend: TraceBackend) -> SystemExit:
21
19
 
22
20
 
23
21
  def _enable_langfuse() -> None:
24
- from padwan_llm.langfuse import instrument
22
+ from padwan_ai.langfuse import instrument
25
23
 
26
24
  integration = instrument()
27
25
  atexit.register(integration.shutdown)
@@ -39,7 +37,7 @@ def _enable_otlp() -> None:
39
37
  from opentelemetry.sdk.trace import TracerProvider
40
38
  from opentelemetry.sdk.trace.export import BatchSpanProcessor
41
39
 
42
- from padwan_llm import otel
40
+ from padwan_ai import otel
43
41
 
44
42
  resource = Resource.create({"service.name": "padwan-cli"})
45
43
  tracer_provider = TracerProvider(resource=resource)
@@ -56,7 +54,7 @@ def _enable_otlp() -> None:
56
54
 
57
55
 
58
56
  def enable_tracing(backend: TraceBackend) -> None:
59
- """Instrument padwan-llm clients for this process, exporting to `backend`.
57
+ """Instrument padwan-ai clients for this process, exporting to `backend`.
60
58
 
61
59
  `langfuse` reads the standard `LANGFUSE_*` env vars; `otlp` uses the
62
60
  standard `OTEL_EXPORTER_OTLP_*` env vars. Exporters are flushed at exit.
@@ -1,6 +1,6 @@
1
1
  from rich.console import Console
2
2
 
3
- from padwan_llm import (
3
+ from padwan_ai import (
4
4
  ANTHROPIC_MODELS,
5
5
  GEMINI_MODELS,
6
6
  GROK_MODELS,
@@ -1,5 +1,3 @@
1
- from __future__ import annotations
2
-
3
1
  import json
4
2
  from dataclasses import dataclass
5
3
  from pathlib import Path
@@ -15,7 +13,7 @@ from textual.widgets import Static
15
13
  from piou.tui import StreamingMessage as _StreamingMessage
16
14
 
17
15
  if TYPE_CHECKING:
18
- from padwan_llm.gemini import BatchJob, BatchResult
16
+ from padwan_ai.gemini import BatchJob, BatchResult
19
17
 
20
18
  # Colors for chat messages
21
19
  USER_COLOR = "#87ceeb"
@@ -1,26 +1,40 @@
1
1
  [project]
2
2
  name = "padwan-cli"
3
- version = "0.6.0"
4
- description = "CLI and TUI for padwan-llm"
3
+ version = "0.6.1"
4
+ description = "CLI and TUI for padwan-ai"
5
5
  readme = "README.md"
6
- requires-python = ">=3.14"
6
+ license = "MIT"
7
+ license-files = ["LICENSE"]
8
+ requires-python = ">=3.15"
9
+ classifiers = [
10
+ "Environment :: Console",
11
+ "License :: OSI Approved :: MIT License",
12
+ "Operating System :: OS Independent",
13
+ "Programming Language :: Python :: 3 :: Only",
14
+ "Programming Language :: Python :: 3.15",
15
+ ]
7
16
  dependencies = [
8
- "padwan-llm[realtime]>=0.9.0",
17
+ "padwan-ai[realtime]>=0.11.1",
9
18
  "piou[tui]>=0.36.0",
10
19
  "tracktolib>=0.74.0",
11
20
  ]
12
21
 
13
22
  [[project.authors]]
14
- email = "julien.brayere@polarsen.com"
23
+ email = "julien.brayere@polarsen.io"
24
+
25
+ [project.urls]
26
+ Homepage = "https://polarsen-io.github.io/padwan-cli"
27
+ Source = "https://github.com/polarsen-io/padwan-cli"
28
+ Changelog = "https://github.com/polarsen-io/padwan-cli/blob/master/CHANGELOG.md"
15
29
 
16
30
  [project.optional-dependencies]
17
31
  voice = ["sounddevice>=0.5"]
18
32
  otel = [
19
- "padwan-llm[otel]>=0.9.0",
33
+ "padwan-ai[otel]>=0.11.1",
20
34
  "opentelemetry-sdk>=1.44",
21
35
  "opentelemetry-exporter-otlp>=1.44",
22
36
  ]
23
- langfuse = ["padwan-llm[langfuse]>=0.9.0"]
37
+ langfuse = ["padwan-ai[langfuse]>=0.11.1"]
24
38
 
25
39
  [project.scripts]
26
40
  padwan-cli = "padwan_cli:main_tui"
@@ -51,7 +65,7 @@ dev = [
51
65
  "pytest-asyncio>=1.3.0",
52
66
  "pytest-cov>=7.0.0",
53
67
  "ruff>=0.11.0",
54
- "padwan-llm[langfuse]>=0.9.0",
68
+ "padwan-ai[langfuse]>=0.11.1",
55
69
  "opentelemetry-sdk>=1.44",
56
70
  "opentelemetry-exporter-otlp>=1.44",
57
71
  ]
@@ -1,29 +1,43 @@
1
1
  [project]
2
2
  name = "padwan-cli"
3
- version = "0.6.0"
4
- description = "CLI and TUI for padwan-llm"
3
+ version = "0.6.1"
4
+ description = "CLI and TUI for padwan-ai"
5
5
  readme = "README.md"
6
+ license = "MIT"
7
+ license-files = ["LICENSE"]
6
8
  authors = [
7
- { email = "julien.brayere@polarsen.com" }
9
+ { email = "julien.brayere@polarsen.io" }
10
+ ]
11
+ requires-python = ">=3.15"
12
+ classifiers = [
13
+ "Environment :: Console",
14
+ "License :: OSI Approved :: MIT License",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3 :: Only",
17
+ "Programming Language :: Python :: 3.15",
8
18
  ]
9
- requires-python = ">=3.14"
10
19
  dependencies = [
11
- "padwan-llm[realtime]>=0.9.0",
20
+ "padwan-ai[realtime]>=0.11.1",
12
21
  "piou[tui]>=0.36.0",
13
22
  "tracktolib>=0.74.0",
14
23
  ]
15
24
 
25
+ [project.urls]
26
+ Homepage = "https://polarsen-io.github.io/padwan-cli"
27
+ Source = "https://github.com/polarsen-io/padwan-cli"
28
+ Changelog = "https://github.com/polarsen-io/padwan-cli/blob/master/CHANGELOG.md"
29
+
16
30
  [project.optional-dependencies]
17
31
  # `talk` command audio I/O; also needs the PortAudio system lib (libportaudio2).
18
32
  voice = ["sounddevice>=0.5"]
19
33
  # `--trace otlp`: OTel instrumentation with an OTLP exporter.
20
34
  otel = [
21
- "padwan-llm[otel]>=0.9.0",
35
+ "padwan-ai[otel]>=0.11.1",
22
36
  "opentelemetry-sdk>=1.44",
23
37
  "opentelemetry-exporter-otlp>=1.44",
24
38
  ]
25
39
  # `--trace langfuse`: OTel instrumentation with the Langfuse adapter.
26
- langfuse = ["padwan-llm[langfuse]>=0.9.0"]
40
+ langfuse = ["padwan-ai[langfuse]>=0.11.1"]
27
41
 
28
42
  [project.scripts]
29
43
  padwan-cli = "padwan_cli:main_tui"
@@ -45,7 +59,7 @@ dev = [
45
59
  "pytest-cov>=7.0.0",
46
60
  "ruff>=0.11.0",
47
61
  # keep the otel and langfuse extras type-checkable/testable in dev
48
- "padwan-llm[langfuse]>=0.9.0",
62
+ "padwan-ai[langfuse]>=0.11.1",
49
63
  "opentelemetry-sdk>=1.44",
50
64
  "opentelemetry-exporter-otlp>=1.44",
51
65
  ]