snapcontext 2.2.0__tar.gz → 2.3.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.
- {snapcontext-2.2.0/snapcontext.egg-info → snapcontext-2.3.0}/PKG-INFO +35 -4
- {snapcontext-2.2.0 → snapcontext-2.3.0}/README.md +34 -3
- {snapcontext-2.2.0 → snapcontext-2.3.0}/pyproject.toml +1 -1
- {snapcontext-2.2.0 → snapcontext-2.3.0/snapcontext.egg-info}/PKG-INFO +35 -4
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/SOURCES.txt +1 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.py +408 -27
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_auto_017.py +190 -190
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_diff_editor_210.py +103 -103
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_editor_ast_220.py +1 -1
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_editor_propio_200.py +91 -91
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_exe_150.py +72 -72
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_jetbrains_170.py +115 -115
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_mcp_014.py +225 -225
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_mcp_140.py +255 -255
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_memoria_015.py +186 -186
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_permisos_013.py +190 -190
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_plan_012.py +279 -279
- snapcontext-2.3.0/tests/test_plan_mcp_230.py +223 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_v010.py +248 -248
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_validacion_130.py +133 -133
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_vscode_016.py +94 -94
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_web_160.py +95 -95
- {snapcontext-2.2.0 → snapcontext-2.3.0}/LICENSE +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/agentes.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/orquestador.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/setup.cfg +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/__pycache__/top_level.cpython-313.pyc +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/dependency_links.txt +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/entry_points.txt +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/requires.txt +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/snapcontext.egg-info/top_level.txt +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_agentes.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_deteccion.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_embeddings_110.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_orquestador.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/tests/test_web_120.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/web/__init__.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/web/app.py +0 -0
- {snapcontext-2.2.0 → snapcontext-2.3.0}/web/static/index.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snapcontext
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: SnapContext: Asistente de IA con contexto automático para desarrollo
|
|
5
5
|
Author-email: SnapContext Contributors <tu@email.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -275,7 +275,7 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
275
275
|
|
|
276
276
|
1. El proveedor de IA descompone la tarea en pasos JSON:
|
|
277
277
|
```json
|
|
278
|
-
{"descripcion": "...", "accion": "editar|ejecutar|consultar",
|
|
278
|
+
{"descripcion": "...", "accion": "editar|ejecutar|consultar|mcp",
|
|
279
279
|
"archivos": ["..."], "comando": "...",
|
|
280
280
|
"dependencias": [1, 2],
|
|
281
281
|
"condicion": "archivo_existe('src/main.py')"}
|
|
@@ -283,7 +283,8 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
283
283
|
2. Los pasos se muestran numerados y se pide confirmación.
|
|
284
284
|
3. Cada paso se ejecuta secuencialmente: **editar** usa el pipeline completo
|
|
285
285
|
(`_planificar` + `_bucle_test`), **ejecutar** lanza comandos shell,
|
|
286
|
-
**consultar** pregunta al proveedor.
|
|
286
|
+
**consultar** pregunta al proveedor y **mcp** (v2.3.0) ejecuta una
|
|
287
|
+
herramienta MCP guardando su resultado en el contexto del plan.
|
|
287
288
|
4. Tras cada paso eliges: continuar / reintentar / saltar / abortar. Al final
|
|
288
289
|
hay un resumen que se guarda en `historial.json`.
|
|
289
290
|
|
|
@@ -296,10 +297,40 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
296
297
|
- `archivo_existe('src/main.py')`
|
|
297
298
|
- `archivo_contiene('src/main.py', 'def main')`
|
|
298
299
|
- `comando_exito('flutter test')`
|
|
300
|
+
- `variable_existe('mi_variable')` *(v2.3.0)*
|
|
301
|
+
|
|
302
|
+
Además, desde v2.3.0 acepta **comparaciones dinámicas** con resultados
|
|
303
|
+
de pasos previos o variables dejadas en el contexto (por pasos `mcp`):
|
|
304
|
+
|
|
305
|
+
```json
|
|
306
|
+
{"condicion": "pasos[0].resultado == 'ok'"}
|
|
307
|
+
{"condicion": "resultados.mi_variable != ''"}
|
|
308
|
+
```
|
|
299
309
|
|
|
300
310
|
Si la condición es falsa, el paso se salta (con aviso) y el plan continúa.
|
|
311
|
+
### Pasos MCP y contexto dinámico (v2.3.0)
|
|
312
|
+
|
|
313
|
+
Un paso con `"accion": "mcp"` ejecuta una herramienta MCP del registro
|
|
314
|
+
(`grep`, `read_file`, `list_files`, `ast`, `git_status`, `git_diff`,
|
|
315
|
+
`execute_command`, ...) usando los campos `"herramienta"` y `"args"`.
|
|
316
|
+
El resultado queda disponible para los pasos posteriores:
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
{"descripcion": "buscar referencias", "accion": "mcp",
|
|
320
|
+
"herramienta": "grep", "args": {"patron": "def main"},
|
|
321
|
+
"variable": "coincidencias"}
|
|
322
|
+
{"descripcion": "usar resultado", "accion": "ejecutar",
|
|
323
|
+
"comando": "echo {{coincidencias}}"}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
- El resultado siempre se guarda también como `{{resultado}}`; si el paso
|
|
327
|
+
define `"variable"`, se guarda bajo ese nombre.
|
|
328
|
+
- `execute_command` soporta `background=true` (devuelve un `pid`
|
|
329
|
+
consultable con `execute_command_status`) y `capture_output=false` para
|
|
330
|
+
mostrar la salida en tiempo real.
|
|
331
|
+
|
|
301
332
|
- **Paralelismo**: con `--paralelo N` (junto a `--auto`) se ejecutan hasta N
|
|
302
|
-
pasos independientes a la vez; los logs llevan el identificador `[paso N]
|
|
333
|
+
pasos independientes a la vez; los logs llevan el identificador `[paso N]`. Desde v2.3.0 el planificador también respeta las dependencias dinámicas: un paso cuya condición usa una variable que otro paso aún no ha producido espera a que esté disponible:
|
|
303
334
|
|
|
304
335
|
```bash
|
|
305
336
|
snapcontext --plan "tarea grande" --auto --paralelo 3 --no-confirmar
|
|
@@ -230,7 +230,7 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
230
230
|
|
|
231
231
|
1. El proveedor de IA descompone la tarea en pasos JSON:
|
|
232
232
|
```json
|
|
233
|
-
{"descripcion": "...", "accion": "editar|ejecutar|consultar",
|
|
233
|
+
{"descripcion": "...", "accion": "editar|ejecutar|consultar|mcp",
|
|
234
234
|
"archivos": ["..."], "comando": "...",
|
|
235
235
|
"dependencias": [1, 2],
|
|
236
236
|
"condicion": "archivo_existe('src/main.py')"}
|
|
@@ -238,7 +238,8 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
238
238
|
2. Los pasos se muestran numerados y se pide confirmación.
|
|
239
239
|
3. Cada paso se ejecuta secuencialmente: **editar** usa el pipeline completo
|
|
240
240
|
(`_planificar` + `_bucle_test`), **ejecutar** lanza comandos shell,
|
|
241
|
-
**consultar** pregunta al proveedor.
|
|
241
|
+
**consultar** pregunta al proveedor y **mcp** (v2.3.0) ejecuta una
|
|
242
|
+
herramienta MCP guardando su resultado en el contexto del plan.
|
|
242
243
|
4. Tras cada paso eliges: continuar / reintentar / saltar / abortar. Al final
|
|
243
244
|
hay un resumen que se guarda en `historial.json`.
|
|
244
245
|
|
|
@@ -251,10 +252,40 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
251
252
|
- `archivo_existe('src/main.py')`
|
|
252
253
|
- `archivo_contiene('src/main.py', 'def main')`
|
|
253
254
|
- `comando_exito('flutter test')`
|
|
255
|
+
- `variable_existe('mi_variable')` *(v2.3.0)*
|
|
256
|
+
|
|
257
|
+
Además, desde v2.3.0 acepta **comparaciones dinámicas** con resultados
|
|
258
|
+
de pasos previos o variables dejadas en el contexto (por pasos `mcp`):
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{"condicion": "pasos[0].resultado == 'ok'"}
|
|
262
|
+
{"condicion": "resultados.mi_variable != ''"}
|
|
263
|
+
```
|
|
254
264
|
|
|
255
265
|
Si la condición es falsa, el paso se salta (con aviso) y el plan continúa.
|
|
266
|
+
### Pasos MCP y contexto dinámico (v2.3.0)
|
|
267
|
+
|
|
268
|
+
Un paso con `"accion": "mcp"` ejecuta una herramienta MCP del registro
|
|
269
|
+
(`grep`, `read_file`, `list_files`, `ast`, `git_status`, `git_diff`,
|
|
270
|
+
`execute_command`, ...) usando los campos `"herramienta"` y `"args"`.
|
|
271
|
+
El resultado queda disponible para los pasos posteriores:
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{"descripcion": "buscar referencias", "accion": "mcp",
|
|
275
|
+
"herramienta": "grep", "args": {"patron": "def main"},
|
|
276
|
+
"variable": "coincidencias"}
|
|
277
|
+
{"descripcion": "usar resultado", "accion": "ejecutar",
|
|
278
|
+
"comando": "echo {{coincidencias}}"}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
- El resultado siempre se guarda también como `{{resultado}}`; si el paso
|
|
282
|
+
define `"variable"`, se guarda bajo ese nombre.
|
|
283
|
+
- `execute_command` soporta `background=true` (devuelve un `pid`
|
|
284
|
+
consultable con `execute_command_status`) y `capture_output=false` para
|
|
285
|
+
mostrar la salida en tiempo real.
|
|
286
|
+
|
|
256
287
|
- **Paralelismo**: con `--paralelo N` (junto a `--auto`) se ejecutan hasta N
|
|
257
|
-
pasos independientes a la vez; los logs llevan el identificador `[paso N]
|
|
288
|
+
pasos independientes a la vez; los logs llevan el identificador `[paso N]`. Desde v2.3.0 el planificador también respeta las dependencias dinámicas: un paso cuya condición usa una variable que otro paso aún no ha producido espera a que esté disponible:
|
|
258
289
|
|
|
259
290
|
```bash
|
|
260
291
|
snapcontext --plan "tarea grande" --auto --paralelo 3 --no-confirmar
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
# Nombre verificado disponible en PyPI (18/08/2026): pypi.org/pypi/snapcontext → 404.
|
|
7
7
|
# Alternativas si algún día estuviera ocupado: "snapcontext-cli" o "snapcontext-tool".
|
|
8
8
|
name = "snapcontext"
|
|
9
|
-
version = "2.
|
|
9
|
+
version = "2.3.0"
|
|
10
10
|
description = "SnapContext: Asistente de IA con contexto automático para desarrollo"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
requires-python = ">=3.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snapcontext
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: SnapContext: Asistente de IA con contexto automático para desarrollo
|
|
5
5
|
Author-email: SnapContext Contributors <tu@email.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -275,7 +275,7 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
275
275
|
|
|
276
276
|
1. El proveedor de IA descompone la tarea en pasos JSON:
|
|
277
277
|
```json
|
|
278
|
-
{"descripcion": "...", "accion": "editar|ejecutar|consultar",
|
|
278
|
+
{"descripcion": "...", "accion": "editar|ejecutar|consultar|mcp",
|
|
279
279
|
"archivos": ["..."], "comando": "...",
|
|
280
280
|
"dependencias": [1, 2],
|
|
281
281
|
"condicion": "archivo_existe('src/main.py')"}
|
|
@@ -283,7 +283,8 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
283
283
|
2. Los pasos se muestran numerados y se pide confirmación.
|
|
284
284
|
3. Cada paso se ejecuta secuencialmente: **editar** usa el pipeline completo
|
|
285
285
|
(`_planificar` + `_bucle_test`), **ejecutar** lanza comandos shell,
|
|
286
|
-
**consultar** pregunta al proveedor.
|
|
286
|
+
**consultar** pregunta al proveedor y **mcp** (v2.3.0) ejecuta una
|
|
287
|
+
herramienta MCP guardando su resultado en el contexto del plan.
|
|
287
288
|
4. Tras cada paso eliges: continuar / reintentar / saltar / abortar. Al final
|
|
288
289
|
hay un resumen que se guarda en `historial.json`.
|
|
289
290
|
|
|
@@ -296,10 +297,40 @@ snapcontext --plan "tarea" --no-confirmar
|
|
|
296
297
|
- `archivo_existe('src/main.py')`
|
|
297
298
|
- `archivo_contiene('src/main.py', 'def main')`
|
|
298
299
|
- `comando_exito('flutter test')`
|
|
300
|
+
- `variable_existe('mi_variable')` *(v2.3.0)*
|
|
301
|
+
|
|
302
|
+
Además, desde v2.3.0 acepta **comparaciones dinámicas** con resultados
|
|
303
|
+
de pasos previos o variables dejadas en el contexto (por pasos `mcp`):
|
|
304
|
+
|
|
305
|
+
```json
|
|
306
|
+
{"condicion": "pasos[0].resultado == 'ok'"}
|
|
307
|
+
{"condicion": "resultados.mi_variable != ''"}
|
|
308
|
+
```
|
|
299
309
|
|
|
300
310
|
Si la condición es falsa, el paso se salta (con aviso) y el plan continúa.
|
|
311
|
+
### Pasos MCP y contexto dinámico (v2.3.0)
|
|
312
|
+
|
|
313
|
+
Un paso con `"accion": "mcp"` ejecuta una herramienta MCP del registro
|
|
314
|
+
(`grep`, `read_file`, `list_files`, `ast`, `git_status`, `git_diff`,
|
|
315
|
+
`execute_command`, ...) usando los campos `"herramienta"` y `"args"`.
|
|
316
|
+
El resultado queda disponible para los pasos posteriores:
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
{"descripcion": "buscar referencias", "accion": "mcp",
|
|
320
|
+
"herramienta": "grep", "args": {"patron": "def main"},
|
|
321
|
+
"variable": "coincidencias"}
|
|
322
|
+
{"descripcion": "usar resultado", "accion": "ejecutar",
|
|
323
|
+
"comando": "echo {{coincidencias}}"}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
- El resultado siempre se guarda también como `{{resultado}}`; si el paso
|
|
327
|
+
define `"variable"`, se guarda bajo ese nombre.
|
|
328
|
+
- `execute_command` soporta `background=true` (devuelve un `pid`
|
|
329
|
+
consultable con `execute_command_status`) y `capture_output=false` para
|
|
330
|
+
mostrar la salida en tiempo real.
|
|
331
|
+
|
|
301
332
|
- **Paralelismo**: con `--paralelo N` (junto a `--auto`) se ejecutan hasta N
|
|
302
|
-
pasos independientes a la vez; los logs llevan el identificador `[paso N]
|
|
333
|
+
pasos independientes a la vez; los logs llevan el identificador `[paso N]`. Desde v2.3.0 el planificador también respeta las dependencias dinámicas: un paso cuya condición usa una variable que otro paso aún no ha producido espera a que esté disponible:
|
|
303
334
|
|
|
304
335
|
```bash
|
|
305
336
|
snapcontext --plan "tarea grande" --auto --paralelo 3 --no-confirmar
|