ziya 0.1.41__py3-none-any.whl → 0.1.42__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.
Potentially problematic release.
This version of ziya might be problematic. Click here for more details.
- app/agents/agent.py +8 -1
- app/agents/prompts.py +19 -1
- app/main.py +4 -0
- app/server.py +33 -2
- app/utils/code_util.py +234 -0
- pyproject.toml +2 -1
- templates/asset-manifest.json +3 -3
- templates/index.html +1 -1
- templates/static/js/main.fee8aad7.js +3 -0
- templates/static/js/{main.69f6f0d1.js.LICENSE.txt → main.fee8aad7.js.LICENSE.txt} +6 -0
- templates/static/js/main.fee8aad7.js.map +1 -0
- {ziya-0.1.41.dist-info → ziya-0.1.42.dist-info}/METADATA +4 -1
- {ziya-0.1.41.dist-info → ziya-0.1.42.dist-info}/RECORD +16 -15
- templates/static/js/main.69f6f0d1.js +0 -3
- templates/static/js/main.69f6f0d1.js.map +0 -1
- {ziya-0.1.41.dist-info → ziya-0.1.42.dist-info}/LICENSE +0 -0
- {ziya-0.1.41.dist-info → ziya-0.1.42.dist-info}/WHEEL +0 -0
- {ziya-0.1.41.dist-info → ziya-0.1.42.dist-info}/entry_points.txt +0 -0
app/agents/agent.py
CHANGED
|
@@ -55,7 +55,14 @@ def get_combined_docs_from_files(files) -> str:
|
|
|
55
55
|
try:
|
|
56
56
|
full_file_path = os.path.join(user_codebase_dir, file_path)
|
|
57
57
|
docs = TextLoader(full_file_path).load()
|
|
58
|
-
for doc in docs:
|
|
58
|
+
for doc_index, doc in enumerate(docs):
|
|
59
|
+
# Add line numbers to the content
|
|
60
|
+
lines = doc.page_content.split('\n')
|
|
61
|
+
numbered_lines = [f"{i + 1:4d} | {line}" for i, line in enumerate(lines)]
|
|
62
|
+
numbered_content = '\n'.join(numbered_lines)
|
|
63
|
+
|
|
64
|
+
# Use the numbered content instead of the original
|
|
65
|
+
doc.page_content = numbered_content
|
|
59
66
|
combined_contents += f"File: {file_path}\n{doc.page_content}\n\n"
|
|
60
67
|
|
|
61
68
|
except Exception as e:
|
app/agents/prompts.py
CHANGED
|
@@ -6,6 +6,10 @@ template = """
|
|
|
6
6
|
|
|
7
7
|
You are an excellent coder. Help the user with their coding tasks. You are given the codebase of the user in your context.
|
|
8
8
|
|
|
9
|
+
IMPORTANT: The file contents provided to you have line numbers added at the beginning of each line in the format "
|
|
10
|
+
1 | <line content>". These line numbers start at 1, matching Git's conventions. Use these line numbers when generating
|
|
11
|
+
diff hunks to ensure accurate line numbering.
|
|
12
|
+
|
|
9
13
|
IMPORTANT: When recommending code changes, format your response as a standard Git diff format unless the user specifies otherwise.
|
|
10
14
|
Follow these strict guidelines for diff formatting:
|
|
11
15
|
|
|
@@ -31,11 +35,26 @@ Follow these strict guidelines for diff formatting:
|
|
|
31
35
|
|
|
32
36
|
5. End each diff block with ``` on a new line
|
|
33
37
|
|
|
38
|
+
CRITICAL: After generating each hunk diff, carefully review and verify the following:
|
|
39
|
+
1. Ensure all Hunk Headers (e.g., @@ -4,7 +4,2 @@) are accurate. The numbers should correctly reflect the lines being changed, added, or removed.
|
|
40
|
+
2. Verify that the line numbers in the Hunk Headers match the actual content changes in the diff.
|
|
41
|
+
3. Check that the diff can be applied cleanly using `git apply`. This means:
|
|
42
|
+
- The context lines (unchanged lines) in the diff should match the original file content.
|
|
43
|
+
- The line numbers and content should be consistent throughout the diff.
|
|
44
|
+
- There should be no conflicts or inconsistencies in the changes.
|
|
45
|
+
4. If you find any errors or inconsistencies, correct them before finalizing the diff.
|
|
46
|
+
5. For each hunk in the diff, please make sure it starts or ends with a line containing content instead of empty line, if possible.
|
|
47
|
+
6. When creating a new file, ensure the line `new file mode 100644` is included to specify file permissions.
|
|
48
|
+
5. When deleting a file, include `deleted file mode` to indicate that the file has been removed. Each line in the
|
|
49
|
+
deleted file should be prefixed with `-` to indicate the content removal.
|
|
50
|
+
|
|
34
51
|
Do not include any explanatory text within the diff blocks. If you need to provide explanations or comments, do so outside the diff blocks.
|
|
35
52
|
|
|
36
53
|
The codebase is provided at the end of this prompt in a specific format.
|
|
37
54
|
The code that the user has given to you for context is in the format like below where first line has the File path and then the content follows.
|
|
38
55
|
Each file starts with "File: <filepath>" followed by its content on subsequent lines.
|
|
56
|
+
Remember, each line of the file content now starts with a line number, beginning from 1. Use these numbers to generate
|
|
57
|
+
accurate hunk diffs, but do not include the line numbers in the actual diff content.
|
|
39
58
|
|
|
40
59
|
File: <filepath>
|
|
41
60
|
<Content of the file>.
|
|
@@ -63,7 +82,6 @@ conversational_prompt = ChatPromptTemplate.from_messages(
|
|
|
63
82
|
]
|
|
64
83
|
)
|
|
65
84
|
|
|
66
|
-
|
|
67
85
|
def parse_output(message):
|
|
68
86
|
text = message.content
|
|
69
87
|
return AgentFinish(return_values={"output": text}, log=text)
|
app/main.py
CHANGED
|
@@ -23,6 +23,8 @@ def parse_arguments():
|
|
|
23
23
|
help="Port number to run Ziya frontend on (e.g., --port 8080)")
|
|
24
24
|
parser.add_argument("--version", action="store_true",
|
|
25
25
|
help="Prints the version of Ziya")
|
|
26
|
+
parser.add_argument("--enable-code-apply", action="store_true",
|
|
27
|
+
help="Enable the feature to show the button to apply code diffs (unstable)")
|
|
26
28
|
parser.add_argument("--max-depth", type=int, default=15,
|
|
27
29
|
help="Maximum depth for folder structure traversal (e.g., --max-depth 20)")
|
|
28
30
|
return parser.parse_args()
|
|
@@ -38,6 +40,8 @@ def setup_environment(args):
|
|
|
38
40
|
os.environ["ZIYA_AWS_PROFILE"] = args.profile
|
|
39
41
|
if args.model:
|
|
40
42
|
os.environ["ZIYA_AWS_MODEL"] = args.model
|
|
43
|
+
if args.enable_code_apply:
|
|
44
|
+
os.environ["ZIYA_ENABLE_CODE_APPLY"] = "true"
|
|
41
45
|
|
|
42
46
|
os.environ["ZIYA_MAX_DEPTH"] = str(args.max_depth)
|
|
43
47
|
|
app/server.py
CHANGED
|
@@ -2,18 +2,21 @@ import os
|
|
|
2
2
|
from typing import Dict, Any, List, Tuple
|
|
3
3
|
|
|
4
4
|
import tiktoken
|
|
5
|
-
from fastapi import FastAPI, Request
|
|
5
|
+
from fastapi import FastAPI, Request, HTTPException
|
|
6
6
|
from fastapi.middleware.cors import CORSMiddleware
|
|
7
7
|
from fastapi.staticfiles import StaticFiles
|
|
8
8
|
from fastapi.templating import Jinja2Templates
|
|
9
9
|
from langserve import add_routes
|
|
10
10
|
from app.agents.agent import agent_executor
|
|
11
11
|
from fastapi.responses import FileResponse
|
|
12
|
+
from pydantic import BaseModel
|
|
12
13
|
|
|
13
14
|
# import pydevd_pycharm
|
|
14
15
|
import uvicorn
|
|
15
16
|
|
|
17
|
+
from app.utils.code_util import us_git_to_apply_code_diff, correct_git_diff
|
|
16
18
|
from app.utils.directory_util import get_ignored_patterns
|
|
19
|
+
from app.utils.logging_utils import logger
|
|
17
20
|
from app.utils.gitignore_parser import parse_gitignore_patterns
|
|
18
21
|
|
|
19
22
|
app = FastAPI()
|
|
@@ -35,7 +38,13 @@ add_routes(app, agent_executor, disabled_endpoints=["playground"], path="/ziya")
|
|
|
35
38
|
|
|
36
39
|
@app.get("/")
|
|
37
40
|
async def root(request: Request):
|
|
38
|
-
|
|
41
|
+
enable_code_apply = os.environ.get("ZIYA_ENABLE_CODE_APPLY", "false")
|
|
42
|
+
enable_code_apply_bool = enable_code_apply.lower() == "true"
|
|
43
|
+
logger.info(f"enable_code_apply_bool: {enable_code_apply_bool}")
|
|
44
|
+
return templates.TemplateResponse("index.html", {
|
|
45
|
+
"request": request,
|
|
46
|
+
"enable_code_apply": str(enable_code_apply_bool).lower()
|
|
47
|
+
})
|
|
39
48
|
|
|
40
49
|
|
|
41
50
|
@app.get("/favicon.ico", include_in_schema=False)
|
|
@@ -97,5 +106,27 @@ def get_default_included_folders():
|
|
|
97
106
|
return {'defaultIncludedFolders': []}
|
|
98
107
|
|
|
99
108
|
|
|
109
|
+
class ApplyChangesRequest(BaseModel):
|
|
110
|
+
diff: str
|
|
111
|
+
filePath: str
|
|
112
|
+
|
|
113
|
+
@app.post('/api/apply-changes')
|
|
114
|
+
async def apply_changes(request: ApplyChangesRequest):
|
|
115
|
+
try:
|
|
116
|
+
logger.info(f"Received request to apply changes to file: {request.filePath}")
|
|
117
|
+
logger.info(f"Diff content: \n{request.diff}")
|
|
118
|
+
|
|
119
|
+
user_codebase_dir = os.environ.get("ZIYA_USER_CODEBASE_DIR")
|
|
120
|
+
if not user_codebase_dir:
|
|
121
|
+
raise ValueError("ZIYA_USER_CODEBASE_DIR environment variable is not set")
|
|
122
|
+
|
|
123
|
+
corrected_diff = correct_git_diff(request.diff)
|
|
124
|
+
us_git_to_apply_code_diff(corrected_diff)
|
|
125
|
+
return {'message': 'Changes applied successfully'}
|
|
126
|
+
except Exception as e:
|
|
127
|
+
logger.error(f"Error applying changes: {str(e)}", exc_info=True)
|
|
128
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
129
|
+
|
|
130
|
+
|
|
100
131
|
if __name__ == "__main__":
|
|
101
132
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|
app/utils/code_util.py
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
from app.utils.logging_utils import logger
|
|
4
|
+
import time
|
|
5
|
+
import re
|
|
6
|
+
|
|
7
|
+
HUNK_HEADER_REGEX = re.compile(r'^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@')
|
|
8
|
+
|
|
9
|
+
def us_git_to_apply_code_diff(git_diff: str):
|
|
10
|
+
"""
|
|
11
|
+
Apply a git diff to the user's codebase.
|
|
12
|
+
|
|
13
|
+
This function takes a git diff as a string and applies it to the user's codebase
|
|
14
|
+
specified by the ZIYA_USER_CODEBASE_DIR environment variable. It creates a temporary
|
|
15
|
+
file with the diff content and uses the 'git apply' command to apply the changes.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
git_diff (str): A string containing the git diff to be applied.
|
|
19
|
+
|
|
20
|
+
Note:
|
|
21
|
+
This function assumes that the git command-line tool is available in the system path.
|
|
22
|
+
It uses the --ignore-whitespace and --ignore-space-change options with 'git apply'
|
|
23
|
+
to handle potential whitespace issues.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
user_codebase_dir = os.environ.get("ZIYA_USER_CODEBASE_DIR")
|
|
27
|
+
if not user_codebase_dir:
|
|
28
|
+
raise ValueError("ZIYA_USER_CODEBASE_DIR environment variable is not set")
|
|
29
|
+
|
|
30
|
+
# Create a temporary file with the diff content and a timestamp
|
|
31
|
+
timestamp = int(time.time() * 1000) # Get current timestamp in milliseconds
|
|
32
|
+
temp_file = os.path.join(user_codebase_dir, f'temp_{timestamp}.diff')
|
|
33
|
+
|
|
34
|
+
with open(temp_file, 'w', newline='\n') as f:
|
|
35
|
+
f.write(git_diff)
|
|
36
|
+
# need to add a newline at the end of the file of git apply will fail
|
|
37
|
+
f.write("\n")
|
|
38
|
+
logger.info(f"Created temporary diff file: {temp_file}")
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
# Apply the changes using git apply
|
|
42
|
+
cmd = ['git', 'apply', '--verbose', '--ignore-whitespace', '--ignore-space-change', temp_file]
|
|
43
|
+
logger.info(f"Executing command: {' '.join(cmd)}")
|
|
44
|
+
result = subprocess.run(cmd, capture_output=True, text=True, cwd=user_codebase_dir, check=True)
|
|
45
|
+
|
|
46
|
+
logger.info(f"Git apply stdout: {result.stdout}")
|
|
47
|
+
logger.error(f"Git apply stderr: {result.stderr}")
|
|
48
|
+
logger.info(f"Git apply return code: {result.returncode}")
|
|
49
|
+
|
|
50
|
+
except Exception as e:
|
|
51
|
+
logger.error(f"Error applying changes: {str(e)}", exc_info=True)
|
|
52
|
+
raise
|
|
53
|
+
finally:
|
|
54
|
+
os.remove(temp_file)
|
|
55
|
+
|
|
56
|
+
def correct_git_diff(git_diff: str) -> str:
|
|
57
|
+
"""
|
|
58
|
+
Corrects the hunk headers in a git diff string by recalculating the line counts and
|
|
59
|
+
adjusting the starting line numbers in the new file, considering the cumulative effect of
|
|
60
|
+
previous hunks.
|
|
61
|
+
|
|
62
|
+
The function assumes that the `start_line_old` values in the hunk headers are correct,
|
|
63
|
+
but the line counts and `start_line_new` may be incorrect due to manual edits or errors.
|
|
64
|
+
|
|
65
|
+
Parameters:
|
|
66
|
+
git_diff (str): The git diff string to be corrected. It may contain multiple hunks
|
|
67
|
+
and incorrect hunk headers.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
str: The git diff string with corrected hunk headers.
|
|
71
|
+
|
|
72
|
+
The function works by parsing the diff, recalculating the line counts for each hunk,
|
|
73
|
+
adjusting the `start_line_new` values based on the cumulative changes from previous hunks,
|
|
74
|
+
and reconstructing the diff with corrected hunk headers.
|
|
75
|
+
|
|
76
|
+
Notes:
|
|
77
|
+
- The diff is expected to be in unified diff format.
|
|
78
|
+
- Lines starting with '+++', '---', or other file headers are not treated as additions or deletions.
|
|
79
|
+
- Context lines are lines that do not start with '+', '-', or '@@'.
|
|
80
|
+
- All lines in the hunk (including empty lines) are considered in the counts.
|
|
81
|
+
|
|
82
|
+
"""
|
|
83
|
+
# Split the diff into lines
|
|
84
|
+
lines = git_diff.split('\n')
|
|
85
|
+
|
|
86
|
+
corrected_lines = []
|
|
87
|
+
line_index = 0
|
|
88
|
+
|
|
89
|
+
# Keep track of the cumulative line number adjustments
|
|
90
|
+
cumulative_line_offset = 0
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
while line_index < len(lines):
|
|
94
|
+
line = lines[line_index]
|
|
95
|
+
hunk_match = HUNK_HEADER_REGEX.match(line)
|
|
96
|
+
|
|
97
|
+
if hunk_match:
|
|
98
|
+
# Process the hunk
|
|
99
|
+
corrected_hunk_header, hunk_lines, line_index, line_offset = _process_hunk(
|
|
100
|
+
lines, line_index, cumulative_line_offset
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
# Update cumulative_line_offset
|
|
104
|
+
cumulative_line_offset += line_offset
|
|
105
|
+
|
|
106
|
+
# Append corrected hunk header and hunk lines
|
|
107
|
+
corrected_lines.append(corrected_hunk_header)
|
|
108
|
+
corrected_lines.extend(hunk_lines)
|
|
109
|
+
else:
|
|
110
|
+
# For non-hunk header lines, just append them
|
|
111
|
+
corrected_lines.append(line)
|
|
112
|
+
line_index += 1
|
|
113
|
+
|
|
114
|
+
# Join the corrected lines back into a string
|
|
115
|
+
corrected_diff = '\n'.join(corrected_lines)
|
|
116
|
+
return corrected_diff
|
|
117
|
+
|
|
118
|
+
def _process_hunk(lines: list, start_index: int, cumulative_line_offset: int):
|
|
119
|
+
"""
|
|
120
|
+
Processes a single hunk starting at start_index in lines, recalculates the line counts,
|
|
121
|
+
and returns the corrected hunk header, hunk lines, and the updated index after the hunk.
|
|
122
|
+
|
|
123
|
+
Parameters:
|
|
124
|
+
lines (list): The list of lines from the diff.
|
|
125
|
+
start_index (int): The index in lines where the hunk header is located.
|
|
126
|
+
cumulative_line_offset (int): The cumulative line offset from previous hunks.
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
tuple:
|
|
130
|
+
- corrected_hunk_header (str): The corrected hunk header.
|
|
131
|
+
- hunk_lines (list): The list of lines in the hunk (excluding the hunk header).
|
|
132
|
+
- end_index (int): The index in lines after the hunk.
|
|
133
|
+
- line_offset (int): The line offset caused by this hunk (to adjust future hunks).
|
|
134
|
+
|
|
135
|
+
The function reads the hunk lines, counts the number of lines in the original and new files,
|
|
136
|
+
and adjusts the starting line number in the new file based on cumulative changes.
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
line_index = start_index
|
|
140
|
+
hunk_header_line = lines[line_index]
|
|
141
|
+
hunk_match = HUNK_HEADER_REGEX.match(hunk_header_line)
|
|
142
|
+
|
|
143
|
+
# Extract the starting line numbers from the hunk header
|
|
144
|
+
start_line_old = int(hunk_match.group(1))
|
|
145
|
+
|
|
146
|
+
# Initialize counts for recalculation
|
|
147
|
+
actual_count_old = 0
|
|
148
|
+
actual_count_new = 0
|
|
149
|
+
|
|
150
|
+
# Move to the next line after the hunk header
|
|
151
|
+
line_index += 1
|
|
152
|
+
|
|
153
|
+
hunk_lines = []
|
|
154
|
+
|
|
155
|
+
# Collect hunk lines until the next hunk header or end of diff
|
|
156
|
+
while line_index < len(lines):
|
|
157
|
+
hunk_line = lines[line_index]
|
|
158
|
+
if HUNK_HEADER_REGEX.match(hunk_line):
|
|
159
|
+
break
|
|
160
|
+
else:
|
|
161
|
+
hunk_lines.append(hunk_line)
|
|
162
|
+
line_index += 1
|
|
163
|
+
|
|
164
|
+
# Now process hunk_lines to calculate counts
|
|
165
|
+
for hunk_line in hunk_lines:
|
|
166
|
+
if hunk_line.startswith('+') and not hunk_line.startswith('+++'):
|
|
167
|
+
actual_count_new += 1
|
|
168
|
+
elif hunk_line.startswith('-') and not hunk_line.startswith('---'):
|
|
169
|
+
actual_count_old += 1
|
|
170
|
+
else:
|
|
171
|
+
# Context line (unchanged line)
|
|
172
|
+
actual_count_old += 1
|
|
173
|
+
actual_count_new += 1
|
|
174
|
+
|
|
175
|
+
# Adjust start_line_new considering previous line offsets
|
|
176
|
+
corrected_start_line_new = start_line_old + cumulative_line_offset
|
|
177
|
+
|
|
178
|
+
# Calculate line offset for subsequent hunks
|
|
179
|
+
line_offset = actual_count_new - actual_count_old
|
|
180
|
+
|
|
181
|
+
# Reconstruct the corrected hunk header
|
|
182
|
+
corrected_hunk_header = _format_hunk_header(
|
|
183
|
+
start_line_old, actual_count_old, corrected_start_line_new, actual_count_new
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
return corrected_hunk_header, hunk_lines, line_index, line_offset
|
|
187
|
+
|
|
188
|
+
def _format_hunk_header(start_old: int, count_old: int, start_new: int, count_new: int) -> str:
|
|
189
|
+
"""
|
|
190
|
+
Formats the hunk header according to git diff syntax, omitting counts when they are 1.
|
|
191
|
+
|
|
192
|
+
Parameters:
|
|
193
|
+
start_old (int): Starting line number in the original file.
|
|
194
|
+
count_old (int): Number of lines in the hunk in the original file.
|
|
195
|
+
start_new (int): Starting line number in the new file.
|
|
196
|
+
count_new (int): Number of lines in the hunk in the new file.
|
|
197
|
+
|
|
198
|
+
Returns:
|
|
199
|
+
str: The formatted hunk header.
|
|
200
|
+
|
|
201
|
+
The hunk header format is:
|
|
202
|
+
@@ -start_old[,count_old] +start_new[,count_new] @@
|
|
203
|
+
|
|
204
|
+
If count_old or count_new is 1, the count is omitted.
|
|
205
|
+
"""
|
|
206
|
+
# Omit counts when they are equal to 1
|
|
207
|
+
old_part = f'-{start_old}'
|
|
208
|
+
if count_old != 1:
|
|
209
|
+
old_part += f',{count_old}'
|
|
210
|
+
new_part = f'+{start_new}'
|
|
211
|
+
if count_new != 1:
|
|
212
|
+
new_part += f',{count_new}'
|
|
213
|
+
return f'@@ {old_part} {new_part} @@'
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
if __name__ == '__main__':
|
|
218
|
+
# TODO: Create unit test and move these code to unit test
|
|
219
|
+
diff = """\
|
|
220
|
+
diff --git a/file.txt b/file.txt
|
|
221
|
+
index e69de29..4b825dc 100644
|
|
222
|
+
--- a/file.txt
|
|
223
|
+
+++ b/file.txt
|
|
224
|
+
@@ -1,5 +1,5 @@
|
|
225
|
+
Line one
|
|
226
|
+
+Line two
|
|
227
|
+
Line three
|
|
228
|
+
Line four
|
|
229
|
+
Line five
|
|
230
|
+
@@ -10,2 +10,2 @@
|
|
231
|
+
Line ten
|
|
232
|
+
-Line eleven
|
|
233
|
+
+Line eleven modified"""
|
|
234
|
+
print(correct_git_diff(diff))
|
pyproject.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "ziya"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.42"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Vishnu Krishnaprasad <vishnukool@gmail.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -18,6 +18,7 @@ tiktoken = "^0.8.0"
|
|
|
18
18
|
boto3 = "^1.34.88"
|
|
19
19
|
langchain-aws = ">=0.2,<0.3"
|
|
20
20
|
langchain = ">=0.3,<0.4"
|
|
21
|
+
langgraph = ">=0.2,<0.3"
|
|
21
22
|
langchainhub = ">=0.1.15"
|
|
22
23
|
langchain-anthropic = ">=0.2,<0.3"
|
|
23
24
|
langchain-cli = ">=0.0.15"
|
templates/asset-manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/static/css/main.8af23da0.css",
|
|
4
|
-
"main.js": "/static/js/main.
|
|
4
|
+
"main.js": "/static/js/main.fee8aad7.js",
|
|
5
5
|
"static/media/fa-solid-900.ttf": "/static/media/fa-solid-900.bacd5de623fb563b961a.ttf",
|
|
6
6
|
"static/media/fa-brands-400.ttf": "/static/media/fa-brands-400.60127e352b7a11f7f1bc.ttf",
|
|
7
7
|
"static/media/fa-solid-900.woff2": "/static/media/fa-solid-900.4d986b00ff9ca3828fbd.woff2",
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"static/media/fa-v4compatibility.woff2": "/static/media/fa-v4compatibility.cf7f5903d06b79ad60f1.woff2",
|
|
13
13
|
"index.html": "/index.html",
|
|
14
14
|
"main.8af23da0.css.map": "/static/css/main.8af23da0.css.map",
|
|
15
|
-
"main.
|
|
15
|
+
"main.fee8aad7.js.map": "/static/js/main.fee8aad7.js.map"
|
|
16
16
|
},
|
|
17
17
|
"entrypoints": [
|
|
18
18
|
"static/css/main.8af23da0.css",
|
|
19
|
-
"static/js/main.
|
|
19
|
+
"static/js/main.fee8aad7.js"
|
|
20
20
|
]
|
|
21
21
|
}
|
templates/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Ziya - Code Assistant</title><link rel="icon" href="/favicon.ico" type="image/x-icon"><script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script><script defer="defer" src="/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Ziya - Code Assistant</title><link rel="icon" href="/favicon.ico" type="image/x-icon"><script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script><script>window.enableCodeApply="{{ enable_code_apply | lower }}"</script><script defer="defer" src="/static/js/main.fee8aad7.js"></script><link href="/static/css/main.8af23da0.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
|