unitysvc-data 0.1.9__tar.gz → 0.1.10__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.
Files changed (136) hide show
  1. {unitysvc_data-0.1.9/src/unitysvc_data.egg-info → unitysvc_data-0.1.10}/PKG-INFO +1 -1
  2. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/pyproject.toml +1 -1
  3. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/_manifest.json +45 -0
  4. unitysvc_data-0.1.10/src/unitysvc_data/examples/llm/connectivity/README.md +46 -0
  5. unitysvc_data-0.1.10/src/unitysvc_data/examples/llm/connectivity/connectivity-v1.sh.j2 +15 -0
  6. unitysvc_data-0.1.10/src/unitysvc_data/examples/llm/connectivity-anthropic/README.md +57 -0
  7. unitysvc_data-0.1.10/src/unitysvc_data/examples/llm/connectivity-anthropic/connectivity-v1.sh.j2 +16 -0
  8. unitysvc_data-0.1.10/src/unitysvc_data/examples/smtp/code-example/README.md +64 -0
  9. unitysvc_data-0.1.10/src/unitysvc_data/examples/smtp/code-example/code-example-v1.py.j2 +46 -0
  10. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10/src/unitysvc_data.egg-info}/PKG-INFO +1 -1
  11. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data.egg-info/SOURCES.txt +6 -0
  12. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/LICENSE +0 -0
  13. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/README.md +0 -0
  14. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/setup.cfg +0 -0
  15. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/__init__.py +0 -0
  16. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/_registry.py +0 -0
  17. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/_version.py +0 -0
  18. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/cli.py +0 -0
  19. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/code-example-requests/README.md +0 -0
  20. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/code-example-requests/code-example-v1.py.j2 +0 -0
  21. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/code-example-shell/README.md +0 -0
  22. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/code-example-shell/code-example-v1.sh.j2 +0 -0
  23. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/connectivity/README.md +0 -0
  24. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/api/connectivity/connectivity-v1.sh.j2 +0 -0
  25. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-anthropic/README.md +0 -0
  26. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-anthropic/code-example-v1.py.j2 +0 -0
  27. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-javascript/README.md +0 -0
  28. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-javascript/code-example-embed-image-v1.js.j2 +0 -0
  29. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-requests/README.md +0 -0
  30. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-requests/code-example-embed-image-v1.py.j2 +0 -0
  31. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-shell/README.md +0 -0
  32. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-image-shell/code-example-embed-image-v1.sh.j2 +0 -0
  33. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-javascript/README.md +0 -0
  34. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-javascript/code-example-embed-v1.js.j2 +0 -0
  35. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-requests/README.md +0 -0
  36. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-requests/code-example-embed-v1.py.j2 +0 -0
  37. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-shell/README.md +0 -0
  38. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-embed-shell/code-example-embed-v1.sh.j2 +0 -0
  39. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-fc-requests/README.md +0 -0
  40. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-fc-requests/code-example-fc-v1.py.j2 +0 -0
  41. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-javascript/README.md +0 -0
  42. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-javascript/code-example-guard-v1.js.j2 +0 -0
  43. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-requests/README.md +0 -0
  44. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-requests/code-example-guard-v1.py.j2 +0 -0
  45. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-shell/README.md +0 -0
  46. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-guard-shell/code-example-guard-v1.sh.j2 +0 -0
  47. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-javascript/README.md +0 -0
  48. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-javascript/code-example-image-v1.js.j2 +0 -0
  49. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-requests/README.md +0 -0
  50. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-requests/code-example-image-v1.py.j2 +0 -0
  51. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-shell/README.md +0 -0
  52. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-image-shell/code-example-image-v1.sh.j2 +0 -0
  53. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-javascript/README.md +0 -0
  54. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-javascript/code-example-imagetoimage-v1.js.j2 +0 -0
  55. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-requests/README.md +0 -0
  56. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-requests/code-example-imagetoimage-v1.py.j2 +0 -0
  57. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-shell/README.md +0 -0
  58. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-imagetoimage-shell/code-example-imagetoimage-v1.sh.j2 +0 -0
  59. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-javascript/README.md +0 -0
  60. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-javascript/code-example-v1.js.j2 +0 -0
  61. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-openai/README.md +0 -0
  62. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-openai/code-example-v1.py.j2 +0 -0
  63. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-openai-javascript/README.md +0 -0
  64. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-openai-javascript/code-example-v1.js.j2 +0 -0
  65. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-requests/README.md +0 -0
  66. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-requests/code-example-v1.py.j2 +0 -0
  67. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-javascript/README.md +0 -0
  68. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-javascript/code-example-rerank-v1.js.j2 +0 -0
  69. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-requests/README.md +0 -0
  70. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-requests/code-example-rerank-v1.py.j2 +0 -0
  71. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-shell/README.md +0 -0
  72. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-rerank-shell/code-example-rerank-v1.sh.j2 +0 -0
  73. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-javascript/README.md +0 -0
  74. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-javascript/code-example-sentencetransformers-v1.js.j2 +0 -0
  75. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-requests/README.md +0 -0
  76. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-requests/code-example-sentencetransformers-v1.py.j2 +0 -0
  77. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-shell/README.md +0 -0
  78. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-sentencetransformers-shell/code-example-sentencetransformers-v1.sh.j2 +0 -0
  79. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-shell/README.md +0 -0
  80. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-shell/code-example-v1.sh.j2 +0 -0
  81. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-streaming-openai/README.md +0 -0
  82. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-streaming-openai/code-example-v1.py.j2 +0 -0
  83. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-streaming-openai-javascript/README.md +0 -0
  84. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-streaming-openai-javascript/code-example-v1.js.j2 +0 -0
  85. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-javascript/README.md +0 -0
  86. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-javascript/code-example-transcription-v1.js.j2 +0 -0
  87. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-requests/README.md +0 -0
  88. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-requests/code-example-transcription-v1.py.j2 +0 -0
  89. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-shell/README.md +0 -0
  90. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-transcription-shell/code-example-transcription-v1.sh.j2 +0 -0
  91. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-javascript/README.md +0 -0
  92. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-javascript/code-example-tts-v1.js.j2 +0 -0
  93. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-requests/README.md +0 -0
  94. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-requests/code-example-tts-v1.py.j2 +0 -0
  95. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-shell/README.md +0 -0
  96. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-tts-shell/code-example-tts-v1.sh.j2 +0 -0
  97. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-javascript/README.md +0 -0
  98. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-javascript/code-example-ttv-v1.js.j2 +0 -0
  99. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-requests/README.md +0 -0
  100. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-requests/code-example-ttv-v1.py.j2 +0 -0
  101. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-shell/README.md +0 -0
  102. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-ttv-shell/code-example-ttv-v1.sh.j2 +0 -0
  103. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-javascript/README.md +0 -0
  104. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-javascript/code-example-vision-v1.js.j2 +0 -0
  105. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-requests/README.md +0 -0
  106. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-requests/code-example-vision-v1.py.j2 +0 -0
  107. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-shell/README.md +0 -0
  108. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/code-example-vision-shell/code-example-vision-v1.sh.j2 +0 -0
  109. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/description/README.md +0 -0
  110. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/description/description-v1.md +0 -0
  111. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/request-template/README.md +0 -0
  112. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/llm/request-template/request-template-v1.json +0 -0
  113. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/notification/description/README.md +0 -0
  114. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/notification/description/description-v1.md +0 -0
  115. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/recommender/description/README.md +0 -0
  116. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/recommender/description/description-v1.md +0 -0
  117. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/code-example/README.md +0 -0
  118. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/code-example/code-example-v1.py.j2 +0 -0
  119. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/connectivity/README.md +0 -0
  120. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/connectivity/connectivity-v1.py.j2 +0 -0
  121. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/description/README.md +0 -0
  122. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/s3/description/description-v1.md +0 -0
  123. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/smtp/connectivity/README.md +0 -0
  124. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/smtp/connectivity/connectivity-v1.sh.j2 +0 -0
  125. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/smtp/connectivity/connectivity-v2.sh.j2 +0 -0
  126. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/uptime/description/README.md +0 -0
  127. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/examples/uptime/description/description-v1.md +0 -0
  128. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/presets.py +0 -0
  129. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data/py.typed +0 -0
  130. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data.egg-info/dependency_links.txt +0 -0
  131. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data.egg-info/entry_points.txt +0 -0
  132. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data.egg-info/requires.txt +0 -0
  133. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/src/unitysvc_data.egg-info/top_level.txt +0 -0
  134. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/tests/test_build.py +0 -0
  135. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/tests/test_cli.py +0 -0
  136. {unitysvc_data-0.1.9 → unitysvc_data-0.1.10}/tests/test_presets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unitysvc-data
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: Standard examples and presets for UnitySVC data packages
5
5
  Author-email: Bo Peng <bo.peng@unitysvc.com>
6
6
  Maintainer-email: Bo Peng <bo.peng@unitysvc.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "unitysvc-data"
7
- version = "0.1.9"
7
+ version = "0.1.10"
8
8
  description = "Standard examples and presets for UnitySVC data packages"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Bo Peng", email = "bo.peng@unitysvc.com" }]
@@ -45,6 +45,8 @@
45
45
  "llm_code_example_vision_javascript": "llm_code_example_vision_javascript_v1",
46
46
  "llm_code_example_vision_requests": "llm_code_example_vision_requests_v1",
47
47
  "llm_code_example_vision_shell": "llm_code_example_vision_shell_v1",
48
+ "llm_connectivity": "llm_connectivity_v1",
49
+ "llm_connectivity_anthropic": "llm_connectivity_anthropic_v1",
48
50
  "llm_description": "llm_description_v1",
49
51
  "llm_request_template": "llm_request_template_v1",
50
52
  "notification_description": "notification_description_v1",
@@ -52,6 +54,7 @@
52
54
  "s3_code_example": "s3_code_example_v1",
53
55
  "s3_connectivity": "s3_connectivity_v1",
54
56
  "s3_description": "s3_description_v1",
57
+ "smtp_code_example": "smtp_code_example_v1",
55
58
  "smtp_connectivity": "smtp_connectivity_v2",
56
59
  "uptime_description": "uptime_description_v1"
57
60
  },
@@ -677,6 +680,34 @@
677
680
  "source_readme": "llm/code-example-vision-shell/README.md",
678
681
  "version": 1
679
682
  },
683
+ "llm_connectivity_anthropic_v1": {
684
+ "category": "connectivity_test",
685
+ "description": "Verify an Anthropic-Messages-API LLM endpoint by issuing a tiny one-token message",
686
+ "example_file": "llm/connectivity-anthropic/connectivity-v1.sh.j2",
687
+ "is_active": true,
688
+ "is_public": false,
689
+ "meta": {
690
+ "output_contains": "connectivity ok"
691
+ },
692
+ "mime_type": "bash",
693
+ "preset_name": "llm_connectivity_anthropic",
694
+ "source_readme": "llm/connectivity-anthropic/README.md",
695
+ "version": 1
696
+ },
697
+ "llm_connectivity_v1": {
698
+ "category": "connectivity_test",
699
+ "description": "Verify an OpenAI-compatible LLM endpoint by issuing a tiny chat completion",
700
+ "example_file": "llm/connectivity/connectivity-v1.sh.j2",
701
+ "is_active": true,
702
+ "is_public": false,
703
+ "meta": {
704
+ "output_contains": "connectivity ok"
705
+ },
706
+ "mime_type": "bash",
707
+ "preset_name": "llm_connectivity",
708
+ "source_readme": "llm/connectivity/README.md",
709
+ "version": 1
710
+ },
680
711
  "llm_description_v1": {
681
712
  "category": "getting_started",
682
713
  "description": "Customer-facing overview of an OpenAI-compatible LLM gateway service",
@@ -771,6 +802,20 @@
771
802
  "source_readme": "s3/description/README.md",
772
803
  "version": 1
773
804
  },
805
+ "smtp_code_example_v1": {
806
+ "category": "code_example",
807
+ "description": "Python example: send a test email via the UnitySVC SMTP gateway",
808
+ "example_file": "smtp/code-example/code-example-v1.py.j2",
809
+ "is_active": true,
810
+ "is_public": true,
811
+ "meta": {
812
+ "output_contains": "connectivity ok"
813
+ },
814
+ "mime_type": "python",
815
+ "preset_name": "smtp_code_example",
816
+ "source_readme": "smtp/code-example/README.md",
817
+ "version": 1
818
+ },
774
819
  "smtp_connectivity_v1": {
775
820
  "category": "connectivity_test",
776
821
  "description": "Verify SMTP server returns a 220 greeting on connect",
@@ -0,0 +1,46 @@
1
+ +++
2
+ preset_name = "llm_connectivity"
3
+ category = "connectivity_test"
4
+ mime_type = "bash"
5
+ file = "connectivity.sh.j2"
6
+ description = "Verify an OpenAI-compatible LLM endpoint by issuing a tiny chat completion"
7
+ is_active = true
8
+ is_public = false
9
+ meta = { output_contains = "connectivity ok" }
10
+ +++
11
+
12
+ # llm / connectivity — chat completion smoke test
13
+
14
+ Connectivity check for OpenAI-compatible LLM services routed through
15
+ the UnitySVC LLM gateway. Posts a one-token chat completion against
16
+ `{{ routing_key.model }}`, asserts the gateway returned a real
17
+ `choices` array, and prints `connectivity ok` on success.
18
+
19
+ This is a step deeper than `api_connectivity` (which just checks the
20
+ URL responds). For an LLM service, "is the gateway alive?" is too
21
+ weak — what we actually want to know is "can this model produce a
22
+ completion?" The cheap one-token request answers that without
23
+ generating a real reply.
24
+
25
+ ## Template variables (filled in by the platform when rendering for a given access interface)
26
+
27
+ - `{{ service_base_url }}` — endpoint base URL.
28
+ - `{{ routing_key.model }}` — model id.
29
+
30
+ ## Environment variables (read at runtime)
31
+
32
+ - `UNITYSVC_API_KEY` — required. Bearer token: customer's svcpass for
33
+ gateway access, or an upstream key when wired as a secret (BYOK).
34
+
35
+ ## Versions
36
+
37
+ ### v1 — initial release
38
+
39
+ - POST `/chat/completions` with `messages: [{role: user, content: "ping"}]` and `max_tokens: 1`.
40
+ - `curl --fail-with-body` so 4xx / 5xx surface as non-zero exit + body in stderr.
41
+ - `grep -q '"choices"'` so a 200 with an unrelated body (rare, but
42
+ some upstream errors return 200 with an `{"error": ...}` envelope)
43
+ still fails.
44
+ - Output contains `connectivity ok` — paired with the
45
+ `output_contains = "connectivity ok"` meta so the run-tests flow can
46
+ confirm a real round-trip.
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+ # LLM connectivity probe: POST a one-token chat completion against the
3
+ # rendered model and assert the gateway returned a real ``choices``
4
+ # array. Cheap, non-zero exit on any 4xx / 5xx, prints "connectivity ok"
5
+ # on success so output_contains can verify a real round-trip.
6
+ set -e -o pipefail
7
+
8
+ : "${UNITYSVC_API_KEY:?UNITYSVC_API_KEY is not set}"
9
+
10
+ curl --fail-with-body -sS "{{ service_base_url }}/chat/completions" \
11
+ -H "Content-Type: application/json" \
12
+ -H "Authorization: Bearer ${UNITYSVC_API_KEY}" \
13
+ -d '{"model":"{{ routing_key.model }}","messages":[{"role":"user","content":"ping"}],"max_tokens":1}' \
14
+ | grep -q '"choices"'
15
+ echo "connectivity ok"
@@ -0,0 +1,57 @@
1
+ +++
2
+ preset_name = "llm_connectivity_anthropic"
3
+ category = "connectivity_test"
4
+ mime_type = "bash"
5
+ file = "connectivity.sh.j2"
6
+ description = "Verify an Anthropic-Messages-API LLM endpoint by issuing a tiny one-token message"
7
+ is_active = true
8
+ is_public = false
9
+ meta = { output_contains = "connectivity ok" }
10
+ +++
11
+
12
+ # llm / connectivity-anthropic — Anthropic Messages API smoke test
13
+
14
+ Connectivity check for Anthropic-Messages-API LLM services
15
+ (`/v1/messages`, primarily Claude-family models). Companion to
16
+ `llm_connectivity` (OpenAI-compatible `/chat/completions`) — Anthropic's
17
+ API isn't OpenAI-shaped (different endpoint, required `max_tokens`,
18
+ top-level `system`, `content[].text` response), so it needs its own
19
+ preset.
20
+
21
+ ## Differences vs `llm_connectivity`
22
+
23
+ | | `llm_connectivity` | `llm_connectivity_anthropic` |
24
+ |---|---|---|
25
+ | Endpoint | `/chat/completions` | `/v1/messages` |
26
+ | Auth header | `Authorization: Bearer …` | `x-api-key: …` |
27
+ | Required header | — | `anthropic-version: 2023-06-01` |
28
+ | Required body fields | `model`, `messages` | `model`, `messages`, `max_tokens` |
29
+ | Response shape | `"choices"` | `"content"` |
30
+
31
+ ## Template variables (filled in by the platform when rendering for a given access interface)
32
+
33
+ - `{{ service_base_url }}` — endpoint base URL.
34
+ - `{{ routing_key.model }}` — model id.
35
+
36
+ ## Environment variables (read at runtime)
37
+
38
+ - `UNITYSVC_API_KEY` — required. Sent as the `x-api-key` header.
39
+ Customer's svcpass for gateway access, or an upstream key when
40
+ wired as a secret (BYOK).
41
+
42
+ ## Versions
43
+
44
+ ### v1 — initial release
45
+
46
+ - POST `/v1/messages` with `messages: [{role: user, content: "ping"}]`
47
+ and `max_tokens: 1`.
48
+ - Sends `anthropic-version: 2023-06-01` (the version pinned by the
49
+ current Python SDK; matches what gateways and Claude apps expect).
50
+ - `curl --fail-with-body` so 4xx / 5xx exit non-zero with the body
51
+ on stderr.
52
+ - `grep -q '"content"'` — Anthropic returns the assistant text in a
53
+ `content` array, so this confirms a real response envelope rather
54
+ than a 200 with an unrelated body.
55
+ - Output contains `connectivity ok` — paired with the
56
+ `output_contains = "connectivity ok"` meta so the run-tests flow
57
+ can confirm a real round-trip.
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+ # Anthropic Messages API connectivity probe: POST a one-token message
3
+ # against the rendered model and assert the gateway returned a real
4
+ # ``content`` array. Cheap, non-zero exit on any 4xx/5xx, prints
5
+ # "connectivity ok" on success.
6
+ set -e -o pipefail
7
+
8
+ : "${UNITYSVC_API_KEY:?UNITYSVC_API_KEY is not set}"
9
+
10
+ curl --fail-with-body -sS "{{ service_base_url }}/v1/messages" \
11
+ -H "Content-Type: application/json" \
12
+ -H "x-api-key: ${UNITYSVC_API_KEY}" \
13
+ -H "anthropic-version: 2023-06-01" \
14
+ -d '{"model":"{{ routing_key.model }}","max_tokens":1,"messages":[{"role":"user","content":"ping"}]}' \
15
+ | grep -q '"content"'
16
+ echo "connectivity ok"
@@ -0,0 +1,64 @@
1
+ +++
2
+ preset_name = "smtp_code_example"
3
+ category = "code_example"
4
+ mime_type = "python"
5
+ file = "code-example.py.j2"
6
+ description = "Python example: send a test email via the UnitySVC SMTP gateway"
7
+ is_active = true
8
+ is_public = true
9
+ meta = { output_contains = "connectivity ok" }
10
+ +++
11
+
12
+ # smtp / code-example — send-email smoke test
13
+
14
+ Customer-facing Python example for SMTP services routed through the
15
+ UnitySVC gateway (BYOK relay, multi-enrollment relay, mailpit-backed
16
+ test gateway). Composes a one-line text email and sends it, picking
17
+ implicit TLS (SMTPS) vs plain-with-STARTTLS based on the rendered URL
18
+ or the seller's `tls` flag.
19
+
20
+ The same template covers both render modes — local-testing
21
+ (`local_testing == True`) inlines the seller's upstream credentials
22
+ for ops-test runs, gateway mode parses `service_base_url` and reads
23
+ the customer's API key from `UNITYSVC_API_KEY`.
24
+
25
+ ## Template variables
26
+
27
+ **Local-testing mode** (`{% raw %}{% if local_testing %}{% endraw %}`) — the renderer fills these
28
+ from the offering's `upstream_access_config` after substituting
29
+ `ops_testing_parameters`:
30
+
31
+ - `{% raw %}{{ host }}{% endraw %}` — upstream SMTP host.
32
+ - `{% raw %}{{ port }}{% endraw %}` — upstream SMTP port. Defaults to 587 (submission).
33
+ - `{% raw %}{{ tls }}{% endraw %}` — `true` ⇒ implicit TLS (port 465 / SMTPS),
34
+ `false` ⇒ plain TCP with optional STARTTLS upgrade. Accepted as
35
+ Python bool, lowercase string, or capitalised string.
36
+ - `{% raw %}{{ username }}{% endraw %}`, `{% raw %}{{ password }}{% endraw %}` — upstream credentials. Inlining
37
+ these is fine because this branch is only ever rendered for the
38
+ seller's own ops-test flow; customers never see local-testing
39
+ output.
40
+
41
+ **Gateway mode** (the `else` branch) — the renderer fills these from
42
+ the listing's access interface:
43
+
44
+ - `{% raw %}{{ service_base_url }}{% endraw %}` — `smtp://host:port` or
45
+ `smtps://host:port`.
46
+ - `{% raw %}{{ routing_key.username }}{% endraw %}` — SMTP username (per the listing's
47
+ `routing_key`).
48
+
49
+ ## Environment variables (read at runtime)
50
+
51
+ - `UNITYSVC_API_KEY` — gateway-mode SMTP password. Always pulled from
52
+ env, never inlined into rendered output (per-customer secret).
53
+
54
+ ## Versions
55
+
56
+ ### v1 — initial release
57
+
58
+ - Implicit TLS via `smtplib.SMTP_SSL` when `use_ssl`; otherwise plain
59
+ `smtplib.SMTP` with optional STARTTLS upgrade detected via
60
+ `server.has_extn("STARTTLS")`.
61
+ - 10-second connect/operation timeout.
62
+ - Prints `connectivity ok` on success — paired with the
63
+ `output_contains = "connectivity ok"` meta so the platform's
64
+ run-tests flow can verify a real send completed.
@@ -0,0 +1,46 @@
1
+ import smtplib
2
+ from email.mime.text import MIMEText
3
+
4
+ {% if local_testing %}
5
+ # Seller ops-testing mode. The renderer inlines upstream host/port/credentials
6
+ # from the offering's upstream_access_config (after substituting customer
7
+ # secrets from ops_testing_parameters). The seller only ever sees their own
8
+ # credentials, so inlining them is fine — this branch never reaches a customer.
9
+ smtp_host = "{{ host }}"
10
+ smtp_port = {{ port | default(587) }}
11
+ use_ssl = "{{ tls | default(false) }}".lower() == "true"
12
+ username = "{{ username | default('') }}"
13
+ password = "{{ password | default('') }}"
14
+ {% else %}
15
+ # Gateway mode (customer-facing). The base URL is rendered inline; username
16
+ # comes from the listing's routing_key. The API key stays as an env-var
17
+ # lookup — keys are never inlined into rendered output, on any code path.
18
+ import os
19
+ from urllib.parse import urlparse
20
+
21
+ parsed = urlparse("{{ service_base_url }}")
22
+ smtp_host = parsed.hostname
23
+ smtp_port = parsed.port or 587
24
+ use_ssl = parsed.scheme == "smtps"
25
+ username = "{{ routing_key.username }}"
26
+ password = os.environ["UNITYSVC_API_KEY"]
27
+ {% endif %}
28
+
29
+ msg = MIMEText("Hello from UnitySVC SMTP Gateway!")
30
+ msg["Subject"] = "Test Email via SMTP Gateway"
31
+ msg["From"] = "test@example.com"
32
+ msg["To"] = "recipient@example.com"
33
+
34
+ # Implicit TLS (port 465 / smtps://) → SMTP_SSL.
35
+ # Plain TCP with optional STARTTLS upgrade (port 587 / smtp://) → SMTP.
36
+ cls = smtplib.SMTP_SSL if use_ssl else smtplib.SMTP
37
+ with cls(smtp_host, smtp_port, timeout=10) as server:
38
+ if not use_ssl:
39
+ server.ehlo()
40
+ if server.has_extn("STARTTLS"):
41
+ server.starttls()
42
+ server.ehlo()
43
+ if username and password:
44
+ server.login(username, password)
45
+ server.send_message(msg)
46
+ print("connectivity ok")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unitysvc-data
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: Standard examples and presets for UnitySVC data packages
5
5
  Author-email: Bo Peng <bo.peng@unitysvc.com>
6
6
  Maintainer-email: Bo Peng <bo.peng@unitysvc.com>
@@ -104,6 +104,10 @@ src/unitysvc_data/examples/llm/code-example-vision-requests/README.md
104
104
  src/unitysvc_data/examples/llm/code-example-vision-requests/code-example-vision-v1.py.j2
105
105
  src/unitysvc_data/examples/llm/code-example-vision-shell/README.md
106
106
  src/unitysvc_data/examples/llm/code-example-vision-shell/code-example-vision-v1.sh.j2
107
+ src/unitysvc_data/examples/llm/connectivity/README.md
108
+ src/unitysvc_data/examples/llm/connectivity/connectivity-v1.sh.j2
109
+ src/unitysvc_data/examples/llm/connectivity-anthropic/README.md
110
+ src/unitysvc_data/examples/llm/connectivity-anthropic/connectivity-v1.sh.j2
107
111
  src/unitysvc_data/examples/llm/description/README.md
108
112
  src/unitysvc_data/examples/llm/description/description-v1.md
109
113
  src/unitysvc_data/examples/llm/request-template/README.md
@@ -118,6 +122,8 @@ src/unitysvc_data/examples/s3/connectivity/README.md
118
122
  src/unitysvc_data/examples/s3/connectivity/connectivity-v1.py.j2
119
123
  src/unitysvc_data/examples/s3/description/README.md
120
124
  src/unitysvc_data/examples/s3/description/description-v1.md
125
+ src/unitysvc_data/examples/smtp/code-example/README.md
126
+ src/unitysvc_data/examples/smtp/code-example/code-example-v1.py.j2
121
127
  src/unitysvc_data/examples/smtp/connectivity/README.md
122
128
  src/unitysvc_data/examples/smtp/connectivity/connectivity-v1.sh.j2
123
129
  src/unitysvc_data/examples/smtp/connectivity/connectivity-v2.sh.j2
File without changes
File without changes
File without changes