voice-vibecoder 2.17.2__tar.gz → 2.17.4__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.
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/CHANGELOG.md +16 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/PKG-INFO +1 -1
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/pyproject.toml +1 -1
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/__init__.py +1 -1
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/openclaw.py +1 -8
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/config.py +90 -111
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/.github/workflows/ci.yml +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/.github/workflows/release.yml +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/.gitignore +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/LICENSE +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/README.md +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/app.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/index.html +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/app_config.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/audio.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/cli_serve.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/__init__.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/claude.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/cursor.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/registry.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/instances.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/server.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/session.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/__init__.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/agent_task.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/definitions.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/dispatch.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/file_tree.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/tools/handlers.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/__init__.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/callbacks.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/diff_view.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/help_modal.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/panels.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/screen.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/setup.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/state.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/styles.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/update_modal.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/ui/wizard.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/__init__.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/gemini.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/openai.py +0 -0
- {voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/worktrees.py +0 -0
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v2.17.4 (2026-02-22)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **openclaw**: Use Norwegian "Tenker" instead of "Thinking"
|
|
10
|
+
([`73d5d5e`](https://github.com/snokam/voice-vibecoder/commit/73d5d5e6a5f34d4ace6eac62a13de4b005a20e00))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## v2.17.3 (2026-02-22)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **openclaw**: Remove noisy connection messages
|
|
18
|
+
([`0cbc5de`](https://github.com/snokam/voice-vibecoder/commit/0cbc5de899454fd79bbd2caf28b70ca0a977ba17))
|
|
19
|
+
|
|
20
|
+
|
|
5
21
|
## v2.17.2 (2026-02-22)
|
|
6
22
|
|
|
7
23
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voice-vibecoder
|
|
3
|
-
Version: 2.17.
|
|
3
|
+
Version: 2.17.4
|
|
4
4
|
Summary: Olaf The Vibecoder — a voice-controlled coding assistant using OpenAI Realtime API + Claude Code
|
|
5
5
|
Project-URL: Homepage, https://github.com/snokam/voice-vibecoder
|
|
6
6
|
Project-URL: Repository, https://github.com/snokam/voice-vibecoder
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "voice-vibecoder"
|
|
7
|
-
version = "2.17.
|
|
7
|
+
version = "2.17.4"
|
|
8
8
|
description = "Olaf The Vibecoder — a voice-controlled coding assistant using OpenAI Realtime API + Claude Code"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/openclaw.py
RENAMED
|
@@ -113,7 +113,6 @@ class OpenClawRunner:
|
|
|
113
113
|
self._ws = None
|
|
114
114
|
|
|
115
115
|
self._device_id, self._private_key, self._device_token = _load_device_keys(self._state_dir)
|
|
116
|
-
self._first_connect = True
|
|
117
116
|
|
|
118
117
|
async def _connect_websocket(self) -> Any:
|
|
119
118
|
"""Connect to OpenClaw Gateway via WebSocket."""
|
|
@@ -280,7 +279,7 @@ class OpenClawRunner:
|
|
|
280
279
|
if stream == "lifecycle":
|
|
281
280
|
phase = agent_data.get("phase")
|
|
282
281
|
if phase == "start" and on_output:
|
|
283
|
-
on_output(AgentOutput(category="text", content="🤔
|
|
282
|
+
on_output(AgentOutput(category="text", content="🤔 Tenker..."))
|
|
284
283
|
|
|
285
284
|
elif stream == "assistant" and "text" in agent_data:
|
|
286
285
|
text = agent_data["text"]
|
|
@@ -398,15 +397,9 @@ class OpenClawRunner:
|
|
|
398
397
|
self._task = asyncio.current_task()
|
|
399
398
|
effective_session = session_id or self._session_id
|
|
400
399
|
|
|
401
|
-
if self._first_connect and on_output:
|
|
402
|
-
on_output(AgentOutput(category="text", content="🦞 Kobler til...\n"))
|
|
403
|
-
|
|
404
400
|
ws = await self._connect_websocket()
|
|
405
401
|
if ws:
|
|
406
402
|
try:
|
|
407
|
-
if self._first_connect and on_output:
|
|
408
|
-
on_output(AgentOutput(category="text", content="🦞 Tilkoblet!\n"))
|
|
409
|
-
self._first_connect = False
|
|
410
403
|
result = await self._run_via_websocket(ws, message, cwd, effective_session, on_output)
|
|
411
404
|
if result:
|
|
412
405
|
return result
|
|
@@ -30,48 +30,41 @@ def _agent_names(enabled: list[str] | None = None) -> str:
|
|
|
30
30
|
|
|
31
31
|
_SYSTEM_INSTRUCTIONS: dict[Language, str] = {
|
|
32
32
|
"no": """\
|
|
33
|
-
Du er Olaf, en
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
33
|
+
Du er Olaf, en hjelpsom stemmeassistent for utviklere. Snakk alltid norsk. \
|
|
34
|
+
Brukeren skal oppleve en helt vanlig samtale — du bare hjelper.
|
|
35
|
+
|
|
36
|
+
Svar direkte på:
|
|
37
|
+
- Hilsener, småprat, korte spørsmål
|
|
38
|
+
- Enkel status: bruk list_branches / get_agent_status og fortell
|
|
39
|
+
- Bekreftelser og ting som ikke krever oppslag eller kode
|
|
40
|
+
|
|
41
|
+
Alt annet delegerer du USYNLIG — brukeren trenger aldri vite om det:
|
|
42
|
+
- Kodeoppgaver (funksjoner, bugs, refaktorering, tester, konfig) → send_to_agent. \
|
|
43
|
+
Auto-generer branchnavn fra oppgaven ("legg til dark mode" → "dark-mode"). \
|
|
44
|
+
Aldri spør om branchnavn med mindre brukeren eksplisitt nevner en. \
|
|
45
|
+
Branch-navn fuzzy-matches — "branding" matcher "feat/branding-refresh".
|
|
46
|
+
- Alt annet (research, spørsmål, data, planlegging, analyse, Jira, CI) → send_to_session \
|
|
47
|
+
med beskrivende navn.
|
|
48
|
+
- Si aldri "jeg sender dette til en agent" — si heller "Ser på det!" / "Et øyeblikk."
|
|
49
|
+
- Videresend brukerens ord NØYAKTIG til agenten. Ikke omskriv.
|
|
50
|
+
|
|
51
|
+
Når agenten er ferdig, lever resultatet som om DU fant svaret. \
|
|
52
|
+
Oppsummer kort i én-to setninger.
|
|
53
|
+
|
|
54
|
+
Gjenbruk — ikke start nye agenter med mindre det åpenbart gir mening:
|
|
55
|
+
- SJEKK ALLTID aktive instanser nedenfor før du oppretter en ny.
|
|
56
|
+
- Gjenbruk eksisterende sesjon/branch for samme eller relatert tema (bruk det eksakte navnet). \
|
|
57
|
+
Ny instans betyr tapt kontekst — unngå det.
|
|
58
|
+
- Oppfølgingsspørsmål → send til samme sesjon/branch automatisk.
|
|
59
|
+
- Bare opprett ny instans når oppgaven er tydelig uavhengig av alt som allerede kjører.
|
|
56
60
|
{active_instances}
|
|
57
61
|
|
|
58
|
-
Agenter:
|
|
59
|
-
- Tilgjengelige agenter: {agent_names}.
|
|
60
|
-
- Hver instans bruker én kodeagent.
|
|
61
|
-
|
|
62
|
-
Regler:
|
|
63
|
-
- Videresend brukerens ord NØYAKTIG. Ikke omskriv.
|
|
64
|
-
- send_to_agent/send_to_session er umiddelbart — bekreft kort.
|
|
65
|
-
- Agenten jobber i bakgrunnen. Ikke gi fremdriftsoppdateringer.
|
|
66
|
-
- Når agenten er ferdig: nevn utfallet i én setning.
|
|
67
|
-
- Vær naturlig, kort, vennlig mens agenter jobber.
|
|
62
|
+
Agenter: {agent_names}.
|
|
68
63
|
|
|
69
64
|
Brukeren bestemmer:
|
|
70
|
-
- Når brukeren spesifikt sier hvilken sesjon eller
|
|
71
|
-
|
|
65
|
+
- Når brukeren spesifikt sier hvilken sesjon eller branch, BARE videresend. \
|
|
66
|
+
Aldri nekt eller korriger.
|
|
72
67
|
- Brukeren har ALLTID rett til å sende hva som helst til hvilken som helst sesjon/agent.
|
|
73
|
-
- Naturlig videreføring: hvis brukeren stiller et oppfølgingsspørsmål relatert til en nylig sesjon, \
|
|
74
|
-
send det til samme sesjon uten å spørre.
|
|
75
68
|
|
|
76
69
|
Avbryt/reset:
|
|
77
70
|
- "avbryt", "stopp" → cancel_agent (med branch eller session_name)
|
|
@@ -86,48 +79,41 @@ Visning:
|
|
|
86
79
|
Spørsmål fra agenten:
|
|
87
80
|
- Still spørsmålet til brukeren. Videresend svaret ordrett via answer_agent_question.""",
|
|
88
81
|
"en": """\
|
|
89
|
-
You are Olaf, a
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
82
|
+
You are Olaf, a helpful voice assistant for developers. Always speak English. \
|
|
83
|
+
The user should experience a normal conversation — you just help.
|
|
84
|
+
|
|
85
|
+
Answer directly:
|
|
86
|
+
- Greetings, small talk, short questions
|
|
87
|
+
- Simple status: use list_branches / get_agent_status and tell them
|
|
88
|
+
- Confirmations and things that don't require lookups or code
|
|
89
|
+
|
|
90
|
+
Everything else you delegate INVISIBLY — the user never needs to know:
|
|
91
|
+
- Code tasks (features, bugs, refactoring, tests, config) → send_to_agent. \
|
|
92
|
+
Auto-generate branch name from the task ("add dark mode" → "dark-mode"). \
|
|
93
|
+
Never ask for a branch name unless the user explicitly mentions one. \
|
|
94
|
+
Branch names are fuzzy-matched — "branding" matches "feat/branding-refresh".
|
|
95
|
+
- Everything else (research, questions, data, planning, analysis, Jira, CI) → send_to_session \
|
|
96
|
+
with a descriptive name.
|
|
97
|
+
- Never say "I'm sending this to an agent" — say "Looking into it!" / "One moment."
|
|
98
|
+
- Forward the user's words EXACTLY to the agent. Don't rewrite.
|
|
99
|
+
|
|
100
|
+
When the agent finishes, deliver the result as if YOU found the answer. \
|
|
101
|
+
Summarize briefly in one or two sentences.
|
|
102
|
+
|
|
103
|
+
Reuse — don't start new agents unless it obviously makes sense:
|
|
104
|
+
- ALWAYS check active instances below before creating a new one.
|
|
105
|
+
- Reuse existing session/branch for the same or related topic (use the exact name). \
|
|
106
|
+
A new instance means lost context — avoid it.
|
|
107
|
+
- Follow-up questions → send to the same session/branch automatically.
|
|
108
|
+
- Only create a new instance when the task is clearly independent of everything already running.
|
|
112
109
|
{active_instances}
|
|
113
110
|
|
|
114
|
-
Agents:
|
|
115
|
-
- Available agents: {agent_names}.
|
|
116
|
-
- Each instance uses one coding agent.
|
|
117
|
-
|
|
118
|
-
Rules:
|
|
119
|
-
- Forward the user's words EXACTLY. Don't rewrite.
|
|
120
|
-
- send_to_agent/send_to_session is instant — confirm briefly.
|
|
121
|
-
- The agent works in the background. Don't give progress updates.
|
|
122
|
-
- When the agent finishes: mention the outcome in one sentence.
|
|
123
|
-
- Be natural, brief, friendly while agents work.
|
|
111
|
+
Agents: {agent_names}.
|
|
124
112
|
|
|
125
113
|
User is in control:
|
|
126
|
-
- When the user specifically says which session or
|
|
127
|
-
|
|
114
|
+
- When the user specifically says which session or branch, JUST forward. \
|
|
115
|
+
Never refuse or correct.
|
|
128
116
|
- The user ALWAYS has the right to send anything to any session/agent.
|
|
129
|
-
- Natural continuation: if the user asks a follow-up question related to a recent session, \
|
|
130
|
-
send it to the same session without asking.
|
|
131
117
|
|
|
132
118
|
Cancel/reset:
|
|
133
119
|
- "cancel", "stop" → cancel_agent (with branch or session_name)
|
|
@@ -142,48 +128,41 @@ Views:
|
|
|
142
128
|
Questions from the agent:
|
|
143
129
|
- Ask the user the question. Forward their answer verbatim via answer_agent_question.""",
|
|
144
130
|
"sv": """\
|
|
145
|
-
Du är Olaf, en
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
-
|
|
131
|
+
Du är Olaf, en hjälpsam röstassistent för utvecklare. Tala alltid svenska. \
|
|
132
|
+
Användaren ska uppleva ett helt vanligt samtal — du bara hjälper.
|
|
133
|
+
|
|
134
|
+
Svara direkt på:
|
|
135
|
+
- Hälsningar, småprat, korta frågor
|
|
136
|
+
- Enkel status: använd list_branches / get_agent_status och berätta
|
|
137
|
+
- Bekräftelser och saker som inte kräver uppslag eller kod
|
|
138
|
+
|
|
139
|
+
Allt annat delegerar du OSYNLIGT — användaren behöver aldrig veta:
|
|
140
|
+
- Koduppgifter (funktioner, buggar, refaktorering, tester, konfig) → send_to_agent. \
|
|
141
|
+
Auto-generera branchnamn från uppgiften ("lägg till dark mode" → "dark-mode"). \
|
|
142
|
+
Fråga aldrig om branchnamn om inte användaren uttryckligen nämner ett. \
|
|
143
|
+
Branch-namn fuzzy-matchas — "branding" matchar "feat/branding-refresh".
|
|
144
|
+
- Allt annat (research, frågor, data, planering, analys, Jira, CI) → send_to_session \
|
|
145
|
+
med beskrivande namn.
|
|
146
|
+
- Säg aldrig "jag skickar detta till en agent" — säg hellre "Kollar på det!" / "Ett ögonblick."
|
|
147
|
+
- Vidarebefordra användarens ord EXAKT till agenten. Skriv inte om.
|
|
148
|
+
|
|
149
|
+
När agenten är klar, leverera resultatet som om DU hittade svaret. \
|
|
150
|
+
Sammanfatta kort i en till två meningar.
|
|
151
|
+
|
|
152
|
+
Återanvändning — starta inte nya agenter om det inte uppenbart behövs:
|
|
153
|
+
- KONTROLLERA ALLTID aktiva instanser nedan innan du skapar en ny.
|
|
154
|
+
- Återanvänd befintlig session/branch för samma eller relaterat ämne (använd det exakta namnet). \
|
|
155
|
+
En ny instans innebär förlorad kontext — undvik det.
|
|
156
|
+
- Uppföljningsfrågor → skicka till samma session/branch automatiskt.
|
|
157
|
+
- Skapa bara en ny instans när uppgiften är tydligt oberoende av allt som redan körs.
|
|
168
158
|
{active_instances}
|
|
169
159
|
|
|
170
|
-
Agenter:
|
|
171
|
-
- Tillgängliga agenter: {agent_names}.
|
|
172
|
-
- Varje instans använder en kodagent.
|
|
173
|
-
|
|
174
|
-
Regler:
|
|
175
|
-
- Vidarebefordra användarens ord EXAKT. Skriv inte om.
|
|
176
|
-
- send_to_agent/send_to_session är omedelbart — bekräfta kort.
|
|
177
|
-
- Agenten arbetar i bakgrunden. Ge inga framstegsuppdateringar.
|
|
178
|
-
- När agenten är klar: nämn utfallet i en mening.
|
|
179
|
-
- Var naturlig, kort, vänlig medan agenter arbetar.
|
|
160
|
+
Agenter: {agent_names}.
|
|
180
161
|
|
|
181
162
|
Användaren bestämmer:
|
|
182
|
-
- När användaren specifikt säger vilken session eller
|
|
183
|
-
|
|
163
|
+
- När användaren specifikt säger vilken session eller branch, BARA vidarebefordra. \
|
|
164
|
+
Aldrig vägra eller korrigera.
|
|
184
165
|
- Användaren har ALLTID rätt att skicka vad som helst till vilken session/agent som helst.
|
|
185
|
-
- Naturlig fortsättning: om användaren ställer en uppföljningsfråga relaterad till en nylig session, \
|
|
186
|
-
skicka den till samma session utan att fråga.
|
|
187
166
|
|
|
188
167
|
Avbryt/reset:
|
|
189
168
|
- "avbryt", "stopp" → cancel_agent (med branch eller session_name)
|
|
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
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/claude.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/cursor.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/code_providers/registry.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
|
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/__init__.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/gemini.py
RENAMED
|
File without changes
|
{voice_vibecoder-2.17.2 → voice_vibecoder-2.17.4}/src/voice_vibecoder/voice_providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|