synapse-pkg 2.0.0a2__tar.gz → 2.0.0a3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/PKG-INFO +1 -1
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/pyproject.toml +1 -1
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/extractor.py +39 -24
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/git_manager.py +72 -7
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/PKG-INFO +1 -1
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/LICENSE +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/README.md +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/setup.cfg +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/__init__.py +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/cli.py +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/commands.py +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/persistence.py +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse/processor.py +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/SOURCES.txt +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/dependency_links.txt +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/entry_points.txt +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/requires.txt +0 -0
- {synapse_pkg-2.0.0a2 → synapse_pkg-2.0.0a3}/synapse_pkg.egg-info/top_level.txt +0 -0
|
@@ -24,9 +24,31 @@ VALID_KEYS = {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
SYSTEM_PROMPT = """
|
|
28
|
+
You are Synapse Repository Memory Builder.
|
|
29
|
+
|
|
30
|
+
Your sole responsibility is to construct and maintain a canonical Repository Memory.
|
|
31
|
+
|
|
32
|
+
Always obey the task described by the user.
|
|
33
|
+
|
|
34
|
+
Rules:
|
|
35
|
+
|
|
36
|
+
- Return ONLY valid JSON.
|
|
37
|
+
- Never return markdown.
|
|
38
|
+
- Never explain your reasoning.
|
|
39
|
+
- Never summarize code for a human.
|
|
40
|
+
- Never answer conversationally.
|
|
41
|
+
- Never invent repository knowledge.
|
|
42
|
+
- Only use information present in the input.
|
|
43
|
+
- Follow the requested JSON schema exactly.
|
|
44
|
+
- Maintain a stable repository ontology.
|
|
45
|
+
- Merge equivalent concepts instead of duplicating them.
|
|
46
|
+
- Prefer abstraction over implementation details.
|
|
47
|
+
- If uncertain, omit the information instead of hallucinating.
|
|
48
|
+
"""
|
|
49
|
+
|
|
27
50
|
|
|
28
51
|
INITIAL_PROMPT_TEMPLATE = """
|
|
29
|
-
You are Synapse Repository Memory Builder.
|
|
30
52
|
|
|
31
53
|
TASK
|
|
32
54
|
|
|
@@ -188,20 +210,6 @@ OUTPUT FORMAT
|
|
|
188
210
|
"current_capabilities": []
|
|
189
211
|
}}
|
|
190
212
|
|
|
191
|
-
IMPORTANT
|
|
192
|
-
|
|
193
|
-
The output becomes compressed_context.json.
|
|
194
|
-
|
|
195
|
-
Return only valid JSON.
|
|
196
|
-
|
|
197
|
-
Return only the JSON object shown above.
|
|
198
|
-
|
|
199
|
-
No markdown.
|
|
200
|
-
|
|
201
|
-
No explanations.
|
|
202
|
-
|
|
203
|
-
No text outside JSON.
|
|
204
|
-
|
|
205
213
|
per_commit_diff:
|
|
206
214
|
|
|
207
215
|
{initial_commit_diff}
|
|
@@ -210,7 +218,6 @@ per_commit_diff:
|
|
|
210
218
|
|
|
211
219
|
|
|
212
220
|
UPDATE_PROMPT_TEMPLATE = """
|
|
213
|
-
You are Synapse Repository Memory Maintainer.
|
|
214
221
|
|
|
215
222
|
TASK
|
|
216
223
|
|
|
@@ -525,13 +532,6 @@ OUTPUT FORMAT
|
|
|
525
532
|
"current_capabilities": []
|
|
526
533
|
}}
|
|
527
534
|
|
|
528
|
-
Return ONLY valid JSON.
|
|
529
|
-
|
|
530
|
-
Return ONLY the JSON object.
|
|
531
|
-
|
|
532
|
-
No markdown.
|
|
533
|
-
|
|
534
|
-
No explanations.
|
|
535
535
|
|
|
536
536
|
current_compressed_context:
|
|
537
537
|
|
|
@@ -568,6 +568,16 @@ def generate_update_prompt(current_compressed_context, per_commit_diff):
|
|
|
568
568
|
def clean_json_response(raw: str) -> dict:
|
|
569
569
|
text = raw.strip()
|
|
570
570
|
|
|
571
|
+
|
|
572
|
+
if not text.startswith("{") and not text.startswith("```"):
|
|
573
|
+
print("=" * 80)
|
|
574
|
+
print("[context_builder] Model ignored JSON output format.")
|
|
575
|
+
print("RAW TEXT:")
|
|
576
|
+
print(text)
|
|
577
|
+
print("=" * 80)
|
|
578
|
+
return None
|
|
579
|
+
|
|
580
|
+
|
|
571
581
|
if text.startswith("```"):
|
|
572
582
|
lines = text.splitlines()
|
|
573
583
|
inner_lines = []
|
|
@@ -619,6 +629,10 @@ def get_response(prompt, num_predict=4096):
|
|
|
619
629
|
response = chat(
|
|
620
630
|
model="qwen3:14b-q4_K_M",
|
|
621
631
|
messages=[
|
|
632
|
+
{
|
|
633
|
+
"role": "system",
|
|
634
|
+
"content": SYSTEM_PROMPT
|
|
635
|
+
},
|
|
622
636
|
{
|
|
623
637
|
"role": "user",
|
|
624
638
|
"content": prompt
|
|
@@ -630,9 +644,10 @@ def get_response(prompt, num_predict=4096):
|
|
|
630
644
|
"temperature": 0
|
|
631
645
|
}
|
|
632
646
|
)
|
|
633
|
-
except Exception
|
|
647
|
+
except Exception:
|
|
634
648
|
print("Failed to connect to Ollama.")
|
|
635
649
|
print("Make sure Ollama is running and the required model is installed.")
|
|
650
|
+
return None
|
|
636
651
|
|
|
637
652
|
raw = response["message"]["content"]
|
|
638
653
|
|
|
@@ -280,28 +280,93 @@ def preprocess_readme_diff(file_diff: str) -> str:
|
|
|
280
280
|
"""
|
|
281
281
|
Remove documentation sections that are not durable repository knowledge.
|
|
282
282
|
"""
|
|
283
|
-
|
|
284
283
|
ignored_sections = [
|
|
285
284
|
"# Installation",
|
|
286
285
|
"## Installation",
|
|
286
|
+
|
|
287
287
|
"# Quick Start",
|
|
288
288
|
"## Quick Start",
|
|
289
|
+
|
|
290
|
+
"# Getting Started",
|
|
291
|
+
"## Getting Started",
|
|
292
|
+
|
|
293
|
+
"# Setup",
|
|
294
|
+
"## Setup",
|
|
295
|
+
|
|
296
|
+
"# Requirements",
|
|
297
|
+
"## Requirements",
|
|
298
|
+
|
|
299
|
+
"# Prerequisites",
|
|
300
|
+
"## Prerequisites",
|
|
301
|
+
|
|
289
302
|
"# Usage",
|
|
290
303
|
"## Usage",
|
|
304
|
+
|
|
291
305
|
"# Example",
|
|
292
306
|
"## Example",
|
|
307
|
+
|
|
293
308
|
"# Examples",
|
|
294
309
|
"## Examples",
|
|
310
|
+
|
|
311
|
+
"# Demo",
|
|
312
|
+
"## Demo",
|
|
313
|
+
|
|
314
|
+
"# Screenshots",
|
|
315
|
+
"## Screenshots",
|
|
316
|
+
|
|
317
|
+
"# Benchmark",
|
|
318
|
+
"## Benchmark",
|
|
319
|
+
|
|
320
|
+
"# Benchmarks",
|
|
321
|
+
"## Benchmarks",
|
|
322
|
+
|
|
323
|
+
"# Performance",
|
|
324
|
+
"## Performance",
|
|
325
|
+
|
|
326
|
+
"# Testing",
|
|
327
|
+
"## Testing",
|
|
328
|
+
|
|
329
|
+
"# Troubleshooting",
|
|
330
|
+
"## Troubleshooting",
|
|
331
|
+
|
|
332
|
+
"# FAQ",
|
|
333
|
+
"## FAQ",
|
|
334
|
+
|
|
335
|
+
"# Changelog",
|
|
336
|
+
"## Changelog",
|
|
337
|
+
|
|
338
|
+
"# Release Notes",
|
|
339
|
+
"## Release Notes",
|
|
340
|
+
|
|
341
|
+
"# Version History",
|
|
342
|
+
"## Version History",
|
|
343
|
+
|
|
344
|
+
"# Contributing",
|
|
345
|
+
"## Contributing",
|
|
346
|
+
|
|
347
|
+
"# Authors",
|
|
348
|
+
"## Authors",
|
|
349
|
+
|
|
295
350
|
"# Author",
|
|
296
351
|
"## Author",
|
|
352
|
+
|
|
353
|
+
"# Credits",
|
|
354
|
+
"## Credits",
|
|
355
|
+
|
|
356
|
+
"# Acknowledgements",
|
|
357
|
+
"## Acknowledgements",
|
|
358
|
+
|
|
359
|
+
"# Citation",
|
|
360
|
+
"## Citation",
|
|
361
|
+
|
|
297
362
|
"# License",
|
|
298
363
|
"## License",
|
|
299
|
-
|
|
300
|
-
"
|
|
301
|
-
"
|
|
302
|
-
|
|
303
|
-
"#
|
|
304
|
-
"##
|
|
364
|
+
|
|
365
|
+
"# Contact",
|
|
366
|
+
"## Contact",
|
|
367
|
+
|
|
368
|
+
"# Support",
|
|
369
|
+
"## Support"
|
|
305
370
|
]
|
|
306
371
|
|
|
307
372
|
lines = file_diff.splitlines()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|