ws-bom-robot-app 0.0.84__py3-none-any.whl → 0.0.85__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ws_bom_robot_app/cron_manager.py +3 -3
- ws_bom_robot_app/llm/utils/cleanup.py +1 -1
- ws_bom_robot_app/llm/vector_store/loader/base.py +35 -0
- ws_bom_robot_app/main.py +148 -149
- ws_bom_robot_app/subprocess_runner.py +3 -0
- ws_bom_robot_app/util.py +6 -0
- {ws_bom_robot_app-0.0.84.dist-info → ws_bom_robot_app-0.0.85.dist-info}/METADATA +1 -1
- {ws_bom_robot_app-0.0.84.dist-info → ws_bom_robot_app-0.0.85.dist-info}/RECORD +10 -10
- {ws_bom_robot_app-0.0.84.dist-info → ws_bom_robot_app-0.0.85.dist-info}/WHEEL +0 -0
- {ws_bom_robot_app-0.0.84.dist-info → ws_bom_robot_app-0.0.85.dist-info}/top_level.txt +0 -0
ws_bom_robot_app/cron_manager.py
CHANGED
|
@@ -56,9 +56,9 @@ class Job:
|
|
|
56
56
|
|
|
57
57
|
class CronManager:
|
|
58
58
|
_list_default = [
|
|
59
|
-
Job('cleanup-task-history',task_cleanup_history, interval=
|
|
60
|
-
Job('cleanup-kb-data',kb_cleanup_data_file, interval=
|
|
61
|
-
Job('cleanup-chat-attachment',chat_cleanup_attachment, interval=
|
|
59
|
+
Job('cleanup-task-history',task_cleanup_history, interval=4 * 60 * 60),
|
|
60
|
+
Job('cleanup-kb-data',kb_cleanup_data_file, interval=8 * 60 * 60),
|
|
61
|
+
Job('cleanup-chat-attachment',chat_cleanup_attachment, interval=6 * 60 * 60),
|
|
62
62
|
]
|
|
63
63
|
def __get_jobstore_strategy(self) -> JobstoreStrategy:
|
|
64
64
|
if config.robot_cron_strategy == 'memory':
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import os, logging
|
|
2
2
|
from ws_bom_robot_app.config import config
|
|
3
3
|
from datetime import datetime, timedelta
|
|
4
|
-
from ws_bom_robot_app.task_manager import task_manager
|
|
5
4
|
|
|
6
5
|
def _cleanup_data_file(folders: list[str], retention: float) -> dict:
|
|
7
6
|
"""
|
|
@@ -78,4 +77,5 @@ def task_cleanup_history() -> None:
|
|
|
78
77
|
"""
|
|
79
78
|
clean up task queue
|
|
80
79
|
"""
|
|
80
|
+
from ws_bom_robot_app.task_manager import task_manager
|
|
81
81
|
task_manager.cleanup_task()
|
|
@@ -113,6 +113,38 @@ class Loader():
|
|
|
113
113
|
|
|
114
114
|
#@timer
|
|
115
115
|
async def load(self) -> list[Document]:
|
|
116
|
+
#region log
|
|
117
|
+
import warnings
|
|
118
|
+
warnings.filterwarnings("ignore", message=".*pin_memory.*no accelerator is found.*")
|
|
119
|
+
log_msg_to_ignore = [
|
|
120
|
+
"Going to convert document batch...",
|
|
121
|
+
"Initializing pipeline for",
|
|
122
|
+
"Accelerator device:",
|
|
123
|
+
"detected formats:",
|
|
124
|
+
]
|
|
125
|
+
class MessageFilter(logging.Filter):
|
|
126
|
+
def __init__(self, patterns):
|
|
127
|
+
super().__init__()
|
|
128
|
+
self.log_msg_to_ignore = patterns
|
|
129
|
+
|
|
130
|
+
def filter(self, record):
|
|
131
|
+
for pattern in self.log_msg_to_ignore:
|
|
132
|
+
if pattern in record.getMessage():
|
|
133
|
+
return False
|
|
134
|
+
return True
|
|
135
|
+
message_filter = MessageFilter(log_msg_to_ignore)
|
|
136
|
+
loggers_to_filter = [
|
|
137
|
+
'docling',
|
|
138
|
+
'docling.document_converter',
|
|
139
|
+
'docling.datamodel',
|
|
140
|
+
'docling.datamodel.document',
|
|
141
|
+
'docling.utils.accelerator_utils',
|
|
142
|
+
'unstructured'
|
|
143
|
+
]
|
|
144
|
+
for logger_name in loggers_to_filter:
|
|
145
|
+
logging.getLogger(logger_name).addFilter(message_filter)
|
|
146
|
+
#endregion log
|
|
147
|
+
|
|
116
148
|
MAX_RETRIES = 3
|
|
117
149
|
loaders: MergedDataLoader = MergedDataLoader(self.__directory_loader())
|
|
118
150
|
try:
|
|
@@ -132,5 +164,8 @@ class Loader():
|
|
|
132
164
|
finally:
|
|
133
165
|
del _documents
|
|
134
166
|
finally:
|
|
167
|
+
# Remove logging filters
|
|
168
|
+
for logger_name in loggers_to_filter:
|
|
169
|
+
logging.getLogger(logger_name).removeFilter(message_filter)
|
|
135
170
|
del loaders
|
|
136
171
|
gc.collect()
|
ws_bom_robot_app/main.py
CHANGED
|
@@ -1,157 +1,156 @@
|
|
|
1
1
|
import datetime
|
|
2
|
-
import
|
|
3
|
-
from
|
|
4
|
-
import uvicorn, os, sys
|
|
5
|
-
from fastapi import FastAPI, Depends
|
|
6
|
-
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
|
|
7
|
-
from fastapi.openapi.utils import get_openapi
|
|
8
|
-
from ws_bom_robot_app.auth import authenticate
|
|
9
|
-
from ws_bom_robot_app.config import config
|
|
10
|
-
from ws_bom_robot_app.llm.api import router as llm
|
|
11
|
-
from ws_bom_robot_app.task_manager import router as task
|
|
12
|
-
from ws_bom_robot_app.cron_manager import (
|
|
13
|
-
router as cron,
|
|
14
|
-
cron_manager)
|
|
15
|
-
from ws_bom_robot_app.util import _log
|
|
16
|
-
|
|
2
|
+
from fastapi import FastAPI
|
|
3
|
+
from ws_bom_robot_app.util import is_app_subprocess
|
|
17
4
|
_uptime = datetime.datetime.now()
|
|
18
|
-
cron_manager.start()
|
|
19
5
|
app = FastAPI(redoc_url=None,docs_url=None,openapi_url=None)
|
|
20
|
-
app.include_router(llm,dependencies=[Depends(authenticate)])
|
|
21
|
-
app.include_router(task,dependencies=[Depends(authenticate)])
|
|
22
|
-
app.include_router(cron,dependencies=[Depends(authenticate)])
|
|
23
6
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
7
|
+
if not is_app_subprocess():
|
|
8
|
+
import platform
|
|
9
|
+
from fastapi.responses import FileResponse
|
|
10
|
+
import os, sys
|
|
11
|
+
from fastapi import Depends
|
|
12
|
+
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
|
|
13
|
+
from fastapi.openapi.utils import get_openapi
|
|
14
|
+
from ws_bom_robot_app.auth import authenticate
|
|
15
|
+
from ws_bom_robot_app.config import config
|
|
16
|
+
from ws_bom_robot_app.util import _log
|
|
17
|
+
from ws_bom_robot_app.llm.api import router as llm
|
|
18
|
+
from ws_bom_robot_app.task_manager import router as task
|
|
19
|
+
from ws_bom_robot_app.cron_manager import (
|
|
20
|
+
router as cron,
|
|
21
|
+
cron_manager)
|
|
22
|
+
cron_manager.start()
|
|
23
|
+
app.include_router(llm,dependencies=[Depends(authenticate)])
|
|
24
|
+
app.include_router(task,dependencies=[Depends(authenticate)])
|
|
25
|
+
app.include_router(cron,dependencies=[Depends(authenticate)])
|
|
30
26
|
|
|
31
|
-
@app.get("/
|
|
32
|
-
async def
|
|
33
|
-
|
|
34
|
-
@app.get("/
|
|
35
|
-
async def
|
|
36
|
-
|
|
37
|
-
@app.get("/openapi.json", include_in_schema=False)
|
|
38
|
-
async def openapi(authenticate: bool = Depends(authenticate)):
|
|
39
|
-
return get_openapi(title=app.title, version=app.version, routes=app.routes)
|
|
27
|
+
@app.get("/")
|
|
28
|
+
async def root():
|
|
29
|
+
return health()
|
|
30
|
+
@app.get("/favicon.ico")
|
|
31
|
+
async def favicon():
|
|
32
|
+
return FileResponse("./favicon.ico")
|
|
40
33
|
|
|
41
|
-
@app.get("/
|
|
42
|
-
def
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"""
|
|
51
|
-
factor = 1024
|
|
52
|
-
for unit in ["", "K", "M", "G", "T", "P"]:
|
|
53
|
-
if bytes < factor:
|
|
54
|
-
return f"{bytes:.2f}{unit}{suffix}"
|
|
55
|
-
bytes /= factor
|
|
56
|
-
def __get_disk_info():
|
|
57
|
-
import psutil
|
|
58
|
-
partitions = psutil.disk_partitions()
|
|
59
|
-
_disks:list = []
|
|
60
|
-
for partition in partitions:
|
|
61
|
-
device = partition.device
|
|
62
|
-
mountpoint = partition.mountpoint
|
|
63
|
-
fstype = partition.fstype
|
|
64
|
-
try:
|
|
65
|
-
usage = psutil.disk_usage(mountpoint)
|
|
66
|
-
except PermissionError:
|
|
67
|
-
continue
|
|
68
|
-
total = __get_size(usage.total)
|
|
69
|
-
used = __get_size(usage.used)
|
|
70
|
-
free = __get_size(usage.free)
|
|
71
|
-
percent = f"{usage.percent}%"
|
|
72
|
-
_disks.append({"device": device, "mountpoint": mountpoint, "fstype": fstype, "total": total, "used": used, "free": free, "percent": percent})
|
|
73
|
-
return _disks
|
|
74
|
-
@app.get("/api/diag",tags=["diag"])
|
|
75
|
-
def diag(authenticate: bool = Depends(authenticate)):
|
|
76
|
-
import importlib,psutil
|
|
77
|
-
from ws_bom_robot_app.llm.providers.llm_manager import LlmManager as wsllm
|
|
78
|
-
from ws_bom_robot_app.llm.vector_store.db.manager import VectorDbManager as wsdb
|
|
79
|
-
from ws_bom_robot_app.llm.vector_store.loader.base import Loader as wsldr
|
|
80
|
-
from ws_bom_robot_app.llm.vector_store.integration.manager import IntegrationManager as wsim
|
|
81
|
-
from ws_bom_robot_app.llm.tools.tool_manager import ToolManager as wstm
|
|
82
|
-
from ws_bom_robot_app.llm.agent_description import AgentDescriptor as wsad
|
|
34
|
+
@app.get("/docs", include_in_schema=False)
|
|
35
|
+
async def get_swagger_documentation(authenticate: bool = Depends(authenticate)):
|
|
36
|
+
return get_swagger_ui_html(openapi_url="/openapi.json", title="docs")
|
|
37
|
+
@app.get("/redoc", include_in_schema=False)
|
|
38
|
+
async def get_redoc_documentation(authenticate: bool = Depends(authenticate)):
|
|
39
|
+
return get_redoc_html(openapi_url="/openapi.json", title="docs")
|
|
40
|
+
@app.get("/openapi.json", include_in_schema=False)
|
|
41
|
+
async def openapi(authenticate: bool = Depends(authenticate)):
|
|
42
|
+
return get_openapi(title=app.title, version=app.version, routes=app.routes)
|
|
83
43
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
"executable": sys.executable,
|
|
127
|
-
"args": {k: arg for k, arg in enumerate(sys.argv)}
|
|
128
|
-
},
|
|
129
|
-
"os": {
|
|
130
|
-
"ppid": os.getppid(),
|
|
131
|
-
"pid": os.getpid(),
|
|
132
|
-
"pids": peer_process_ids,
|
|
133
|
-
"cwd": os.getcwd(),
|
|
134
|
-
"ws_bom_robot_app": ws_bom_robot_app_version,
|
|
135
|
-
"env": os.environ,
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
"config":config,
|
|
139
|
-
"runtime":config.runtime_options(),
|
|
140
|
-
"extension": {
|
|
141
|
-
"provider":({item[0]: type(item[1]).__name__} for item in wsllm._list.items()),
|
|
142
|
-
"db":({item[0]: type(item[1]).__name__} for item in wsdb._list.items()),
|
|
143
|
-
"loader": ({item[0]: item[1].loader.__name__ if item[1] else None} for item in sorted(wsldr._list.items(), key=lambda x: x[0]) if item[1]),
|
|
144
|
-
"integration":({item[0]: type(item[1]).__name__} for item in wsim._list.items()),
|
|
145
|
-
"tool": ({item[0]: item[1].function.__name__} for item in wstm._list.items()),
|
|
146
|
-
"agent":({item[0]: type(item[1]).__name__} for item in wsad._list.items())
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
@app.post("/diag/reload",tags=["diag"])
|
|
150
|
-
def reset(authenticate: bool = Depends(authenticate)):
|
|
151
|
-
_log.info("restart server")
|
|
152
|
-
with open(".reloadfile","w") as f:
|
|
153
|
-
f.write("")
|
|
44
|
+
@app.get("/api/health",tags=["diag"])
|
|
45
|
+
def health():
|
|
46
|
+
return {"status": "ok"}
|
|
47
|
+
def __get_size(bytes, suffix="B"):
|
|
48
|
+
"""
|
|
49
|
+
Scale bytes to its proper format
|
|
50
|
+
e.g:
|
|
51
|
+
1253656 => '1.20MB'
|
|
52
|
+
1253656678 => '1.17GB'
|
|
53
|
+
"""
|
|
54
|
+
factor = 1024
|
|
55
|
+
for unit in ["", "K", "M", "G", "T", "P"]:
|
|
56
|
+
if bytes < factor:
|
|
57
|
+
return f"{bytes:.2f}{unit}{suffix}"
|
|
58
|
+
bytes /= factor
|
|
59
|
+
def __get_disk_info():
|
|
60
|
+
import psutil
|
|
61
|
+
partitions = psutil.disk_partitions()
|
|
62
|
+
_disks:list = []
|
|
63
|
+
for partition in partitions:
|
|
64
|
+
device = partition.device
|
|
65
|
+
mountpoint = partition.mountpoint
|
|
66
|
+
fstype = partition.fstype
|
|
67
|
+
try:
|
|
68
|
+
usage = psutil.disk_usage(mountpoint)
|
|
69
|
+
except PermissionError:
|
|
70
|
+
continue
|
|
71
|
+
total = __get_size(usage.total)
|
|
72
|
+
used = __get_size(usage.used)
|
|
73
|
+
free = __get_size(usage.free)
|
|
74
|
+
percent = f"{usage.percent}%"
|
|
75
|
+
_disks.append({"device": device, "mountpoint": mountpoint, "fstype": fstype, "total": total, "used": used, "free": free, "percent": percent})
|
|
76
|
+
return _disks
|
|
77
|
+
@app.get("/api/diag",tags=["diag"])
|
|
78
|
+
def diag(authenticate: bool = Depends(authenticate)):
|
|
79
|
+
import importlib,psutil
|
|
80
|
+
from ws_bom_robot_app.llm.providers.llm_manager import LlmManager as wsllm
|
|
81
|
+
from ws_bom_robot_app.llm.vector_store.db.manager import VectorDbManager as wsdb
|
|
82
|
+
from ws_bom_robot_app.llm.vector_store.loader.base import Loader as wsldr
|
|
83
|
+
from ws_bom_robot_app.llm.vector_store.integration.manager import IntegrationManager as wsim
|
|
84
|
+
from ws_bom_robot_app.llm.tools.tool_manager import ToolManager as wstm
|
|
85
|
+
from ws_bom_robot_app.llm.agent_description import AgentDescriptor as wsad
|
|
154
86
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
87
|
+
svmem = psutil.virtual_memory()
|
|
88
|
+
swap = psutil.swap_memory()
|
|
89
|
+
try:
|
|
90
|
+
ws_bom_robot_app_version = importlib.metadata.version("ws_bom_robot_app")
|
|
91
|
+
except:
|
|
92
|
+
ws_bom_robot_app_version = "unknown"
|
|
93
|
+
peer_process_ids = [c.pid for c in psutil.Process(os.getppid()).children()] if config.runtime_options().is_multi_process else None
|
|
94
|
+
return {
|
|
95
|
+
"status":"ok",
|
|
96
|
+
"uptime": {'from':_uptime,'elapsed':str(datetime.datetime.now()-_uptime)},
|
|
97
|
+
"system": {
|
|
98
|
+
"platform": {
|
|
99
|
+
"node": platform.node(),
|
|
100
|
+
"system": platform.system(),
|
|
101
|
+
"platform": platform.platform(),
|
|
102
|
+
"version": platform.version(),
|
|
103
|
+
"type": platform.machine(),
|
|
104
|
+
"processor": platform.processor(),
|
|
105
|
+
"architecture": platform.architecture()
|
|
106
|
+
},
|
|
107
|
+
"cpu": {
|
|
108
|
+
"physical_core": psutil.cpu_count(logical=False),
|
|
109
|
+
"total_core": psutil.cpu_count(logical=True),
|
|
110
|
+
"load": f"{psutil.cpu_percent(interval=1)}%"
|
|
111
|
+
},
|
|
112
|
+
"memory": {
|
|
113
|
+
"total": f"{__get_size(svmem.total)}",
|
|
114
|
+
"available": f"{__get_size(svmem.available)}",
|
|
115
|
+
"used": f"{__get_size(svmem.used)}",
|
|
116
|
+
"free": f"{__get_size(svmem.free)}",
|
|
117
|
+
"percent": f"{svmem.percent}%"
|
|
118
|
+
},
|
|
119
|
+
"swap": {
|
|
120
|
+
"total": f"{__get_size(swap.total)}",
|
|
121
|
+
"used": f"{__get_size(swap.used)}",
|
|
122
|
+
"free": f"{__get_size(swap.free)}",
|
|
123
|
+
"percent": f"{swap.percent}%"
|
|
124
|
+
},
|
|
125
|
+
"disk": __get_disk_info(),
|
|
126
|
+
"sys": {
|
|
127
|
+
"version": sys.version,
|
|
128
|
+
"platform": sys.platform,
|
|
129
|
+
"executable": sys.executable,
|
|
130
|
+
"args": {k: arg for k, arg in enumerate(sys.argv)}
|
|
131
|
+
},
|
|
132
|
+
"os": {
|
|
133
|
+
"ppid": os.getppid(),
|
|
134
|
+
"pid": os.getpid(),
|
|
135
|
+
"pids": peer_process_ids,
|
|
136
|
+
"cwd": os.getcwd(),
|
|
137
|
+
"ws_bom_robot_app": ws_bom_robot_app_version,
|
|
138
|
+
"env": os.environ,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
"config":config,
|
|
142
|
+
"runtime":config.runtime_options(),
|
|
143
|
+
"extension": {
|
|
144
|
+
"provider":({item[0]: type(item[1]).__name__} for item in wsllm._list.items()),
|
|
145
|
+
"db":({item[0]: type(item[1]).__name__} for item in wsdb._list.items()),
|
|
146
|
+
"loader": ({item[0]: item[1].loader.__name__ if item[1] else None} for item in sorted(wsldr._list.items(), key=lambda x: x[0]) if item[1]),
|
|
147
|
+
"integration":({item[0]: type(item[1]).__name__} for item in wsim._list.items()),
|
|
148
|
+
"tool": ({item[0]: item[1].function.__name__} for item in wstm._list.items()),
|
|
149
|
+
"agent":({item[0]: type(item[1]).__name__} for item in wsad._list.items())
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
@app.post("/diag/reload",tags=["diag"])
|
|
153
|
+
def reset(authenticate: bool = Depends(authenticate)):
|
|
154
|
+
_log.info("restart server")
|
|
155
|
+
with open(".reloadfile","w") as f:
|
|
156
|
+
f.write("")
|
|
@@ -12,6 +12,9 @@ def _worker_run_pickled(serialized_task: bytes, conn: Connection):
|
|
|
12
12
|
capture return value or exception and send back via conn.send((ok_flag, payload_serialized)).
|
|
13
13
|
This runs in a separate process and must be top-level for multiprocessing.
|
|
14
14
|
"""
|
|
15
|
+
import os
|
|
16
|
+
# mark as a subprocess
|
|
17
|
+
os.environ['IS_ROBOT_APP_SUBPROCESS'] = 'true'
|
|
15
18
|
try:
|
|
16
19
|
if _pickler is None:
|
|
17
20
|
raise RuntimeError("No pickler available in worker process.")
|
ws_bom_robot_app/util.py
CHANGED
|
@@ -22,6 +22,12 @@ def logger_instance(name: str) -> logging.Logger:
|
|
|
22
22
|
_log: logging.Logger = locals().get("_loc", logger_instance(__name__))
|
|
23
23
|
#endregion
|
|
24
24
|
|
|
25
|
+
#region task
|
|
26
|
+
def is_app_subprocess():
|
|
27
|
+
"""Check if we're running a task in a subprocess."""
|
|
28
|
+
return os.environ.get('IS_ROBOT_APP_SUBPROCESS', '').lower() == 'true'
|
|
29
|
+
#endregion
|
|
30
|
+
|
|
25
31
|
#region cache
|
|
26
32
|
_cache = {}
|
|
27
33
|
_cache_timestamps = {}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
ws_bom_robot_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
ws_bom_robot_app/auth.py,sha256=84nIbmJsMrNs0sxIQGEHbjsjc2P6ZrZZGSn8dkiL6is,895
|
|
3
3
|
ws_bom_robot_app/config.py,sha256=CASD6fCCBp9YODBdlJWGN0vw7__hwrbq8WjrrLVRbTg,5307
|
|
4
|
-
ws_bom_robot_app/cron_manager.py,sha256=
|
|
5
|
-
ws_bom_robot_app/main.py,sha256=
|
|
6
|
-
ws_bom_robot_app/subprocess_runner.py,sha256=
|
|
4
|
+
ws_bom_robot_app/cron_manager.py,sha256=TOz7dsQhbGXzYMKW7GboKOSySg9aun4h0yLckj-5w4U,9372
|
|
5
|
+
ws_bom_robot_app/main.py,sha256=5h4qwQ4Ghm6CCSjO5eWvMhWxDATzUayQfQ-__E1Mw1I,6936
|
|
6
|
+
ws_bom_robot_app/subprocess_runner.py,sha256=N71HxPvgMP5TIRlO5w9UzHAEK-JKOA9i16QXM3anpjM,4195
|
|
7
7
|
ws_bom_robot_app/task_manager.py,sha256=jaxRnMCVMlxQzHyhNrt6duH4ov1zblf3-Sv8cwmesyI,24039
|
|
8
|
-
ws_bom_robot_app/util.py,sha256=
|
|
8
|
+
ws_bom_robot_app/util.py,sha256=t1VS6JQNOZe6aenBmjPLxJ_A3ncm7WqTZE8_gR85sQo,5022
|
|
9
9
|
ws_bom_robot_app/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
ws_bom_robot_app/llm/agent_context.py,sha256=uatHJ8wcRly6h0S762BgfzDMpmcwCHwNzwo37aWjeE0,1305
|
|
11
11
|
ws_bom_robot_app/llm/agent_description.py,sha256=yK4aVU3RNk1oP4bEneV3QPAi-208JwWk4R6qHlzqYIg,4656
|
|
@@ -33,7 +33,7 @@ ws_bom_robot_app/llm/tools/models/main.py,sha256=1hICqHs-KS2heenkH7b2eH0N2GrPaaN
|
|
|
33
33
|
ws_bom_robot_app/llm/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
ws_bom_robot_app/llm/utils/agent.py,sha256=_CY5Dji3UeAIi2iuU7ttz4fml1q8aCFgVWOv970x8Fw,1411
|
|
35
35
|
ws_bom_robot_app/llm/utils/chunker.py,sha256=zVXjRMloc3KbNEqiDcycYzy4N0Ey1g8XYeq6ftyvkyg,857
|
|
36
|
-
ws_bom_robot_app/llm/utils/cleanup.py,sha256=
|
|
36
|
+
ws_bom_robot_app/llm/utils/cleanup.py,sha256=ARLZTX4mLbkLCEnMdIWYDYEAPOjzfy1laLGkYnxZe30,3063
|
|
37
37
|
ws_bom_robot_app/llm/utils/cms.py,sha256=XhrLQyHQ2JUOInDCCf_uvR4Jiud0YvH2FwwiiuCnnsg,6352
|
|
38
38
|
ws_bom_robot_app/llm/utils/download.py,sha256=yBrw9n6lbz1QlWhApIlEwuQ8kMa3u11OFXx84X_NRvA,7130
|
|
39
39
|
ws_bom_robot_app/llm/utils/print.py,sha256=IsPYEWRJqu-dqlJA3F9OnnIS4rOq_EYX1Ljp3BvDnww,774
|
|
@@ -65,10 +65,10 @@ ws_bom_robot_app/llm/vector_store/integration/sitemap.py,sha256=FJy2wQDvML_1fR4g
|
|
|
65
65
|
ws_bom_robot_app/llm/vector_store/integration/slack.py,sha256=hiE1kkg7868mbP2wVWQLmC1fK2jIE1lT7f8hVN0NqeY,2636
|
|
66
66
|
ws_bom_robot_app/llm/vector_store/integration/thron.py,sha256=PylagYLzhSY_wMu_hR4PzAwSm4Jp6zi2aymuF0XN4Hw,4271
|
|
67
67
|
ws_bom_robot_app/llm/vector_store/loader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
ws_bom_robot_app/llm/vector_store/loader/base.py,sha256=
|
|
68
|
+
ws_bom_robot_app/llm/vector_store/loader/base.py,sha256=GjUS2oaz0LHOSal5pipBkomZtrYUNcKPSd8bzhUU5Dc,6889
|
|
69
69
|
ws_bom_robot_app/llm/vector_store/loader/docling.py,sha256=IOv1A0HSIWiHWQFzI4fdApfxrKgXOqwmC3mPXlKplqQ,4012
|
|
70
70
|
ws_bom_robot_app/llm/vector_store/loader/json_loader.py,sha256=qo9ejRZyKv_k6jnGgXnu1W5uqsMMtgqK_uvPpZQ0p74,833
|
|
71
|
-
ws_bom_robot_app-0.0.
|
|
72
|
-
ws_bom_robot_app-0.0.
|
|
73
|
-
ws_bom_robot_app-0.0.
|
|
74
|
-
ws_bom_robot_app-0.0.
|
|
71
|
+
ws_bom_robot_app-0.0.85.dist-info/METADATA,sha256=md1udg5NIma6BagHw38GcOjmQp2tOq5fqHvToFAqvFw,9971
|
|
72
|
+
ws_bom_robot_app-0.0.85.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
73
|
+
ws_bom_robot_app-0.0.85.dist-info/top_level.txt,sha256=Yl0akyHVbynsBX_N7wx3H3ZTkcMLjYyLJs5zBMDAKcM,17
|
|
74
|
+
ws_bom_robot_app-0.0.85.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|