Initial commit
10
.idea/agent_v0.iml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.12 (agent_v0)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.12 (agent_v0)" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (agent_v0)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/agent_v0.iml" filepath="$PROJECT_DIR$/.idea/agent_v0.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
59
.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="6e7ca47c-fd5c-45bc-af97-1511df3ffa0f" name="Changes" comment="">
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/agent_v0.iml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/profiles_settings.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||||
|
</list>
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="Git.Settings">
|
||||||
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectColorInfo">{
|
||||||
|
"associatedIndex": 6
|
||||||
|
}</component>
|
||||||
|
<component name="ProjectId" id="35np2KNIlriXUSCmfa61F0G3M5G" />
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
|
"keyToString": {
|
||||||
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
|
"git-widget-placeholder": "master",
|
||||||
|
"settings.editor.selected.configurable": "settings.sync"
|
||||||
|
}
|
||||||
|
}]]></component>
|
||||||
|
<component name="SharedIndexes">
|
||||||
|
<attachedChunks>
|
||||||
|
<set>
|
||||||
|
<option value="bundled-python-sdk-f2b7a9f6281b-6e1f45a539f7-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.29346.142" />
|
||||||
|
</set>
|
||||||
|
</attachedChunks>
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="6e7ca47c-fd5c-45bc-af97-1511df3ffa0f" name="Changes" comment="" />
|
||||||
|
<created>1763755481384</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1763755481384</updated>
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
7
__init__.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# __init__.py
|
||||||
|
"""
|
||||||
|
agent_v0 : petit agent de capture de sessions (clics + screenshots)
|
||||||
|
pour RPA 100% vision.
|
||||||
|
|
||||||
|
Version v0 : squelette minimal.
|
||||||
|
"""
|
||||||
BIN
__pycache__/config.cpython-312.pyc
Normal file
BIN
__pycache__/event_captor.cpython-312.pyc
Normal file
BIN
__pycache__/key_captor.cpython-312.pyc
Normal file
BIN
__pycache__/logger_conf.cpython-312.pyc
Normal file
BIN
__pycache__/raw_session.cpython-312.pyc
Normal file
BIN
__pycache__/screen_capturer.cpython-312.pyc
Normal file
BIN
__pycache__/storage.cpython-312.pyc
Normal file
BIN
__pycache__/tray_ui.cpython-312.pyc
Normal file
BIN
__pycache__/uploader.cpython-312.pyc
Normal file
BIN
__pycache__/user_config.cpython-312.pyc
Normal file
BIN
__pycache__/window_info.cpython-312.pyc
Normal file
15
agent_config.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"user_id": "demo_user",
|
||||||
|
"user_label": "Démo agent_v0",
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos.",
|
||||||
|
"mode": "enriched",
|
||||||
|
"screenshot_mode": "crop",
|
||||||
|
"screenshot_crop_width": 900,
|
||||||
|
"screenshot_crop_height": 700,
|
||||||
|
"capture_hover": true,
|
||||||
|
"hover_min_idle_ms": 700,
|
||||||
|
"capture_scroll": true,
|
||||||
|
"network_save_path": ""
|
||||||
|
}
|
||||||
38
agent_v0_tray.spec
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['main.py'],
|
||||||
|
pathex=['/home/dom/ai/agent_v0'],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=0,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='agent_v0_tray',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=True,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
39
build.sh
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
|
||||||
|
echo "[agent_v0] Build depuis : $BASE_DIR"
|
||||||
|
|
||||||
|
# 1) Activer le venv
|
||||||
|
if [ ! -d ".venv" ]; then
|
||||||
|
echo "[agent_v0] Pas de .venv trouvé. Lance d'abord ./run.sh une fois pour le créer."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
|
echo "[agent_v0] Python : $(which python)"
|
||||||
|
|
||||||
|
# 2) Vérifier / installer pyinstaller
|
||||||
|
if ! command -v pyinstaller >/dev/null 2>&1; then
|
||||||
|
echo "[agent_v0] Installation de pyinstaller..."
|
||||||
|
pip install pyinstaller
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3) Nettoyage build précédent
|
||||||
|
rm -rf build dist *.spec
|
||||||
|
|
||||||
|
# 4) Build
|
||||||
|
echo "[agent_v0] Lancement de PyInstaller..."
|
||||||
|
pyinstaller \
|
||||||
|
--name agent_v0_tray \
|
||||||
|
--onefile \
|
||||||
|
--noconfirm \
|
||||||
|
--paths "$BASE_DIR" \
|
||||||
|
main.py
|
||||||
|
|
||||||
|
echo "[agent_v0] Build terminé."
|
||||||
|
echo "[agent_v0] Binaire disponible dans : $BASE_DIR/dist/agent_v0_tray"
|
||||||
2278
build/agent_v0_tray/Analysis-00.toc
Normal file
320
build/agent_v0_tray/EXE-00.toc
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
('/home/dom/ai/agent_v0/dist/agent_v0_tray',
|
||||||
|
True,
|
||||||
|
False,
|
||||||
|
False,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
False,
|
||||||
|
False,
|
||||||
|
None,
|
||||||
|
True,
|
||||||
|
False,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/agent_v0_tray.pkg',
|
||||||
|
[('pyi-contents-directory _internal', '', 'OPTION'),
|
||||||
|
('PYZ-00.pyz', '/home/dom/ai/agent_v0/build/agent_v0_tray/PYZ-00.pyz', 'PYZ'),
|
||||||
|
('struct',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/struct.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod01_archive',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod01_archive.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod02_importers',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod02_importers.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod03_ctypes',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod03_ctypes.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyiboot01_bootstrap',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_inspect',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_inspect.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_setuptools',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_setuptools.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_pkgutil',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_multiprocessing',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('main', '/home/dom/ai/agent_v0/main.py', 'PYSOURCE'),
|
||||||
|
('libpython3.12.so.1.0',
|
||||||
|
'/lib/x86_64-linux-gnu/libpython3.12.so.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('libXfixes.so.3', '/lib/x86_64-linux-gnu/libXfixes.so.3', 'BINARY'),
|
||||||
|
('libXrandr.so.2', '/lib/x86_64-linux-gnu/libXrandr.so.2', 'BINARY'),
|
||||||
|
('libX11.so.6', '/lib/x86_64-linux-gnu/libX11.so.6', 'BINARY'),
|
||||||
|
('python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('charset_normalizer/md.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('evdev/_uinput.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/evdev/_uinput.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('evdev/_input.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/evdev/_input.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingft.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingft.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imaging.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imaging.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_webp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_webp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingtk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingtk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_avif.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_avif.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingcms.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingcms.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingmath.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingmath.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||||
|
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||||
|
('libmd.so.0', '/lib/x86_64-linux-gnu/libmd.so.0', 'BINARY'),
|
||||||
|
('libXdmcp.so.6', '/lib/x86_64-linux-gnu/libXdmcp.so.6', 'BINARY'),
|
||||||
|
('libXau.so.6', '/lib/x86_64-linux-gnu/libXau.so.6', 'BINARY'),
|
||||||
|
('libbsd.so.0', '/lib/x86_64-linux-gnu/libbsd.so.0', 'BINARY'),
|
||||||
|
('libXrender.so.1', '/lib/x86_64-linux-gnu/libXrender.so.1', 'BINARY'),
|
||||||
|
('libXext.so.6', '/lib/x86_64-linux-gnu/libXext.so.6', 'BINARY'),
|
||||||
|
('libcrypto.so.3', '/lib/x86_64-linux-gnu/libcrypto.so.3', 'BINARY'),
|
||||||
|
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||||
|
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||||
|
('libssl.so.3', '/lib/x86_64-linux-gnu/libssl.so.3', 'BINARY'),
|
||||||
|
('libffi.so.8', '/lib/x86_64-linux-gnu/libffi.so.8', 'BINARY'),
|
||||||
|
('libreadline.so.8', '/lib/x86_64-linux-gnu/libreadline.so.8', 'BINARY'),
|
||||||
|
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||||
|
('pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'BINARY'),
|
||||||
|
('libgcc_s.so.1', '/lib/x86_64-linux-gnu/libgcc_s.so.1', 'BINARY'),
|
||||||
|
('libstdc++.so.6', '/lib/x86_64-linux-gnu/libstdc++.so.6', 'BINARY'),
|
||||||
|
('pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'BINARY'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/jaraco/text/Lorem ipsum.txt',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/text/Lorem '
|
||||||
|
'ipsum.txt',
|
||||||
|
'DATA'),
|
||||||
|
('certifi/py.typed',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/certifi/py.typed',
|
||||||
|
'DATA'),
|
||||||
|
('certifi/cacert.pem',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/certifi/cacert.pem',
|
||||||
|
'DATA'),
|
||||||
|
('base_library.zip',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/base_library.zip',
|
||||||
|
'DATA'),
|
||||||
|
('libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libpng16-00127801.so.16.50.0',
|
||||||
|
'pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libXau-154567c4.so.6.0.0',
|
||||||
|
'pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libxcb-64009ff3.so.1.1.0',
|
||||||
|
'pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libzstd-761a17b6.so.1.5.7',
|
||||||
|
'pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libtiff-295fd75c.so.6.2.0',
|
||||||
|
'pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libavif-01e67780.so.16.3.0',
|
||||||
|
'pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'SYMLINK')],
|
||||||
|
[],
|
||||||
|
False,
|
||||||
|
False,
|
||||||
|
1763765324,
|
||||||
|
[('run',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/bootloader/Linux-64bit-intel/run',
|
||||||
|
'EXECUTABLE')],
|
||||||
|
'/lib/x86_64-linux-gnu/libpython3.12.so.1.0')
|
||||||
315
build/agent_v0_tray/PKG-00.toc
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
('/home/dom/ai/agent_v0/build/agent_v0_tray/agent_v0_tray.pkg',
|
||||||
|
{'BINARY': True,
|
||||||
|
'DATA': True,
|
||||||
|
'EXECUTABLE': True,
|
||||||
|
'EXTENSION': True,
|
||||||
|
'PYMODULE': True,
|
||||||
|
'PYSOURCE': True,
|
||||||
|
'PYZ': False,
|
||||||
|
'SPLASH': True,
|
||||||
|
'SYMLINK': False},
|
||||||
|
[('pyi-contents-directory _internal', '', 'OPTION'),
|
||||||
|
('PYZ-00.pyz', '/home/dom/ai/agent_v0/build/agent_v0_tray/PYZ-00.pyz', 'PYZ'),
|
||||||
|
('struct',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/struct.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod01_archive',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod01_archive.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod02_importers',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod02_importers.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyimod03_ctypes',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/localpycs/pyimod03_ctypes.pyc',
|
||||||
|
'PYMODULE'),
|
||||||
|
('pyiboot01_bootstrap',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_inspect',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_inspect.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_setuptools',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_setuptools.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_pkgutil',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('pyi_rth_multiprocessing',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py',
|
||||||
|
'PYSOURCE'),
|
||||||
|
('main', '/home/dom/ai/agent_v0/main.py', 'PYSOURCE'),
|
||||||
|
('libpython3.12.so.1.0',
|
||||||
|
'/lib/x86_64-linux-gnu/libpython3.12.so.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('libXfixes.so.3', '/lib/x86_64-linux-gnu/libXfixes.so.3', 'BINARY'),
|
||||||
|
('libXrandr.so.2', '/lib/x86_64-linux-gnu/libXrandr.so.2', 'BINARY'),
|
||||||
|
('libX11.so.6', '/lib/x86_64-linux-gnu/libX11.so.6', 'BINARY'),
|
||||||
|
('python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/usr/lib/python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('charset_normalizer/md.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('evdev/_uinput.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/evdev/_uinput.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('evdev/_input.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/evdev/_input.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingft.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingft.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imaging.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imaging.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_webp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_webp.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingtk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingtk.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_avif.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_avif.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingcms.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingcms.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('PIL/_imagingmath.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PIL/_imagingmath.cpython-312-x86_64-linux-gnu.so',
|
||||||
|
'EXTENSION'),
|
||||||
|
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||||
|
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||||
|
('libmd.so.0', '/lib/x86_64-linux-gnu/libmd.so.0', 'BINARY'),
|
||||||
|
('libXdmcp.so.6', '/lib/x86_64-linux-gnu/libXdmcp.so.6', 'BINARY'),
|
||||||
|
('libXau.so.6', '/lib/x86_64-linux-gnu/libXau.so.6', 'BINARY'),
|
||||||
|
('libbsd.so.0', '/lib/x86_64-linux-gnu/libbsd.so.0', 'BINARY'),
|
||||||
|
('libXrender.so.1', '/lib/x86_64-linux-gnu/libXrender.so.1', 'BINARY'),
|
||||||
|
('libXext.so.6', '/lib/x86_64-linux-gnu/libXext.so.6', 'BINARY'),
|
||||||
|
('libcrypto.so.3', '/lib/x86_64-linux-gnu/libcrypto.so.3', 'BINARY'),
|
||||||
|
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||||
|
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||||
|
('libssl.so.3', '/lib/x86_64-linux-gnu/libssl.so.3', 'BINARY'),
|
||||||
|
('libffi.so.8', '/lib/x86_64-linux-gnu/libffi.so.8', 'BINARY'),
|
||||||
|
('libreadline.so.8', '/lib/x86_64-linux-gnu/libreadline.so.8', 'BINARY'),
|
||||||
|
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||||
|
('pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'BINARY'),
|
||||||
|
('libgcc_s.so.1', '/lib/x86_64-linux-gnu/libgcc_s.so.1', 'BINARY'),
|
||||||
|
('libstdc++.so.6', '/lib/x86_64-linux-gnu/libstdc++.so.6', 'BINARY'),
|
||||||
|
('pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'BINARY'),
|
||||||
|
('pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'BINARY'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED',
|
||||||
|
'DATA'),
|
||||||
|
('setuptools/_vendor/jaraco/text/Lorem ipsum.txt',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/text/Lorem '
|
||||||
|
'ipsum.txt',
|
||||||
|
'DATA'),
|
||||||
|
('certifi/py.typed',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/certifi/py.typed',
|
||||||
|
'DATA'),
|
||||||
|
('certifi/cacert.pem',
|
||||||
|
'/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/certifi/cacert.pem',
|
||||||
|
'DATA'),
|
||||||
|
('base_library.zip',
|
||||||
|
'/home/dom/ai/agent_v0/build/agent_v0_tray/base_library.zip',
|
||||||
|
'DATA'),
|
||||||
|
('libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'pillow.libs/libharfbuzz-525aa570.so.0.61210.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libpng16-00127801.so.16.50.0',
|
||||||
|
'pillow.libs/libpng16-00127801.so.16.50.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'pillow.libs/libfreetype-5bb46249.so.6.20.4',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'pillow.libs/libopenjp2-94e588ba.so.2.5.4',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libXau-154567c4.so.6.0.0',
|
||||||
|
'pillow.libs/libXau-154567c4.so.6.0.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libxcb-64009ff3.so.1.1.0',
|
||||||
|
'pillow.libs/libxcb-64009ff3.so.1.1.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'pillow.libs/libjpeg-a41b0190.so.62.4.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'pillow.libs/liblzma-64b7ab39.so.5.8.1',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libzstd-761a17b6.so.1.5.7',
|
||||||
|
'pillow.libs/libzstd-761a17b6.so.1.5.7',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libtiff-295fd75c.so.6.2.0',
|
||||||
|
'pillow.libs/libtiff-295fd75c.so.6.2.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'pillow.libs/libwebpmux-7f11e5ce.so.3.1.2',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'pillow.libs/libsharpyuv-95d8a097.so.0.1.2',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'pillow.libs/libwebp-d8b9687f.so.7.2.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'pillow.libs/libwebpdemux-747f2b49.so.2.0.17',
|
||||||
|
'SYMLINK'),
|
||||||
|
('libavif-01e67780.so.16.3.0',
|
||||||
|
'pillow.libs/libavif-01e67780.so.16.3.0',
|
||||||
|
'SYMLINK'),
|
||||||
|
('liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'pillow.libs/liblcms2-cc10e42f.so.2.0.17',
|
||||||
|
'SYMLINK')],
|
||||||
|
'libpython3.12.so.1.0',
|
||||||
|
False,
|
||||||
|
False,
|
||||||
|
False,
|
||||||
|
[],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None)
|
||||||
BIN
build/agent_v0_tray/PYZ-00.pyz
Normal file
1717
build/agent_v0_tray/PYZ-00.toc
Normal file
BIN
build/agent_v0_tray/agent_v0_tray.pkg
Normal file
BIN
build/agent_v0_tray/base_library.zip
Normal file
BIN
build/agent_v0_tray/localpycs/pyimod01_archive.pyc
Normal file
BIN
build/agent_v0_tray/localpycs/pyimod02_importers.pyc
Normal file
BIN
build/agent_v0_tray/localpycs/pyimod03_ctypes.pyc
Normal file
BIN
build/agent_v0_tray/localpycs/struct.pyc
Normal file
88
build/agent_v0_tray/warn-agent_v0_tray.txt
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
|
||||||
|
This file lists modules PyInstaller was not able to find. This does not
|
||||||
|
necessarily mean this module is required for running your program. Python and
|
||||||
|
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||||
|
example the module 'ntpath' only exists on Windows, whereas the module
|
||||||
|
'posixpath' only exists on Posix systems.
|
||||||
|
|
||||||
|
Types if import:
|
||||||
|
* top-level: imported at the top-level - look at these first
|
||||||
|
* conditional: imported within an if-statement
|
||||||
|
* delayed: imported within a function
|
||||||
|
* optional: imported within a try-except-statement
|
||||||
|
|
||||||
|
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||||
|
tracking down the missing module yourself. Thanks!
|
||||||
|
|
||||||
|
missing module named _winapi - imported by encodings (delayed, conditional, optional), shutil (conditional), subprocess (conditional), ntpath (optional), mimetypes (optional), multiprocessing.connection (optional), multiprocessing.spawn (delayed, conditional), multiprocessing.reduction (conditional), multiprocessing.shared_memory (conditional), multiprocessing.heap (conditional), multiprocessing.popen_spawn_win32 (top-level), asyncio.windows_events (top-level), asyncio.windows_utils (top-level)
|
||||||
|
missing module named msvcrt - imported by subprocess (optional), getpass (optional), multiprocessing.spawn (delayed, conditional), multiprocessing.popen_spawn_win32 (top-level), asyncio.windows_events (top-level), asyncio.windows_utils (top-level)
|
||||||
|
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||||
|
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||||
|
missing module named winreg - imported by importlib._bootstrap_external (conditional), platform (delayed, optional), mimetypes (optional), urllib.request (delayed, conditional, optional), requests.utils (delayed, conditional, optional), setuptools._distutils.compilers.C.msvc (top-level), setuptools.msvc (conditional)
|
||||||
|
missing module named nt - imported by shutil (conditional), importlib._bootstrap_external (conditional), os (delayed, conditional, optional), ntpath (optional), ctypes (delayed, conditional)
|
||||||
|
missing module named _scproxy - imported by urllib.request (conditional)
|
||||||
|
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||||
|
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||||
|
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
||||||
|
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
||||||
|
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||||
|
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||||
|
missing module named pyimod02_importers - imported by /home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py (delayed)
|
||||||
|
missing module named typing_extensions.Buffer - imported by setuptools._vendor.typing_extensions (top-level), setuptools._vendor.wheel.wheelfile (conditional)
|
||||||
|
missing module named typing_extensions.Literal - imported by setuptools._vendor.typing_extensions (top-level), setuptools.config._validate_pyproject.formats (conditional)
|
||||||
|
missing module named typing_extensions.Self - imported by setuptools._vendor.typing_extensions (top-level), setuptools.config.expand (conditional), setuptools.config.pyprojecttoml (conditional), setuptools.config._validate_pyproject.error_reporting (conditional)
|
||||||
|
missing module named typing_extensions.deprecated - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.sysconfig (conditional), setuptools._distutils.command.bdist (conditional)
|
||||||
|
missing module named typing_extensions.TypeAlias - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.compilers.C.base (conditional), setuptools._reqs (conditional), setuptools.warnings (conditional), setuptools._path (conditional), setuptools._distutils.dist (conditional), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), setuptools.dist (conditional), setuptools.command.bdist_egg (conditional), setuptools.compat.py311 (conditional)
|
||||||
|
missing module named typing_extensions.Unpack - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.util (conditional), setuptools._distutils.compilers.C.base (conditional), setuptools._distutils.cmd (conditional)
|
||||||
|
missing module named typing_extensions.TypeVarTuple - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.util (conditional), setuptools._distutils.compilers.C.base (conditional), setuptools._distutils.cmd (conditional)
|
||||||
|
missing module named jaraco - imported by setuptools._distutils.util (top-level), setuptools._vendor.jaraco.functools (top-level), setuptools._vendor.jaraco.context (top-level), setuptools._vendor.jaraco.text (top-level)
|
||||||
|
missing module named _overlapped - imported by asyncio.windows_events (top-level)
|
||||||
|
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
|
||||||
|
missing module named vms_lib - imported by platform (delayed, optional)
|
||||||
|
missing module named 'java.lang' - imported by platform (delayed, optional)
|
||||||
|
missing module named java - imported by platform (delayed)
|
||||||
|
missing module named _winreg - imported by platform (delayed, optional)
|
||||||
|
missing module named _wmi - imported by platform (optional)
|
||||||
|
missing module named usercustomize - imported by site (delayed, optional)
|
||||||
|
missing module named apport_python_hook - imported by sitecustomize (optional)
|
||||||
|
missing module named _typeshed - imported by setuptools._distutils.dist (conditional), setuptools.glob (conditional), setuptools.compat.py311 (conditional)
|
||||||
|
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional)
|
||||||
|
missing module named backports - imported by setuptools._vendor.jaraco.context (conditional)
|
||||||
|
missing module named importlib_resources - imported by setuptools._vendor.jaraco.text (optional)
|
||||||
|
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
|
||||||
|
missing module named simplejson - imported by requests.compat (conditional, optional)
|
||||||
|
missing module named dummy_threading - imported by requests.cookies (optional)
|
||||||
|
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
|
||||||
|
missing module named compression - imported by urllib3.util.request (optional), urllib3.response (optional)
|
||||||
|
missing module named 'h2.events' - imported by urllib3.http2.connection (top-level)
|
||||||
|
missing module named 'h2.connection' - imported by urllib3.http2.connection (top-level)
|
||||||
|
missing module named h2 - imported by urllib3.http2.connection (top-level)
|
||||||
|
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
|
||||||
|
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
|
||||||
|
missing module named socks - imported by urllib3.contrib.socks (optional)
|
||||||
|
missing module named cryptography - imported by urllib3.contrib.pyopenssl (top-level), requests (conditional, optional)
|
||||||
|
missing module named 'OpenSSL.crypto' - imported by urllib3.contrib.pyopenssl (delayed, conditional)
|
||||||
|
missing module named 'cryptography.x509' - imported by urllib3.contrib.pyopenssl (delayed, optional)
|
||||||
|
missing module named OpenSSL - imported by urllib3.contrib.pyopenssl (top-level)
|
||||||
|
missing module named chardet - imported by requests (optional)
|
||||||
|
missing module named 'pyodide.ffi' - imported by urllib3.contrib.emscripten.fetch (delayed, optional)
|
||||||
|
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
|
||||||
|
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
|
||||||
|
runtime module named six.moves - imported by pystray._base (top-level), pystray._win32 (top-level), Xlib.threaded (top-level), pystray._xorg (top-level), pynput._util (top-level)
|
||||||
|
missing module named StringIO - imported by six (conditional)
|
||||||
|
missing module named AppKit - imported by pystray._darwin (top-level), pynput.mouse._darwin (top-level)
|
||||||
|
missing module named Quartz - imported by pynput._util.darwin (top-level), pynput.keyboard._darwin (top-level), pynput.mouse._darwin (top-level)
|
||||||
|
missing module named CoreFoundation - imported by pynput._util.darwin (top-level)
|
||||||
|
missing module named HIServices - imported by pynput._util.darwin (top-level)
|
||||||
|
missing module named objc - imported by pystray._darwin (top-level), pynput._util.darwin (top-level)
|
||||||
|
missing module named 'ctypes.macholib' - imported by ctypes.util (conditional)
|
||||||
|
missing module named _uuid - imported by uuid (optional)
|
||||||
|
missing module named numpy - imported by PIL._typing (conditional, optional)
|
||||||
|
missing module named olefile - imported by PIL.FpxImagePlugin (top-level), PIL.MicImagePlugin (top-level)
|
||||||
|
missing module named defusedxml - imported by PIL.Image (optional)
|
||||||
|
missing module named 'gi.repository' - imported by pystray._appindicator (top-level), pystray._util.gtk (top-level), pystray._util.notify_dbus (top-level), pystray._gtk (top-level)
|
||||||
|
missing module named gi - imported by pystray._appindicator (top-level), pystray._util.gtk (top-level), pystray._util.notify_dbus (top-level), pystray._gtk (top-level)
|
||||||
|
missing module named PyObjCTools - imported by pystray._darwin (top-level)
|
||||||
|
missing module named Foundation - imported by pystray._darwin (top-level)
|
||||||
|
missing module named win32evtlog - imported by logging.handlers (delayed, optional)
|
||||||
|
missing module named win32evtlogutil - imported by logging.handlers (delayed, optional)
|
||||||
26617
build/agent_v0_tray/xref-agent_v0_tray.html
Normal file
34
config.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# config.py
|
||||||
|
"""
|
||||||
|
Configuration de base pour agent_v0.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
AGENT_VERSION = "0.1.0"
|
||||||
|
|
||||||
|
# Dossier racine du projet (là où se trouve ce fichier)
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent
|
||||||
|
|
||||||
|
# Endpoint de ton serveur (placeholder pour l'instant)
|
||||||
|
SERVER_URL = "https://example.com/api/traces/upload"
|
||||||
|
|
||||||
|
# Durée max d'une session en secondes (ex: 30 minutes)
|
||||||
|
MAX_SESSION_DURATION_S = 30 * 60
|
||||||
|
|
||||||
|
# Dossier racine local où stocker les sessions (chemin ABSOLU)
|
||||||
|
SESSIONS_ROOT = str(BASE_DIR / "sessions")
|
||||||
|
|
||||||
|
# Dossier et fichier de logs
|
||||||
|
LOGS_DIR = BASE_DIR / "logs"
|
||||||
|
LOG_FILE = LOGS_DIR / "agent_v0.log"
|
||||||
|
|
||||||
|
# Faut-il quitter l'application après un Stop session ?
|
||||||
|
EXIT_AFTER_SESSION = True
|
||||||
|
|
||||||
|
# Création des dossiers si besoin
|
||||||
|
os.makedirs(SESSIONS_ROOT, exist_ok=True)
|
||||||
|
os.makedirs(LOGS_DIR, exist_ok=True)
|
||||||
BIN
dist/agent_v0_tray
vendored
Executable file
140
event_captor.py
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
# event_captor.py
|
||||||
|
"""
|
||||||
|
Hooks souris pour agent_v0.
|
||||||
|
|
||||||
|
v0+ :
|
||||||
|
- écoute des clics souris globaux
|
||||||
|
- écoute du scroll (molette)
|
||||||
|
- détecte les périodes d'immobilité (hover) > hover_min_idle_ms
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
from typing import Callable, Optional
|
||||||
|
|
||||||
|
from pynput import mouse
|
||||||
|
|
||||||
|
MouseClickCallback = Callable[[str, int, int], None]
|
||||||
|
MouseScrollCallback = Callable[[int, int, int, int], None] # x, y, dx, dy
|
||||||
|
MouseHoverCallback = Callable[[int, int, int], None] # x, y, idle_ms
|
||||||
|
|
||||||
|
|
||||||
|
class EventCaptor:
|
||||||
|
"""
|
||||||
|
Capture les événements souris globaux et les relaie à des callbacks.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
on_mouse_click: MouseClickCallback,
|
||||||
|
on_scroll: Optional[MouseScrollCallback] = None,
|
||||||
|
on_hover: Optional[MouseHoverCallback] = None,
|
||||||
|
hover_min_idle_ms: int = 700,
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
:param on_mouse_click: fonction appelée sur clic souris,
|
||||||
|
signature (button_str, x, y)
|
||||||
|
:param on_scroll: fonction appelée sur scroll (molette), ou None
|
||||||
|
signature (x, y, dx, dy)
|
||||||
|
:param on_hover: fonction appelée quand la souris est immobile
|
||||||
|
depuis hover_min_idle_ms, ou None
|
||||||
|
signature (x, y, idle_ms)
|
||||||
|
"""
|
||||||
|
self._on_mouse_click = on_mouse_click
|
||||||
|
self._on_scroll = on_scroll
|
||||||
|
self._on_hover = on_hover
|
||||||
|
self._hover_min_idle_ms = hover_min_idle_ms
|
||||||
|
|
||||||
|
self._listener: mouse.Listener | None = None
|
||||||
|
|
||||||
|
# Pour le suivi du déplacement souris (hover)
|
||||||
|
self._last_move_time: Optional[float] = None
|
||||||
|
self._last_move_pos: Optional[tuple[int, int]] = None
|
||||||
|
|
||||||
|
self._hover_thread: Optional[threading.Thread] = None
|
||||||
|
self._hover_thread_running: bool = False
|
||||||
|
|
||||||
|
def start(self) -> None:
|
||||||
|
"""Démarre l'écoute globale des événements souris."""
|
||||||
|
if self._listener is not None:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._listener = mouse.Listener(
|
||||||
|
on_click=self._handle_click,
|
||||||
|
on_scroll=self._handle_scroll,
|
||||||
|
on_move=self._handle_move,
|
||||||
|
)
|
||||||
|
self._listener.start()
|
||||||
|
|
||||||
|
if self._on_hover is not None:
|
||||||
|
self._hover_thread_running = True
|
||||||
|
self._hover_thread = threading.Thread(
|
||||||
|
target=self._hover_loop, name="HoverDetector", daemon=True
|
||||||
|
)
|
||||||
|
self._hover_thread.start()
|
||||||
|
|
||||||
|
def stop(self) -> None:
|
||||||
|
"""Arrête l'écoute globale et le thread hover."""
|
||||||
|
if self._listener is not None:
|
||||||
|
self._listener.stop()
|
||||||
|
self._listener = None
|
||||||
|
|
||||||
|
self._hover_thread_running = False
|
||||||
|
self._hover_thread = None
|
||||||
|
|
||||||
|
self._last_move_time = None
|
||||||
|
self._last_move_pos = None
|
||||||
|
|
||||||
|
# --- internes ---
|
||||||
|
|
||||||
|
def _handle_click(self, x: int, y: int, button: mouse.Button, pressed: bool) -> None:
|
||||||
|
# On ne loggue que l'événement "pressed"
|
||||||
|
if not pressed:
|
||||||
|
return
|
||||||
|
|
||||||
|
button_str = getattr(button, "name", str(button))
|
||||||
|
self._on_mouse_click(button_str, x, y)
|
||||||
|
|
||||||
|
def _handle_scroll(self, x: int, y: int, dx: int, dy: int) -> None:
|
||||||
|
if self._on_scroll is not None:
|
||||||
|
self._on_scroll(x, y, dx, dy)
|
||||||
|
|
||||||
|
def _handle_move(self, x: int, y: int) -> None:
|
||||||
|
now = time.monotonic()
|
||||||
|
self._last_move_time = now
|
||||||
|
self._last_move_pos = (x, y)
|
||||||
|
|
||||||
|
def _hover_loop(self) -> None:
|
||||||
|
"""
|
||||||
|
Thread qui surveille l'immobilité de la souris.
|
||||||
|
Si la souris reste immobile plus de hover_min_idle_ms,
|
||||||
|
on déclenche un callback on_hover(x, y, idle_ms).
|
||||||
|
"""
|
||||||
|
last_hover_trigger_time: float | None = None
|
||||||
|
|
||||||
|
while self._hover_thread_running:
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
if self._on_hover is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self._last_move_time is None or self._last_move_pos is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
now = time.monotonic()
|
||||||
|
idle_ms = int((now - self._last_move_time) * 1000)
|
||||||
|
|
||||||
|
if idle_ms < self._hover_min_idle_ms:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Éviter de déclencher en boucle pour la même "immobilité"
|
||||||
|
if last_hover_trigger_time is not None:
|
||||||
|
# Si on a déjà déclenché récemment, on attend un nouveau mouvement
|
||||||
|
if self._last_move_time <= last_hover_trigger_time:
|
||||||
|
continue
|
||||||
|
|
||||||
|
x, y = self._last_move_pos
|
||||||
|
self._on_hover(x, y, idle_ms)
|
||||||
|
last_hover_trigger_time = now
|
||||||
123
key_captor.py
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
# key_captor.py
|
||||||
|
"""
|
||||||
|
Capture des combos clavier pour agent_v0.
|
||||||
|
|
||||||
|
v0 :
|
||||||
|
- écoute globale clavier via pynput
|
||||||
|
- maintient un set de touches "modificateurs" enfoncées (CTRL, ALT, SHIFT, CMD)
|
||||||
|
- quand une touche non-modif est pressée avec au moins un modif,
|
||||||
|
appelle un callback (keys: List[str]) du type ["CTRL", "F"]
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Callable, List, Set
|
||||||
|
|
||||||
|
from pynput import keyboard
|
||||||
|
|
||||||
|
KeyComboCallback = Callable[[List[str]], None]
|
||||||
|
|
||||||
|
|
||||||
|
MODIFIER_MAP = {
|
||||||
|
keyboard.Key.ctrl_l: "CTRL",
|
||||||
|
keyboard.Key.ctrl_r: "CTRL",
|
||||||
|
keyboard.Key.alt_l: "ALT",
|
||||||
|
keyboard.Key.alt_r: "ALT",
|
||||||
|
keyboard.Key.shift: "SHIFT",
|
||||||
|
keyboard.Key.shift_l: "SHIFT",
|
||||||
|
keyboard.Key.shift_r: "SHIFT",
|
||||||
|
keyboard.Key.cmd: "CMD",
|
||||||
|
keyboard.Key.cmd_l: "CMD",
|
||||||
|
keyboard.Key.cmd_r: "CMD",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class KeyCaptor:
|
||||||
|
"""
|
||||||
|
Capture les combos clavier globaux et les relaie à un callback.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, on_key_combo: KeyComboCallback) -> None:
|
||||||
|
"""
|
||||||
|
:param on_key_combo: fonction appelée sur combo clavier,
|
||||||
|
signature (keys: List[str])
|
||||||
|
"""
|
||||||
|
self._on_key_combo = on_key_combo
|
||||||
|
self._listener: keyboard.Listener | None = None
|
||||||
|
self._mods_pressed: Set[str] = set()
|
||||||
|
|
||||||
|
def start(self) -> None:
|
||||||
|
"""Démarre l'écoute globale clavier."""
|
||||||
|
if self._listener is not None:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._listener = keyboard.Listener(
|
||||||
|
on_press=self._handle_press,
|
||||||
|
on_release=self._handle_release,
|
||||||
|
)
|
||||||
|
self._listener.start()
|
||||||
|
|
||||||
|
def stop(self) -> None:
|
||||||
|
"""Arrête l'écoute globale clavier."""
|
||||||
|
if self._listener is not None:
|
||||||
|
self._listener.stop()
|
||||||
|
self._listener = None
|
||||||
|
self._mods_pressed.clear()
|
||||||
|
|
||||||
|
# --- callbacks internes ---
|
||||||
|
|
||||||
|
def _handle_press(self, key: keyboard.Key | keyboard.KeyCode) -> None:
|
||||||
|
# Gestion des mods
|
||||||
|
mod_name = MODIFIER_MAP.get(key)
|
||||||
|
if mod_name:
|
||||||
|
self._mods_pressed.add(mod_name)
|
||||||
|
return
|
||||||
|
|
||||||
|
# Ici : touche non-modif
|
||||||
|
if not self._mods_pressed:
|
||||||
|
# Pas de modif → on ignore (on ne log pas la frappe "normale")
|
||||||
|
return
|
||||||
|
|
||||||
|
# On construit la liste des touches
|
||||||
|
keys = sorted(self._mods_pressed)
|
||||||
|
|
||||||
|
# Nom de la touche principale
|
||||||
|
main_key = self._key_to_str(key)
|
||||||
|
if main_key is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
keys.append(main_key)
|
||||||
|
|
||||||
|
# Appel du callback
|
||||||
|
try:
|
||||||
|
self._on_key_combo(keys)
|
||||||
|
except Exception:
|
||||||
|
# On évite de casser le listener en cas d'erreur dans le callback
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _handle_release(self, key: keyboard.Key | keyboard.KeyCode) -> None:
|
||||||
|
# Retirer les modifs qui ne sont plus pressées
|
||||||
|
mod_name = MODIFIER_MAP.get(key)
|
||||||
|
if mod_name and mod_name in self._mods_pressed:
|
||||||
|
self._mods_pressed.discard(mod_name)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _key_to_str(key: keyboard.Key | keyboard.KeyCode) -> str | None:
|
||||||
|
# Touche "normale" (KeyCode avec .char)
|
||||||
|
if isinstance(key, keyboard.KeyCode):
|
||||||
|
if key.char:
|
||||||
|
return key.char.upper()
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Quelques touches "spéciales" qu'on peut vouloir logguer
|
||||||
|
special_map = {
|
||||||
|
keyboard.Key.enter: "ENTER",
|
||||||
|
keyboard.Key.tab: "TAB",
|
||||||
|
keyboard.Key.esc: "ESC",
|
||||||
|
keyboard.Key.space: "SPACE",
|
||||||
|
}
|
||||||
|
if key in special_map:
|
||||||
|
return special_map[key]
|
||||||
|
|
||||||
|
# Sinon, on ignore
|
||||||
|
return None
|
||||||
50
logger_conf.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# logger_conf.py
|
||||||
|
"""
|
||||||
|
Configuration du logging pour agent_v0.
|
||||||
|
|
||||||
|
- Log vers console
|
||||||
|
- Log vers fichier rotatif logs/agent_v0.log
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from logging.handlers import RotatingFileHandler
|
||||||
|
|
||||||
|
from config import LOG_FILE
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logging(level: int = logging.INFO) -> None:
|
||||||
|
"""
|
||||||
|
Configure le logging global de l'application.
|
||||||
|
|
||||||
|
À appeler une seule fois au démarrage (dans main.py).
|
||||||
|
"""
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
# Éviter de dupliquer les handlers si setup_logging est rappelé
|
||||||
|
if logger.handlers:
|
||||||
|
return
|
||||||
|
|
||||||
|
logger.setLevel(level)
|
||||||
|
|
||||||
|
formatter = logging.Formatter(
|
||||||
|
"[%(asctime)s] [%(levelname)s] %(name)s: %(message)s"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Handler fichier rotatif
|
||||||
|
file_handler = RotatingFileHandler(
|
||||||
|
LOG_FILE,
|
||||||
|
maxBytes=5 * 1024 * 1024, # 5 Mo
|
||||||
|
backupCount=3,
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
file_handler.setFormatter(formatter)
|
||||||
|
logger.addHandler(file_handler)
|
||||||
|
|
||||||
|
# Handler console
|
||||||
|
console_handler = logging.StreamHandler()
|
||||||
|
console_handler.setFormatter(formatter)
|
||||||
|
logger.addHandler(console_handler)
|
||||||
|
|
||||||
|
logging.getLogger(__name__).info("Logging initialisé. Fichier log = %s", LOG_FILE)
|
||||||
292
logs/agent_v0.log
Normal file
@@ -0,0 +1,292 @@
|
|||||||
|
[2025-11-21 23:08:47,881] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:08:47,884] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:09:15,053] [INFO] agent_v0.tray: Démarrage d'une nouvelle session...
|
||||||
|
[2025-11-21 23:09:15,059] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:09:15,062] [INFO] agent_v0.tray: Session sess_20251121T230915_218b0d40 démarrée.
|
||||||
|
[2025-11-21 23:09:19,414] [INFO] agent_v0.tray: Clic left à (1644, 16) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:19,520] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:09:22,892] [INFO] agent_v0.tray: Clic left à (1643, 20) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:22,918] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:09:24,012] [INFO] agent_v0.tray: Clic left à (1134, 482) → screenshot=shot_0003, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:25,435] [INFO] agent_v0.tray: Clic left à (783, 558) → screenshot=shot_0004, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:26,076] [INFO] agent_v0.tray: Clic left à (801, 492) → screenshot=shot_0005, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:26,523] [INFO] agent_v0.tray: Clic left à (877, 367) → screenshot=shot_0006, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:26,867] [INFO] agent_v0.tray: Clic left à (877, 367) → screenshot=shot_0007, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:27,435] [INFO] agent_v0.tray: Clic left à (546, 582) → screenshot=shot_0008, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:09:28,000] [INFO] agent_v0.tray: Clic left à (317, 672) → screenshot=shot_0009, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:09,774] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:10:09,776] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:10:14,732] [INFO] agent_v0.tray: Démarrage d'une nouvelle session...
|
||||||
|
[2025-11-21 23:10:14,738] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:10:14,740] [INFO] agent_v0.tray: Session sess_20251121T231014_555329f7 démarrée.
|
||||||
|
[2025-11-21 23:10:16,864] [INFO] agent_v0.tray: Clic left à (1646, 16) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:17,220] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:10:18,879] [INFO] agent_v0.tray: Clic right à (1646, 17) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:21,310] [INFO] agent_v0.tray: Clic right à (1646, 17) → screenshot=shot_0003, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:21,909] [INFO] agent_v0.tray: Clic left à (1647, 18) → screenshot=shot_0004, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:22,013] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:10:22,501] [INFO] agent_v0.tray: Clic left à (1648, 19) → screenshot=shot_0005, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:22,589] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:10:24,454] [INFO] agent_v0.tray: Clic left à (26, 262) → screenshot=shot_0006, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:40,109] [INFO] agent_v0.tray: Clic left à (36, 392) → screenshot=shot_0007, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:10:40,629] [INFO] agent_v0.tray: Clic left à (1103, 532) → screenshot=shot_0008, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:43,310] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0009, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:46,830] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0010, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:47,230] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0011, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:47,510] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0012, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:47,679] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0013, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:47,799] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0014, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:47,902] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0015, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:48,046] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0016, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:48,198] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0017, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:48,302] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0018, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:48,463] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0019, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:48,640] [INFO] agent_v0.tray: Combo clavier ['CTRL', 'F'] → screenshot=shot_0020, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:51,734] [INFO] agent_v0.tray: Clic left à (1639, 21) → screenshot=shot_0021, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:51,802] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:10:55,199] [INFO] agent_v0.tray: Clic left à (1640, 21) → screenshot=shot_0022, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:10:55,317] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:10:58,479] [INFO] agent_v0.tray: Clic left à (32, 265) → screenshot=shot_0023, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:11:00,629] [INFO] agent_v0.tray: Clic left à (978, 976) → screenshot=shot_0024, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:11:32,886] [INFO] agent_v0.tray: Combo clavier ['SHIFT', '?'] → screenshot=shot_0025, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:00,591] [INFO] agent_v0.tray: Clic left à (1648, 21) → screenshot=shot_0026, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:00,715] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:01,270] [INFO] agent_v0.tray: Clic left à (1649, 21) → screenshot=shot_0027, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:01,383] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:01,814] [INFO] agent_v0.tray: Clic right à (1649, 21) → screenshot=shot_0028, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:02,485] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:02,485] [INFO] agent_v0.tray: Clic left à (1649, 21) → screenshot=shot_0029, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:02,532] [INFO] agent_v0.tray: Clic left à (1649, 21) → screenshot=shot_0030, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:02,610] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:02,974] [INFO] agent_v0.tray: Clic left à (1649, 22) → screenshot=shot_0031, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:03,077] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:03,204] [INFO] agent_v0.tray: Clic left à (1649, 22) → screenshot=shot_0032, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:03,295] [INFO] agent_v0.tray: Session déjà active, Start ignoré.
|
||||||
|
[2025-11-21 23:12:34,831] [INFO] agent_v0.tray: Clic left à (34, 139) → screenshot=shot_0033, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:12:36,365] [INFO] agent_v0.tray: Clic left à (665, 831) → screenshot=shot_0034, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:40,509] [INFO] agent_v0.tray: Clic left à (669, 612) → screenshot=shot_0035, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:40,702] [INFO] agent_v0.tray: Clic left à (669, 612) → screenshot=shot_0036, window='sess_20251121T231014_555329f7', app='nautilus'
|
||||||
|
[2025-11-21 23:12:43,244] [INFO] agent_v0.tray: Clic left à (325, 50) → screenshot=shot_0037, window='sess_20251121T231014_555329f7', app='nautilus'
|
||||||
|
[2025-11-21 23:12:44,422] [INFO] agent_v0.tray: Clic left à (503, 568) → screenshot=shot_0038, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:44,833] [INFO] agent_v0.tray: Clic left à (503, 568) → screenshot=shot_0039, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:45,277] [INFO] agent_v0.tray: Clic left à (503, 568) → screenshot=shot_0040, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:45,677] [INFO] agent_v0.tray: Clic left à (503, 568) → screenshot=shot_0041, window='sess_20251121T230915_218b0d40', app='nautilus'
|
||||||
|
[2025-11-21 23:12:46,995] [INFO] agent_v0.tray: Clic left à (322, 54) → screenshot=shot_0042, window='sess_20251121T230915_218b0d40', app='nautilus'
|
||||||
|
[2025-11-21 23:12:53,358] [INFO] agent_v0.tray: Clic left à (33, 394) → screenshot=shot_0043, window='sessions', app='nautilus'
|
||||||
|
[2025-11-21 23:12:55,468] [ERROR] pystray._base: An error occurred in the main loop
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pystray/_xorg.py", line 209, in _mainloop
|
||||||
|
for event in self._events():
|
||||||
|
File "/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/pystray/_xorg.py", line 486, in _events
|
||||||
|
event = self._display.next_event()
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/Xlib/display.py", line 187, in next_event
|
||||||
|
return self.display.next_event()
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/Xlib/protocol/display.py", line 217, in next_event
|
||||||
|
self.send_and_recv(event = True)
|
||||||
|
File "/home/dom/ai/agent_v0/.venv/lib/python3.12/site-packages/Xlib/protocol/display.py", line 561, in send_and_recv
|
||||||
|
rs, ws, es = select.select([self.socket], writeset, [], timeout)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
KeyboardInterrupt
|
||||||
|
[2025-11-21 23:16:33,057] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:16:33,060] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:16:38,263] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:16:38,269] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:16:38,272] [INFO] agent_v0.tray: Session sess_20251121T231638_47da95e6 démarrée.
|
||||||
|
[2025-11-21 23:16:44,972] [INFO] agent_v0.tray: Clic left à (45, 1054) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:16:46,713] [INFO] agent_v0.tray: Clic left à (952, 560) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:16:49,006] [INFO] agent_v0.tray: Clic left à (148, 444) → screenshot=shot_0003, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:16:49,885] [INFO] agent_v0.tray: Clic left à (364, 435) → screenshot=shot_0004, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:16:50,325] [INFO] agent_v0.tray: Clic left à (309, 442) → screenshot=shot_0005, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:16:50,804] [INFO] agent_v0.tray: Clic left à (432, 488) → screenshot=shot_0006, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:16:52,134] [INFO] agent_v0.tray: Clic left à (474, 109) → screenshot=shot_0007, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:16:53,701] [INFO] agent_v0.tray: Clic left à (36, 1060) → screenshot=shot_0008, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:16:56,041] [INFO] agent_v0.tray: Clic left à (1050, 71) → screenshot=shot_0009, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-21 23:17:00,494] [INFO] agent_v0.tray: Clic left à (1012, 167) → screenshot=shot_0010, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-21 23:17:02,567] [INFO] agent_v0.tray: Clic left à (831, 356) → screenshot=shot_0011, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:17:07,921] [INFO] agent_v0.tray: Clic left à (1577, 195) → screenshot=shot_0012, window='*Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:17:09,150] [INFO] agent_v0.tray: Clic left à (992, 610) → screenshot=shot_0013, window='unknown_window', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:17:11,398] [INFO] agent_v0.tray: Clic left à (1644, 19) → screenshot=shot_0014, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:17:11,441] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:17:11,442] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T231638_47da95e6/sess_20251121T231638_47da95e6.json
|
||||||
|
[2025-11-21 23:17:11,495] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T231638_47da95e6.zip
|
||||||
|
[2025-11-21 23:17:12,073] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:17:12,073] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:22:46,023] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:22:46,026] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:22:49,762] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:22:49,768] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:22:49,770] [INFO] agent_v0.tray: Session sess_20251121T232249_d776ec1a démarrée.
|
||||||
|
[2025-11-21 23:22:53,783] [INFO] agent_v0.tray: Clic left à (25, 1061) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:22:58,427] [INFO] agent_v0.tray: Clic left à (731, 700) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:00,659] [INFO] agent_v0.tray: Clic left à (1589, 366) → screenshot=shot_0003, window='Logiciels et mises à jour', app='software-proper'
|
||||||
|
[2025-11-21 23:23:03,428] [INFO] agent_v0.tray: Clic left à (45, 1038) → screenshot=shot_0004, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:05,299] [INFO] agent_v0.tray: Clic left à (937, 372) → screenshot=shot_0005, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:07,278] [INFO] agent_v0.tray: Clic left à (1828, 47) → screenshot=shot_0006, window='ceci est un test ceci (Brouillon) - Éditeur de texte', app='gnome-text-edit'
|
||||||
|
[2025-11-21 23:23:08,723] [INFO] agent_v0.tray: Clic left à (19, 1042) → screenshot=shot_0007, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:11,164] [INFO] agent_v0.tray: Clic left à (1100, 406) → screenshot=shot_0008, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:13,194] [INFO] agent_v0.tray: Clic left à (961, 106) → screenshot=shot_0009, window='Clocks', app='gnome-clocks'
|
||||||
|
[2025-11-21 23:23:14,781] [INFO] agent_v0.tray: Clic left à (33, 1049) → screenshot=shot_0010, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:15,707] [INFO] agent_v0.tray: Clic left à (919, 548) → screenshot=shot_0011, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:17,331] [INFO] agent_v0.tray: Clic left à (322, 440) → screenshot=shot_0012, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:23:17,772] [INFO] agent_v0.tray: Clic left à (383, 436) → screenshot=shot_0013, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:23:18,356] [INFO] agent_v0.tray: Clic left à (335, 444) → screenshot=shot_0014, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:23:18,995] [INFO] agent_v0.tray: Clic left à (446, 499) → screenshot=shot_0015, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:23:20,652] [INFO] agent_v0.tray: Clic left à (480, 108) → screenshot=shot_0016, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:23:21,954] [INFO] agent_v0.tray: Clic left à (31, 1049) → screenshot=shot_0017, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:24,444] [INFO] agent_v0.tray: Clic left à (974, 71) → screenshot=shot_0018, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-21 23:23:28,581] [INFO] agent_v0.tray: Clic left à (977, 157) → screenshot=shot_0019, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-21 23:23:30,164] [INFO] agent_v0.tray: Clic left à (914, 362) → screenshot=shot_0020, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:23:30,835] [INFO] agent_v0.tray: Clic left à (881, 365) → screenshot=shot_0021, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:23:35,691] [INFO] agent_v0.tray: Clic left à (1570, 201) → screenshot=shot_0022, window='*Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:23:36,804] [INFO] agent_v0.tray: Clic left à (969, 607) → screenshot=shot_0023, window='unknown_window', app='DesktopEditors'
|
||||||
|
[2025-11-21 23:23:39,031] [INFO] agent_v0.tray: Clic left à (1820, 61) → screenshot=shot_0024, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:23:43,444] [INFO] agent_v0.tray: Clic left à (49, 254) → screenshot=shot_0025, window='agent_v0 – uploader.py', app='pycharm'
|
||||||
|
[2025-11-21 23:23:47,316] [INFO] agent_v0.tray: Clic left à (1652, 18) → screenshot=shot_0026, window='ChatGPT - Geniusia_v2 - Google Chrome', app='chrome'
|
||||||
|
[2025-11-21 23:23:47,385] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:23:47,386] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T232249_d776ec1a/sess_20251121T232249_d776ec1a.json
|
||||||
|
[2025-11-21 23:23:47,482] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T232249_d776ec1a.zip
|
||||||
|
[2025-11-21 23:23:47,482] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:23:47,482] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:24:03,632] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:24:03,633] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:24:03,636] [INFO] agent_v0.tray: Session sess_20251121T232403_d88202ff démarrée.
|
||||||
|
[2025-11-21 23:24:04,839] [INFO] agent_v0.tray: Clic left à (1648, 15) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:24:04,885] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:24:04,885] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T232403_d88202ff/sess_20251121T232403_d88202ff.json
|
||||||
|
[2025-11-21 23:24:04,891] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T232403_d88202ff.zip
|
||||||
|
[2025-11-21 23:24:04,891] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:24:04,891] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:24:42,774] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:24:42,774] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:24:42,777] [INFO] agent_v0.tray: Session sess_20251121T232442_3a3b3275 démarrée.
|
||||||
|
[2025-11-21 23:24:43,921] [INFO] agent_v0.tray: Clic left à (1647, 21) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:24:43,983] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:24:43,984] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T232442_3a3b3275/sess_20251121T232442_3a3b3275.json
|
||||||
|
[2025-11-21 23:24:43,989] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T232442_3a3b3275.zip
|
||||||
|
[2025-11-21 23:24:43,989] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:24:43,989] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:26:12,849] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:26:12,851] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:26:14,713] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:26:14,719] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:26:14,721] [INFO] agent_v0.tray: Session sess_20251121T232614_247cd560 démarrée.
|
||||||
|
[2025-11-21 23:26:18,029] [INFO] agent_v0.tray: Clic left à (19, 1043) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:18,905] [INFO] agent_v0.tray: Clic left à (908, 566) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:20,298] [INFO] agent_v0.tray: Clic left à (325, 440) → screenshot=shot_0003, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:20,752] [INFO] agent_v0.tray: Clic left à (321, 405) → screenshot=shot_0004, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:21,218] [INFO] agent_v0.tray: Clic left à (374, 391) → screenshot=shot_0005, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:21,905] [INFO] agent_v0.tray: Clic left à (229, 398) → screenshot=shot_0006, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:22,936] [INFO] agent_v0.tray: Clic left à (477, 527) → screenshot=shot_0007, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:24,777] [INFO] agent_v0.tray: Clic left à (481, 110) → screenshot=shot_0008, window='Calculatrice', app='gnome-calculato'
|
||||||
|
[2025-11-21 23:26:26,122] [INFO] agent_v0.tray: Clic left à (29, 1060) → screenshot=shot_0009, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:27,738] [INFO] agent_v0.tray: Clic left à (1104, 404) → screenshot=shot_0010, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:29,120] [INFO] agent_v0.tray: Clic left à (665, 536) → screenshot=shot_0011, window='Clocks', app='gnome-clocks'
|
||||||
|
[2025-11-21 23:26:30,953] [INFO] agent_v0.tray: Clic left à (573, 221) → screenshot=shot_0012, window='Ajouter une nouvelle horloge mondiale', app='gnome-clocks'
|
||||||
|
[2025-11-21 23:26:36,271] [INFO] agent_v0.tray: Clic left à (412, 181) → screenshot=shot_0013, window='Ajouter une nouvelle horloge mondiale', app='gnome-clocks'
|
||||||
|
[2025-11-21 23:26:37,305] [INFO] agent_v0.tray: Clic left à (966, 101) → screenshot=shot_0014, window='Clocks', app='gnome-clocks'
|
||||||
|
[2025-11-21 23:26:38,675] [INFO] agent_v0.tray: Clic left à (1814, 48) → screenshot=shot_0015, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:41,696] [INFO] agent_v0.tray: Clic left à (38, 392) → screenshot=shot_0016, window='agent_v0 – config.py', app='pycharm'
|
||||||
|
[2025-11-21 23:26:43,604] [INFO] agent_v0.tray: Clic left à (1648, 15) → screenshot=shot_0017, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:26:43,641] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:26:43,642] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T232614_247cd560/sess_20251121T232614_247cd560.json
|
||||||
|
[2025-11-21 23:26:43,711] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T232614_247cd560.zip
|
||||||
|
[2025-11-21 23:26:43,711] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:26:43,711] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:33:33,808] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-21 23:33:33,811] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-21 23:33:37,486] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-21 23:33:37,492] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080
|
||||||
|
[2025-11-21 23:33:37,495] [INFO] agent_v0.tray: Session sess_20251121T233337_212e7034 démarrée.
|
||||||
|
[2025-11-21 23:33:39,978] [INFO] agent_v0.tray: Clic left à (406, 531) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:40,303] [INFO] agent_v0.tray: Clic left à (408, 587) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:40,568] [INFO] agent_v0.tray: Clic left à (482, 666) → screenshot=shot_0003, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:40,751] [INFO] agent_v0.tray: Clic left à (520, 677) → screenshot=shot_0004, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:40,967] [INFO] agent_v0.tray: Clic left à (528, 678) → screenshot=shot_0005, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:41,159] [INFO] agent_v0.tray: Clic left à (541, 679) → screenshot=shot_0006, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:41,304] [INFO] agent_v0.tray: Clic left à (542, 679) → screenshot=shot_0007, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:43,063] [INFO] agent_v0.tray: Clic left à (1645, 16) → screenshot=shot_0008, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-21 23:33:43,138] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-21 23:33:43,139] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251121T233337_212e7034/sess_20251121T233337_212e7034.json
|
||||||
|
[2025-11-21 23:33:43,174] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251121T233337_212e7034.zip
|
||||||
|
[2025-11-21 23:33:43,174] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-21 23:33:43,174] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-21 23:33:43,174] [INFO] agent_v0.tray: EXIT_AFTER_SESSION=True → arrêt de l'application.
|
||||||
|
[2025-11-22 01:19:42,609] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-22 01:19:42,609] [INFO] agent_v0.tray: Config chargée : {'user_id': 'demo_user', 'user_label': 'Démo agent_v0', 'customer': 'Clinique Demo', 'training_label': 'Facturation_T2A_demo', 'notes': 'Session réelle avec clics + screenshots + key combos.', 'mode': 'enriched', 'screenshot_mode': 'crop', 'screenshot_crop_width': 900, 'screenshot_crop_height': 700, 'capture_hover': True, 'hover_min_idle_ms': 700, 'capture_scroll': True, 'network_save_path': ''}
|
||||||
|
[2025-11-22 01:19:42,611] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-22 01:19:46,045] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-22 01:19:46,051] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080, mode=enriched
|
||||||
|
[2025-11-22 01:19:46,054] [INFO] agent_v0.tray: Session sess_20251122T011946_bc151626 démarrée.
|
||||||
|
[2025-11-22 01:19:47,987] [INFO] agent_v0.tray: Clic right à (1747, 19) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:19:49,788] [INFO] agent_v0.tray: Clic left à (1747, 19) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:19:49,909] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-22 01:19:49,910] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251122T011946_bc151626/sess_20251122T011946_bc151626.json
|
||||||
|
[2025-11-22 01:19:49,912] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251122T011946_bc151626.zip
|
||||||
|
[2025-11-22 01:19:49,912] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-22 01:19:49,912] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-22 01:19:49,912] [INFO] agent_v0.tray: EXIT_AFTER_SESSION=True → arrêt de l'application.
|
||||||
|
[2025-11-22 01:20:02,988] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-22 01:20:02,988] [INFO] agent_v0.tray: Config chargée : {'user_id': 'demo_user', 'user_label': 'Démo agent_v0', 'customer': 'Clinique Demo', 'training_label': 'Facturation_T2A_demo', 'notes': 'Session réelle avec clics + screenshots + key combos.', 'mode': 'enriched', 'screenshot_mode': 'crop', 'screenshot_crop_width': 900, 'screenshot_crop_height': 700, 'capture_hover': True, 'hover_min_idle_ms': 700, 'capture_scroll': True, 'network_save_path': ''}
|
||||||
|
[2025-11-22 01:20:02,990] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-22 01:21:38,389] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-22 01:21:38,395] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080, mode=enriched
|
||||||
|
[2025-11-22 01:21:38,398] [INFO] agent_v0.tray: Session sess_20251122T012138_2cf74644 démarrée.
|
||||||
|
[2025-11-22 01:21:40,221] [INFO] agent_v0.tray: Hover à (1217, 607) idle=761ms → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:21:42,526] [INFO] agent_v0.tray: Clic left à (1742, 18) → screenshot=shot_0002, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:21:42,599] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-22 01:21:42,600] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251122T012138_2cf74644/sess_20251122T012138_2cf74644.json
|
||||||
|
[2025-11-22 01:21:42,602] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251122T012138_2cf74644.zip
|
||||||
|
[2025-11-22 01:21:42,602] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-22 01:21:42,602] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-22 01:21:42,602] [INFO] agent_v0.tray: EXIT_AFTER_SESSION=True → arrêt de l'application.
|
||||||
|
[2025-11-22 01:22:49,761] [INFO] logger_conf: Logging initialisé. Fichier log = /home/dom/ai/agent_v0/logs/agent_v0.log
|
||||||
|
[2025-11-22 01:22:49,761] [INFO] agent_v0.tray: Config chargée : {'user_id': 'demo_user', 'user_label': 'Démo agent_v0', 'customer': 'Clinique Demo', 'training_label': 'Facturation_T2A_demo', 'notes': 'Session réelle avec clics + screenshots + key combos.', 'mode': 'enriched', 'screenshot_mode': 'crop', 'screenshot_crop_width': 900, 'screenshot_crop_height': 700, 'capture_hover': True, 'hover_min_idle_ms': 700, 'capture_scroll': True, 'network_save_path': ''}
|
||||||
|
[2025-11-22 01:22:49,763] [INFO] agent_v0.tray: Démarrage de TrayApp...
|
||||||
|
[2025-11-22 01:22:55,183] [INFO] agent_v0.tray: Toggle: démarrage d'une session.
|
||||||
|
[2025-11-22 01:22:55,189] [INFO] agent_v0.tray: Nouvelle session : platform=linux, hostname=dom-X870-Riptide-WiFi, res=1920x1080, mode=enriched
|
||||||
|
[2025-11-22 01:22:55,191] [INFO] agent_v0.tray: Session sess_20251122T012255_a6ff491a démarrée.
|
||||||
|
[2025-11-22 01:22:58,358] [INFO] agent_v0.tray: Clic left à (38, 1045) → screenshot=shot_0001, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:22:59,964] [INFO] agent_v0.tray: Clic left à (1116, 77) → screenshot=shot_0002, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-22 01:23:01,008] [INFO] agent_v0.tray: Hover à (1117, 77) idle=763ms → screenshot=shot_0003, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-22 01:23:03,865] [INFO] agent_v0.tray: Clic left à (964, 237) → screenshot=shot_0004, window='unknown_window', app='unknown_app'
|
||||||
|
[2025-11-22 01:23:04,732] [INFO] agent_v0.tray: Hover à (964, 236) idle=731ms → screenshot=shot_0005, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:05,954] [INFO] agent_v0.tray: Hover à (862, 216) idle=710ms → screenshot=shot_0006, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:06,683] [INFO] agent_v0.tray: Clic left à (862, 216) → screenshot=shot_0007, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:10,195] [INFO] agent_v0.tray: Clic left à (45, 402) → screenshot=shot_0008, window='Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:10,779] [INFO] agent_v0.tray: Hover à (45, 402) idle=702ms → screenshot=shot_0009, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:18,927] [INFO] agent_v0.tray: Clic left à (29, 583) → screenshot=shot_0010, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:19,405] [INFO] agent_v0.tray: Hover à (29, 583) idle=762ms → screenshot=shot_0011, window='Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:21,379] [INFO] agent_v0.tray: Clic left à (102, 96) → screenshot=shot_0012, window='Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:22,690] [INFO] agent_v0.tray: Clic left à (163, 584) → screenshot=shot_0013, window='Document1.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:23,588] [INFO] agent_v0.tray: Clic left à (977, 241) → screenshot=shot_0014, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:25,199] [INFO] agent_v0.tray: Clic left à (133, 103) → screenshot=shot_0015, window='*Livre1.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:25,428] [INFO] agent_v0.tray: Hover à (133, 103) idle=722ms → screenshot=shot_0016, window='*Livre1.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:26,459] [INFO] agent_v0.tray: Clic left à (192, 615) → screenshot=shot_0017, window='*Livre1.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:29,693] [INFO] agent_v0.tray: Clic left à (1039, 221) → screenshot=shot_0018, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:31,285] [INFO] agent_v0.tray: Clic left à (102, 98) → screenshot=shot_0019, window='*Livre2.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:32,371] [INFO] agent_v0.tray: Clic left à (154, 614) → screenshot=shot_0020, window='*Livre2.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:33,059] [INFO] agent_v0.tray: Clic left à (1037, 246) → screenshot=shot_0021, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:34,274] [INFO] agent_v0.tray: Clic left à (145, 102) → screenshot=shot_0022, window='*Livre3.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:35,620] [INFO] agent_v0.tray: Clic left à (154, 606) → screenshot=shot_0023, window='*Livre3.xlsx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:36,564] [INFO] agent_v0.tray: Clic left à (768, 254) → screenshot=shot_0024, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:37,789] [INFO] agent_v0.tray: Clic left à (117, 99) → screenshot=shot_0025, window='Document2.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:38,700] [INFO] agent_v0.tray: Clic left à (149, 583) → screenshot=shot_0026, window='Document2.docx — ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:42,994] [INFO] agent_v0.tray: Clic left à (1912, 40) → screenshot=shot_0027, window='ONLYOFFICE', app='DesktopEditors'
|
||||||
|
[2025-11-22 01:23:45,976] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0028, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:46,586] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0029, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:46,659] [INFO] agent_v0.tray: Hover à (30, 1043) idle=785ms → screenshot=shot_0030, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:47,839] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0031, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:48,362] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0032, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:49,975] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0033, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:50,756] [INFO] agent_v0.tray: Clic left à (30, 1043) → screenshot=shot_0034, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:23:57,893] [INFO] agent_v0.tray: Hover à (24, 542) idle=700ms → screenshot=shot_0035, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:24:03,100] [INFO] agent_v0.tray: Clic left à (1740, 15) → screenshot=shot_0036, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:24:03,114] [INFO] agent_v0.tray: Hover à (1740, 15) idle=752ms → screenshot=shot_0037, window='Terminal', app='gnome-terminal-'
|
||||||
|
[2025-11-22 01:24:03,152] [INFO] agent_v0.tray: Toggle: arrêt de la session.
|
||||||
|
[2025-11-22 01:24:03,153] [INFO] agent_v0.tray: Session JSON sauvegardée : /home/dom/ai/agent_v0/sessions/sess_20251122T012255_a6ff491a/sess_20251122T012255_a6ff491a.json
|
||||||
|
[2025-11-22 01:24:03,194] [INFO] agent_v0.tray: ZIP de session créé : /home/dom/ai/agent_v0/sessions/sess_20251122T012255_a6ff491a.zip
|
||||||
|
[2025-11-22 01:24:03,194] [WARNING] agent_v0.tray: Upload du ZIP échoué ou désactivé.
|
||||||
|
[2025-11-22 01:24:03,194] [INFO] agent_v0.tray: Session terminée. SESSIONS_ROOT = /home/dom/ai/agent_v0/sessions
|
||||||
|
[2025-11-22 01:24:03,194] [INFO] agent_v0.tray: EXIT_AFTER_SESSION=True → arrêt de l'application.
|
||||||
24
main.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# main.py
|
||||||
|
"""
|
||||||
|
Point d'entrée agent_v0.
|
||||||
|
|
||||||
|
v0 (tray) :
|
||||||
|
- initialise le logging
|
||||||
|
- lance TrayApp (icône dans la zone de notification)
|
||||||
|
- gestion Start/Stop/Queit via menu tray
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from logger_conf import setup_logging
|
||||||
|
from tray_ui import TrayApp
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
setup_logging()
|
||||||
|
app = TrayApp()
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
238
raw_session.py
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
# raw_session.py
|
||||||
|
"""
|
||||||
|
Modèle RawSession v1 pour l'agent_v0.
|
||||||
|
|
||||||
|
Ce module définit la structure des données RawSession et
|
||||||
|
la sérialisation en JSON au format rawsession_v1.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
|
from config import AGENT_VERSION, SESSIONS_ROOT
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ScreenshotMeta:
|
||||||
|
screenshot_id: str
|
||||||
|
relative_path: str
|
||||||
|
captured_at: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Event:
|
||||||
|
t: float
|
||||||
|
type: str
|
||||||
|
window: Dict[str, Any]
|
||||||
|
screenshot_id: Optional[str] = None
|
||||||
|
# champs optionnels selon type
|
||||||
|
button: Optional[str] = None
|
||||||
|
pos: Optional[List[int]] = None
|
||||||
|
keys: Optional[List[str]] = None
|
||||||
|
idle_ms: Optional[int] = None
|
||||||
|
scroll_delta: Optional[List[int]] = None # [dx, dy] pour la molette
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class RawSession:
|
||||||
|
schema_version: str
|
||||||
|
session_id: str
|
||||||
|
agent_version: str
|
||||||
|
environment: Dict[str, Any]
|
||||||
|
user: Dict[str, Any]
|
||||||
|
context: Dict[str, Any]
|
||||||
|
started_at: str
|
||||||
|
ended_at: Optional[str] = None
|
||||||
|
|
||||||
|
events: List[Event] = field(default_factory=list)
|
||||||
|
screenshots: List[ScreenshotMeta] = field(default_factory=list)
|
||||||
|
|
||||||
|
_start_time_monotonic: float = field(default_factory=time.monotonic, repr=False)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create(
|
||||||
|
cls,
|
||||||
|
user_id: str,
|
||||||
|
user_label: str = "",
|
||||||
|
customer: str = "",
|
||||||
|
training_label: str = "",
|
||||||
|
notes: str = "",
|
||||||
|
platform: str = "unknown",
|
||||||
|
hostname: str = "unknown",
|
||||||
|
screen_resolution: Optional[List[int]] = None,
|
||||||
|
display_scale: float = 1.0,
|
||||||
|
) -> "RawSession":
|
||||||
|
"""Fabrique une nouvelle session avec les champs de base remplis."""
|
||||||
|
session_id = f"sess_{time.strftime('%Y%m%dT%H%M%S')}_{uuid.uuid4().hex[:8]}"
|
||||||
|
started_at = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
"platform": platform,
|
||||||
|
"hostname": hostname,
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": screen_resolution or [0, 0],
|
||||||
|
"display_scale": display_scale,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
user = {
|
||||||
|
"id": user_id,
|
||||||
|
"label": user_label or user_id,
|
||||||
|
}
|
||||||
|
context = {
|
||||||
|
"customer": customer,
|
||||||
|
"training_label": training_label,
|
||||||
|
"notes": notes,
|
||||||
|
}
|
||||||
|
|
||||||
|
return cls(
|
||||||
|
schema_version="rawsession_v1",
|
||||||
|
session_id=session_id,
|
||||||
|
agent_version=AGENT_VERSION,
|
||||||
|
environment=environment,
|
||||||
|
user=user,
|
||||||
|
context=context,
|
||||||
|
started_at=started_at,
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- API temps relatif ---
|
||||||
|
|
||||||
|
def now_relative(self) -> float:
|
||||||
|
"""Temps relatif (en secondes) depuis le début de la session."""
|
||||||
|
return time.monotonic() - self._start_time_monotonic
|
||||||
|
|
||||||
|
# --- API screenshots ---
|
||||||
|
|
||||||
|
def add_screenshot(
|
||||||
|
self,
|
||||||
|
screenshot_id: str,
|
||||||
|
relative_path: str,
|
||||||
|
captured_at: Optional[str] = None,
|
||||||
|
) -> None:
|
||||||
|
"""Enregistre les métadonnées d'un screenshot."""
|
||||||
|
captured_at = captured_at or time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||||
|
self.screenshots.append(
|
||||||
|
ScreenshotMeta(
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
relative_path=relative_path,
|
||||||
|
captured_at=captured_at,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- API événements ---
|
||||||
|
|
||||||
|
def add_mouse_click_event(
|
||||||
|
self,
|
||||||
|
button: str,
|
||||||
|
pos: List[int],
|
||||||
|
window_title: str,
|
||||||
|
app_name: str,
|
||||||
|
screenshot_id: Optional[str],
|
||||||
|
) -> None:
|
||||||
|
self.events.append(
|
||||||
|
Event(
|
||||||
|
t=self.now_relative(),
|
||||||
|
type="mouse_click",
|
||||||
|
button=button,
|
||||||
|
pos=pos,
|
||||||
|
window={"title": window_title, "app_name": app_name},
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def add_key_combo_event(
|
||||||
|
self,
|
||||||
|
keys: List[str],
|
||||||
|
window_title: str,
|
||||||
|
app_name: str,
|
||||||
|
screenshot_id: Optional[str],
|
||||||
|
) -> None:
|
||||||
|
self.events.append(
|
||||||
|
Event(
|
||||||
|
t=self.now_relative(),
|
||||||
|
type="key_combo",
|
||||||
|
keys=keys,
|
||||||
|
window={"title": window_title, "app_name": app_name},
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def add_hover_idle_event(
|
||||||
|
self,
|
||||||
|
pos: List[int],
|
||||||
|
idle_ms: int,
|
||||||
|
window_title: str,
|
||||||
|
app_name: str,
|
||||||
|
screenshot_id: Optional[str],
|
||||||
|
) -> None:
|
||||||
|
self.events.append(
|
||||||
|
Event(
|
||||||
|
t=self.now_relative(),
|
||||||
|
type="hover_idle",
|
||||||
|
pos=pos,
|
||||||
|
idle_ms=idle_ms,
|
||||||
|
window={"title": window_title, "app_name": app_name},
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def add_scroll_event(
|
||||||
|
self,
|
||||||
|
pos: List[int],
|
||||||
|
delta: List[int],
|
||||||
|
window_title: str,
|
||||||
|
app_name: str,
|
||||||
|
screenshot_id: Optional[str],
|
||||||
|
) -> None:
|
||||||
|
"""delta = [dx, dy]"""
|
||||||
|
self.events.append(
|
||||||
|
Event(
|
||||||
|
t=self.now_relative(),
|
||||||
|
type="scroll",
|
||||||
|
pos=pos,
|
||||||
|
scroll_delta=delta,
|
||||||
|
window={"title": window_title, "app_name": app_name},
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def close(self) -> None:
|
||||||
|
"""Marque la fin de la session."""
|
||||||
|
self.ended_at = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||||
|
|
||||||
|
# --- Sérialisation ---
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"schema_version": self.schema_version,
|
||||||
|
"session_id": self.session_id,
|
||||||
|
"agent_version": self.agent_version,
|
||||||
|
"environment": self.environment,
|
||||||
|
"user": self.user,
|
||||||
|
"context": self.context,
|
||||||
|
"started_at": self.started_at,
|
||||||
|
"ended_at": self.ended_at,
|
||||||
|
"events": [e.__dict__ for e in self.events],
|
||||||
|
"screenshots": [s.__dict__ for s in self.screenshots],
|
||||||
|
}
|
||||||
|
|
||||||
|
def save_json(self, base_dir: Optional[str] = None) -> str:
|
||||||
|
"""
|
||||||
|
Sauvegarde le JSON rawsession_v1 dans un sous-dossier de SESSIONS_ROOT.
|
||||||
|
|
||||||
|
Retourne le chemin du fichier JSON.
|
||||||
|
"""
|
||||||
|
base_dir = base_dir or SESSIONS_ROOT
|
||||||
|
session_dir = os.path.join(base_dir, self.session_id)
|
||||||
|
os.makedirs(session_dir, exist_ok=True)
|
||||||
|
json_path = os.path.join(session_dir, f"{self.session_id}.json")
|
||||||
|
|
||||||
|
with open(json_path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(self.to_dict(), f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
return json_path
|
||||||
7
requirements.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
mss>=9.0.1
|
||||||
|
pynput>=1.7.7
|
||||||
|
requests>=2.31.0
|
||||||
|
pystray>=0.19.5
|
||||||
|
Pillow>=10.0.0
|
||||||
|
fastapi>=0.115.0 ; optional pour serveur plus tard (tu peux l’enlever ici si tu veux)
|
||||||
|
uvicorn[standard]>=0.30.0 ; idem
|
||||||
45
run.sh
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Dossier du script
|
||||||
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
cd "$BASE_DIR"
|
||||||
|
|
||||||
|
echo "[agent_v0] Dossier de travail : $BASE_DIR"
|
||||||
|
|
||||||
|
# 1) Création du venv si nécessaire
|
||||||
|
if [ ! -d ".venv" ]; then
|
||||||
|
echo "[agent_v0] Création de l'environnement virtuel (.venv)..."
|
||||||
|
python3 -m venv .venv
|
||||||
|
else
|
||||||
|
echo "[agent_v0] Environnement virtuel déjà présent (.venv)."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2) Activation du venv
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
|
echo "[agent_v0] Python utilisé : $(which python)"
|
||||||
|
echo "[agent_v0] Version : $(python --version)"
|
||||||
|
|
||||||
|
# 3) Création de requirements.txt si absent
|
||||||
|
if [ ! -f "requirements.txt" ]; then
|
||||||
|
echo "[agent_v0] Création de requirements.txt..."
|
||||||
|
cat > requirements.txt << 'EOF'
|
||||||
|
mss>=9.0.1
|
||||||
|
pynput>=1.7.7
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
echo "[agent_v0] requirements.txt déjà présent."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4) Upgrade pip + install deps
|
||||||
|
echo "[agent_v0] Mise à jour de pip..."
|
||||||
|
pip install --upgrade pip
|
||||||
|
|
||||||
|
echo "[agent_v0] Installation des dépendances depuis requirements.txt..."
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 5) Lancer l'agent
|
||||||
|
echo "[agent_v0] Lancement de main.py..."
|
||||||
|
python main.py
|
||||||
110
screen_capturer.py
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
# screen_capturer.py
|
||||||
|
"""
|
||||||
|
Capture d'écran pour agent_v0.
|
||||||
|
|
||||||
|
v0+ :
|
||||||
|
- capture de l'écran principal en PNG
|
||||||
|
- mode "full" : écran complet
|
||||||
|
- mode "crop" : zone centrée autour d'une position (curseur)
|
||||||
|
- stockage dans sessions/<session_id>/shots/shot_XXXX.png
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
from typing import Tuple, Optional
|
||||||
|
|
||||||
|
from mss import mss
|
||||||
|
from mss.tools import to_png
|
||||||
|
|
||||||
|
from config import SESSIONS_ROOT
|
||||||
|
from raw_session import RawSession
|
||||||
|
|
||||||
|
|
||||||
|
class ScreenCapturer:
|
||||||
|
"""
|
||||||
|
Gère la capture d'écran pour une session donnée.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
session: RawSession,
|
||||||
|
base_dir: str = SESSIONS_ROOT,
|
||||||
|
screenshot_mode: str = "full", # "full" | "crop"
|
||||||
|
crop_width: int = 800,
|
||||||
|
crop_height: int = 600,
|
||||||
|
) -> None:
|
||||||
|
self.session = session
|
||||||
|
self.base_dir = base_dir
|
||||||
|
self._counter = 0
|
||||||
|
|
||||||
|
self.screenshot_mode = screenshot_mode
|
||||||
|
self.crop_width = crop_width
|
||||||
|
self.crop_height = crop_height
|
||||||
|
|
||||||
|
# Résolution écran pour clamp la zone de crop
|
||||||
|
self.screen_width, self.screen_height = self.detect_primary_resolution()
|
||||||
|
|
||||||
|
def _get_session_shots_dir(self) -> str:
|
||||||
|
session_dir = os.path.join(self.base_dir, self.session.session_id)
|
||||||
|
shots_dir = os.path.join(session_dir, "shots")
|
||||||
|
os.makedirs(shots_dir, exist_ok=True)
|
||||||
|
return shots_dir
|
||||||
|
|
||||||
|
def capture(self, focus_pos: Optional[Tuple[int, int]] = None) -> Tuple[str, str]:
|
||||||
|
"""
|
||||||
|
Capture l'écran :
|
||||||
|
- si screenshot_mode == "crop" et focus_pos fourni -> zone centrée autour de focus_pos
|
||||||
|
- sinon -> plein écran
|
||||||
|
|
||||||
|
Retourne (screenshot_id, relative_path)
|
||||||
|
"""
|
||||||
|
self._counter += 1
|
||||||
|
screenshot_id = f"shot_{self._counter:04d}"
|
||||||
|
shots_dir = self._get_session_shots_dir()
|
||||||
|
filename = f"{screenshot_id}.png"
|
||||||
|
file_path = os.path.join(shots_dir, filename)
|
||||||
|
relative_path = os.path.join("shots", filename)
|
||||||
|
|
||||||
|
with mss() as sct:
|
||||||
|
if self.screenshot_mode == "crop" and focus_pos is not None:
|
||||||
|
cx, cy = focus_pos
|
||||||
|
w = min(self.crop_width, self.screen_width)
|
||||||
|
h = min(self.crop_height, self.screen_height)
|
||||||
|
|
||||||
|
left = max(0, cx - w // 2)
|
||||||
|
top = max(0, cy - h // 2)
|
||||||
|
|
||||||
|
if left + w > self.screen_width:
|
||||||
|
left = self.screen_width - w
|
||||||
|
if top + h > self.screen_height:
|
||||||
|
top = self.screen_height - h
|
||||||
|
|
||||||
|
region = {"left": int(left), "top": int(top), "width": int(w), "height": int(h)}
|
||||||
|
img = sct.grab(region)
|
||||||
|
else:
|
||||||
|
monitor = sct.monitors[0] # écran principal complet
|
||||||
|
img = sct.grab(monitor)
|
||||||
|
|
||||||
|
with open(file_path, "wb") as f:
|
||||||
|
f.write(to_png(img.rgb, img.size))
|
||||||
|
|
||||||
|
captured_at = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||||
|
self.session.add_screenshot(
|
||||||
|
screenshot_id=screenshot_id,
|
||||||
|
relative_path=relative_path,
|
||||||
|
captured_at=captured_at,
|
||||||
|
)
|
||||||
|
|
||||||
|
return screenshot_id, relative_path
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def detect_primary_resolution() -> Tuple[int, int]:
|
||||||
|
"""
|
||||||
|
Renvoie (width, height) de l'écran principal.
|
||||||
|
Utile pour remplir RawSession.environment.screen.primary_resolution.
|
||||||
|
"""
|
||||||
|
with mss() as sct:
|
||||||
|
mon = sct.monitors[0]
|
||||||
|
return mon["width"], mon["height"]
|
||||||
BIN
sessions/sess_20251122T011946_bc151626.zip
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "rawsession_v1",
|
||||||
|
"session_id": "sess_20251122T011946_bc151626",
|
||||||
|
"agent_version": "0.1.0",
|
||||||
|
"environment": {
|
||||||
|
"platform": "linux",
|
||||||
|
"hostname": "dom-X870-Riptide-WiFi",
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": [
|
||||||
|
1920,
|
||||||
|
1080
|
||||||
|
],
|
||||||
|
"display_scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"id": "demo_user",
|
||||||
|
"label": "Démo agent_v0"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos."
|
||||||
|
},
|
||||||
|
"started_at": "2025-11-22T00:19:46Z",
|
||||||
|
"ended_at": "2025-11-22T00:19:49Z",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"t": 1.935852091992274,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"button": "right",
|
||||||
|
"pos": [
|
||||||
|
1747,
|
||||||
|
19
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 3.7367831929877866,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1747,
|
||||||
|
19
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"relative_path": "shots/shot_0001.png",
|
||||||
|
"captured_at": "2025-11-22T00:19:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"relative_path": "shots/shot_0002.png",
|
||||||
|
"captured_at": "2025-11-22T00:19:49Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sessions/sess_20251122T011946_bc151626/shots/shot_0001.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
sessions/sess_20251122T011946_bc151626/shots/shot_0002.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "rawsession_v1",
|
||||||
|
"session_id": "sess_20251122T012138_2cf74644",
|
||||||
|
"agent_version": "0.1.0",
|
||||||
|
"environment": {
|
||||||
|
"platform": "linux",
|
||||||
|
"hostname": "dom-X870-Riptide-WiFi",
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": [
|
||||||
|
1920,
|
||||||
|
1080
|
||||||
|
],
|
||||||
|
"display_scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"id": "demo_user",
|
||||||
|
"label": "Démo agent_v0"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos."
|
||||||
|
},
|
||||||
|
"started_at": "2025-11-22T00:21:38Z",
|
||||||
|
"ended_at": "2025-11-22T00:21:42Z",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"t": 1.8258709929941688,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1217,
|
||||||
|
607
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 761,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 4.130582028999925,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1742,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"relative_path": "shots/shot_0001.png",
|
||||||
|
"captured_at": "2025-11-22T00:21:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"relative_path": "shots/shot_0002.png",
|
||||||
|
"captured_at": "2025-11-22T00:21:42Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sessions/sess_20251122T012138_2cf74644 (2)/shots/shot_0001.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
sessions/sess_20251122T012138_2cf74644 (2)/shots/shot_0002.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
sessions/sess_20251122T012138_2cf74644.zip
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "rawsession_v1",
|
||||||
|
"session_id": "sess_20251122T012138_2cf74644",
|
||||||
|
"agent_version": "0.1.0",
|
||||||
|
"environment": {
|
||||||
|
"platform": "linux",
|
||||||
|
"hostname": "dom-X870-Riptide-WiFi",
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": [
|
||||||
|
1920,
|
||||||
|
1080
|
||||||
|
],
|
||||||
|
"display_scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"id": "demo_user",
|
||||||
|
"label": "Démo agent_v0"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos."
|
||||||
|
},
|
||||||
|
"started_at": "2025-11-22T00:21:38Z",
|
||||||
|
"ended_at": "2025-11-22T00:21:42Z",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"t": 1.8258709929941688,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1217,
|
||||||
|
607
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 761,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 4.130582028999925,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1742,
|
||||||
|
18
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"relative_path": "shots/shot_0001.png",
|
||||||
|
"captured_at": "2025-11-22T00:21:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"relative_path": "shots/shot_0002.png",
|
||||||
|
"captured_at": "2025-11-22T00:21:42Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sessions/sess_20251122T012138_2cf74644/shots/shot_0001.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
sessions/sess_20251122T012138_2cf74644/shots/shot_0002.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
@@ -0,0 +1,845 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "rawsession_v1",
|
||||||
|
"session_id": "sess_20251122T012255_a6ff491a",
|
||||||
|
"agent_version": "0.1.0",
|
||||||
|
"environment": {
|
||||||
|
"platform": "linux",
|
||||||
|
"hostname": "dom-X870-Riptide-WiFi",
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": [
|
||||||
|
1920,
|
||||||
|
1080
|
||||||
|
],
|
||||||
|
"display_scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"id": "demo_user",
|
||||||
|
"label": "Démo agent_v0"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos."
|
||||||
|
},
|
||||||
|
"started_at": "2025-11-22T00:22:55Z",
|
||||||
|
"ended_at": "2025-11-22T00:24:03Z",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"t": 3.1684997830016073,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
38,
|
||||||
|
1045
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 4.774834978976287,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1116,
|
||||||
|
77
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 5.81886474500061,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0003",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1117,
|
||||||
|
77
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 763,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 8.675787344982382,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0004",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
964,
|
||||||
|
237
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 9.542181272991002,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0005",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
964,
|
||||||
|
236
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 731,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 10.76403674899484,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0006",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
862,
|
||||||
|
216
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 710,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 11.493462079990422,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0007",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
862,
|
||||||
|
216
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 15.005104206997203,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0008",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
45,
|
||||||
|
402
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 15.589322414976778,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0009",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
45,
|
||||||
|
402
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 702,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 23.73784916198929,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0010",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
29,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 24.215254560986068,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0011",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
29,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 762,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 26.18911038598162,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0012",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
102,
|
||||||
|
96
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 27.50064410699997,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0013",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
163,
|
||||||
|
584
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 28.398130443994887,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0014",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
977,
|
||||||
|
241
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 30.00983267198899,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0015",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
133,
|
||||||
|
103
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 30.23801764898235,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0016",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
133,
|
||||||
|
103
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 722,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 31.26953744099592,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0017",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
192,
|
||||||
|
615
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 34.50322362600127,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0018",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1039,
|
||||||
|
221
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 36.09574069298105,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre2.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0019",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
102,
|
||||||
|
98
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 37.18136298598256,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre2.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0020",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
154,
|
||||||
|
614
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 37.86934186797589,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0021",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1037,
|
||||||
|
246
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 39.08423037099419,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre3.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0022",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
145,
|
||||||
|
102
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 40.43024777297978,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre3.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0023",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
154,
|
||||||
|
606
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 41.37494612898445,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0024",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
768,
|
||||||
|
254
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 42.59985544998199,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document2.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0025",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
117,
|
||||||
|
99
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 43.510244062985294,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document2.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0026",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
149,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 47.80467690699152,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0027",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1912,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 50.78682437099633,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0028",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 51.39684452000074,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0029",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 51.46999536099611,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0030",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 785,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 52.649815398996,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0031",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 53.1728307849844,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0032",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 54.78535495797405,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0033",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 55.56673585899989,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0034",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 62.703069973998936,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0035",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
24,
|
||||||
|
542
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 700,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 67.91067471899441,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0036",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1740,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 67.92472465799074,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0037",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1740,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 752,
|
||||||
|
"scroll_delta": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"relative_path": "shots/shot_0001.png",
|
||||||
|
"captured_at": "2025-11-22T00:22:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"relative_path": "shots/shot_0002.png",
|
||||||
|
"captured_at": "2025-11-22T00:22:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0003",
|
||||||
|
"relative_path": "shots/shot_0003.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0004",
|
||||||
|
"relative_path": "shots/shot_0004.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0005",
|
||||||
|
"relative_path": "shots/shot_0005.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0006",
|
||||||
|
"relative_path": "shots/shot_0006.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0007",
|
||||||
|
"relative_path": "shots/shot_0007.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0008",
|
||||||
|
"relative_path": "shots/shot_0008.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0009",
|
||||||
|
"relative_path": "shots/shot_0009.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0010",
|
||||||
|
"relative_path": "shots/shot_0010.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0011",
|
||||||
|
"relative_path": "shots/shot_0011.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:19Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0012",
|
||||||
|
"relative_path": "shots/shot_0012.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0013",
|
||||||
|
"relative_path": "shots/shot_0013.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:22Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0014",
|
||||||
|
"relative_path": "shots/shot_0014.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0015",
|
||||||
|
"relative_path": "shots/shot_0015.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0016",
|
||||||
|
"relative_path": "shots/shot_0016.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0017",
|
||||||
|
"relative_path": "shots/shot_0017.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0018",
|
||||||
|
"relative_path": "shots/shot_0018.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0019",
|
||||||
|
"relative_path": "shots/shot_0019.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:31Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0020",
|
||||||
|
"relative_path": "shots/shot_0020.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0021",
|
||||||
|
"relative_path": "shots/shot_0021.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0022",
|
||||||
|
"relative_path": "shots/shot_0022.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0023",
|
||||||
|
"relative_path": "shots/shot_0023.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0024",
|
||||||
|
"relative_path": "shots/shot_0024.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0025",
|
||||||
|
"relative_path": "shots/shot_0025.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0026",
|
||||||
|
"relative_path": "shots/shot_0026.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0027",
|
||||||
|
"relative_path": "shots/shot_0027.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0028",
|
||||||
|
"relative_path": "shots/shot_0028.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0029",
|
||||||
|
"relative_path": "shots/shot_0029.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0030",
|
||||||
|
"relative_path": "shots/shot_0030.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0031",
|
||||||
|
"relative_path": "shots/shot_0031.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0032",
|
||||||
|
"relative_path": "shots/shot_0032.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:48Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0033",
|
||||||
|
"relative_path": "shots/shot_0033.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0034",
|
||||||
|
"relative_path": "shots/shot_0034.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0035",
|
||||||
|
"relative_path": "shots/shot_0035.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0036",
|
||||||
|
"relative_path": "shots/shot_0036.png",
|
||||||
|
"captured_at": "2025-11-22T00:24:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0037",
|
||||||
|
"relative_path": "shots/shot_0037.png",
|
||||||
|
"captured_at": "2025-11-22T00:24:03Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0001.png
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0002.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0003.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0004.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0005.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0006.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0007.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0008.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0009.png
Normal file
|
After Width: | Height: | Size: 188 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0010.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0011.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0012.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0013.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0014.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0015.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0016.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0017.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0018.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0019.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0020.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0021.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0022.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0023.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0024.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0025.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0026.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0027.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0028.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0029.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0030.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0031.png
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0032.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0033.png
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0034.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0035.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0036.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a (2)/shots/shot_0037.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a.zip
Normal file
@@ -0,0 +1,845 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "rawsession_v1",
|
||||||
|
"session_id": "sess_20251122T012255_a6ff491a",
|
||||||
|
"agent_version": "0.1.0",
|
||||||
|
"environment": {
|
||||||
|
"platform": "linux",
|
||||||
|
"hostname": "dom-X870-Riptide-WiFi",
|
||||||
|
"screen": {
|
||||||
|
"primary_resolution": [
|
||||||
|
1920,
|
||||||
|
1080
|
||||||
|
],
|
||||||
|
"display_scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"id": "demo_user",
|
||||||
|
"label": "Démo agent_v0"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"customer": "Clinique Demo",
|
||||||
|
"training_label": "Facturation_T2A_demo",
|
||||||
|
"notes": "Session réelle avec clics + screenshots + key combos."
|
||||||
|
},
|
||||||
|
"started_at": "2025-11-22T00:22:55Z",
|
||||||
|
"ended_at": "2025-11-22T00:24:03Z",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"t": 3.1684997830016073,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
38,
|
||||||
|
1045
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 4.774834978976287,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1116,
|
||||||
|
77
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 5.81886474500061,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0003",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1117,
|
||||||
|
77
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 763,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 8.675787344982382,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "unknown_window",
|
||||||
|
"app_name": "unknown_app"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0004",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
964,
|
||||||
|
237
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 9.542181272991002,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0005",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
964,
|
||||||
|
236
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 731,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 10.76403674899484,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0006",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
862,
|
||||||
|
216
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 710,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 11.493462079990422,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0007",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
862,
|
||||||
|
216
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 15.005104206997203,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0008",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
45,
|
||||||
|
402
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 15.589322414976778,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0009",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
45,
|
||||||
|
402
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 702,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 23.73784916198929,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0010",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
29,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 24.215254560986068,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0011",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
29,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 762,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 26.18911038598162,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0012",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
102,
|
||||||
|
96
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 27.50064410699997,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document1.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0013",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
163,
|
||||||
|
584
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 28.398130443994887,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0014",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
977,
|
||||||
|
241
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 30.00983267198899,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0015",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
133,
|
||||||
|
103
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 30.23801764898235,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0016",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
133,
|
||||||
|
103
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 722,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 31.26953744099592,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre1.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0017",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
192,
|
||||||
|
615
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 34.50322362600127,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0018",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1039,
|
||||||
|
221
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 36.09574069298105,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre2.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0019",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
102,
|
||||||
|
98
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 37.18136298598256,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre2.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0020",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
154,
|
||||||
|
614
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 37.86934186797589,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0021",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1037,
|
||||||
|
246
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 39.08423037099419,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre3.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0022",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
145,
|
||||||
|
102
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 40.43024777297978,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "*Livre3.xlsx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0023",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
154,
|
||||||
|
606
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 41.37494612898445,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0024",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
768,
|
||||||
|
254
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 42.59985544998199,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document2.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0025",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
117,
|
||||||
|
99
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 43.510244062985294,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Document2.docx — ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0026",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
149,
|
||||||
|
583
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 47.80467690699152,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "ONLYOFFICE",
|
||||||
|
"app_name": "DesktopEditors"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0027",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1912,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 50.78682437099633,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0028",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 51.39684452000074,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0029",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 51.46999536099611,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0030",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 785,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 52.649815398996,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0031",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 53.1728307849844,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0032",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 54.78535495797405,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0033",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 55.56673585899989,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0034",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
30,
|
||||||
|
1043
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 62.703069973998936,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0035",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
24,
|
||||||
|
542
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 700,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 67.91067471899441,
|
||||||
|
"type": "mouse_click",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0036",
|
||||||
|
"button": "left",
|
||||||
|
"pos": [
|
||||||
|
1740,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": null,
|
||||||
|
"scroll_delta": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 67.92472465799074,
|
||||||
|
"type": "hover_idle",
|
||||||
|
"window": {
|
||||||
|
"title": "Terminal",
|
||||||
|
"app_name": "gnome-terminal-"
|
||||||
|
},
|
||||||
|
"screenshot_id": "shot_0037",
|
||||||
|
"button": null,
|
||||||
|
"pos": [
|
||||||
|
1740,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"keys": null,
|
||||||
|
"idle_ms": 752,
|
||||||
|
"scroll_delta": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0001",
|
||||||
|
"relative_path": "shots/shot_0001.png",
|
||||||
|
"captured_at": "2025-11-22T00:22:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0002",
|
||||||
|
"relative_path": "shots/shot_0002.png",
|
||||||
|
"captured_at": "2025-11-22T00:22:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0003",
|
||||||
|
"relative_path": "shots/shot_0003.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0004",
|
||||||
|
"relative_path": "shots/shot_0004.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0005",
|
||||||
|
"relative_path": "shots/shot_0005.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0006",
|
||||||
|
"relative_path": "shots/shot_0006.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0007",
|
||||||
|
"relative_path": "shots/shot_0007.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0008",
|
||||||
|
"relative_path": "shots/shot_0008.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0009",
|
||||||
|
"relative_path": "shots/shot_0009.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0010",
|
||||||
|
"relative_path": "shots/shot_0010.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0011",
|
||||||
|
"relative_path": "shots/shot_0011.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:19Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0012",
|
||||||
|
"relative_path": "shots/shot_0012.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0013",
|
||||||
|
"relative_path": "shots/shot_0013.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:22Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0014",
|
||||||
|
"relative_path": "shots/shot_0014.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0015",
|
||||||
|
"relative_path": "shots/shot_0015.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0016",
|
||||||
|
"relative_path": "shots/shot_0016.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0017",
|
||||||
|
"relative_path": "shots/shot_0017.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0018",
|
||||||
|
"relative_path": "shots/shot_0018.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0019",
|
||||||
|
"relative_path": "shots/shot_0019.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:31Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0020",
|
||||||
|
"relative_path": "shots/shot_0020.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0021",
|
||||||
|
"relative_path": "shots/shot_0021.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0022",
|
||||||
|
"relative_path": "shots/shot_0022.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0023",
|
||||||
|
"relative_path": "shots/shot_0023.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0024",
|
||||||
|
"relative_path": "shots/shot_0024.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0025",
|
||||||
|
"relative_path": "shots/shot_0025.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0026",
|
||||||
|
"relative_path": "shots/shot_0026.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0027",
|
||||||
|
"relative_path": "shots/shot_0027.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0028",
|
||||||
|
"relative_path": "shots/shot_0028.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0029",
|
||||||
|
"relative_path": "shots/shot_0029.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0030",
|
||||||
|
"relative_path": "shots/shot_0030.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0031",
|
||||||
|
"relative_path": "shots/shot_0031.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:47Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0032",
|
||||||
|
"relative_path": "shots/shot_0032.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:48Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0033",
|
||||||
|
"relative_path": "shots/shot_0033.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0034",
|
||||||
|
"relative_path": "shots/shot_0034.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0035",
|
||||||
|
"relative_path": "shots/shot_0035.png",
|
||||||
|
"captured_at": "2025-11-22T00:23:57Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0036",
|
||||||
|
"relative_path": "shots/shot_0036.png",
|
||||||
|
"captured_at": "2025-11-22T00:24:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"screenshot_id": "shot_0037",
|
||||||
|
"relative_path": "shots/shot_0037.png",
|
||||||
|
"captured_at": "2025-11-22T00:24:03Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sessions/sess_20251122T012255_a6ff491a/shots/shot_0001.png
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a/shots/shot_0002.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a/shots/shot_0003.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
sessions/sess_20251122T012255_a6ff491a/shots/shot_0004.png
Normal file
|
After Width: | Height: | Size: 14 KiB |