sunholo 0.116.1__py3-none-any.whl → 0.116.2__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.
sunholo/cli/cli.py CHANGED
@@ -16,7 +16,6 @@ from ..terraform import setup_tfvarseditor_subparser
16
16
  from ..senses.stream_voice import setup_tts_subparser
17
17
  from ..mcp.cli import setup_mcp_subparser
18
18
 
19
-
20
19
  from ..utils import ConfigManager
21
20
  from ..utils.version import sunholo_version
22
21
 
@@ -24,7 +23,7 @@ from ..custom_logging import log
24
23
 
25
24
  from .sun_rich import console
26
25
  import sys
27
- from rich.panel import Panel
26
+
28
27
 
29
28
  def load_default_gcp_config():
30
29
  try:
@@ -43,6 +42,7 @@ class CustomHelpAction(argparse.Action):
43
42
  super().__init__(option_strings, dest, nargs=nargs, **kwargs)
44
43
 
45
44
  def __call__(self, parser, namespace, values, option_string=None):
45
+ from rich.panel import Panel
46
46
  console.print(
47
47
  Panel("Welcome to Sunholo Command Line Interface, your assistant to deploy GenAI Virtual Agent Computers (VACs) to Multivac or your own Cloud.",
48
48
  title="Sunholo GenAIOps Assistant CLI",
@@ -64,7 +64,7 @@ def main(args=None):
64
64
  """
65
65
  default_project, default_region = load_default_gcp_config()
66
66
 
67
- parser = argparse.ArgumentParser(description="sunholo CLI tool for deploying GenAI VACs 3", add_help=False)
67
+ parser = argparse.ArgumentParser(description=f"sunholo CLI tool for deploying GenAI VACs - [{sunholo_version()}]", add_help=False)
68
68
  parser.add_argument('-h', '--help', action=CustomHelpAction, help='Show this help message and exit')
69
69
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
70
70
  parser.add_argument('--project', default=default_project, help='GCP project to list Cloud Run services from.')
sunholo/mcp/cli.py CHANGED
@@ -3,6 +3,7 @@ import asyncio
3
3
  from typing import Any, Sequence
4
4
  from functools import lru_cache
5
5
  import subprocess
6
+ from ..utils.version import sunholo_version
6
7
 
7
8
  try:
8
9
  from mcp.server import Server
@@ -24,12 +25,10 @@ except ImportError:
24
25
  from pydantic import AnyUrl
25
26
 
26
27
  # Configure logging
27
- import logging
28
- logging.basicConfig(level=logging.DEBUG)
29
- logger = logging.getLogger("sunholo-mcp")
28
+ from ..custom_logging import setup_logging
29
+ logger = setup_logging("sunholo-mcp")
30
30
 
31
-
32
- class SunholoMCPServer2:
31
+ class SunholoMCPServer:
33
32
  def __init__(self):
34
33
  logger.info("Initializing Sunholo MCP Server")
35
34
 
@@ -58,8 +57,8 @@ class SunholoMCPServer2:
58
57
  """List available Sunholo resources"""
59
58
  return [
60
59
  Resource(
61
- uri="sunholo://vacs/list2",
62
- name="Available Sunholo VACs 2",
60
+ uri="sunholo://vacs/list",
61
+ name="Available Sunholo VACs",
63
62
  mimeType="application/json",
64
63
  description="List of available Virtual Agent Computers"
65
64
  )
@@ -70,7 +69,7 @@ class SunholoMCPServer2:
70
69
  """Read Sunholo resources based on URI"""
71
70
  logger.info(f"{uri} available")
72
71
  console.print(f"{uri} available")
73
- if str(uri) == "sunholo://vacs/list2":
72
+ if str(uri) == "sunholo://vacs/list":
74
73
  try:
75
74
  # Execute sunholo vac list command
76
75
  result = subprocess.run(
@@ -78,7 +77,6 @@ class SunholoMCPServer2:
78
77
  capture_output=True,
79
78
  text=True
80
79
  )
81
- console.print(f"{result=}")
82
80
  return result.stdout
83
81
  except subprocess.CalledProcessError as e:
84
82
  raise RuntimeError(f"Failed to list VACs: {str(e)}")
@@ -96,7 +94,7 @@ class SunholoMCPServer2:
96
94
  return [
97
95
  Tool(
98
96
  name="chat_with_vac",
99
- description="Chat with a specific Sunholo VAC2",
97
+ description="Chat with a specific Sunholo VAC",
100
98
  inputSchema={
101
99
  "type": "object",
102
100
  "properties": {
@@ -114,7 +112,7 @@ class SunholoMCPServer2:
114
112
  ),
115
113
  Tool(
116
114
  name="list_configs",
117
- description="List Sunholo configurations2",
115
+ description="List Sunholo configurations",
118
116
  inputSchema={
119
117
  "type": "object",
120
118
  "properties": {
@@ -135,7 +133,7 @@ class SunholoMCPServer2:
135
133
  ),
136
134
  Tool(
137
135
  name="embed_content",
138
- description="Embed content in a VAC's vector store2",
136
+ description="Embed content in a VAC's vector store",
139
137
  inputSchema={
140
138
  "type": "object",
141
139
  "properties": {
@@ -269,11 +267,16 @@ def cli_mcp(args):
269
267
  """CLI handler for the MCP server command"""
270
268
  try:
271
269
 
270
+ if not os.getenv("VAC_CONFIG_FOLDER"):
271
+ raise ValueError("sunholo configuration folder must be present in config/ or via VAC_CONFIG_FOLDER")
272
+
272
273
  # Create and run the MCP server
273
- server = SunholoMCPServer2()
274
-
275
- logger.info("Starting Sunholo MCP server3...")
276
- console.print("Starting Sunholo MCP server3...")
274
+ server = SunholoMCPServer()
275
+ msg = {"message": "Starting Sunholo MCP server..."}
276
+
277
+ logger.info(msg)
278
+ console.print(msg)
279
+
277
280
  asyncio.run(server.run())
278
281
 
279
282
  except Exception as e:
@@ -292,6 +295,6 @@ def setup_mcp_subparser(subparsers):
292
295
  ```
293
296
  """
294
297
  mcp_parser = subparsers.add_parser('mcp',
295
- help='Start an Anthropic MCP server that wraps `sunholo` functionality3')
298
+ help='Start an Anthropic MCP server that wraps `sunholo` functionality')
296
299
 
297
300
  mcp_parser.set_defaults(func=cli_mcp)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.116.1
3
+ Version: 0.116.2
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.1.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.2.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -190,6 +190,12 @@ pip install . --use-feature=in-tree-build
190
190
  pytest tests
191
191
  ```
192
192
 
193
+ ## Local dev
194
+
195
+ ```sh
196
+ uv tool install --from "sunholo[cli]" sunholo --with ".[all]"
197
+ ```
198
+
193
199
  ## Demos
194
200
 
195
201
  Using https://github.com/charmbracelet/vhs
@@ -44,7 +44,7 @@ sunholo/chunker/pubsub.py,sha256=48bhuAcszN7LGe3-ksPSLHHhq0uKxiXOrizck5qpcP0,101
44
44
  sunholo/chunker/splitter.py,sha256=RfekLPkjhCcNd1PFXIj_FxusJMJ8_3cyWl7bsYvtQ0g,7068
45
45
  sunholo/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  sunholo/cli/chat_vac.py,sha256=sYPzUDwwwebJvIobv3GRW_xbQQ4BTy9G-WHdarGCHB0,23705
47
- sunholo/cli/cli.py,sha256=K8c0Lw3d0fJ_RL5Fh6wnFAhNFH7WM8Lem042Q7ytk40,4575
47
+ sunholo/cli/cli.py,sha256=WiWyLywKwuKR46H7a-mBLO0c7jMW-PNl8th2Mj7ioMs,4606
48
48
  sunholo/cli/cli_init.py,sha256=u6BZFtUyFMOKrXZ46-DfET0IpH3Tl2PlOz386rADtrw,8549
49
49
  sunholo/cli/configs.py,sha256=QUM9DvKOdZmEQRM5uI3Nh887T0YDiSMr7O240zTLqws,4546
50
50
  sunholo/cli/deploy.py,sha256=zxdwUsRTRMC8U5vyRv0JiKBLFn84Ug_Tc88-_h9hJSs,1609
@@ -108,7 +108,7 @@ sunholo/llamaindex/user_history.py,sha256=ZtkecWuF9ORduyGB8kF8gP66bm9DdvCI-ZiK6K
108
108
  sunholo/lookup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  sunholo/lookup/model_lookup.yaml,sha256=O7o-jP53MLA06C8pI-ILwERShO-xf6z_258wtpZBv6A,739
110
110
  sunholo/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- sunholo/mcp/cli.py,sha256=Ff4sQFbAli3aDalEzQkWm8o5NjeC8Nwh9qzuaPLSP4Q,10526
111
+ sunholo/mcp/cli.py,sha256=D9IFMSffCsRO6vFayzukiVX9s3CvoFFyJUcQ0S6db1s,10660
112
112
  sunholo/pubsub/__init__.py,sha256=DfTEk4zmCfqn6gFxRrqDO0pOrvXTDqH-medpgYO4PGw,117
113
113
  sunholo/pubsub/process_pubsub.py,sha256=rN2N4WM6PZkMKDrdT8pnEfTvsXACRyJFqIHJQCbuxLs,3088
114
114
  sunholo/pubsub/pubsub_manager.py,sha256=19w_N0LiG-wgVWvgJ13b8BUeN8ZzgSPXAhPmL1HRRSI,6966
@@ -149,9 +149,9 @@ sunholo/vertex/init.py,sha256=1OQwcPBKZYBTDPdyU7IM4X4OmiXLdsNV30C-fee2scQ,2875
149
149
  sunholo/vertex/memory_tools.py,sha256=tBZxqVZ4InTmdBvLlOYwoSEWu4-kGquc-gxDwZCC4FA,7667
150
150
  sunholo/vertex/safety.py,sha256=S9PgQT1O_BQAkcqauWncRJaydiP8Q_Jzmu9gxYfy1VA,2482
151
151
  sunholo/vertex/type_dict_to_json.py,sha256=uTzL4o9tJRao4u-gJOFcACgWGkBOtqACmb6ihvCErL8,4694
152
- sunholo-0.116.1.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
153
- sunholo-0.116.1.dist-info/METADATA,sha256=FYrAQFonxUdw8AVH32lbQurwbVnIdCfclmPOVK6IdRk,9210
154
- sunholo-0.116.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
155
- sunholo-0.116.1.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
156
- sunholo-0.116.1.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
157
- sunholo-0.116.1.dist-info/RECORD,,
152
+ sunholo-0.116.2.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
153
+ sunholo-0.116.2.dist-info/METADATA,sha256=YUoz-Kw42oDa68pBZ6Qd1gygiihKtR36SqJ0OnXl-6I,9297
154
+ sunholo-0.116.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
155
+ sunholo-0.116.2.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
156
+ sunholo-0.116.2.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
157
+ sunholo-0.116.2.dist-info/RECORD,,