agent-cli 0.62.0__py3-none-any.whl → 0.64.0__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.
- agent_cli/dev/cli.py +23 -0
- agent_cli/dev/skill/SKILL.md +3 -2
- agent_cli/memory/_retrieval.py +18 -8
- agent_cli/memory/api.py +1 -1
- agent_cli/memory/client.py +1 -1
- agent_cli/memory/engine.py +1 -1
- agent_cli/scripts/check_plugin_skill_sync.py +50 -0
- agent_cli/server/whisper/wyoming_handler.py +22 -27
- {agent_cli-0.62.0.dist-info → agent_cli-0.64.0.dist-info}/METADATA +1 -1
- {agent_cli-0.62.0.dist-info → agent_cli-0.64.0.dist-info}/RECORD +13 -12
- {agent_cli-0.62.0.dist-info → agent_cli-0.64.0.dist-info}/WHEEL +0 -0
- {agent_cli-0.62.0.dist-info → agent_cli-0.64.0.dist-info}/entry_points.txt +0 -0
- {agent_cli-0.62.0.dist-info → agent_cli-0.64.0.dist-info}/licenses/LICENSE +0 -0
agent_cli/dev/cli.py
CHANGED
|
@@ -344,6 +344,19 @@ def _launch_editor(path: Path, editor: Editor) -> None:
|
|
|
344
344
|
_warn(f"Could not open editor: {e}")
|
|
345
345
|
|
|
346
346
|
|
|
347
|
+
def _write_prompt_to_worktree(worktree_path: Path, prompt: str) -> Path:
|
|
348
|
+
"""Write the prompt to .claude/TASK.md in the worktree.
|
|
349
|
+
|
|
350
|
+
This makes the task description available to the spawned agent
|
|
351
|
+
and provides a record of what was requested.
|
|
352
|
+
"""
|
|
353
|
+
claude_dir = worktree_path / ".claude"
|
|
354
|
+
claude_dir.mkdir(parents=True, exist_ok=True)
|
|
355
|
+
task_file = claude_dir / "TASK.md"
|
|
356
|
+
task_file.write_text(prompt + "\n")
|
|
357
|
+
return task_file
|
|
358
|
+
|
|
359
|
+
|
|
347
360
|
def _format_env_prefix(env: dict[str, str]) -> str:
|
|
348
361
|
"""Format environment variables as shell prefix.
|
|
349
362
|
|
|
@@ -627,6 +640,11 @@ def new( # noqa: PLR0912, PLR0915
|
|
|
627
640
|
# Only warn if user explicitly requested direnv
|
|
628
641
|
_warn("direnv not installed, skipping .envrc setup")
|
|
629
642
|
|
|
643
|
+
# Write prompt to worktree (makes task available to the spawned agent)
|
|
644
|
+
if prompt:
|
|
645
|
+
task_file = _write_prompt_to_worktree(result.path, prompt)
|
|
646
|
+
_success(f"Wrote task to {task_file.relative_to(result.path)}")
|
|
647
|
+
|
|
630
648
|
# Resolve editor and agent
|
|
631
649
|
resolved_editor = _resolve_editor(editor, editor_name, default_editor)
|
|
632
650
|
resolved_agent = _resolve_agent(agent, agent_name, default_agent)
|
|
@@ -1039,6 +1057,11 @@ def start_agent(
|
|
|
1039
1057
|
if not agent.is_available():
|
|
1040
1058
|
_error(f"{agent.name} is not installed. Install from: {agent.install_url}")
|
|
1041
1059
|
|
|
1060
|
+
# Write prompt to worktree (makes task available to the agent)
|
|
1061
|
+
if prompt:
|
|
1062
|
+
task_file = _write_prompt_to_worktree(wt.path, prompt)
|
|
1063
|
+
_success(f"Wrote task to {task_file.relative_to(wt.path)}")
|
|
1064
|
+
|
|
1042
1065
|
merged_args = _merge_agent_args(agent, agent_args)
|
|
1043
1066
|
agent_env = _get_agent_env(agent)
|
|
1044
1067
|
_info(f"Starting {agent.name} in {wt.path}...")
|
agent_cli/dev/skill/SKILL.md
CHANGED
|
@@ -47,8 +47,9 @@ agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
|
|
|
47
47
|
This creates:
|
|
48
48
|
1. A new git worktree with its own branch
|
|
49
49
|
2. Runs project setup (installs dependencies)
|
|
50
|
-
3.
|
|
51
|
-
4.
|
|
50
|
+
3. Saves your prompt to `.claude/TASK.md` in the worktree (for reference)
|
|
51
|
+
4. Opens a new terminal tab with an AI coding agent
|
|
52
|
+
5. Passes your prompt to the agent
|
|
52
53
|
|
|
53
54
|
**Important**: Use `--prompt-file` for prompts longer than a single line. The `--prompt` option passes text through the shell, which can cause issues with special characters (exclamation marks, dollar signs, backticks, quotes) in ZSH and other shells. Using `--prompt-file` avoids all shell quoting issues.
|
|
54
55
|
|
agent_cli/memory/_retrieval.py
CHANGED
|
@@ -25,6 +25,7 @@ LOGGER = logging.getLogger(__name__)
|
|
|
25
25
|
|
|
26
26
|
_DEFAULT_MMR_LAMBDA = 0.7
|
|
27
27
|
_SUMMARY_ROLE = "summary"
|
|
28
|
+
_MIN_MAX_EPSILON = 1e-8 # Avoid division by zero in min-max normalization
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
def gather_relevant_existing_memories(
|
|
@@ -135,7 +136,7 @@ def retrieve_memory(
|
|
|
135
136
|
include_summary: bool = True,
|
|
136
137
|
mmr_lambda: float = _DEFAULT_MMR_LAMBDA,
|
|
137
138
|
recency_weight: float = 0.2,
|
|
138
|
-
score_threshold: float =
|
|
139
|
+
score_threshold: float | None = None,
|
|
139
140
|
filters: dict[str, Any] | None = None,
|
|
140
141
|
) -> tuple[MemoryRetrieval, list[str]]:
|
|
141
142
|
"""Execute search + rerank + recency + MMR."""
|
|
@@ -161,8 +162,15 @@ def retrieve_memory(
|
|
|
161
162
|
seen_ids.add(rec_id)
|
|
162
163
|
raw_candidates.append(rec)
|
|
163
164
|
|
|
164
|
-
def
|
|
165
|
-
|
|
165
|
+
def _min_max_normalize(scores: list[float]) -> list[float]:
|
|
166
|
+
"""Normalize scores to 0-1 range using min-max scaling."""
|
|
167
|
+
if not scores:
|
|
168
|
+
return scores
|
|
169
|
+
min_score = min(scores)
|
|
170
|
+
max_score = max(scores)
|
|
171
|
+
if max_score - min_score < _MIN_MAX_EPSILON:
|
|
172
|
+
return [0.5] * len(scores) # All scores equal
|
|
173
|
+
return [(s - min_score) / (max_score - min_score) for s in scores]
|
|
166
174
|
|
|
167
175
|
def recency_score(meta: MemoryMetadata) -> float:
|
|
168
176
|
dt = datetime.fromisoformat(meta.created_at)
|
|
@@ -176,10 +184,12 @@ def retrieve_memory(
|
|
|
176
184
|
if raw_candidates:
|
|
177
185
|
pairs = [(query, mem.content) for mem in raw_candidates]
|
|
178
186
|
rr_scores = predict_relevance(reranker_model, pairs)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
187
|
+
# Normalize raw reranker scores to 0-1 range
|
|
188
|
+
normalized_scores = _min_max_normalize(rr_scores)
|
|
189
|
+
|
|
190
|
+
for mem, relevance in zip(raw_candidates, normalized_scores, strict=False):
|
|
191
|
+
# Filter out low-relevance memories if threshold is set
|
|
192
|
+
if score_threshold is not None and relevance < score_threshold:
|
|
183
193
|
continue
|
|
184
194
|
|
|
185
195
|
recency = recency_score(mem.metadata)
|
|
@@ -235,7 +245,7 @@ async def augment_chat_request(
|
|
|
235
245
|
include_global: bool = True,
|
|
236
246
|
mmr_lambda: float = _DEFAULT_MMR_LAMBDA,
|
|
237
247
|
recency_weight: float = 0.2,
|
|
238
|
-
score_threshold: float =
|
|
248
|
+
score_threshold: float | None = None,
|
|
239
249
|
filters: dict[str, Any] | None = None,
|
|
240
250
|
) -> tuple[ChatRequest, MemoryRetrieval | None, str, list[str]]:
|
|
241
251
|
"""Retrieve memory context and augment the chat request."""
|
agent_cli/memory/api.py
CHANGED
|
@@ -30,7 +30,7 @@ def create_app(
|
|
|
30
30
|
max_entries: int = 500,
|
|
31
31
|
mmr_lambda: float = 0.7,
|
|
32
32
|
recency_weight: float = 0.2,
|
|
33
|
-
score_threshold: float =
|
|
33
|
+
score_threshold: float | None = None,
|
|
34
34
|
enable_git_versioning: bool = True,
|
|
35
35
|
) -> FastAPI:
|
|
36
36
|
"""Create the FastAPI app for memory-backed chat."""
|
agent_cli/memory/client.py
CHANGED
|
@@ -49,7 +49,7 @@ class MemoryClient:
|
|
|
49
49
|
max_entries: int = 500,
|
|
50
50
|
mmr_lambda: float = 0.7,
|
|
51
51
|
recency_weight: float = 0.2,
|
|
52
|
-
score_threshold: float =
|
|
52
|
+
score_threshold: float | None = None,
|
|
53
53
|
start_watcher: bool = False,
|
|
54
54
|
enable_git_versioning: bool = True,
|
|
55
55
|
) -> None:
|
agent_cli/memory/engine.py
CHANGED
|
@@ -236,7 +236,7 @@ async def process_chat_request(
|
|
|
236
236
|
max_entries: int = _DEFAULT_MAX_ENTRIES,
|
|
237
237
|
mmr_lambda: float = _DEFAULT_MMR_LAMBDA,
|
|
238
238
|
recency_weight: float = 0.2,
|
|
239
|
-
score_threshold: float =
|
|
239
|
+
score_threshold: float | None = None,
|
|
240
240
|
postprocess_in_background: bool = True,
|
|
241
241
|
enable_git_versioning: bool = False,
|
|
242
242
|
filters: dict[str, Any] | None = None,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Check that plugin skill files are in sync with source files."""
|
|
3
|
+
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
SYNC_PAIRS = [
|
|
8
|
+
# Plugin marketplace distribution
|
|
9
|
+
("agent_cli/dev/skill/SKILL.md", ".claude-plugin/skills/agent-cli-dev/SKILL.md"),
|
|
10
|
+
("agent_cli/dev/skill/examples.md", ".claude-plugin/skills/agent-cli-dev/examples.md"),
|
|
11
|
+
# Project-local skill (for Claude Code working on this repo)
|
|
12
|
+
("agent_cli/dev/skill/SKILL.md", ".claude/skills/agent-cli-dev/SKILL.md"),
|
|
13
|
+
("agent_cli/dev/skill/examples.md", ".claude/skills/agent-cli-dev/examples.md"),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main() -> int:
|
|
18
|
+
"""Check that plugin skill files match source files."""
|
|
19
|
+
root = Path(__file__).parent.parent
|
|
20
|
+
out_of_sync = []
|
|
21
|
+
|
|
22
|
+
for source, target in SYNC_PAIRS:
|
|
23
|
+
source_path = root / source
|
|
24
|
+
target_path = root / target
|
|
25
|
+
|
|
26
|
+
if not source_path.exists():
|
|
27
|
+
print(f"Source not found: {source}")
|
|
28
|
+
continue
|
|
29
|
+
|
|
30
|
+
if not target_path.exists():
|
|
31
|
+
out_of_sync.append((source, target, "target missing"))
|
|
32
|
+
continue
|
|
33
|
+
|
|
34
|
+
if source_path.read_text() != target_path.read_text():
|
|
35
|
+
out_of_sync.append((source, target, "content differs"))
|
|
36
|
+
|
|
37
|
+
if out_of_sync:
|
|
38
|
+
print("Plugin skill files are out of sync:")
|
|
39
|
+
for source, target, reason in out_of_sync:
|
|
40
|
+
print(f" {source} -> {target} ({reason})")
|
|
41
|
+
print("\nRun:")
|
|
42
|
+
print(" cp agent_cli/dev/skill/*.md .claude-plugin/skills/agent-cli-dev/")
|
|
43
|
+
print(" cp agent_cli/dev/skill/*.md .claude/skills/agent-cli-dev/")
|
|
44
|
+
return 1
|
|
45
|
+
|
|
46
|
+
return 0
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
sys.exit(main())
|
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import io
|
|
6
5
|
import logging
|
|
7
|
-
import wave
|
|
8
6
|
from functools import partial
|
|
9
7
|
from typing import TYPE_CHECKING
|
|
10
8
|
|
|
11
9
|
from wyoming.asr import Transcribe, Transcript
|
|
12
|
-
from wyoming.audio import AudioChunk, AudioStop
|
|
10
|
+
from wyoming.audio import AudioChunk, AudioChunkConverter, AudioStop
|
|
13
11
|
from wyoming.info import AsrModel, AsrProgram, Attribution, Describe, Info
|
|
14
12
|
from wyoming.server import AsyncEventHandler, AsyncServer
|
|
15
13
|
|
|
16
|
-
from agent_cli
|
|
14
|
+
from agent_cli import constants
|
|
17
15
|
from agent_cli.server.whisper.languages import WHISPER_LANGUAGE_CODES
|
|
16
|
+
from agent_cli.services import pcm_to_wav
|
|
18
17
|
|
|
19
18
|
if TYPE_CHECKING:
|
|
20
19
|
from wyoming.event import Event
|
|
@@ -49,8 +48,12 @@ class WyomingWhisperHandler(AsyncEventHandler):
|
|
|
49
48
|
"""
|
|
50
49
|
super().__init__(*args, **kwargs)
|
|
51
50
|
self._registry = registry
|
|
52
|
-
self.
|
|
53
|
-
self.
|
|
51
|
+
self._audio_bytes: bytes = b""
|
|
52
|
+
self._audio_converter = AudioChunkConverter(
|
|
53
|
+
rate=constants.AUDIO_RATE,
|
|
54
|
+
width=constants.AUDIO_FORMAT_WIDTH,
|
|
55
|
+
channels=constants.AUDIO_CHANNELS,
|
|
56
|
+
)
|
|
54
57
|
self._language: str | None = None
|
|
55
58
|
self._initial_prompt: str | None = None
|
|
56
59
|
|
|
@@ -80,39 +83,31 @@ class WyomingWhisperHandler(AsyncEventHandler):
|
|
|
80
83
|
|
|
81
84
|
async def _handle_audio_chunk(self, event: Event) -> bool:
|
|
82
85
|
"""Handle an audio chunk event."""
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if self._wav_file is None:
|
|
86
|
+
if not self._audio_bytes:
|
|
86
87
|
logger.debug("AudioChunk begin")
|
|
87
|
-
self._audio_buffer = io.BytesIO()
|
|
88
|
-
self._wav_file = wave.open(self._audio_buffer, "wb") # noqa: SIM115
|
|
89
|
-
setup_wav_file(
|
|
90
|
-
self._wav_file,
|
|
91
|
-
rate=chunk.rate,
|
|
92
|
-
channels=chunk.channels,
|
|
93
|
-
sample_width=chunk.width,
|
|
94
|
-
)
|
|
95
88
|
|
|
96
|
-
|
|
89
|
+
chunk = AudioChunk.from_event(event)
|
|
90
|
+
chunk = self._audio_converter.convert(chunk)
|
|
91
|
+
self._audio_bytes += chunk.audio
|
|
97
92
|
return True
|
|
98
93
|
|
|
99
94
|
async def _handle_audio_stop(self) -> bool:
|
|
100
95
|
"""Handle audio stop event - transcribe the collected audio."""
|
|
101
96
|
logger.debug("AudioStop")
|
|
102
97
|
|
|
103
|
-
if
|
|
98
|
+
if not self._audio_bytes:
|
|
104
99
|
logger.warning("AudioStop received but no audio data")
|
|
105
100
|
await self.write_event(Transcript(text="").event())
|
|
106
101
|
return False
|
|
107
102
|
|
|
108
|
-
#
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
self.
|
|
103
|
+
# Wrap PCM in WAV format for the backend
|
|
104
|
+
audio_data = pcm_to_wav(
|
|
105
|
+
self._audio_bytes,
|
|
106
|
+
sample_rate=constants.AUDIO_RATE,
|
|
107
|
+
sample_width=constants.AUDIO_FORMAT_WIDTH,
|
|
108
|
+
channels=constants.AUDIO_CHANNELS,
|
|
109
|
+
)
|
|
110
|
+
self._audio_bytes = b""
|
|
116
111
|
|
|
117
112
|
# Transcribe
|
|
118
113
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.64.0
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -37,7 +37,7 @@ agent_cli/core/utils.py,sha256=MHttXeGiM9qGUNxK0s6vAHthh033TDjaruqocdtMMFY,16802
|
|
|
37
37
|
agent_cli/core/vad.py,sha256=67-EBjY-pTOf61VhrjVdDXgaNIBwWFFFccYth_1rQmg,6569
|
|
38
38
|
agent_cli/core/watch.py,sha256=MKgGxxMe0yLlu78-XXqO4ferCpu_ljNr4MAzOMDsuuo,1951
|
|
39
39
|
agent_cli/dev/__init__.py,sha256=doTYiUFEBpnOxsQA69HQP9AA4QHBN0DjuHSTGRq5Xbg,551
|
|
40
|
-
agent_cli/dev/cli.py,sha256=
|
|
40
|
+
agent_cli/dev/cli.py,sha256=KH5RYAwJLSArnXDrccDmFN7OV1C9kwLHwoHWIiJfCHQ,52120
|
|
41
41
|
agent_cli/dev/project.py,sha256=wJMGKTK1rmw8letrV6l6wcLU1fkQQDjCSEixAnsvyaY,18971
|
|
42
42
|
agent_cli/dev/registry.py,sha256=c6t3ClyRFPvU4GGXJT79-D-qV4FqY7W_7P-tLT7LKZs,1887
|
|
43
43
|
agent_cli/dev/worktree.py,sha256=Yw8jlhkf8BeKFc6pPEazGXnUIvryvYwbUmYxTluXILs,26916
|
|
@@ -64,7 +64,7 @@ agent_cli/dev/editors/sublime.py,sha256=owEfRSMuArSeFKqk-LE2JOXaZy5QlQfHQ-l0I4k2
|
|
|
64
64
|
agent_cli/dev/editors/vim.py,sha256=Fo-IQMPVbIiwBdOfmkFxR37f96QW6xc5LV3Pvr3u-b0,1378
|
|
65
65
|
agent_cli/dev/editors/vscode.py,sha256=GOrl4FwVdDyuSn7t4lglgnVt_T6NtpjLVh1OWBxDMwE,318
|
|
66
66
|
agent_cli/dev/editors/zed.py,sha256=lRMhdN_SKmHBA1ulx8x-p7Th_0EGSIv6ppAE84xobU4,515
|
|
67
|
-
agent_cli/dev/skill/SKILL.md,sha256=
|
|
67
|
+
agent_cli/dev/skill/SKILL.md,sha256=r_QoJR5VLrsI7h-oopfJ8o89oWM43EHgy8IYYa52q9c,4421
|
|
68
68
|
agent_cli/dev/skill/examples.md,sha256=ZzCyfudBk4lMR-sz8ER9l5vi6hI3HTeUlvQorRFVol4,16405
|
|
69
69
|
agent_cli/dev/terminals/__init__.py,sha256=yUTNtvs1Do2hvhx56XxyfI-5HA5mjiv0IbJuuaL9TeE,371
|
|
70
70
|
agent_cli/dev/terminals/apple_terminal.py,sha256=s7GdxXPgbpSLKK1DUwjNpshQpjR5Nt1QbL_cKPefIRI,2595
|
|
@@ -88,13 +88,13 @@ agent_cli/memory/_indexer.py,sha256=iWIRG61g2O4_cUjJYDXe03hkpRO5kVAqOwDeCb7Efu0,
|
|
|
88
88
|
agent_cli/memory/_ingest.py,sha256=_WeFLTxrlWKFpyB1KR0tUWLgEq-eevB8ytAgpq6BOlY,13649
|
|
89
89
|
agent_cli/memory/_persistence.py,sha256=7TsphuYsJfJbp-294IvWmtW98G_Sag9GTm8AUGU9dtQ,5401
|
|
90
90
|
agent_cli/memory/_prompt.py,sha256=ncvYM5ewLrYRP8KizdFHtPQl2cWYg0SW0VQxA8rz_9E,4667
|
|
91
|
-
agent_cli/memory/_retrieval.py,sha256=
|
|
91
|
+
agent_cli/memory/_retrieval.py,sha256=K_2TUcgzfntBARPyf0K6VR3NIgHHJrqGFMP_53Nae_w,9778
|
|
92
92
|
agent_cli/memory/_store.py,sha256=m9mD1GxjdTXpnyL-X-MIU4cj28unqxJ_azV3kwM8blM,5086
|
|
93
93
|
agent_cli/memory/_streaming.py,sha256=-WlOPtH61ogCSJKQRpfYHp2gBgIIN6hIJqb5padjmpw,1379
|
|
94
94
|
agent_cli/memory/_tasks.py,sha256=XgEkN_3NCVQDWafZ_rqazpAE68yQ87x-amnQKMkfPXg,1469
|
|
95
|
-
agent_cli/memory/api.py,sha256=
|
|
96
|
-
agent_cli/memory/client.py,sha256=
|
|
97
|
-
agent_cli/memory/engine.py,sha256=
|
|
95
|
+
agent_cli/memory/api.py,sha256=riaGTOIw7g3KuDNcPtDy9wO44-D1wDtVadRj3RTT10k,3595
|
|
96
|
+
agent_cli/memory/client.py,sha256=XomHhP-hPSoosORkBKSY1dW3gjheFEVqAac0b-tAULo,9994
|
|
97
|
+
agent_cli/memory/engine.py,sha256=rABVC86b5wU1QxY3BM43RhvfDOxoRT7Ddm98BN_qCL4,11656
|
|
98
98
|
agent_cli/memory/entities.py,sha256=_8wyJz--tNa66CEtSpl2TUN_zeHQvMzm42htnDaOr6g,1219
|
|
99
99
|
agent_cli/memory/models.py,sha256=KK0wToEf-tXssYVL0hYaJlcADlJ3G2lcSXwo1UmA0VU,2352
|
|
100
100
|
agent_cli/rag/__init__.py,sha256=suQDSGBUlt4_KNxz2CyVqrJw58e64T3ltfmmg2F8iQY,543
|
|
@@ -109,6 +109,7 @@ agent_cli/rag/client.py,sha256=mFiZ4yjI75Vsehie6alsV1My50uIsp-G07Qz6SaNrZw,8913
|
|
|
109
109
|
agent_cli/rag/engine.py,sha256=XySDer0fNTsEUjbUby5yf7JqB7uCE7tw2A6tYJixHnI,9800
|
|
110
110
|
agent_cli/rag/models.py,sha256=uECWoeBChlkAK7uTM-pUnPGaaMO4EYJ3pJcAf8uh1vI,1043
|
|
111
111
|
agent_cli/scripts/__init__.py,sha256=QvI1gnTagN85mmKDy2IRw96MEU9DKRWKkhSKSBshGVY,78
|
|
112
|
+
agent_cli/scripts/check_plugin_skill_sync.py,sha256=abuiSjvj34mazYeKOG-Mw6y14uN_1Ie8dkcCs_M_RF0,1656
|
|
112
113
|
agent_cli/scripts/run-openwakeword.sh,sha256=jXZ3hegiL5TINFttvOPnnfDWuIR6x8Mv_pAEWij7Z08,446
|
|
113
114
|
agent_cli/scripts/run-piper-windows.ps1,sha256=jpy4-3NxCoBpT3mnNbmCCSGbahjbv34KozlQ3lCDpV4,1134
|
|
114
115
|
agent_cli/scripts/run-piper.sh,sha256=MAI1yTnmcn3z-t7UWwK5oSvpr9KNgh6Z2h7ns_dbYNc,877
|
|
@@ -161,7 +162,7 @@ agent_cli/server/whisper/api.py,sha256=_2z04tUfuQ6QnKMaZnikb5Ji7LbtCfKYs42MG6v-Q
|
|
|
161
162
|
agent_cli/server/whisper/languages.py,sha256=Tv3qsIOSQQLxw-v5Wy41jSS6uHG_YBiG-T2uJVVt3u0,2686
|
|
162
163
|
agent_cli/server/whisper/model_manager.py,sha256=LI92mkueu8o8m6AhzlUaaIWygnZucJa295-j7ymx7Ss,4925
|
|
163
164
|
agent_cli/server/whisper/model_registry.py,sha256=qoRkB0ex6aRtUlsUN5BGik-oIZlwJbVHGQKaCbf_yVg,789
|
|
164
|
-
agent_cli/server/whisper/wyoming_handler.py,sha256=
|
|
165
|
+
agent_cli/server/whisper/wyoming_handler.py,sha256=HjN565YfDHeVfaGjQfoy9xjCZPx_TvYvjRYgbKn3aOI,6634
|
|
165
166
|
agent_cli/server/whisper/backends/__init__.py,sha256=DfgyigwMLKiSfaRzZ1TTeV7fa9HWSmT1UJnJa-6el7k,2338
|
|
166
167
|
agent_cli/server/whisper/backends/base.py,sha256=gQi5EyMCFS464mKXGIKbh1vgtBm99eNkf93SCIYRYg0,2597
|
|
167
168
|
agent_cli/server/whisper/backends/faster_whisper.py,sha256=-BogM_-_rhlXKUZuW1qUN8zw2gD0ut1bJozPDP19knA,6717
|
|
@@ -172,8 +173,8 @@ agent_cli/services/asr.py,sha256=V6SV-USnMhK-0aE-pneiktU4HpmLqenmMb-jZ-_74zU,169
|
|
|
172
173
|
agent_cli/services/llm.py,sha256=Kwdo6pbMYI9oykF-RBe1iaL3KsYrNWTLdRSioewmsGQ,7199
|
|
173
174
|
agent_cli/services/tts.py,sha256=exKo-55_670mx8dQOzVSZkv6aWYLv04SVmBcjOlD458,14772
|
|
174
175
|
agent_cli/services/wake_word.py,sha256=j6Z8rsGq_vAdRevy9fkXIgLZd9UWfrIsefmTreNmM0c,4575
|
|
175
|
-
agent_cli-0.
|
|
176
|
-
agent_cli-0.
|
|
177
|
-
agent_cli-0.
|
|
178
|
-
agent_cli-0.
|
|
179
|
-
agent_cli-0.
|
|
176
|
+
agent_cli-0.64.0.dist-info/METADATA,sha256=WqgllIIkSkpdrweYCTidamE3s_F0eCLPLknMCM6Bj48,151909
|
|
177
|
+
agent_cli-0.64.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
178
|
+
agent_cli-0.64.0.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
|
|
179
|
+
agent_cli-0.64.0.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
|
|
180
|
+
agent_cli-0.64.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|