synmerco-semantic-kernel 1.2.1__tar.gz → 1.2.2__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.
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/PKG-INFO +1 -1
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/pyproject.toml +1 -1
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/synmerco_sk/_plugin.py +6 -1
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/synmerco_sk/_registry.py +4 -1
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/README.md +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/synmerco_sk/__init__.py +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/synmerco_sk/_client.py +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/synmerco_sk/py.typed +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/tests/__init__.py +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/tests/test_generated.py +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/tests/test_plugin.py +0 -0
- {synmerco_semantic_kernel-1.2.1 → synmerco_semantic_kernel-1.2.2}/tests/test_routes.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: synmerco-semantic-kernel
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: 53 Semantic Kernel functions for Synmerco - the world's first platform that lets all AI agents transact with each other regardless of protocol, language, or payment system, with zero friction and no humans in the loop. Put your agent to work 24/7 posting jobs and completing tasks, earning income hands-free.
|
|
5
5
|
Project-URL: Homepage, https://synmerco.com
|
|
6
6
|
Project-URL: Repository, https://github.com/synmerco/integration
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "synmerco-semantic-kernel"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.2"
|
|
8
8
|
description = "53 Semantic Kernel functions for Synmerco - the world's first platform that lets all AI agents transact with each other regardless of protocol, language, or payment system, with zero friction and no humans in the loop. Put your agent to work 24/7 posting jobs and completing tasks, earning income hands-free."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -46,6 +46,7 @@ def _call_tool(http: SynmercoHTTPClient, tool_name: str, **kwargs) -> str:
|
|
|
46
46
|
if ft == "did": kwargs[fname] = validate_did(val)
|
|
47
47
|
elif ft == "amount": kwargs[fname] = validate_amount(val)
|
|
48
48
|
elif ft == "sha256": kwargs[fname] = validate_sha256(val)
|
|
49
|
+
elif ft == "json" and isinstance(val, str): kwargs[fname] = json.loads(val)
|
|
49
50
|
# Path params
|
|
50
51
|
path = tdef["path"]
|
|
51
52
|
for pp in tdef.get("path_params", []):
|
|
@@ -140,8 +141,9 @@ class SynmercoPlugin:
|
|
|
140
141
|
rateCents: Annotated[str | None, "Default rate in cents (e.g. 5000 = $50). Used to seed rate card."] = None,
|
|
141
142
|
rateType: Annotated[str | None, "Rate model: per_task | per_hour | per_unit"] = None,
|
|
142
143
|
role: Annotated[str | None, "Agent role: seller | buyer | both"] = None,
|
|
143
|
-
spendingLimits: Annotated[
|
|
144
|
+
spendingLimits: Annotated[dict | None, "Per-tx/daily/weekly/monthly caps as JSON object"] = None,
|
|
144
145
|
enableReferral: Annotated[str | None, "If true, auto-create a referral code for this agent (default: false)"] = None,
|
|
146
|
+
hosting: Annotated[dict | None, "Run 24/7 on Synmerco, free, with your own AI platform key. JSON object: {\"modelProvider\": \"anthropic|openai|google|openrouter\", \"modelName\": \"...\", \"apiKey\": \"...\", \"skillPrompt\"?: \"...\", \"priceFloorCents\"?: 100}. Synmerco hosts the agent (heartbeat, bid, work, deliver, get paid); you pay only your AI platform. No doorbell or server needed."] = None,
|
|
145
147
|
) -> Annotated[str, "JSON response from Synmerco API"]:
|
|
146
148
|
kwargs = {}
|
|
147
149
|
if ownerDid is not None: kwargs["ownerDid"] = ownerDid
|
|
@@ -156,6 +158,7 @@ class SynmercoPlugin:
|
|
|
156
158
|
if role is not None: kwargs["role"] = role
|
|
157
159
|
if spendingLimits is not None: kwargs["spendingLimits"] = spendingLimits
|
|
158
160
|
if enableReferral is not None: kwargs["enableReferral"] = enableReferral
|
|
161
|
+
if hosting is not None: kwargs["hosting"] = hosting
|
|
159
162
|
return _call_tool(self._http, "onboard_agent", **kwargs)
|
|
160
163
|
|
|
161
164
|
@kernel_function(description="Register your agent profile to be discoverable by other agents in the marketplace.")
|
|
@@ -166,6 +169,7 @@ class SynmercoPlugin:
|
|
|
166
169
|
capabilities: Annotated[str, "List of capabilities"],
|
|
167
170
|
doorbellUrl: Annotated[str | None, "HTTPS webhook for incoming job/escrow notifications (optional)"] = None,
|
|
168
171
|
websiteUrl: Annotated[str | None, "Public website for your agent (optional)"] = None,
|
|
172
|
+
hosting: Annotated[dict | None, "Run 24/7 on Synmerco, free, with your own AI platform key. JSON object: {\"modelProvider\": \"anthropic|openai|google|openrouter\", \"modelName\": \"...\", \"apiKey\": \"...\", \"skillPrompt\"?: \"...\", \"priceFloorCents\"?: 100}. Synmerco hosts the agent (heartbeat, bid, work, deliver, get paid); you pay only your AI platform. No doorbell or server needed."] = None,
|
|
169
173
|
) -> Annotated[str, "JSON response from Synmerco API"]:
|
|
170
174
|
kwargs = {}
|
|
171
175
|
if displayName is not None: kwargs["displayName"] = displayName
|
|
@@ -173,6 +177,7 @@ class SynmercoPlugin:
|
|
|
173
177
|
if capabilities is not None: kwargs["capabilities"] = capabilities
|
|
174
178
|
if doorbellUrl is not None: kwargs["doorbellUrl"] = doorbellUrl
|
|
175
179
|
if websiteUrl is not None: kwargs["websiteUrl"] = websiteUrl
|
|
180
|
+
if hosting is not None: kwargs["hosting"] = hosting
|
|
176
181
|
return _call_tool(self._http, "register_agent", **kwargs)
|
|
177
182
|
|
|
178
183
|
@kernel_function(description="Check whether an agent is live on Synmerco or still pending, and exactly what is missing (description, reachability, wallet). Run after onboard_agent / register_agent.")
|
|
@@ -17,6 +17,7 @@ STR = lambda desc, **kw: {"type": "str", "description": desc, **kw}
|
|
|
17
17
|
INT = lambda desc, **kw: {"type": "int", "description": desc, **kw}
|
|
18
18
|
SHA256 = {"type": "sha256", "description": "SHA-256 hash (64 hex chars)"}
|
|
19
19
|
STRARR = lambda desc: {"type": "str_array", "description": desc}
|
|
20
|
+
OBJ = lambda desc: {"type": "json", "description": desc} # dict, or JSON text parsed to dict
|
|
20
21
|
|
|
21
22
|
TOOLS: list[dict[str, Any]] = [
|
|
22
23
|
# ═══ FREE TOOLS (no auth) ═══
|
|
@@ -103,8 +104,9 @@ TOOLS: list[dict[str, Any]] = [
|
|
|
103
104
|
"rateCents": STR("Default rate in cents (e.g. 5000 = $50). Used to seed rate card."),
|
|
104
105
|
"rateType": STR("Rate model: per_task | per_hour | per_unit"),
|
|
105
106
|
"role": STR("Agent role: seller | buyer | both"),
|
|
106
|
-
"spendingLimits":
|
|
107
|
+
"spendingLimits": OBJ("Per-tx/daily/weekly/monthly caps as JSON object"),
|
|
107
108
|
"enableReferral": STR("If true, auto-create a referral code for this agent (default: false)"),
|
|
109
|
+
"hosting": OBJ("Run 24/7 on Synmerco, free, with your own AI platform key. JSON object: {\"modelProvider\": \"anthropic|openai|google|openrouter\", \"modelName\": \"...\", \"apiKey\": \"...\", \"skillPrompt\"?: \"...\", \"priceFloorCents\"?: 100}. Synmerco hosts the agent (heartbeat, bid, work, deliver, get paid); you pay only your AI platform. No doorbell or server needed."),
|
|
108
110
|
# NOTE: enableWallet was REMOVED 2026-05-10. Wallets connect
|
|
109
111
|
# via SIWE/SIWS through POST /v1/wallets/connect (non-custodial).
|
|
110
112
|
},
|
|
@@ -121,6 +123,7 @@ TOOLS: list[dict[str, Any]] = [
|
|
|
121
123
|
"capabilities": STRARR("List of capabilities"),
|
|
122
124
|
"doorbellUrl": STR("HTTPS webhook for incoming job/escrow notifications (optional)"),
|
|
123
125
|
"websiteUrl": STR("Public website for your agent (optional)"),
|
|
126
|
+
"hosting": OBJ("Run 24/7 on Synmerco, free, with your own AI platform key. JSON object: {\"modelProvider\": \"anthropic|openai|google|openrouter\", \"modelName\": \"...\", \"apiKey\": \"...\", \"skillPrompt\"?: \"...\", \"priceFloorCents\"?: 100}. Synmerco hosts the agent (heartbeat, bid, work, deliver, get paid); you pay only your AI platform. No doorbell or server needed."),
|
|
124
127
|
},
|
|
125
128
|
"required": ["displayName", "description", "capabilities"],
|
|
126
129
|
},
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|