opencode-skills-antigravity 1.0.20 → 1.0.22
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.
- package/bundled-skills/.antigravity-install-manifest.json +1330 -0
- package/bundled-skills/claude-monitor/scripts/api_bench.py +12 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +3 -3
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/frontend/package-lock.json +3 -3
- package/bundled-skills/loki-mode/examples/todo-app-generated/frontend/package.json +1 -0
- package/bundled-skills/phase-gated-debugging/SKILL.md +70 -0
- package/bundled-skills/saas-multi-tenant/SKILL.md +183 -0
- package/bundled-skills/threejs-animation/SKILL.md +13 -8
- package/bundled-skills/threejs-fundamentals/SKILL.md +44 -1
- package/bundled-skills/threejs-geometry/SKILL.md +30 -0
- package/bundled-skills/threejs-interaction/SKILL.md +12 -0
- package/bundled-skills/threejs-lighting/SKILL.md +3 -2
- package/bundled-skills/threejs-loaders/SKILL.md +21 -1
- package/bundled-skills/threejs-materials/SKILL.md +22 -0
- package/bundled-skills/threejs-postprocessing/SKILL.md +30 -9
- package/bundled-skills/threejs-shaders/SKILL.md +43 -0
- package/bundled-skills/threejs-skills/SKILL.md +103 -42
- package/bundled-skills/threejs-textures/SKILL.md +8 -0
- package/bundled-skills/whatsapp-cloud-api/scripts/send_test_message.py +18 -14
- package/bundled-skills/whatsapp-cloud-api/scripts/validate_config.py +54 -37
- package/package.json +1 -1
|
@@ -47,14 +47,19 @@ def check_env_vars() -> tuple[bool, list[str]]:
|
|
|
47
47
|
return len(missing) == 0, missing
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
def
|
|
51
|
-
"""Return
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
def _format_api_failure(response: httpx.Response) -> dict[str, str]:
|
|
51
|
+
"""Return sanitized API failure details without echoing sensitive payloads."""
|
|
52
|
+
try:
|
|
53
|
+
error = response.json().get("error", {})
|
|
54
|
+
except ValueError:
|
|
55
|
+
error = {}
|
|
56
|
+
return {
|
|
57
|
+
"status_code": str(response.status_code),
|
|
58
|
+
"error_code": str(error.get("code", "?")),
|
|
59
|
+
}
|
|
55
60
|
|
|
56
61
|
|
|
57
|
-
def test_api_connection() -> tuple[bool, str]:
|
|
62
|
+
def test_api_connection() -> tuple[bool, dict[str, str]]:
|
|
58
63
|
"""Test connection to WhatsApp Cloud API."""
|
|
59
64
|
token = os.environ.get("WHATSAPP_TOKEN", "")
|
|
60
65
|
phone_id = os.environ.get("PHONE_NUMBER_ID", "")
|
|
@@ -69,27 +74,26 @@ def test_api_connection() -> tuple[bool, str]:
|
|
|
69
74
|
|
|
70
75
|
if response.status_code == 200:
|
|
71
76
|
data = response.json()
|
|
72
|
-
return True,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return False, f"API Error {error.get('code', '?')}: {error.get('message', 'Unknown')}"
|
|
77
|
+
return True, {
|
|
78
|
+
"phone": str(data.get("display_phone_number", "N/A")),
|
|
79
|
+
"name": str(data.get("verified_name", "N/A")),
|
|
80
|
+
"status": str(data.get("code_verification_status", "N/A")),
|
|
81
|
+
"quality": str(data.get("quality_rating", "N/A")),
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return False, _format_api_failure(response)
|
|
81
85
|
|
|
82
86
|
except httpx.ConnectError:
|
|
83
|
-
return False, "Connection failed. Check your internet connection."
|
|
87
|
+
return False, {"reason": "Connection failed. Check your internet connection."}
|
|
84
88
|
except httpx.TimeoutException:
|
|
85
|
-
return False, "Request timed out after 10 seconds."
|
|
86
|
-
except Exception as
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
return False, {"reason": "Request timed out after 10 seconds."}
|
|
90
|
+
except Exception as exc:
|
|
91
|
+
return False, {
|
|
92
|
+
"reason": f"Unexpected {exc.__class__.__name__} while contacting the Graph API."
|
|
93
|
+
}
|
|
90
94
|
|
|
91
95
|
|
|
92
|
-
def test_waba_access() -> tuple[bool, str]:
|
|
96
|
+
def test_waba_access() -> tuple[bool, dict[str, str]]:
|
|
93
97
|
"""Test access to WhatsApp Business Account."""
|
|
94
98
|
token = os.environ.get("WHATSAPP_TOKEN", "")
|
|
95
99
|
waba_id = os.environ.get("WABA_ID", "")
|
|
@@ -104,15 +108,14 @@ def test_waba_access() -> tuple[bool, str]:
|
|
|
104
108
|
if response.status_code == 200:
|
|
105
109
|
data = response.json()
|
|
106
110
|
count = len(data.get("data", []))
|
|
107
|
-
return True,
|
|
108
|
-
else:
|
|
109
|
-
error = response.json().get("error", {})
|
|
110
|
-
return False, f"API Error {error.get('code', '?')}: {error.get('message', 'Unknown')}"
|
|
111
|
+
return True, {"count": str(count)}
|
|
111
112
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return False,
|
|
113
|
+
return False, _format_api_failure(response)
|
|
114
|
+
|
|
115
|
+
except Exception as exc:
|
|
116
|
+
return False, {
|
|
117
|
+
"reason": f"Unexpected {exc.__class__.__name__} while checking WABA access."
|
|
118
|
+
}
|
|
116
119
|
|
|
117
120
|
|
|
118
121
|
def main():
|
|
@@ -154,23 +157,37 @@ def main():
|
|
|
154
157
|
|
|
155
158
|
# Check 2: API connection
|
|
156
159
|
print("[2/3] Testing API connection (Phone Number)...")
|
|
157
|
-
api_ok,
|
|
160
|
+
api_ok, api_details = test_api_connection()
|
|
158
161
|
if api_ok:
|
|
159
|
-
print(
|
|
160
|
-
print(f" {
|
|
162
|
+
print(" OK - Connected successfully")
|
|
163
|
+
print(f" Phone: {api_details['phone']}")
|
|
164
|
+
print(f" Name: {api_details['name']}")
|
|
165
|
+
print(f" Status: {api_details['status']}")
|
|
166
|
+
print(f" Quality: {api_details['quality']}")
|
|
161
167
|
else:
|
|
162
|
-
|
|
168
|
+
if "reason" in api_details:
|
|
169
|
+
print(f" FAIL - {api_details['reason']}")
|
|
170
|
+
else:
|
|
171
|
+
print(" FAIL - API request failed.")
|
|
172
|
+
print(f" HTTP Status: {api_details['status_code']}")
|
|
173
|
+
print(f" Error Code: {api_details['error_code']}")
|
|
163
174
|
all_ok = False
|
|
164
175
|
|
|
165
176
|
print()
|
|
166
177
|
|
|
167
178
|
# Check 3: WABA access
|
|
168
179
|
print("[3/3] Testing WABA access...")
|
|
169
|
-
waba_ok,
|
|
180
|
+
waba_ok, waba_details = test_waba_access()
|
|
170
181
|
if waba_ok:
|
|
171
|
-
print(
|
|
182
|
+
print(" OK - WABA accessible")
|
|
183
|
+
print(f" Phone Numbers Found: {waba_details['count']}")
|
|
172
184
|
else:
|
|
173
|
-
|
|
185
|
+
if "reason" in waba_details:
|
|
186
|
+
print(f" FAIL - {waba_details['reason']}")
|
|
187
|
+
else:
|
|
188
|
+
print(" FAIL - API request failed.")
|
|
189
|
+
print(f" HTTP Status: {waba_details['status_code']}")
|
|
190
|
+
print(f" Error Code: {waba_details['error_code']}")
|
|
174
191
|
all_ok = False
|
|
175
192
|
|
|
176
193
|
print()
|
package/package.json
CHANGED