@assemblyline-agents/strava 1.0.0 → 3.0.0
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/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/events.d.ts +3 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +79 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -4
- package/skills/strava/SKILL.md +0 -8
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Official Assembly Line Strava connection plugin.
|
|
4
4
|
|
|
5
|
-
It connects agents to Strava, exposing activity and athlete tools through Strava's MCP server. The package exports `defineStravaConnection(options)` to declare the connection in an agent definition and an `assemblyLinePlugin` module so the Assembly Line CLI and compiler can discover the plugin's connection metadata.
|
|
5
|
+
It connects agents to Strava, exposing activity and athlete tools through Strava's MCP server. The package exports `defineStravaConnection(options)` to declare the connection in an agent definition and an `assemblyLinePlugin` module so the Assembly Line CLI and compiler can discover the plugin's connection metadata.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,4BAA4B,EAElC,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,YAAY,EAAE,4BAwD1B,CAAC"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { ConnectionEventError, headerValue, parseConnectionEventJson, providerJson, requireEnvironmentValue, stringField, verifyHmacSha256 } from "@assemblyline-agents/core";
|
|
3
|
+
const API = "https://www.strava.com/api/v3/push_subscriptions";
|
|
4
|
+
export const stravaEvents = {
|
|
5
|
+
prepare(context) {
|
|
6
|
+
return context.state?.verifyToken ? context.state : { ...(context.state ?? {}), verifyToken: randomBytes(32).toString("base64url") };
|
|
7
|
+
},
|
|
8
|
+
async reconcile(context) {
|
|
9
|
+
const clientId = requireEnvironmentValue(context.env, "STRAVA_CLIENT_ID");
|
|
10
|
+
const clientSecret = requireEnvironmentValue(context.env, "STRAVA_CLIENT_SECRET");
|
|
11
|
+
const signingSecret = requireEnvironmentValue(context.env, "STRAVA_WEBHOOK_SIGNING_SECRET");
|
|
12
|
+
const verifyToken = stringField(context.state ?? {}, "verifyToken");
|
|
13
|
+
if (!verifyToken)
|
|
14
|
+
throw new Error("Strava verification token was not prepared.");
|
|
15
|
+
const current = await list(context.fetch, clientId, clientSecret);
|
|
16
|
+
const matching = current.find((item) => item.callback_url === context.callbackUrl);
|
|
17
|
+
if (matching) {
|
|
18
|
+
return { status: "active", externalId: String(matching.id), state: { verifyToken, signingSecret, subscriptionId: String(matching.id) }, detail: "Strava webhook is active." };
|
|
19
|
+
}
|
|
20
|
+
for (const subscription of current)
|
|
21
|
+
await deleteSubscription(context.fetch, clientId, clientSecret, String(subscription.id));
|
|
22
|
+
const form = new URLSearchParams({ client_id: clientId, client_secret: clientSecret, callback_url: context.callbackUrl, verify_token: verifyToken });
|
|
23
|
+
const created = await providerJson(context.fetch, API, { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body: form.toString() });
|
|
24
|
+
const subscriptionId = identifier(created, "id");
|
|
25
|
+
return { status: "active", externalId: subscriptionId, state: { verifyToken, signingSecret, subscriptionId }, detail: "Strava webhook is active." };
|
|
26
|
+
},
|
|
27
|
+
async remove(context) {
|
|
28
|
+
const subscriptionId = stringField(context.state ?? {}, "subscriptionId");
|
|
29
|
+
if (!subscriptionId)
|
|
30
|
+
return;
|
|
31
|
+
await deleteSubscription(context.fetch, requireEnvironmentValue(context.env, "STRAVA_CLIENT_ID"), requireEnvironmentValue(context.env, "STRAVA_CLIENT_SECRET"), subscriptionId);
|
|
32
|
+
},
|
|
33
|
+
async check(context) {
|
|
34
|
+
const subscriptionId = stringField(context.state ?? {}, "subscriptionId");
|
|
35
|
+
if (!subscriptionId)
|
|
36
|
+
return { status: "needs_setup", detail: "Strava webhook has not been created." };
|
|
37
|
+
const current = await list(context.fetch, requireEnvironmentValue(context.env, "STRAVA_CLIENT_ID"), requireEnvironmentValue(context.env, "STRAVA_CLIENT_SECRET"));
|
|
38
|
+
return current.some((item) => String(item.id) === subscriptionId)
|
|
39
|
+
? { status: "active", detail: "Strava webhook is active." }
|
|
40
|
+
: { status: "degraded", detail: "Strava webhook no longer exists." };
|
|
41
|
+
},
|
|
42
|
+
ingress(request, context) {
|
|
43
|
+
const verifyToken = stringField(context.state ?? {}, "verifyToken");
|
|
44
|
+
if (request.method === "GET") {
|
|
45
|
+
if (!verifyToken || request.query["hub.mode"] !== "subscribe" || request.query["hub.verify_token"] !== verifyToken) {
|
|
46
|
+
throw new ConnectionEventError("Strava webhook challenge is invalid.", 403);
|
|
47
|
+
}
|
|
48
|
+
return { events: [], response: { status: 200, body: { "hub.challenge": request.query["hub.challenge"] ?? "" } }, audit: { challenge: true } };
|
|
49
|
+
}
|
|
50
|
+
const signingSecret = stringField(context.state ?? {}, "signingSecret") ?? requireEnvironmentValue(context.env, "STRAVA_WEBHOOK_SIGNING_SECRET");
|
|
51
|
+
const signature = headerValue(request.headers, "x-strava-signature");
|
|
52
|
+
const parts = Object.fromEntries((signature ?? "").split(",").map((part) => part.split("=", 2)));
|
|
53
|
+
if (!parts.t || Math.abs(Date.now() / 1_000 - Number(parts.t)) > 300 || !verifyHmacSha256({ secret: signingSecret, body: `${parts.t}.${request.body}`, signature: parts.v1 })) {
|
|
54
|
+
throw new ConnectionEventError("Strava webhook signature is invalid.", 401);
|
|
55
|
+
}
|
|
56
|
+
const payload = parseConnectionEventJson(request.body);
|
|
57
|
+
const objectType = required(payload, "object_type");
|
|
58
|
+
const aspectType = required(payload, "aspect_type");
|
|
59
|
+
const event = `${objectType}.${aspectType}`;
|
|
60
|
+
const eventId = [identifier(payload, "subscription_id"), identifier(payload, "object_id"), aspectType, identifier(payload, "event_time")].join(":");
|
|
61
|
+
const occurredAt = new Date(Number(payload.event_time) * 1_000).toISOString();
|
|
62
|
+
return { events: [{ event, eventId, payload: payload, occurredAt }], response: { status: 200, body: { ok: true } }, audit: { event } };
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
async function list(fetchImpl, clientId, clientSecret) {
|
|
66
|
+
const value = await fetchImpl(`${API}?client_id=${encodeURIComponent(clientId)}&client_secret=${encodeURIComponent(clientSecret)}`);
|
|
67
|
+
if (!value.ok)
|
|
68
|
+
throw new Error(`Strava subscription API returned HTTP ${value.status}.`);
|
|
69
|
+
const body = await value.json();
|
|
70
|
+
return Array.isArray(body) ? body.filter((item) => Boolean(item && typeof item === "object" && !Array.isArray(item))) : [];
|
|
71
|
+
}
|
|
72
|
+
async function deleteSubscription(fetchImpl, clientId, clientSecret, id) {
|
|
73
|
+
await providerJson(fetchImpl, `${API}/${encodeURIComponent(id)}?client_id=${encodeURIComponent(clientId)}&client_secret=${encodeURIComponent(clientSecret)}`, { method: "DELETE" }, [200, 204, 404]);
|
|
74
|
+
}
|
|
75
|
+
function required(value, name) { const result = stringField(value, name); if (!result)
|
|
76
|
+
throw new ConnectionEventError(`Strava webhook omitted ${name}.`); return result; }
|
|
77
|
+
function identifier(value, name) { const result = value[name]; if (typeof result === "string" || typeof result === "number")
|
|
78
|
+
return String(result); throw new ConnectionEventError(`Strava webhook omitted ${name}.`); }
|
|
79
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmG,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAG7K,MAAM,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AACjE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,yEAAkN;AACzR,eAAO,MAAM,kBAAkB,kDAA0C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { connectionPluginMetadata, defineMcpPluginConnection, definePlugin } from "@assemblyline-agents/core";
|
|
1
|
+
import { connectionPluginMetadata, defineConnectionPluginEvents, defineMcpPluginConnection, definePlugin } from "@assemblyline-agents/core";
|
|
2
|
+
import { stravaEvents } from "./events.js";
|
|
2
3
|
const PLUGIN = connectionPluginMetadata("strava");
|
|
3
|
-
export function defineStravaConnection(options) {
|
|
4
|
+
export function defineStravaConnection(options) { const definition = defineMcpPluginConnection(PLUGIN, options); const events = defineConnectionPluginEvents(PLUGIN, options.events, stravaEvents); if (events)
|
|
5
|
+
definition.events = events; return definition; }
|
|
4
6
|
export const assemblyLinePlugin = definePlugin({ connections: [PLUGIN] });
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,YAAY,EAAmC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,YAAY,EAAmC,MAAM,2BAA2B,CAAC;AAC7K,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAE,CAAC;AAEnD,MAAM,UAAU,sBAAsB,CAAC,OAAgC,IAAI,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,MAAM;IAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AACzR,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assemblyline-agents/strava",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@assemblyline-agents/core": "
|
|
12
|
+
"@assemblyline-agents/core": "3.0.0"
|
|
13
13
|
},
|
|
14
14
|
"description": "Official Assembly Line Strava connection plugin.",
|
|
15
15
|
"files": [
|
|
16
|
-
"dist"
|
|
17
|
-
"skills"
|
|
16
|
+
"dist"
|
|
18
17
|
],
|
|
19
18
|
"engines": {
|
|
20
19
|
"node": ">=22.19.0"
|
package/skills/strava/SKILL.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: strava
|
|
3
|
-
description: Use configured Strava tools for profiles, activities, and training context.
|
|
4
|
-
---
|
|
5
|
-
# Strava
|
|
6
|
-
Use the `strava` connection for bounded, read-only fitness lookups. Prefer date ranges and activity identifiers over account-wide requests.
|
|
7
|
-
|
|
8
|
-
The deployment owner configures the Strava application, OAuth scopes, MCP bridge, and credentials. Never request or reveal tokens in chat.
|