cite-agent 1.3.9__py3-none-any.whl → 1.4.3__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.
Files changed (44) hide show
  1. cite_agent/__init__.py +13 -13
  2. cite_agent/__version__.py +1 -1
  3. cite_agent/action_first_mode.py +150 -0
  4. cite_agent/adaptive_providers.py +413 -0
  5. cite_agent/archive_api_client.py +186 -0
  6. cite_agent/auth.py +0 -1
  7. cite_agent/auto_expander.py +70 -0
  8. cite_agent/cache.py +379 -0
  9. cite_agent/circuit_breaker.py +370 -0
  10. cite_agent/citation_network.py +377 -0
  11. cite_agent/cli.py +8 -16
  12. cite_agent/cli_conversational.py +113 -3
  13. cite_agent/confidence_calibration.py +381 -0
  14. cite_agent/deduplication.py +325 -0
  15. cite_agent/enhanced_ai_agent.py +689 -371
  16. cite_agent/error_handler.py +228 -0
  17. cite_agent/execution_safety.py +329 -0
  18. cite_agent/full_paper_reader.py +239 -0
  19. cite_agent/observability.py +398 -0
  20. cite_agent/offline_mode.py +348 -0
  21. cite_agent/paper_comparator.py +368 -0
  22. cite_agent/paper_summarizer.py +420 -0
  23. cite_agent/pdf_extractor.py +350 -0
  24. cite_agent/proactive_boundaries.py +266 -0
  25. cite_agent/quality_gate.py +442 -0
  26. cite_agent/request_queue.py +390 -0
  27. cite_agent/response_enhancer.py +257 -0
  28. cite_agent/response_formatter.py +458 -0
  29. cite_agent/response_pipeline.py +295 -0
  30. cite_agent/response_style_enhancer.py +259 -0
  31. cite_agent/self_healing.py +418 -0
  32. cite_agent/similarity_finder.py +524 -0
  33. cite_agent/streaming_ui.py +13 -9
  34. cite_agent/thinking_blocks.py +308 -0
  35. cite_agent/tool_orchestrator.py +416 -0
  36. cite_agent/trend_analyzer.py +540 -0
  37. cite_agent/unpaywall_client.py +226 -0
  38. {cite_agent-1.3.9.dist-info → cite_agent-1.4.3.dist-info}/METADATA +15 -1
  39. cite_agent-1.4.3.dist-info/RECORD +62 -0
  40. cite_agent-1.3.9.dist-info/RECORD +0 -32
  41. {cite_agent-1.3.9.dist-info → cite_agent-1.4.3.dist-info}/WHEEL +0 -0
  42. {cite_agent-1.3.9.dist-info → cite_agent-1.4.3.dist-info}/entry_points.txt +0 -0
  43. {cite_agent-1.3.9.dist-info → cite_agent-1.4.3.dist-info}/licenses/LICENSE +0 -0
  44. {cite_agent-1.3.9.dist-info → cite_agent-1.4.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,226 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Unpaywall Integration - Find Legal Open Access PDFs
4
+ Unpaywall.org provides free, legal access to millions of research papers
5
+ """
6
+
7
+ import logging
8
+ from typing import Optional, Dict, Any
9
+ import aiohttp
10
+ import asyncio
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class UnpaywallClient:
16
+ """
17
+ Client for Unpaywall API - finds legal open access versions of papers
18
+
19
+ Unpaywall indexes 30M+ open access papers from:
20
+ - University repositories
21
+ - Author websites
22
+ - Preprint servers (arXiv, bioRxiv)
23
+ - Journal websites
24
+
25
+ Usage:
26
+ client = UnpaywallClient(email="your@email.edu")
27
+ pdf_url = await client.get_pdf_url(doi="10.1234/example")
28
+ """
29
+
30
+ BASE_URL = "https://api.unpaywall.org/v2"
31
+
32
+ def __init__(self, email: str = "research@cite-agent.com"):
33
+ """
34
+ Initialize Unpaywall client
35
+
36
+ Args:
37
+ email: Your email (required by Unpaywall API for rate limiting)
38
+ """
39
+ self.email = email
40
+ self.timeout = aiohttp.ClientTimeout(total=10)
41
+
42
+ async def get_pdf_url(self, doi: str) -> Optional[str]:
43
+ """
44
+ Get free, legal PDF URL for a paper by DOI
45
+
46
+ Args:
47
+ doi: DOI of the paper (e.g., "10.1016/j.cell.2023.01.001")
48
+
49
+ Returns:
50
+ PDF URL if open access version exists, None otherwise
51
+
52
+ Example:
53
+ >>> client = UnpaywallClient()
54
+ >>> url = await client.get_pdf_url("10.1371/journal.pone.0000001")
55
+ >>> print(url)
56
+ 'https://journals.plos.org/plosone/article/file?id=10.1371/...'
57
+ """
58
+ try:
59
+ # Clean DOI
60
+ doi = doi.strip().replace("https://doi.org/", "")
61
+
62
+ url = f"{self.BASE_URL}/{doi}"
63
+ params = {"email": self.email}
64
+
65
+ async with aiohttp.ClientSession(timeout=self.timeout) as session:
66
+ async with session.get(url, params=params) as response:
67
+ if response.status == 404:
68
+ logger.debug(f"DOI not found in Unpaywall: {doi}")
69
+ return None
70
+
71
+ if response.status != 200:
72
+ logger.warning(f"Unpaywall API error {response.status} for DOI: {doi}")
73
+ return None
74
+
75
+ data = await response.json()
76
+ return self._extract_best_pdf_url(data)
77
+
78
+ except asyncio.TimeoutError:
79
+ logger.warning(f"Unpaywall timeout for DOI: {doi}")
80
+ return None
81
+ except Exception as e:
82
+ logger.error(f"Unpaywall error for DOI {doi}: {e}")
83
+ return None
84
+
85
+ async def get_full_metadata(self, doi: str) -> Optional[Dict[str, Any]]:
86
+ """
87
+ Get full metadata including all OA locations
88
+
89
+ Returns:
90
+ {
91
+ 'is_oa': bool,
92
+ 'best_oa_location': {...},
93
+ 'oa_locations': [...],
94
+ 'doi': str,
95
+ 'title': str,
96
+ 'year': int,
97
+ ...
98
+ }
99
+ """
100
+ try:
101
+ doi = doi.strip().replace("https://doi.org/", "")
102
+ url = f"{self.BASE_URL}/{doi}"
103
+ params = {"email": self.email}
104
+
105
+ async with aiohttp.ClientSession(timeout=self.timeout) as session:
106
+ async with session.get(url, params=params) as response:
107
+ if response.status != 200:
108
+ return None
109
+ return await response.json()
110
+
111
+ except Exception as e:
112
+ logger.error(f"Unpaywall metadata error: {e}")
113
+ return None
114
+
115
+ def _extract_best_pdf_url(self, unpaywall_data: Dict[str, Any]) -> Optional[str]:
116
+ """
117
+ Extract the best PDF URL from Unpaywall response
118
+ Preference: publisher version > accepted manuscript > submitted manuscript
119
+ """
120
+ if not unpaywall_data.get('is_oa'):
121
+ return None
122
+
123
+ # Try best OA location first
124
+ best_location = unpaywall_data.get('best_oa_location')
125
+ if best_location:
126
+ pdf_url = best_location.get('url_for_pdf') or best_location.get('url')
127
+ if pdf_url and pdf_url.endswith('.pdf'):
128
+ return pdf_url
129
+
130
+ # Try all OA locations
131
+ oa_locations = unpaywall_data.get('oa_locations', [])
132
+ for location in oa_locations:
133
+ # Prefer publisher or repository versions
134
+ version = location.get('version', '')
135
+ if version in ('publishedVersion', 'acceptedVersion'):
136
+ pdf_url = location.get('url_for_pdf') or location.get('url')
137
+ if pdf_url:
138
+ return pdf_url
139
+
140
+ # Fallback: any PDF URL
141
+ for location in oa_locations:
142
+ pdf_url = location.get('url_for_pdf') or location.get('url')
143
+ if pdf_url:
144
+ return pdf_url
145
+
146
+ return None
147
+
148
+ async def batch_get_pdfs(self, dois: list[str]) -> Dict[str, Optional[str]]:
149
+ """
150
+ Get PDF URLs for multiple DOIs in parallel
151
+
152
+ Args:
153
+ dois: List of DOIs
154
+
155
+ Returns:
156
+ Dict mapping DOI -> PDF URL (or None if not available)
157
+
158
+ Example:
159
+ >>> client = UnpaywallClient()
160
+ >>> dois = ["10.1371/journal.pone.0000001", "10.1038/s41586-023-06221-2"]
161
+ >>> results = await client.batch_get_pdfs(dois)
162
+ >>> print(results)
163
+ {
164
+ '10.1371/journal.pone.0000001': 'https://...',
165
+ '10.1038/s41586-023-06221-2': None # Paywalled
166
+ }
167
+ """
168
+ tasks = [self.get_pdf_url(doi) for doi in dois]
169
+ results = await asyncio.gather(*tasks, return_exceptions=True)
170
+
171
+ output = {}
172
+ for doi, result in zip(dois, results):
173
+ if isinstance(result, Exception):
174
+ output[doi] = None
175
+ else:
176
+ output[doi] = result
177
+
178
+ return output
179
+
180
+ async def check_availability(self, doi: str) -> Dict[str, Any]:
181
+ """
182
+ Check if paper is available and get status
183
+
184
+ Returns:
185
+ {
186
+ 'is_available': bool,
187
+ 'access_type': str, # 'open_access' | 'paywalled' | 'unknown'
188
+ 'pdf_url': str | None,
189
+ 'version': str | None, # 'publishedVersion' | 'acceptedVersion' | etc
190
+ 'license': str | None
191
+ }
192
+ """
193
+ metadata = await self.get_full_metadata(doi)
194
+
195
+ if not metadata:
196
+ return {
197
+ 'is_available': False,
198
+ 'access_type': 'unknown',
199
+ 'pdf_url': None,
200
+ 'version': None,
201
+ 'license': None
202
+ }
203
+
204
+ is_oa = metadata.get('is_oa', False)
205
+ best_location = metadata.get('best_oa_location')
206
+
207
+ if is_oa and best_location:
208
+ return {
209
+ 'is_available': True,
210
+ 'access_type': 'open_access',
211
+ 'pdf_url': self._extract_best_pdf_url(metadata),
212
+ 'version': best_location.get('version'),
213
+ 'license': best_location.get('license')
214
+ }
215
+ else:
216
+ return {
217
+ 'is_available': False,
218
+ 'access_type': 'paywalled',
219
+ 'pdf_url': None,
220
+ 'version': None,
221
+ 'license': None
222
+ }
223
+
224
+
225
+ # Global instance
226
+ unpaywall = UnpaywallClient()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cite-agent
3
- Version: 1.3.9
3
+ Version: 1.4.3
4
4
  Summary: Terminal AI assistant for academic research with citation verification
5
5
  Home-page: https://github.com/Spectating101/cite-agent
6
6
  Author: Cite-Agent Team
@@ -194,6 +194,11 @@ cite-agent "我的p值是0.05,這顯著嗎?"
194
194
  cite-agent "天空是藍色的嗎?"
195
195
  ```
196
196
 
197
+ #### Runtime Controls
198
+
199
+ - Responses render immediately—there’s no artificial typing delay.
200
+ - Press `Ctrl+C` while the agent is thinking or streaming to interrupt and ask a different question on the spot.
201
+
197
202
  ### Python API Reference
198
203
 
199
204
  #### EnhancedNocturnalAgent
@@ -436,6 +441,15 @@ export NOCTURNAL_DEBUG=1
436
441
  cite-agent "your query"
437
442
  ```
438
443
 
444
+ ### Documentation
445
+
446
+ For developers and contributors:
447
+ - **[SYSTEM_STATUS.md](SYSTEM_STATUS.md)** - Current system status, test results, how to run
448
+ - **[ARCHITECTURE_EXPLAINED.md](ARCHITECTURE_EXPLAINED.md)** - Why the codebase is complex
449
+ - **[CHANGELOG.md](CHANGELOG.md)** - Version history and changes
450
+ - **[INSTALL.md](INSTALL.md)** - Detailed installation instructions
451
+ - **[TESTING.md](TESTING.md)** - How to run tests
452
+
439
453
  ### Support
440
454
 
441
455
  - **Documentation**: [Full docs](https://docs.cite-agent.com)
@@ -0,0 +1,62 @@
1
+ cite_agent/__init__.py,sha256=HAm9GEsbvdyGpF0tV5vygG5RjSF9k7sDiyh4SO-QxKo,1634
2
+ cite_agent/__main__.py,sha256=6x3lltwG-iZHeQbN12rwvdkPDfd2Rmdk71tOOaC89Mw,179
3
+ cite_agent/__version__.py,sha256=BqOI5y46o1G1RWC9bF1DPL-YM68lGYPmZt1pn6FZFZs,22
4
+ cite_agent/account_client.py,sha256=yLuzhIJoIZuXHXGbaVMzDxRATQwcy-wiaLnUrDuwUhI,5725
5
+ cite_agent/action_first_mode.py,sha256=-ntbEzT1kdgjTKDmnoyS93LzEmfrxr0Pdu6QQ5aHqUo,5312
6
+ cite_agent/adaptive_providers.py,sha256=kfO-8fN9IyCE61zyDpQn3dck2h5ZgQ3ghLI2NnA2JUw,15740
7
+ cite_agent/agent_backend_only.py,sha256=H4DH4hmKhT0T3rQLAb2xnnJVjxl3pOZaljL9r6JndFY,6314
8
+ cite_agent/archive_api_client.py,sha256=Az0ts2LN9tzgeHMOkj2zXRAOqElIo4BGrzry8FwPsEA,5921
9
+ cite_agent/ascii_plotting.py,sha256=lk8BaECs6fmjtp4iH12G09-frlRehAN7HLhHt2crers,8570
10
+ cite_agent/auth.py,sha256=5EveDbJ_j5U78HmQE9CCkEwXT8hRCVg29wzTLB8KmM0,9793
11
+ cite_agent/auto_expander.py,sha256=xoHH8hX8th49TISQGyKPGLJk0Dn-KgKkbcXFPKvjMPw,2501
12
+ cite_agent/backend_only_client.py,sha256=WqLF8x7aXTro2Q3ehqKMsdCg53s6fNk9Hy86bGxqmmw,2561
13
+ cite_agent/cache.py,sha256=1fs97FAf6r-xGgUHQ3CCvhP5y0DDH86bUc0apMDUHBc,11591
14
+ cite_agent/circuit_breaker.py,sha256=igET6Sz0hHaRZlBjNJi6qp714Ng7VGCzq4Fpdv_8qqQ,13159
15
+ cite_agent/citation_network.py,sha256=EyFIeYdr8aHmxMUNPEnPH4DRe0ScTAp6Qn5T_xDmCLQ,13194
16
+ cite_agent/cli.py,sha256=yKXLEX2LliTZpvNdwf7EadfN7uwTUNw8O2KsBKQxHok,42741
17
+ cite_agent/cli_conversational.py,sha256=U3DiFE8Is8jZCQpR2fiMUGc7uJUAVALUOsTGusUSQBU,15002
18
+ cite_agent/cli_enhanced.py,sha256=EAaSw9qtiYRWUXF6_05T19GCXlz9cCSz6n41ASnXIPc,7407
19
+ cite_agent/cli_workflow.py,sha256=4oS_jW9D8ylovXbEFdsyLQONt4o0xxR4Xatfcc4tnBs,11641
20
+ cite_agent/confidence_calibration.py,sha256=3c5uHl_czs2xcO-COOco8t0WNPfuXgMHTHoSjOirxOc,12720
21
+ cite_agent/conversation_archive.py,sha256=FV1EpcYTc732Oc5oc7EbrpaxUQkSNxP-KCEKbr8k2GA,4965
22
+ cite_agent/dashboard.py,sha256=VGV5XQU1PnqvTsxfKMcue3j2ri_nvm9Be6O5aVays_w,10502
23
+ cite_agent/deduplication.py,sha256=eXMA65U7pO2tQWmRbrA1oFoYsSsPaSNVxFkt--rQnZg,9824
24
+ cite_agent/enhanced_ai_agent.py,sha256=xyGbyYuSC-3ZXPIpVPmQ1sYfVU57DDDX-ImSSXZjuvQ,259657
25
+ cite_agent/error_handler.py,sha256=fFNNzfOnicsbVkYNj-NZZj8JuFuVi_PzT_ig8ucG-30,9598
26
+ cite_agent/execution_safety.py,sha256=T6zS9_tmLwDa0aGGnGm06-T59KcS7o8PQpoBQkrrgy0,11732
27
+ cite_agent/full_paper_reader.py,sha256=3UWpahwu9d55HCpOwcLBJvjfoj2lBV8xm-atIsMBAEM,9019
28
+ cite_agent/observability.py,sha256=U8ha4jT7ih0dl6_tIlSr6xz68MHrR3N69xt4eBNveRg,14479
29
+ cite_agent/offline_mode.py,sha256=dfY4dzsHVC4VWdcIIS_5vB-w_DA3Cgmk-MoA4-rR_6g,10969
30
+ cite_agent/paper_comparator.py,sha256=RcHn2V07VOKP9yamCTbEiQbOfcFb2lXuZ672pnsd6q8,12631
31
+ cite_agent/paper_summarizer.py,sha256=uxJg1RupDMSgok5omAnBy3OH4MsXbauTljwklJum8ak,14220
32
+ cite_agent/pdf_extractor.py,sha256=-BElF6Vvl-XoZ3a_RwxIcs6Aqvp3UOpSapHGIJidTqA,12643
33
+ cite_agent/proactive_boundaries.py,sha256=r1UFzFuukHzPKi1Yp1PBRgE4HGRV8SLmDPZBn9ZiEDY,8129
34
+ cite_agent/project_detector.py,sha256=fPl5cLTy_oyufqrQ7RJ5IRVdofZoPqDRaQXW6tRtBJc,6086
35
+ cite_agent/quality_gate.py,sha256=LLVL7c-jVw5G7Iu7P6jazgtt-N5KHlVtmzVGiQBzEAM,15194
36
+ cite_agent/rate_limiter.py,sha256=-0fXx8Tl4zVB4O28n9ojU2weRo-FBF1cJo9Z5jC2LxQ,10908
37
+ cite_agent/request_queue.py,sha256=wvC4mNw-K39tnFiMun9Ii2icZ-1xnacbkfUiVU_-424,13684
38
+ cite_agent/response_enhancer.py,sha256=NwUkAMmbYhuW3JTAy2jz8CADdnviOPfkwYxm_a04pM4,9228
39
+ cite_agent/response_formatter.py,sha256=Do5VhqTHC7L7e-wBGgrySXCx8UlUVKjC_F9Qw6sP-fk,14108
40
+ cite_agent/response_pipeline.py,sha256=ktjOvfAHNlIMKi_Wn__-kzL60XfTZEtHt61YZybAWlA,10719
41
+ cite_agent/response_style_enhancer.py,sha256=6jKdP4HjJ3_BNi-ryAmmAh14VSQPqZ-cFRjBbaEQGB0,9577
42
+ cite_agent/self_healing.py,sha256=fkqprNNB47RFA7ZkgcqPbllHl2VlWl7r7Z9LLunV_3A,15145
43
+ cite_agent/session_manager.py,sha256=B0MXSOsXdhO3DlvTG7S8x6pmGlYEDvIZ-o8TZM23niQ,9444
44
+ cite_agent/setup_config.py,sha256=3m2e3gw0srEWA0OygdRo64r-8HK5ohyXfct0c__CF3s,16817
45
+ cite_agent/similarity_finder.py,sha256=AWQv4n_PnKB5CW9eTcp1Qcz53jz7MMhyM6i_2zT_E4Q,18219
46
+ cite_agent/streaming_ui.py,sha256=7MoiXvwzkoB8-TnvEU658gqKJgQVG_PuzNMCc9JH_iM,8005
47
+ cite_agent/telemetry.py,sha256=55kXdHvI24ZsEkbFtihcjIfJt2oiSXcEpLzTxQ3KCdQ,2916
48
+ cite_agent/thinking_blocks.py,sha256=Jseqv_y9VoV4KoVfQUSDDwd4orRPG6vnLq-aiqyXu3M,10375
49
+ cite_agent/tool_orchestrator.py,sha256=Bgd70gtvLOYEyx0prFiKR9EYRqsDZroJR0vJG2dxT80,13538
50
+ cite_agent/trend_analyzer.py,sha256=rdaAq0WN4DoJ6hTLOCKCavVXcuINBgrlug8OFQBzUO4,18900
51
+ cite_agent/ui.py,sha256=r1OAeY3NSeqhAjJYmEBH9CaennBuibFAz1Mur6YF80E,6134
52
+ cite_agent/unpaywall_client.py,sha256=sBw4ienLbzF8HMZw_hKHCiqFoXOVvOj-Jt5r1aBnmCs,7395
53
+ cite_agent/updater.py,sha256=udoAAN4gBKAvKDV7JTh2FJO_jIhNk9bby4x6n188MEY,8458
54
+ cite_agent/web_search.py,sha256=FZCuNO7MAITiOIbpPbJyt2bzbXPzQla-9amJpnMpW_4,6520
55
+ cite_agent/workflow.py,sha256=a0YC0Mzz4or1C5t2gZcuJBQ0uMOZrooaI8eLu2kkI0k,15086
56
+ cite_agent/workflow_integration.py,sha256=A9ua0DN5pRtuU0cAwrUTGvqt2SXKhEHQbrHx16EGnDM,10910
57
+ cite_agent-1.4.3.dist-info/licenses/LICENSE,sha256=XJkyO4IymhSUniN1ENY6lLrL2729gn_rbRlFK6_Hi9M,1074
58
+ cite_agent-1.4.3.dist-info/METADATA,sha256=5qRVIPffckAaInNqrnaZnkbapUrtUIcp_csKpCb-20I,12859
59
+ cite_agent-1.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
60
+ cite_agent-1.4.3.dist-info/entry_points.txt,sha256=bJ0u28nFIxQKH1PWQ2ak4PV-FAjhoxTC7YADEdDenFw,83
61
+ cite_agent-1.4.3.dist-info/top_level.txt,sha256=NNfD8pxDZzBK8tjDIpCs2BW9Va-OQ5qUFbEx0SgmyIE,11
62
+ cite_agent-1.4.3.dist-info/RECORD,,
@@ -1,32 +0,0 @@
1
- cite_agent/__init__.py,sha256=wAXV2v8nNOmIAd0rh8196ItBl9hHWBVOBl5Re4VB77I,1645
2
- cite_agent/__main__.py,sha256=6x3lltwG-iZHeQbN12rwvdkPDfd2Rmdk71tOOaC89Mw,179
3
- cite_agent/__version__.py,sha256=SaWgUI6v92kVfF_Qdoxbfc38bwA34RuDGZmXMqa5g3c,22
4
- cite_agent/account_client.py,sha256=yLuzhIJoIZuXHXGbaVMzDxRATQwcy-wiaLnUrDuwUhI,5725
5
- cite_agent/agent_backend_only.py,sha256=H4DH4hmKhT0T3rQLAb2xnnJVjxl3pOZaljL9r6JndFY,6314
6
- cite_agent/ascii_plotting.py,sha256=lk8BaECs6fmjtp4iH12G09-frlRehAN7HLhHt2crers,8570
7
- cite_agent/auth.py,sha256=YtoGXKwcLkZQbop37iYYL9BzRWBRPlt_D9p71VGViS4,9833
8
- cite_agent/backend_only_client.py,sha256=WqLF8x7aXTro2Q3ehqKMsdCg53s6fNk9Hy86bGxqmmw,2561
9
- cite_agent/cli.py,sha256=edXwkxOvDJgQBJr5L2w5fREzqxi10-Iti5Es5gV7pmU,43249
10
- cite_agent/cli_conversational.py,sha256=RAmgRNRyB8gQ8QLvWU-Tt23j2lmA34rQNT5F3_7SOq0,11141
11
- cite_agent/cli_enhanced.py,sha256=EAaSw9qtiYRWUXF6_05T19GCXlz9cCSz6n41ASnXIPc,7407
12
- cite_agent/cli_workflow.py,sha256=4oS_jW9D8ylovXbEFdsyLQONt4o0xxR4Xatfcc4tnBs,11641
13
- cite_agent/conversation_archive.py,sha256=FV1EpcYTc732Oc5oc7EbrpaxUQkSNxP-KCEKbr8k2GA,4965
14
- cite_agent/dashboard.py,sha256=VGV5XQU1PnqvTsxfKMcue3j2ri_nvm9Be6O5aVays_w,10502
15
- cite_agent/enhanced_ai_agent.py,sha256=kXtZjcpGU6pXnC209BluOgytVEftwVB5Pcbxe3Y6-XY,243565
16
- cite_agent/project_detector.py,sha256=fPl5cLTy_oyufqrQ7RJ5IRVdofZoPqDRaQXW6tRtBJc,6086
17
- cite_agent/rate_limiter.py,sha256=-0fXx8Tl4zVB4O28n9ojU2weRo-FBF1cJo9Z5jC2LxQ,10908
18
- cite_agent/session_manager.py,sha256=B0MXSOsXdhO3DlvTG7S8x6pmGlYEDvIZ-o8TZM23niQ,9444
19
- cite_agent/setup_config.py,sha256=3m2e3gw0srEWA0OygdRo64r-8HK5ohyXfct0c__CF3s,16817
20
- cite_agent/streaming_ui.py,sha256=N6TWOo7GVQ_Ynfw73JCfrdGcLIU-PwbS3GbsHQHegmg,7810
21
- cite_agent/telemetry.py,sha256=55kXdHvI24ZsEkbFtihcjIfJt2oiSXcEpLzTxQ3KCdQ,2916
22
- cite_agent/ui.py,sha256=r1OAeY3NSeqhAjJYmEBH9CaennBuibFAz1Mur6YF80E,6134
23
- cite_agent/updater.py,sha256=udoAAN4gBKAvKDV7JTh2FJO_jIhNk9bby4x6n188MEY,8458
24
- cite_agent/web_search.py,sha256=FZCuNO7MAITiOIbpPbJyt2bzbXPzQla-9amJpnMpW_4,6520
25
- cite_agent/workflow.py,sha256=a0YC0Mzz4or1C5t2gZcuJBQ0uMOZrooaI8eLu2kkI0k,15086
26
- cite_agent/workflow_integration.py,sha256=A9ua0DN5pRtuU0cAwrUTGvqt2SXKhEHQbrHx16EGnDM,10910
27
- cite_agent-1.3.9.dist-info/licenses/LICENSE,sha256=XJkyO4IymhSUniN1ENY6lLrL2729gn_rbRlFK6_Hi9M,1074
28
- cite_agent-1.3.9.dist-info/METADATA,sha256=G7UmQPgIHXxS-6hgiWml8L7U23XsLb7JlB0nh0NVxo4,12231
29
- cite_agent-1.3.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
30
- cite_agent-1.3.9.dist-info/entry_points.txt,sha256=bJ0u28nFIxQKH1PWQ2ak4PV-FAjhoxTC7YADEdDenFw,83
31
- cite_agent-1.3.9.dist-info/top_level.txt,sha256=NNfD8pxDZzBK8tjDIpCs2BW9Va-OQ5qUFbEx0SgmyIE,11
32
- cite_agent-1.3.9.dist-info/RECORD,,